Strudelify

Je danse dans ma tete

Celine Dion

KeyF♯ minorTempo99 bpm
0:00/0:00
// Je danse dans ma tete — Celine Dion
// 99 bpm, 4/4, key F# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 107 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(99/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once · [...]/2 spreads a riff over 2 bars.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// bass · electric bass finger
const bass = note(`<
  A B A B C@3 D C@3 D E@3 F C@3 D C@3 D A B A B A B E@3 F G H I J K L M N O P M N O P A B A B A B A B E@3 F C@3 D C@3 D
  G H I J K L M N O P M N O P A B A B A B A B A B A B A B A B A B A B A B A B Q
>`.pickRestart({
  A: "b1@2 ~@3 b1 a1@2 ~ b1@2 b1 ~@2 b1 a1@2 b1 d2@3 b1@3", B: "d2@2 ~@3 d2 d2@2 ~ d2@2 a1 ~@2 a1 g1@2 a1 e2@3 a1@3",
  C: "b1@2 ~@3 b1 b1@2 ~ b1@2 b1 ~@2 b1@2 ~ b1 b2@3 f#2@3", D: "b1@2 ~@3 b1 b1@2 b1 c#2@2 d2 ~@2 e2@2 ~ e2 f#2@5 ~",
  E: "b1@2 ~@3 b1 b1@2 ~@3 b1 ~@2 b1 f#2@2 ~ b2@3 f#2@3", F: "b1@2 ~@3 b1 b1@2 ~@3 d2 ~@2 d2 e2@2 ~@4 f#2@3",
  G: "b1@2 ~@3 b1 b1@2 ~ b1@2 b1 ~@2 b1 b1@2 b1 d2@3 e2@3", H: "f#2@3 ~@3 f#2@2 ~@3 e2 e2@3 d2@3 e2@2 ~ e2@2 ~",
  I: "b1@2 ~@3 b1 b1@2 ~ b1@2 b1 ~@2 b1 b1@2 b1 d2@3 b1@3",
  J: "g#2@2 ~@3 g#2 g#2@2 g#2@2 ~ a2 ~@2 a2 g#2@2 a2 a2@3 a2@3",
  K: "b1@2 ~@3 b1 b1@3 b1@2 b1 ~@2 b1 b1@2 b1 f#2@3 b1@3", L: "f#2@2 ~@3 f#2 f#2@3 e2@3 e2@2 d2 e2@2 ~ f#2@3 b2@3",
  M: "b1@2 ~@3 b1 b1@2 ~ b1@2 b1 ~@2 b1 a1@2 b1 e2@3 f#2@3", N: "a2@2 ~@3 a2 a2@2 ~ a2@2 a2 ~@2 a2 g#2@2 a2 a2@3 a2@3",
  O: "g2@2 ~@3 g2 g2@2 ~ g2@2 g2 ~@2 g2 f#2@2 g2 b2@3 a2@3",
  P: "f#2@2 f#2 c#2@2 e2 f#2@2 ~@3 a2 ~@2 a2 c#2@2 d2 e2@3 f#2@3", Q: "b1@2 b1 ~@21",
})).s("gm_electric_bass_finger").gain(0.24)

// chords · rock organ
const rock_organ = note(`<
  A B A B ~@12 C@8 A B A B A B ~@10 D E D E D E D E A B A B A B A B ~@4 C@8 ~@6 D E D E D E D E A B A B A B A B A B A B
  A B A B A B A B A B A B F
>`.pickRestart({
  A: "[f#4,b4,d5]@2 [f#4,b4,d5]@2 ~ [f#4,b4,d5] [f#4,b4,d5]@2 [f#4,b4,d5] [f#4,b4,d5]@2 [f#4,b4,d5] ~@2 [f#4,b4,d5] ~@2 [f#4,b4,d5] ~@2 [f#4,b4,d5] [f#4,b4,d5]@2 [f#4,b4,d5]", // Bm
  B: "[f#4,a4,d5]@2 [f#4,a4,d5]@2 ~ [f#4,a4,d5] [f#4,a4,d5]@2 [f#4,a4,d5] [f#4,a4,d5]@2 [f#4,a4,d5] [e4,a4,c#5]@3 ~@9", // D A
  C: "[f#4,f#5]@2 ~@3 [f#4,f#5]@2 ~@2 [f#4,f#5]@2 ~@3 [f#4,f#5]@2 ~@2 [f#4,f#5]@2 ~ [f#4,f#5]@2 ~", // F#
  D: "[f#4,b4,d5]@2 [f#4,b4,d5] ~@2 [f#4,b4,d5] [f#4,b4,d5]@2 [f#4,b4,d5] [f#4,b4,d5]@2 [f#4,b4,d5] ~@2 [f#4,b4,d5] ~@2 [f#4,b4,d5] ~@2 [f#4,b4,d5] [f#4,b4,d5]@2 [f#4,b4,d5]", // Bm
  E: "[e4,a4,c#5]@2 [e4,a4,c#5] ~@2 [e4,a4,c#5] [e4,a4,c#5]@2 [e4,a4,c#5] [e4,a4,c#5]@2 [e4,a4,c#5] ~@2 [e4,a4,c#5] ~@2 [e4,a4,c#5] ~@2 [e4,a4,c#5] [e4,a4,c#5]@2 [e4,a4,c#5]", // A
  F: "[f#4,b4,d5]@2 [f#4,b4,d5] ~@21", // Bm
})).s("gm_rock_organ").gain(0.21)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note("<~@16 A@3 B A@3 B ~@11 C ~ D ~ C ~@20 A@3 B A@3 B ~ C ~ D ~ C ~@33>".pickRestart({
  A: "~@2 a3 ~@2 b3 ~@2 a3 ~@2 b3 ~@3 a3@2 b3 ~@2 a3 ~@2 b3",
  B: "~@2 b3 a3 ~@2 b3 ~@2 a3 ~@2 b3 ~@2 a3@2 b3 ~@2 d4 ~@2 b3",
  C: "~@2 [f#3,a3,c#4] ~@2 [f#3,a3,c#4] ~@2 [f#3,a3,c#4] f#3@2 [f#3,a3,c#4] [e3,g#3,b3]@2 ~ [f#3,a3]@2 [g#3,b3] ~@2 [g#3,b3] ~@2 [g#3,b3]", // F#m E F#m G#m
  D: "~@2 [e3,g#3,b3] ~@2 [e3,g#3,b3] [e3,g#3,b3]@2 [e3,g#3,b3] ~@2 [f#3,a3,d4] [e3,a3,c#4] ~@2 [e3,g#3,b3]@2 [e3,a3,c#4] ~@2 [e3,a3,c#4] ~@2 [e3,a3,c#4]", // E D A E A
})).s("gm_acoustic_guitar_nylon").gain(0.33)

// chords · harpsichord
const harpsichord = note(`<
  A B A B ~@20 A B A B A B ~@18 A B A B A B A B ~@26 A B A B A B A B A B A B A B A B A B A B A B A B C
>`.pickRestart({
  A: "~@2 [f#3,b3,d4]@3 ~@19", B: "~@2 [f#3,a3,d4]@3 ~@9 [e3,a3,c#4]@3 ~@7", C: "~@2 [f#3,b3,d4] ~@21",
})).s("gm_harpsichord").gain(0.32).pan(0.4)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  A B A B ~@20 A B A B A B ~@18 A B A B A B A B ~@26 A B A B A B A B A B A B A B A B ~@9
>`.pickRestart({
  A: "[b2,d3,f#3,b3]@6 [d4,f#4,b4,d5]@2 ~ [d4,f#4,b4,d5]@3 ~@12", // Bm
  B: "[d3,f#3,a3,d4]@6 [f#4,a4,d5]@2 ~ [f#4,a4,d5]@2 ~ [a2,c#3,e3,a3]@6 [e4,a4,c#5]@2 ~ [e4,a4,c#5]@2 ~", // D A
})).s("gm_string_ensemble_1").gain(0.33)

// other · trumpet
const trumpet = note("<~@11 A B C B D ~@13 A B C B D ~@21 A B C B D ~@47>".pickRestart({
  A: "~@23 b4", B: "~@2 b4 a4@2 ~@4 f#3@2 b2 ~@2 b2 c#3@2 ~ d3@2 ~ f#3@2 b4",
  C: "~@2 b4 f#4@2 ~ a4@2 ~@3 b2 ~@2 b2 c#3@2 ~ d3@2 ~@3 b4", D: "~@2 b4 f#4@2 ~ a4@2 ~@3 b2 ~@2 b2 c#3@2 ~ d3@2 ~@4",
})).s("gm_trumpet").gain(0.37).pan(0.3)

// chords · synth brass 1
const synth_brass_1 = note(`<
  ~@4 A B@2 C@4 D ~@4 E@2 F G H@3 I ~@10 J ~ J ~ K ~ L@2 G M N O P@2 ~@12 Q@3 R@2 S@2 D J ~ J ~ T ~ N U@2 F V U@2 W ~@16
  X@2 Y@4 Z@2 AA
>`.pickRestart({
  A: "[a3,c#4,e4,f#4]", B: "[~@24 f#3@23 ~, [a3,c#4,e4]]/2",
  C: "[[g3,b3,d4]@24 c#4@23 ~@25 f#3@24, f#4@47 ~ c#4@48, ~ [a3,e4]@3]/4", D: "[g3,b3,d4,f#4]@23 ~",
  E: "[[e4,f#4]@23 ~ e4@24, [a3,c#4]@47 ~]/2", F: "[f#3,a3,c#4,e4]", G: "[g3,b3,d4,f#4]",
  H: "[[c#4,e4,f#4]@23 ~@25 f#3@24, a3, ~ [c#4,e4]@2]/3", I: "[g3,b3,d4,f#4]@11 ~", J: "[d4,f#4,a4,b4]@23 ~",
  K: "[d4,f#4,a4,b4]@11 ~", L: "[[b3,d4] [a3,c#4], f#4@47 ~]/2", M: "[f#3,a3,c#4], e4@11 ~", N: "[b3,d4,f#4]@23 ~",
  O: "[a3,c#4,f#4]", P: "[[g3,b3]@22 ~@2 [f#3,a3,c#4,e4]@23 ~, f#4@13 ~@11, d4 ~]/2",
  Q: "[[c#4,e4,f#4]@23 ~ [c#4,e4]@24 [c#4,e4]@24, a3, ~@24 f#3@11 ~]/3", // F#7 C#m
  R: "[[g3,b3,d4]@24 [a3,c#4,e4]@23 ~, f#4@47 ~]/2", S: "[[c#4,e4]@11 ~ [f#3,c#4,e4]@12, a3]/2", T: "[d4,f#4,a4,b4]",
  U: "[[a3,c#4] [g3,b3,d4], f#4]/2", V: "[b3,d4,f#4]", W: "[f#3,a3,c#4,e4]@11 ~",
  X: "[[d3,b3]@24 d4@11 ~ [e3,c#4]@12, f#3@3 ~, ~ a3]/2", Y: "[[d3,b3]@2 d4 [e3,c#4], f#3@3 ~, ~ a3]/2",
  Z: "[[d3,b3]@24 d4@12 [e3,c#4]@11 ~, f#3@37 ~@11, ~@24 a3@23 ~]/2", AA: "[d3,f#3,b3]@5 ~@19",
})).s("gm_synth_brass_1").gain(0.28).pan(0.7)

// other · string ensemble 1
const string_ensemble_1_2 = note("<~@40 A@2 B C D E F@2 ~@26 A@2 B C D G H@2 ~@25>".pickRestart({
  A: "f#5/2", B: "d6", C: "c#6", D: "f#6", E: "e6@23 ~", F: "[b6@23 ~]/2", G: "e6", H: "[b6@15 ~]/2",
})).s("gm_string_ensemble_1").gain(0.33)

// drums · kick
const kick = s("bd").struct("<A@3 B A@23 B C B A@21 B C A@32 B C A@6 B C A@6 B C A@3 D>".pickRestart({
  A: "x ~@4 x ~@3 x ~@4 x ~@2 x ~@6", B: "x ~@4 x ~@3 x ~@4 x ~@2 x ~@2 x!4", C: "x ~@4 x ~@2 x!4 ~@2 x ~@2 x ~@2 x!4",
  D: "x!2 ~@10",
})).gain(0.42)

// drums · snare
const snare = s("sd").struct("<[~ x ~ x]!106 [x!2 ~@10]>").gain(0.48)

// drums · hihat
const hihat = s("hh").struct("<A@4 B@8 A@4 B@8 A@10 B A B A B@10 A@12 B@9 A B A B@10 A@24 ~>".pickRestart({
  A: "x ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x ~@3", B: "x ~ x!2 ~ x!2 ~ x ~@3 x ~ x!2 ~ x!2 ~ x ~@3",
})).gain(0.42)

// drums · open hat
const open_hat = s("oh").struct("<A@4 B@8 A@4 B@8 A@10 B A B A B@10 A@12 B@9 A B A B@10 A@24 ~>".pickRestart({
  A: "~@7 x", B: "~@3 x ~@3 x",
})).gain(0.42)

// drums · crash
const crash = s("cr").struct("<~@40 x ~@33 x ~@32>").gain(0.42)

// drums · ride
const ride = s("rd").struct(`<
  A B A B ~@20 A B A B A B ~@18 A B A B A B A B ~@26 A B A B A B A B A B A B A B A B A B A B A B A B ~
>`.pickRestart({
  A: "~ x ~@10", B: "~ x ~@5 x ~@4",
})).gain(0.48)

// drums · claves
const claves = s("clave:2").struct("<~@4 A@8 ~@4 A@8 ~@10 A ~ A ~ A@10 ~@12 A@9 ~ A ~ A@10 ~@25>".pickRestart({
  A: "~ x ~@6",
})).gain(2.06)

// drums · triangle
const triangle = s("triangles:30").struct("<~@12 A@4 ~@14 A@4 ~ A ~ A ~@18 A@4 ~@9 A ~ A ~@35>".pickRestart({
  A: "~@5 x ~ x",
})).gain(3.66)

// drums · triangle
const triangle_2 = s("triangles:35").struct("<~@12 A@4 ~@14 A@4 ~ A ~ A ~@18 A@4 ~@9 A ~ A ~@35>".pickRestart({
  A: "~@7 x ~ x ~@2",
})).gain(3.66)

// drums · shaker
const shaker = s("sh").struct("<~@4 A@8 ~@4 A@8 ~@10 A ~ A ~ A@10 ~@12 A@9 ~ A ~ A@10 ~@25>".pickRestart({
  A: "~ x",
})).gain(0.42)

// drums · rim
const rim = s("rim").struct("<~@4 A@8 ~@4 A@8 ~@10 A ~ A ~ A@10 ~@12 A@9 ~ A ~ A@10 ~@25>".pickRestart({
  A: "~ x ~",
})).gain(0.48)

stack(
  bass, rock_organ, acoustic_guitar_nylon, harpsichord, string_ensemble_1, trumpet, synth_brass_1, string_ensemble_1_2,
  kick, snare, hihat, open_hat, crash, ride, claves, triangle, triangle_2, shaker, rim
)

More by Celine Dion