Strudelify

Je sais pas

Celine Dion

KeyE minorTempo90 bpm
0:00/0:00
// Je sais pas — Celine Dion
// 90 bpm, 6/8, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 133 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(90/3)

// 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(`<
  ~@52 A B C D E F G H I J K L M N O P Q R S T U V W X Y@2 Z AA Y AB AC AD G AE AF AG W AH AI AJ AK R S AL AM AN A AO AP
  R AQ D AR AS AT AU G@2 AV S G AB G AW AX AY AZ BA Y BB BC BD BE BB BF BG AI BH BI BJ ~
>`.pickRestart({
  A: "e1@17 ~@3 e1 ~@3", B: "e1@11 ~", C: "d1@17 ~@3 d1@2 ~@2", D: "d1@19 ~@5", E: "e1@17 ~@3 e1@2 ~@2",
  F: "c1@3 ~ d1@3 ~", G: "e1@16 ~@4 e1@3 ~", H: "b1@3 ~ e1@13 ~@3 d1@4", I: "g1@16 ~@4 d1@3 ~", J: "g1@16 ~@4 g1@3 ~",
  K: "d1@18 ~@2 d1@3 ~", L: "d2@15 ~ d1@8", M: "a1@17 ~@3 e1@4", N: "a1@12 ~@4 a1@3 ~ g1@4", O: "e1@16 ~@4 b0@3 ~",
  P: "e1@12 ~@4 d1@3 ~ d1@2 ~@2", Q: "g1@8 ~@2 g1 ~", R: "g1@12 ~@4 g1@3 ~ a1@3 ~", S: "d1@8 ~@2 d1 ~",
  T: "d1@13 ~@7 d1@2 ~@2", U: "c1@17 ~@3 g1@2 ~@2", V: "c2@13 ~@3 c1@3 ~ d1@3 ~", W: "g1@17 ~@3 g1@3 ~",
  X: "f#1@3 ~ g1@3 ~ a1@3 ~ d1@3 ~ d1@3 ~ d1@3 ~", Y: "e1@17 ~@3 e1@3 ~", Z: "d1@17 ~@3 d1@4", AA: "d1@4 ~ d1",
  AB: "c1@10 ~@2 d1@9 ~@3", AC: "e1@4 ~ e1", AD: "e1@6 ~@2 d2@4 e2@3 ~ a1@3 ~ g1@3 ~", AE: "e1@15 ~@5 e1@4",
  AF: "c2@17 ~@3 c2@4", AG: "c2@13 ~@3 c2@3 ~ b1@3 ~", AH: "d1@9 ~ d1@2", AI: "e1@18 ~@2 e1@3 ~",
  AJ: "e1@11 ~ d1@3 ~ d1@3 ~ d1@4", AK: "g1@15 ~@5 d1@3 ~", AL: "d1@13 ~@3 d1@3 ~ e1@3 ~", AM: "a1@17 ~@3 e1@3 ~",
  AN: "a1@13 ~@3 a1@3 ~ g1@4", AO: "e2@7 ~ d2@5 ~@3 a1@2 ~@2 f#1@2 ~@2", AP: "g1@17 ~@3 d1@2 ~@2", AQ: "d1@5 ~",
  AR: "c1@15 ~@5 c1 ~@3", AS: "c1@7 ~ c1@4 ~@4 c1@4 ~@4", AT: "g1@19 ~ g1 ~@3",
  AU: "f#1@3 ~ g1@3 ~ a1@5 ~@3 d2@3 ~ e2@3 ~", AV: "d1@16 ~@4 d1@3 ~", AW: "c1@9 ~@3 d1@10 ~@2", AX: "e1@7 ~@3 e1 ~",
  AY: "c1@11 ~ d1@9 ~@3", AZ: "e1@15 ~@5 e1@3 ~", BA: "c2@7 ~ c2@2 ~@2 d2@7 ~ d2@3 ~", BB: "c1@11 ~ d1@11 ~",
  BC: "e1@14 ~@2 f#1@4 g1@3 ~", BD: "c2@7 ~ c2@3 ~ d2@7 ~ d2@4", BE: "e1@9 ~ e1 ~", BF: "e1@14 ~@2 f#1@3 ~ g1@3 ~",
  BG: "c2@7 ~@5 d2@7 ~ d2@3 ~", BH: "c1@11 ~ d1@10 ~@2", BI: "e1@15 ~ f#1@4 g1@2 ~@2",
  BJ: "c2@7 ~ c2@3 ~ d2@7 ~ d2@3 ~",
})).s("gm_electric_bass_finger").gain(0.43)

// chords · distortion guitar
const distortion_guitar = note(`<
  ~@35 A B@2 ~@4 C@4 ~@36 D@2 E@2 F@2 ~@26 G@2 ~ H@2 ~@3 E@2 ~ I@3 J@2 ~@3
>`.pickRestart({
  A: "[d5,f#5]", B: "[~ e2@47]/2", C: "[~@25 [b3,e4]@69 ~@2, ~@23 b2@71 ~@2, ~@24 [e3,g3]@71 ~]/4",
  D: "[~@13 g4@35, ~ [b3,e4]@3]/2", E: "[e2@47 ~]/2", F: "[c3@47 ~]/2", G: "[~ [d4,a4,d5]@3]/2",
  H: "[~@11 e5@34 ~@3]/2", I: "[~@7 [d3,a3,d4,f#4]@13 ~ [e3,b3,e4,g4]@41 ~@10]/3", J: "[~@19 a4@27 ~@2]/2",
})).s("gm_distortion_guitar").gain(0.12)

// chords · pad warm
const pad_warm = note(`<
  A@4 B@4 C@6 D@3 E F@2 G@4 H@4 I@8 J@8 K@5 L@5 M@6 N@8 O@8 P@4 Q@8 R@4 S@6 T@2 U@7 V W@8 X@8 Y@8 ~
>`.pickRestart({
  A: "[a4@6 ~@32 [d6,f#6]@47 ~@11, f#5@27 e6@56 ~@13, d5@11 ~ b5@72 ~@12, ~@6 a5@21 g5@35 ~@34, ~@6 [b4,e5]@23 ~@19]/4", // D E5
  B: "[[e2,b3,e4,g4]@47 ~ [d2,a3,d4]@48, ~@47 f#4@48 ~]/4", // Em D5
  C: "[[e2,b3,e4,g4]@23 ~ [g3,c4,e4]@10 ~@2 [a3,d4,f#4]@11 ~ e4@83 ~ [e4,g4,b4]@12, ~@23 c2@12 d2@12 e2@94 ~@3, ~@47 [b3,g4]@83 ~@14]/6", // Em C D Em
  D: "[~@23 d5@24 [e2,b3,e4,g4,b4]@24 ~, [d2,d4,f#4,a4]@47 ~@25]/3", // Em D
  E: "[c2,c4,e4,g4]@11 ~ [d2,a4]@12, ~@11 [d4,f#4]@10 ~@3", F: "[~ [b3,e4,b4]@46 ~, [e2,g4]]/2",
  G: "[[g2,g4]@47 ~ d2@48, [d4,b4]@45 ~@2 [d4,f#4,a4]@46 ~@3]/4", // G D
  H: "[[a2,c4,e4,a4]@47 ~ e2@36 [f#2,d4,f#4,a4]@11 ~, ~@47 [b3,e4,g4]@34 ~@15]/4", // Am D Em
  I: "[[g2,g4,b4]@47 ~ [d2,f#4]@47 [c2,c4,e4]@48 [g2,b3]@24 ~ d2@24, d4@93 ~@50 d4@48 ~, ~@47 a4@46 ~@2 g4@71 ~ [a3,f#4]@24 ~]/8", // G D C G D
  J: "[[e2,b3,e4]@47 ~ d2@47 ~ e2@23 [c2,c4]@12 [d2,d4,f#4,a4]@12 ~ [e2,b3,e4]@48, g4@46 ~ [a3,d4,f#4]@48 e4@34 ~@63, ~@95 b3@21 ~@76, ~@96 g4@34 ~@13 g4@48 ~]/8", // E5 C D E5 D
  K: "[[e2,e4]@47 ~ c2@47 [g2,d4]@24 [d2,a3,f#4], [b3,g4]@46 ~ g4@71 ~@2, ~@47 [c4,e4]@48 b3@22 ~@3]/5", // E G5 D Em C
  L: "[~@12 [b3,g4]@47 ~, ~@23 [e2,e4]@95 ~@2]/5", // Em E
  M: "[[d2,a3,d4,f#4]@47 [e2,b3]@24 ~ c4@10 ~ [d2,a3,d4,f#4]@12 ~ [b3,g4]@45 ~@3, ~@47 [e4,g4]@36 ~@12 e4@45 ~@4, ~@71 c2@12 ~@12 e2@48 ~]/6", // D E5 D Em
  N: "[[g2,g4,b4]@48 [d2,f#4]@48 a2@48 [e2,b4]@35 ~ f#2@11 ~, d4@93 ~@3 e4@80 ~@16, ~@48 a4@93 ~@3 g4@33 ~@2 [f#4,a4,d5]@11 ~@2, ~@32 c5@15 ~@17]/8", // G D E5 D
  O: "[[g2,g4]@47 ~ d2@47 ~ [c4,e4,g4]@46 ~ [g2,b3,d4,g4]@24 ~ d2@24, d4@93 ~@2 c2@48 ~@49, b4@46 ~ [f#4,a4]@46 ~@74 [a3,d4,f#4]@24 ~]/8", // G C G F#m D
  P: "[[e2,b3,e4] [d2,a3,d4,f#4], g4@23 ~@25]/4", // E5 D
  Q: "[[e2,b3]@23 ~ c4@10 ~@2 f#4@11 ~@97 [c2,c4]@47 g2, [e4,g4]@35 a3@10 ~@2 e4@142 ~@3, ~@23 c2@12 [d2,d4]@12 b3@93 ~@52, ~@47 g4@46 ~@3 g3@94 ~@2, ~@16 e2@31 ~@17]/8", // E5 C Em D
  R: "[[b3,d4,g4]@23 ~ [a3,d4,f#4]@22 ~@2 [g3,b3,e4]@33 ~@3 f#4@11 ~, ~@23 d2@24 e2@49, ~@83 [a3,d4]@11 ~@2]/4", // G D Em D5
  S: "[[g2,g4,b4] [d2,f#4] [a2,e4,c5], d4@23 ~@13, ~@16 a4@31 ~]/6", // G D Am
  T: "[[e2,e4,b4]@35 ~ f#2@11 ~, g4@33 ~@2 [d4,f#4,a4]@10 ~@3]/2", // E5 D
  U: "[[g2,b4]@48 [d2,f#4,a4]@47 ~ [e4,c5]@45 ~@3 [d4,b4]@23 ~, d5@93 ~@3 g4@70 ~@2, g4@46 ~@49 c2@48 g2@25]/7", // G D C G
  V: "[d2,d4,f#4,a4]", // D
  W: "[[e2,e4,g4,b4]@48 [d4,f#4,a4]@45 ~@3 [e2,b4]@23 [c2,e4,g4,c5]@12 [d4,f#4,a4]@10 ~@3 e2@24 c2@11 [d4,f#4,a4]@10 ~@3, ~@48 d2@48 [e4,g4]@21 ~@14 d2@12 [e4,g4,b4]@36 d2@13]/8", // Em D E5 C D Em
  X: "[e2@23 c2@13 [d2,d4,f#4,a4]@11 ~@24 c2@12 ~ [d4,f#4,a4]@11 ~@25 c2@12 [d2,d4,f#4,a4]@11 ~@25 c2@11 ~ [d4,f#4,a4]@11 e2, [e4,g4,b4]@36 ~@11 e2@24 ~@12 d2@12 e2@25 ~@23 e2@25 ~@11 d2@13, ~@4 [e4,g4,b4]@3 ~ [e4,g4,b4]@3 ~ [e4,g4,b4]@3 ~]/8", // D Em
  Y: "[~@24 c2@11 ~ [d4,f#4,a4]@11 ~@25 c2@12 [d2,d4,f#4,a4]@11 ~@25 c2@11 ~ [d4,f#4,a4]@11 ~@24 c2@12 ~ [d4,f#4,a4]@11 ~, [e4,g4,b4]@35 d2@12 e2@25 ~@23 e2@25 ~@11 d2@13 [e4,g4,b4]@36 ~@12, ~@48 [e4,g4,b4]@35 ~@13 [e4,g4,b4]@35 ~@12 e2@25 ~@11 d2@13]/8", // D Em
})).s("gm_pad_warm").gain(0.1).pan(0.3)

// chords · pad bowed
const pad_bowed = note("<A@4 ~ B@2 C@5 D@4 E@2 F@4 G@2 H@2 I J K@6 L@2 M@2 ~ N O P@3 ~@89>".pickRestart({
  A: "[~@61 [g6,b6,e7]@35, ~@3 b5@46 e4@47, ~@7 f#6@48 ~@2 e5@39, ~@8 b6@21 ~@19, ~@13 e6@16 ~@19]/4", // Em
  B: "[~@11 b5@22 ~@15]/2", C: "[~@4 d5@40 ~@2 e5@12 ~ d5@8 b4@12 ~@5 [e6,g6,b6]@36, ~@79 e5@37 ~@4]/5",
  D: "[g4@23 g5@24 f#4@24 f#5@23 ~@2, [b4,e5]@47 [a4,d5]@46 ~@3]/4", // E5 D5
  E: "[[e6,g6]@11 ~@12 c7@12 ~@13, b6@11 ~@13, ~@11 [e7,g7]@24 ~@13]/2", F: "[[b6,e7,g7]@41 ~@4 d6@49 ~@2]/4",
  G: "[a6@12 g6@11 f#6@22 ~@3, [a5,d6]@23 ~]/2", H: "[a5@23 a6@24 ~, [c6,e6]]/2", I: "[e6,g6,b6]@11 ~",
  J: "[e6,g6]@11 [d6,f#6,a6]@11 ~@2, b5@3 ~@5", // Em D
  K: "[[b5,d6,g6]@22 ~ [g6,a6,d7]@23 ~ [f#6,a6,d7]@46 ~@27 a6@21 ~@3, ~@95 [e6,g6,d7]@47 ~@2]/6", // G Gsus2 D Em7
  L: "[[d6,g6,b6]@29 ~@19]/2", M: "[[b5,e6,g6,b6]@11 ~]/2", N: "d6 d7, [e6,a6]@7 ~", O: "d6 b6, [e6,a6]",
  P: "[~@47 e7@22 ~@3, ~@23 [e6,g6]@46 ~@3, ~@12 b6@23 ~]/3", // Em
})).s("gm_pad_bowed").gain(0.3)

// chords · pad bowed · soft notes
const pad_bowed_soft = note("<~@2 A@3 ~@14 B@3 ~@111>".pickRestart({
  A: "[~@5 b4@5 ~@8 g4@30 ~@24, ~@14 b4@35 ~@23]/3", B: "[~@11 [g5,b5]@25]/3",
})).s("gm_pad_bowed").gain(0.17)

// chords · string ensemble 2
const string_ensemble_2 = note("<~@52 A@2 B@2 C@4 D@8 E@8 F@2 G@2 H@2 F@2 ~@8 D@8 E@8 F@2 G@2 H@20 ~>".pickRestart({
  A: "[e4,g4,b4]/2", B: "[d4,f#4,a4]/2",
  C: "[[e4,g4,b4]@23 [c4,e4,g4]@11 ~ [d4,f#4,a4]@12 ~ e4@46 ~@2, ~@47 [g4,b4]@47 ~@2]/4", // Em C D G
  D: "[[g4,b4]@47 f#4@48 ~@49 b4@35 ~ d4@11 ~, d4@95 c5@49 ~@48, ~@47 a4@97 g4@34 ~ [f#4,a4]@11 ~@2, ~@96 e4@83 ~@13]/8", // G F#m
  E: "[[g4,b4]@47 [f#4,a4]@48 [c4,e4]@49 b3@23 ~ a3@23 ~, d4@94 ~ g4@72 f#4@23 ~@2, ~@144 d4@47 ~]/8", // G F#m C
  F: "[b3,e4,g4]/2", G: "[a3,d4,f#4]/2", H: "[b3@22 ~@2 c4@10 ~ [a3,d4,f#4]@13, [e4,g4]@35 ~@13]/2",
})).s("gm_string_ensemble_2").gain(0.11).pan(0.9)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~@52 A B@2 ~ C ~ C ~ D ~ E ~ F ~ G ~ H ~ E ~ I ~ H J K ~ L ~ C ~ C ~@9 M ~ N ~ O ~ P Q R ~ E ~ S ~ R T A ~ L ~ C ~ U ~
  U ~ U ~ U ~ U ~ U ~ U ~ U ~ U ~@2
>`.pickRestart({
  A: "~@6 [b3,g4,b4] ~@5", B: "[~@8 d4@19 ~@9 [d4,f#4,a4] ~@11, e3@13 ~@11, ~@2 g3@11 ~@11]/2",
  C: "~@12 [e4,g4,b4] ~@11", D: "~@12 [b3,d4,g4] ~@11", E: "~@12 [f#4,a4,d5] ~@11", F: "~@12 [c4,e4,a4] ~@11",
  G: "~@12 [g4,b4,e5] ~@11", H: "~@12 [g4,b4,d5] ~@11", I: "~@12 [e4,g4,c5] ~@11", J: "~@2 e4, d3 d4@2, ~ a3@5",
  K: "~@12 [b3,g4,b4] ~@11", L: "~@12 [d4,f#4,a4] ~@11", M: "~@6 [b3,d4,g4] ~@5", N: "~@6 a4 ~@5, ~@11 [f#4,d5]@2 ~@11",
  O: "~@6 [c4,e4,a4] ~@5", P: "~@6 [g4,b4,e5] ~@5", Q: "~@8 d4@3 ~@9 d3@4, a2, ~@4 a3@11 ~ a3@8, ~ d4",
  R: "~@6 [g4,b4,d5] ~@5", S: "~@6 [e4,g4,c5] ~@5", T: "~@2 e4, d3, ~ a3@5, ~ d4@2", U: "~@6 [e4,g4,b4] ~@5",
})).s("gm_electric_guitar_clean").gain(0.25)

// chords · rock organ
const rock_organ = note(`<
  A@6 B@8 C@4 D@2 E@4 F@4 G@8 H@2 I@4 J@8 K@4 L@2 M@2 D@2 N@8 O@4 P@4 Q@2 R@3 S@8 T U@2 V@7 W@5 X@4 Q@2 Y@2 Z@2 AA@2 Z@2
  AB@2 Z@2 AC@2 AD@4 AE@4 ~
>`.pickRestart({
  A: "[[b4,e5,g5,b5]@143 ~]/6", // Em
  B: "[[a4,d5,f#5]@47 [b4,g5]@22 ~@2 [g4,c5]@12 ~ [a4,d5]@11 ~ [b4,g5]@95 ~, ~@47 e5@36 f#5@12 e5@94 ~@3]/8", // D Em C5 D5 Em
  C: "[[a4,d5,f#5]@47 [b4,g5]@23 ~ [g4,c5]@11 ~@2 [a4,d5]@11 ~, ~@47 e5@36 f#5@12 ~]/4", D: "[b4,e5,g5]/2",
  E: "[[b4,g5]@47 [a4,f#5]@48 ~, d5@95 ~]/4", F: "[[c5,a5]@48 [b4,g5]@35 ~ [d5,f#5,a5]@11 ~, e5@85 ~@11]/4",
  G: "[[g5,b5]@48 [f#5,a5]@47 [c5,e5]@49 b4@23 ~ [a4,f#5]@24, d5@94 ~ g5@72 ~@25, ~@3 d5]/8", H: "[[b4,e5,g5]@47 ~]/2",
  I: "[[a4,d5,f#5]@47 ~ b4@24 c5@11 ~ [d5,f#5]@12, ~@47 [e5,g5]@36 a4@11 ~@2]/4", // D Em
  J: "[b4@95 c5@47 ~@2 b4@22 ~@2 a4@23 ~, g5@166 ~ f#5@24 ~, e5@143 ~ d5@48]/8", K: "[~ g5@95, [b4,e5]]/4",
  L: "[a4,d5,f#5]/2", M: "[b4@24 c5@11 ~ [a4,d5,f#5]@12, [e5,g5]@3 ~]/2",
  N: "[[g5,b5]@48 f#5@48 c6@47 ~ [g5,b5]@36 [d5,f#5,a5]@10 ~@2, d5@95 ~ e5@83 ~@13, ~ a5@2 ~]/8", // G D
  O: "[[g5,b5] [f#5,a5], d5@95 ~]/4", P: "[[c5,e5]@48 b4@22 ~@2 a4@23 ~, g5@71 f#5@24 ~, ~@48 d5@47 ~]/4",
  Q: "[e5,g5,b5]/2", R: "[[d5,f#5,a5]@47 [e5,g5,b5]@25]/3",
  S: "[c6@12 [d5,f#5,a5]@11 ~@97 c6@47 ~ [d5,b5]@24, ~@23 b5@97 ~@72, ~@24 g5@167 ~, ~ e5@6 ~]/8", T: "[f#5,a5]",
  U: "[[e5,g5,b5]@3 [d5,f#5,a5]]/2", V: "[[g5,b5]@47 ~ f#5@47 ~ c6@48 [g5,b5]@24, d6@95 ~ e5@72, ~@48 a5@95 ~@25]/7",
  W: "[~@6 [f#5,a5]@6 [g5,b5]@24 [f#5,a5]@23 ~, ~@12 d6@107 ~]/5", X: "[[e5,c6]@2 b5 [f#5,a5], g5@35 ~@13, ~ d5]/4",
  Y: "[d5,f#5,a5]/2", Z: "[b5@2 c6 [d5,f#5,a5], [e5,g5]@35 ~@13]/2",
  AA: "[b5@23 c6@13 [d5,f#5,a5]@11 ~, [e5,g5]@35 ~@13]/2", AB: "[b5@2 c6 [d5,f#5,a5], [e5,g5]@3 ~]/2",
  AC: "[b5@24 c6@11 ~ [d5,f#5]@11 ~, [e5,g5]@35 a5@12 ~]/2", AD: "[b5@24 c6@12 [d5,f#5,a5]@11 ~, [e5,g5]@35 ~@13]/2",
  AE: "[b5@23 c6@12 ~ [d5,f#5,a5]@11 ~ b5@24 c6@11 ~ [d5,f#5,a5]@10 ~@2, [e5,g5]@35 ~@12 e5@35 ~@14, ~@48 g5@35 ~@13]/4", // D Em
})).s("gm_rock_organ").gain(0.05).pan(0.4)

// other · tenor sax
const tenor_sax = note("<~@43 A@4 B C@2 D@2 ~@31 E@5 F@2 G H ~@26 I ~ J@2 K@3 ~ L M ~ N ~@3>".pickRestart({
  A: "[~@16 a4 b4 ~ d5@2 ~@2 e5@40 d5@4 b4@4 b4@4 a4@10 ~@3 g4 ~ g4 ~ b4@4]/4", B: "e4@4 ~@15 e4 g4@2 e4 ~",
  C: "[b4@3 d5@13 e5@3 ~ d5@3 b4@5 a4@12 ~@2 a4 b4@4 ~]/2",
  D: "[e4@3 g4@9 ~@11 a3@4 ~ a3@2 g3 a3@3 b3@2 d4@2 e4@2 g4@5 ~@3]/2",
  E: "[~@15 g4@3 ~ a4@3 ~ b4@4 ~ e4@11 g4@3 ~ a4@3 ~ b4@3 ~ d5@11 ~@2 b4@3 d5@3 ~ d5@16 ~ d5@3 ~ b4@3 a4@3 g4 e4@9 ~@6 e4 ~ g4@2 e4 ~]/5",
  F: "[b4@2 d5 ~@2 b4 ~ d5@21 c5@2 b4@2 a4@3 ~ a4@7 ~ a4@3 ~, ~@2 d5 ~@21]/2", G: "a4 ~ g4@8 e4@6 ~@8",
  H: "d4@2 b3 ~@2 g3 ~@2 a3 ~ a3@2 g3@2 e3 ~ d3@3 ~@5, ~@2 a3 ~@9", I: "~@6 a4@10 g4 ~ e4 ~@5",
  J: "[~@11 b4@5 e4@2 ~@3 a4@14 ~@13]/2", K: "[~@16 d5 ~@2 e5 ~@3 a4@3 ~ g4@8 e4@2 d4@2 e4@25 ~@8]/3",
  L: "~@4 e5@8 ~ b4@9 ~@2", M: "a4@2 g4 a4@2 g4@2 b4@4 a4@3 g4@2 ~ g4@2 b4@5, ~@8 a4 ~@3",
  N: "a4@2 g4@9 ~ a4@2 g4@2 b4@3 a4@4 ~",
})).s("gm_tenor_sax").gain(0.51)

// drums · kick
const kick = s("bd").struct(`<
  ~@42 A ~@9 B A B A B A B@3 A B A B A B@3 A B A B A B@3 A B A B A B C B A B A B A B@3 A B A B A B A B A B A B A B A B A
  B A B A B A B A B@3 A B@3 A B@3 A B@2 ~
>`.pickRestart({
  A: "x", B: "x ~@4 x", C: "x ~ x ~@2 x",
})).gain(0.4)

// drums · snare
const snare = s("sd").struct("<~@52 A@23 B A@7 C A@7 D A@15 D A@11 C A@7 C A C A@2 ~>".pickRestart({
  A: "~ x", B: "~ x ~ x ~@2", C: "~@3 x!2 ~", D: "~@2 x!2 ~@2",
})).gain(0.45)

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@51 A ~@7 A ~@15 A B ~@7 B ~@6 A ~@7 A ~@7 A ~@7 A ~@3 A ~@3 A ~@3 A ~ A ~ A ~
>`.pickRestart({
  A: "~@5 x", B: "x",
})).gain(0.51)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@52 A B C B C B C B C B C B C B C B A B C B C B C B A B C B C B C D A B E F C B ~@18 G H@3 G H@2 ~@18
>`.pickRestart({
  A: "~@2 x!4", B: "x!4 ~ x", C: "x!6", D: "~ x ~@4", E: "x!2 ~ x ~ x", F: "~ x ~ x ~ x", G: "x ~ x ~ x!2",
  H: "x!3 ~ x!2",
})).gain(0.4)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@53 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@3 A ~@3 A ~@18 B ~@3 B ~@20
>`.pickRestart({
  A: "~@2 x", B: "~ x ~@4",
})).gain(0.23)

// drums · mid tom
const mid_tom = s("mt").struct("<~@51 A ~@23 A ~@7 B ~@7 A ~@7 A ~@7 A ~@7 A ~@17>".pickRestart({
  A: "~@2 x", B: "~@5 x",
})).gain(0.51)

// drums · open hat
const open_hat = s("oh").struct("<~@83 A ~@2 B C ~@20 D@2 ~ D@3 ~@19>".pickRestart({
  A: "x ~ x!4", B: "~ x!2", C: "x!3", D: "~ x",
})).gain(0.4)

// drums · crash
const crash = s("cr").struct(`<
  ~@52 A ~@15 A ~@13 A B ~@2 A ~ A ~ A ~ A ~@6 C ~@7 B A ~ D ~@4 C A E A ~ A E A F ~ E A G A ~@2 F ~
>`.pickRestart({
// … 77 more lines

More by Celine Dion