Strudelify
I Don't Know cover art

1996 · Falling into You

I Don't Know

Celine Dion

KeyE minorTempo90 bpm
0:00/0:00
// I Don't Know — 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, A@4 for four bars: 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 C S T U J V G@2 K@2 G F G W G@2 X Y J K Z AA I R C AB M N A AC AD R D@2 AE AF
  AG AH G@2 K C G F G F AI F G AJ G AK AL AM AN AK AO AP AN F AL AM ~
>`.pickRestart({
  A: "e1@17 ~@3 e1 ~@3", B: "e1@11 ~", C: "d1@8 ~@2 d1 ~", D: "d1@19 ~@5", E: "e1@17 ~@3 e1@2 ~@2",
  F: "c1@10 ~@2 d1@9 ~@3", G: "e1@16 ~@4 e1@3 ~", H: "b1@3 ~ e1@13 ~@3 d1@4", I: "g1@16 ~@4 d1@3 ~",
  J: "g1@17 ~@3 g1@3 ~", K: "d1@17 ~@3 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@13 ~@7 d1@2 ~@2", T: "c1@17 ~@3 g1@2 ~@2", U: "c2@13 ~@3 c1@3 ~ d1@3 ~",
  V: "f#1@3 ~ g1@3 ~ a1@3 ~ d1@3 ~ d1@3 ~ d1@3 ~", W: "e1@6 ~@2 d2@4 e2@3 ~ a1@3 ~ g1@3 ~", X: "c2@17 ~@3 c2@4",
  Y: "c2@13 ~@3 c2@3 ~ b1@3 ~", Z: "e1@19 ~ e1@3 ~", AA: "e1@11 ~ d1@3 ~ d1@3 ~ d1@4", AB: "d1@13 ~@3 d1@3 ~ e1@3 ~",
  AC: "e2@7 ~ d2@5 ~@3 a1@2 ~@2 f#1@2 ~@2", AD: "g1@17 ~@3 d1@2 ~@2", AE: "c1@15 ~@5 c1 ~@3",
  AF: "c1@7 ~ c1@4 ~@4 c1@4 ~@4", AG: "g1@19 ~ g1 ~@3", AH: "f#1@3 ~ g1@3 ~ a1@5 ~@3 d2@3 ~ e2@3 ~",
  AI: "e1@7 ~@3 e1 ~", AJ: "c2@7 ~ c2@2 ~@2 d2@7 ~ d2@3 ~", AK: "c1@11 ~ d1@11 ~", AL: "e1@14 ~@2 f#1@4 g1@3 ~",
  AM: "c2@7 ~ c2@3 ~ d2@7 ~ d2@4", AN: "e1@17 ~@3 e1@3 ~", AO: "e1@14 ~@2 f#1@3 ~ g1@3 ~", AP: "c2@7 ~@5 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 B@2 E@2 ~@26 F@2 ~ G@2 ~@3 H@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 [e4,g4]@35, ~ b3@3]/2", E: "[c3@47 ~]/2", F: "[~ [d4,a4,d5]@3]/2", G: "[~@11 e5@34 ~@3]/2",
  H: "[e2@47 ~]/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@2 C@8 D@3 E F@2 G@4 H@4 I@8 J@4 K@2 B@2 L@5 M@5 N@6 O@8 P@8 Q@4 R S@8 T@3 U@6 V@2 W@7 X Y@8 Z@2 AA@8 AB@6 ~
>`.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]/2", // Em
  C: "[[d2,a3,d4,f#4]@48 [e2,b3,e4,g4]@23 ~ [g3,c4,e4]@10 ~@2 [a3,d4,f#4]@11 ~ [b3,e4,g4]@83 ~ [e4,g4,b4]@12, ~@71 c2@12 d2@12 e2@94 ~@3]/8", // D Em C D Em
  D: "[~@23 d5@24 [e2,b3,e4,g4,b4]@24 ~, [d2,f#4,a4]@47 ~@25, ~ d4@47 ~@24]/3", E: "[c2,c4,e4,g4] [d2,d4,f#4,a4]",
  F: "[~ [b3,e4,g4,b4]@46 ~, e2]/2", G: "[[g2,g4]@47 ~ d2@48, [d4,b4]@45 ~@2 [d4,f#4,a4]@46 ~@3]/4",
  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@48, g4@46 ~ [a3,d4,f#4]@48 ~]/4", // E5 D
  K: "[[e2,b3]@23 ~ c2@11 [d2,d4,f#4,a4]@13, [e4,g4]@17 ~@7, ~@23 c4@10 ~@15]/2", // E5 D Em
  L: "[[e2,b3,e4]@47 ~ [c2,c4]@47 [g2,b3,d4]@24 [a3,f#4], g4@46 ~ g4@71 ~@2, ~@47 e4@48 ~@25]/5", // E5 C G D
  M: "[d2@23 ~ [b3,e4,g4]@94 ~@2, ~@23 e2@95 ~@2]/5", // Em
  N: "[[d2,a3,d4,f#4]@47 [e2,b3]@25 [c2,c4]@11 [d2,a3,d4,f#4]@12 ~ [b3,e4,g4]@45 ~@3, ~@47 [e4,g4]@36 ~@12 e2@48 ~]/6", // D E5 C D Em
  O: "[[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
  P: "[[g2,g4,b4]@47 ~ d2@47 ~ [c4,e4,g4]@46 ~ [g2,b3,d4,g4]@24 ~ d2@24, d4@93 ~@2 c2@48 ~@49, ~@47 [f#4,a4]@46 ~@74 [a3,d4,f#4]@24 ~]/8", // G C G F#m D
  Q: "[[e2,b3,e4] [d2,a3,d4,f#4], g4@23 ~@25]/4", R: "[e2,b3,e4,g4]",
  S: "[[c2,c4]@11 ~ [a3,d4,f#4]@11 ~@97 [c2,c4]@47 ~ [b3,d4,g4]@23 ~, ~@11 d2@12 e4@142 ~@27, ~@23 b3@93 ~@76, ~@23 g4@46 ~@3 g3@94 ~@26, ~@24 e2@93 ~@50 g2@25]/8", // C D C G
  T: "[[d2,a3]@23 ~ [g3,b3,e4]@33 ~@3 [d4,f#4]@11 ~, [d4,f#4]@21 ~@2 e2@49, ~@59 a3@11 ~@2]/3", // D5 Em D
  U: "[[g2,g4,b4] [d2,f#4] [a2,e4,c5], d4@31 ~@17, ~@16 a4@31 ~]/6", // G D Am
  V: "[[e2,e4,b4]@35 ~ f#2@11 ~, g4@33 ~@2 [d4,f#4,a4]@10 ~@3]/2", // E5 D
  W: "[[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
  X: "[d2,d4,f#4,a4]", // D
  Y: "[[e2,e4,g4,b4]@48 [d4,f#4,a4]@45 ~@3 [e2,b4]@23 ~ [c2,c5]@11 ~ d4@9 ~@3 e2@24 c2@11 ~ d4@9 ~@3, ~@48 d2@48 [e4,g4]@21 ~@2 [e4,g4]@10 ~@2 d2@13 ~@35 d2@13, ~@131 [f#4,a4]@10 ~@2 [e4,g4,b4]@36 [f#4,a4]@10 ~@3]/8", // Em D E5 C Em F#m Em F#m
  Z: "[e2@23 c2@13 [d2,d4,f#4,a4]@11 e2, [e4,g4,b4]@3 ~]/2", // D Em
  AA: "[~@23 c2@12 ~ [d4,f#4,a4]@11 ~@25 c2@12 [d2,d4,f#4,a4]@11 ~@25 c2@12 [d2,d4,f#4,a4]@11 ~@25 c2@12 [d2,d4,f#4,a4]@11 e2, [e4,g4,b4]@35 d2@12 e2@25 ~@23 e2@25 ~@23 e2@25 ~@24, ~@4 [e4,g4,b4]@3 ~ [e4,g4,b4]@3 ~ [e4,g4,b4]@3 ~]/8", // D Em
  AB: "[~@24 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]@36 ~@11 e2@25 ~@11 d2@13 [e4,g4,b4]@36 ~@12, ~@48 [e4,g4,b4]@36 ~@11 e2@25 ~@11 d2@13]/6", // D Em
})).s("gm_pad_warm").gain(0.1).pan(0.3)

// other · pad new age
const pad_new_age = note(`<
  A@6 ~@2 B@2 ~@2 C@3 ~ B@2 D@2 E@2 ~@2 F@4 G@6 H@2 I@2 J K I@3 L M I@2 M N O M@3 I P Q I R I@2 S T U V W X Y Z Y AA
  AB@2 M AC AD AE M I P Q I R I@4 AF@2 AD AE AG AH S AI AJ AB X AK Y AL S AA V AM I L AN AO M@2 P AP M R M AQ M R I AG M
  R M AR M AG M AG M AG AS AR ~
>`.pickRestart({
  A: "[~@4 g5@43 ~]/6", B: "[g5@3 ~]/2", C: "[~@23 b5@28 ~@21, g5@47 ~@25]/3", D: "[~ g5@46 ~]/2", E: "[~ g5@44 ~@3]/2",
  F: "[c6@4 g5@3 ~]/4", G: "[~@36 d6@11 ~@49 g5@44 ~@4, g5@47 d5@47 ~ c6@44 ~@5, ~@12 d6@23 ~]/6",
  H: "[~@21 [a5,d6,f#6]@26 ~]/2", I: "e6 f#6 g6 a6 g6 f#6", J: "d6 e6 f#6 g6 f#6 e6", K: "d6 e6 f#6 g6 f#6 d6",
  L: "e6@4 f#6@4 g6@4 a6@4 g6@4 f#6@3 ~", M: "e6@3 ~ f#6@3 ~ g6@3 ~ a6@3 ~ g6@4 f#6@4",
  N: "d6@4 e6@4 g6@3 ~ a6@3 ~ g6@4 f#6@4", O: "d6@4 g6@4 a6@4 g6@4 f#6@4 d6@3 ~",
  P: "d6@4 e6@3 ~ f#6@3 ~ g6@4 f#6@4 e6@4", Q: "d6@4 e6@3 ~ f#6@4 g6@4 f#6@4 d6@4", R: "e6 f#6 g6 f#6 e6 d6",
  S: "g6 a6 b6 c7 b6 a6", T: "g6 a6 b6 c7 b6 g6", U: "f#6 g6 a6 b6 a6 g6, ~@8 g6 ~@15", V: "f#6 g6 a6 b6 a6 g6",
  W: "a6@4 b6@4 c7@4 d7@4 c7@3 ~ b6@4", X: "a6@3 ~ b6@3 ~ c7@4 d7@3 ~ c7@4 b6@3 ~",
  Y: "g6@4 a6@3 ~ b6@4 c7@3 ~ b6@3 ~ a6@3 ~", Z: "g6@4 a6@3 ~ b6@4 f#6@4 g6@3 ~ a6@4",
  AA: "g6@3 ~ a6@3 ~ b6@3 ~ c7@3 ~ b6@3 ~ g6@4", AB: "f#6@3 ~ g6@3 ~ a6@3 ~ b6@3 ~ a6@3 ~ g6@3 ~",
  AC: "e6@4 f#6@3 ~ g6@4 a6@4 g6@4 e6@3 ~", AD: "g6@4 b6@4 d7@4 g6@4 f#6@4 e6@3 ~",
  AE: "f#6@4 d6@4 e6@3 ~ f#6@4 e6@4 d6@3 ~", AF: "e6@3 ~ f#6@3 ~ g6@4 a6@3 ~ g6@4 f#6@3 ~",
  AG: "e6@3 ~ f#6@3 ~ g6@3 ~ f#6@4 e6@4 d6@4", AH: "e6@4 f#6@4 g6@4 f#6@3 ~ g6@4 a6@4",
  AI: "g6@4 a6@4 b6@4 c7@4 b6@4 g6@3 ~", AJ: "f#6@3 ~ g6@3 ~ a6@4 b6@3 ~ a6@4 g6@4",
  AK: "a6@3 ~ b6@3 ~ c7@3 ~ b6@4 a6@4 f#6@4", AL: "g6@3 ~ a6@3 ~ b6@4 f#6@3 ~ g6@4 a6@3 ~",
  AM: "f#6@4 g6@4 a6@4 b6@3 ~ a6@4 f#6@4", AN: "g6@4 d6@4 e6@4 g6@4 f#6@4 e6@3 ~",
  AO: "f#6@4 d6@4 e6@3 ~ f#6@3 ~ g6@3 ~ a6@3 ~", AP: "d6@3 ~ e6@3 ~ f#6@3 ~ g6@3 ~ f#6@4 d6@4",
  AQ: "e6@3 ~ f#6@3 ~ g6@4 f#6@4 e6@4 d6@3 ~", AR: "e6@3 ~ f#6@4 g6@4 f#6@3 ~ e6@4 d6@4",
  AS: "e6@4 f#6@3 ~ g6@4 a6@3 ~ g6@3 ~ f#6@3 ~",
})).s("gm_pad_new_age").gain(0.23).pan(0.9)

// other · pad new age · soft notes
const pad_new_age_soft = note("<A@8 B@4 C@2 D@2 E@2 F@2 G@8 H@2 I@2 J@2 ~@99>".pickRestart({
  A: "[[a4,d5,f#5]@11 ~ b4@129 ~@2 [d5,f#5]@49, e3@71 ~@25, ~@11 e5@128 ~@4 a4@46 ~@3]/8", // D
  B: "[b4@22 ~ c5@10 ~@3 a4@10 ~@2 b4@48, e5@35 [d5,f#5]@12 [e5,g5]@49]/4", C: "[[b4,e5]@23 ~]/2",
  D: "[~@12 d6@11 ~, f#5@23 ~, ~ [d5,a5]@46 ~]/2", E: "[b4@22 ~@2 c5@11 ~@2 [d5,a5]@11, e5@36 f#5@11 ~]/2",
  F: "[~ [b4,e5]@46 ~]/2", G: "[~ b5@45 ~ f#5@48 ~@49 b5@35 ~ [d5,f#5,a5]@11 ~, ~ d6@95 e5@83 ~@13, ~@23 a5@49 ~@24]/8",
  H: "[b5@47 ~, d5@37 ~@11]/2", I: "[[a5,f#6]@47 ~]/2", J: "[c5@15 ~]/2",
})).s("gm_pad_new_age").gain(0.13).pan(0.9)

// 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@2 ~@89>".pickRestart({
  A: "[~@61 [g6,b6,e7]@35, ~@4 b5@45 e4@47, ~@8 f#6@48 ~ e5@39, ~@8 b6@21 ~@19, ~@27 e6@32 ~@37]/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@38 ~@3]/5",
  D: "[g4@23 ~ g5@23 ~@24 f#5@23 ~@2, [b4,e5]@47 a4@47 ~@2, ~@47 f#4@24 ~@25, ~@24 d5@23 ~]/4", // E5
  E: "[[e6,g6]@11 ~@12 c7@12 ~@13, b6@11 ~@13, ~@11 [e7,g7]@24 ~@13]/2", F: "[[b6,e7,g7]@41 ~@5 d6@50]/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]@11 ~, b5@9 ~@2 a6@11 ~@2", // 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: "[~@23 e7@22 ~@3, [e6,g6,b6]@23 ~]/2", // 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 ~ [e4,g4]@11 [d4,f#4,a4]@12 ~ [e4,b4]@47 ~, ~@23 c4@10 ~@14 g4@47 ~@2]/4", // Em D E5
  D: "[[g4,b4]@47 ~ f#4@48 c5@48 b4@35 ~ [d4,f#4]@11 ~, d4@95 ~ e4@83 ~@13, ~@47 a4@97 g4@34 ~ a4@11 ~@2]/8", // G D
  E: "[[g4,b4]@47 [f#4,a4]@48 ~ e4@48 b3@23 ~ a3@23 ~, d4@94 ~ g4@72 f#4@23 ~@2, ~@95 c4@48 ~ d4@47 ~]/8", // G F#m
  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 H ~ E ~ I ~ H R A ~ L ~ C ~ S ~
  S ~ S ~ S ~ S ~ S ~ S ~ S ~ S ~@2
>`.pickRestart({
  A: "~@6 [b3,g4,b4] ~@5", B: "[~@8 d4@19 ~@9 [d4,f#4,a4] ~@11, e3@9 ~@7, ~@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: "~@13 d4 ~@10, ~@6 [b3,g4] ~@5", N: "~@6 [a4,d5] ~@5, ~@11 f#4@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: "~@2 e4, d3, ~ a3@5, ~ d4@2", S: "~@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@2 J@2 K@8 L@4 M@2 N@2 D@2 O@8 P@4 Q@4 R@2 S@3 T@8 U V@2 W@7 X@5 Y@4 Z@2 AA@2 AB@2
  AC@2 AB@14 AD@2 ~
>`.pickRestart({
  A: "[[b4,e5,g5,b5]@143 ~]/6", // Em
  B: "[[a4,d5,f#5]@47 [b4,g5]@23 ~ [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@11 ~ [a4,d5]@11 ~, ~@47 e5@36 f#5@12 ~, ~@71 c5@11 ~@14]/4", D: "[b4,e5,g5]/2",
  E: "[[b4,g5]@47 [a4,f#5]@48 ~, d5]/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 ~]/2", J: "[b4@24 c5@11 ~ [d5,f#5]@12, [e5,g5]@35 a4@11 ~@2]/2",
  K: "[b4@95 c5@47 ~@2 b4@23 ~ [a4,f#5]@24, g5@83 ~@13, e5@143 ~ d5@48]/8", L: "[~ g5@95, [b4,e5]]/4",
  M: "[a4,d5,f#5]/2", N: "[b4@24 c5@11 ~ [a4,d5,f#5]@12, [e5,g5]@3 ~]/2",
  O: "[[g5,b5]@48 f#5@48 c6@47 ~ [g5,b5]@36 [d5,f#5,a5]@10 ~@2, d5@94 ~@2 e5@83 ~@13, ~ a5@2 ~]/8", // G D
  P: "[[g5,b5] [f#5,a5], d5@47 ~]/4", Q: "[[c5,e5]@48 b4@22 ~@2 a4@23 ~, g5@71 f#5@24 ~, ~@48 d5@47 ~]/4",
  R: "[~ [e5,g5]@46 ~, b5]/2", S: "[[d5,f#5,a5]@47 [e5,g5,b5]@25]/3",
  T: "[c6@12 [d5,f#5,a5]@11 ~@97 c6@47 ~@2 d5@23, ~@23 b5@97 ~@48 b5@24, ~@24 g5@167 ~, ~ e5@6 ~]/8", U: "[f#5,a5]",
  V: "[[e5,g5,b5]@3 [d5,f#5,a5]]/2", W: "[[g5,b5]@47 ~ f#5@47 ~ c6@48 [g5,b5]@24, d6@95 ~ e5@72, ~@48 a5@95 ~@25]/7",
  X: "[~@6 [f#5,a5]@6 [g5,b5]@24 [f#5,a5]@23 ~, ~@12 d6@107 ~]/5", Y: "[[e5,c6]@2 b5 [f#5,a5], g5@35 ~@13, ~ d5]/4",
  Z: "[e5,g5,b5]/2", AA: "[d5,f#5,a5]/2", AB: "[b5@2 c6 [d5,f#5,a5], [e5,g5]@35 ~@13]/2",
  AC: "[b5@23 c6@13 [d5,f#5,a5]@10 ~@2, [e5,g5]@35 ~@13]/2", AD: "[b5@24 c6@12 [d5,f#5,a5]@11 ~, [e5,g5]@35 ~@13]/2",
})).s("gm_rock_organ").gain(0.05).pan(0.4)

// 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({
// … 94 more lines

More by Celine Dion