Strudelify

Le ballet

Celine Dion

KeyC minorTempo80 bpm
0:00/0:00
// Le ballet — Celine Dion
// 80 bpm, 2/4, key C 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 175 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(80/2)

// 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.

// chords · piano · "Piano1"
const piano = note(`<
  ~@12 A@2 ~@7 B@3 C D E F G H I@8 ~@5 J@2 K ~@4 L@4 ~@6 M@2 C D E F G H N@5 O@2 P Q@2 R@2 C D E F C D E F C D E F G H
  N@5 O@2 S T@2 U@2 ~@2 V W ~@6 X Y Z@2 AA AB AC AD AE AF AG@5 AH@2 AI AJ AK AA AB AC AD AA AB AC AD AA AB AC AD AL AM
  AN@3 AO@2 AH@2 AP U@2 ~@2 V W ~@2 U@2 ~@2 AQ AR AS AT AU
>`.pickRestart({
  A: "[~@8 [c4,f4]@5 ~ d4@18, ~@13 g4@19]/2", B: "[~@11 d4@13, ~@5 f4@43, ~@10 g4@37 ~, ~@16 d5@31 ~]/3",
  C: "[eb2,eb4,g4,bb4]@15 ~", D: "[bb2,bb3,d4,f4]@15 ~", E: "[f2,c4,f4,a4]", F: "d4@10 ~ d4@5, [g2,bb3,g4]@15 ~",
  G: "[eb2,g3,bb3,eb4]", H: "[bb2,d4,f4], bb3@13 ~@3",
  I: "[[f2,f4,a4]@14 ~@2 [c2,c5]@32 ~@5 d6@18 ~@6 d5@21 ~@11 g4@13 ~ f4@2 g4@3, c4@12 ~@2 [c4,f4]@35 ~@50 c5@27 ~@2, ~@15 g4@33 g5@23 ~ a5@39 ~@17]/8", // F C F5
  J: "[~@3 d4@2 f4@3 g4@2 ~ bb4@2 g4@10 ~@9]/2", K: "~@2 [c5,f5]@3 ~@3 [c5,f5]@4 ~ [d5,g5]@2 ~",
  L: "[~@5 [c4,f4]@3 g3 ~@2 [c4,f4]@2 ~@3 [c4,f4]@5 [d4,g4]@16 ~@3 [c4,f4]@2 ~ [d4,g4] ~@4 [d5,f5]@3 db5@2 c5 ~@2 bb4@3 g4@2 f4@3, g2@34 ~@3 g2@26 ~, ~@13 g3@23 ~@9 g3@18 ~]/4", // F5 G5 F5 G5 Dm
  M: "[[d5,f5]@3 db5@2 c5 ~@2 bb4@2 ~ g4@2 bb4@9 ~@2 g4@2 f4@2 ~ d4@3]/2", // Dm
  N: "[[f2,f4,a4]@14 ~@2 [c2,c5]@32 ~@11 g6@18 ~@3, c4@12 ~@2 [c4,f4]@35 ~@31, ~@15 g4@33 ~@5 c6@23 ~@4]/5", // F C F5
  O: "[~@3 f6@2 d6@2 ~ c6@3 d6@2 g5@6 f5@10 ~@3]/2", P: "~@11 c5@2 d5@3", Q: "[[d4,g4]@23 ~@9]/2",
  R: "[~@5 f4@2 ~ g4@2 ~ bb4@2 g4@6 d4@2 f4@2 ~ bb4@3 g4@2 f4@3]/2", S: "~@3 [f5,bb5]@2 g5@2 ~ [c5,f5]@5 d5@2 ~",
  T: "[[d4,g4]@21 g4@2 ~ bb4@2 g4@2 ~ d4@3]/2", U: "[[eb4,ab4]@7 ~]/2",
  V: "~@15 ab5, ~@7 ab5@2 ab5@2 ab5@2 ab5@2 ~, ~@4 ab6!4", W: "ab6 ~@3 ab5@9 ~@3, ab5!2 ~@6, ~ ab6@2 ab6@10 ~@3",
  X: "~@3 [eb5,gb5] ~ [eb5,gb5]@2 ~ [eb5,gb5]@2 [eb5,gb5]@2 ~ [eb5,gb5]@2 ~", // Ebm
  Y: "[eb5,gb5]@2 ~ [eb5,gb5]@2 [eb5,gb5]@2 ~ [eb5,gb5]@2 [eb5,gb5]@2 ~ [eb5,gb5]@2 ~", // Ebm
  Z: "[[eb5,gb5]@3 d5@2 db5@2 ~ b4@2 ~ ab4@2 b4@5 ~ ab4@5 gb4@5 ~@3]/2", AA: "[e2,e4,ab4,b4]@15 ~",
  AB: "[b2,b3,eb4,gb4]@15 ~", AC: "[gb2,db4,gb4,bb4]", AD: "eb4@10 ~ eb4@5, [ab2,b3,ab4]@15 ~", AE: "[e2,ab3,b3,e4]",
  AF: "[b2,eb4,gb4], b3@13 ~@3", // B
  AG: "[[gb2,gb3,gb4]@14 ~@2 [db2,db5]@32 ~@11 ab6@18 ~@3, db4@12 ~@2 [db4,gb4]@35 ~@31, ~@15 ab4@33 ~@5 db6@23 ~@4]/5", // Gb Db Gb5
  AH: "[~@3 gb6@2 eb6@2 ~ db6@3 eb6@2 ab5@6 gb5@10 ~@3]/2", AI: "~@11 db5@2 eb5@3",
  AJ: "[ab3,ab4]@3 [gb3,gb4]@2 [ab3,ab4]@2 ~ [b3,b4]@3 [ab3,ab4]@2 [db4,db5]@3", // Ab Gb Ab B Ab Db
  AK: "[b3,b4]@3 [db4,db5]@2 [d4,d5]@3 [eb4,eb5]@3 [gb4,gb5]@2 [eb4,eb5]@3", AL: "[e2,ab3,b3,e4,ab4]@3 ~@13",
  AM: "[b2,b3,eb4,gb4]@3 ~@2 [b2,b3,eb4,gb4]@3 ~@8", // B
  AN: "[[gb2,gb4,bb4]@14 ~@2 db5@11 [gb4,ab4,db5]@5 [f4,ab4,db5]@14 ~@2, db4@12 ~@2 [db4,gb4]@13 ~@21, ~@5 ab4@4 ~@7, ~ db2@2]/3", // Gb Gbsus2 Db Gb5
  AO: "[~@19 gb4@13, ~@3 gb5@10 ab4@18 ~, ~@5 ab5@27, ~ db5@3, ~@11 eb5@21]/2",
  AP: "~@3 [gb5,b5]@2 ab5@2 ~ [db5,gb5]@5 eb5@2 ~", AQ: "[eb5,gb5]@5 [eb5,gb5]@2 ~@4 eb5 ~ gb5 ~@2, d5 ~@15",
  AR: "ab5@5 gb5@7 ~ gb5@2 ~", AS: "[eb5,gb5]@5 [eb5,gb5]@6 eb5 ~ gb5 ~@2, d5 ~@15",
  AT: "ab5@2 gb5@2 ~ eb5 ~@2 [db5,d5]@2 db5@2 ~ b4@3", AU: "[eb4,ab4]",
})).s("gm_piano").gain(0.31).pan(0.3)

// bass · electric bass finger
const bass = note(`<
  ~@46 A B A C A B@2 D A B A C A B@2 E F G H I J K L M@2 N@2 O@2 P A B A Q F G H I F G H I F G H I J K L M@2 N@2 O@2 P A
  R S T S U S T@2 V S T S U S T@2 W X Y Z AA ~@3 AB@2 AC@2 AD@3 AE AF X Y Z AA X Y Z AA X Y Z AA AG AH AI@3 AJ@2 AK@3 S
  T S U S T@2 V S T S U S T@2 V AL
>`.pickRestart({
  A: "g1@3 ~@2 g1@2 ~ g1@3 ~@2 g1@2 ~", B: "g1@2 ~@3 g1@2 ~ g1@2 ~@3 g1@2 ~", C: "g1@2 ~@3 g1@2 ~ g1@2 ~ d1@2 f1@2 ~",
  D: "g1@4 ~ g1@2 ~ f1@2 ~ g1@2 bb1@2 ~", E: "g1@4 ~ g1@2 ~ g1@2 ~ f1@2 bb1@2 ~", F: "eb1@5 eb1@2 ~ eb1@3 ~@2 eb1@2 ~",
  G: "bb1@4 ~ bb1@2 ~ bb1@3 ~@2 bb1@2 ~", H: "f1@3 ~@2 f1@2 ~ f1@4 ~ gb1@2 ~", I: "g1@3 ~@2 g1@2 ~ g1@2 ~ bb1@2 c2@3",
  J: "eb1@3 ~@2 eb1@2 ~ eb1@2 ~@3 eb1@2 ~", K: "bb1@3 ~@2 bb1@2 ~ bb1@3 ~@2 bb1@2 ~", L: "f1@3 ~@2 f1@2 ~ f1@4 ~ g1@3",
  M: "[c1@27 ~@3 c1@2]/2", N: "[bb1@2 c2@3 ~@3 c2@21 g1@2 ~]/2", O: "[c1@27 ~@2 c1@3]/2",
  P: "bb1@2 c2@2 ~ c1@3 c2@3 bb1@2 g1@3", Q: "g1@2 ~ f1@2 g1@2 ~ d1@2 ~ f1@2 g1@2 ~",
  R: "g1@2 ~@3 g1@2 ~ g1@2 ~ g1@2 g1@2 ~", S: "ab1@3 ~@2 ab1@2 ~ ab1@3 ~@2 ab1@2 ~",
  T: "ab1@2 ~@3 ab1@2 ~ ab1@2 ~@3 ab1@2 ~", U: "ab1@2 ~@3 ab1@2 ~ ab1@2 ~ eb1@2 gb1@2 ~",
  V: "ab1@4 ~ ab1@2 ~ gb1@2 ~ ab1@2 b1@2 ~", W: "ab1@4 ~ ab1@2 ~ ab1@2 ~ gb1@2 b1@2 ~",
  X: "e1@5 e1@2 ~ e1@3 ~@2 e1@2 ~", Y: "b1@4 ~ b1@2 ~ b1@3 ~@2 b1@2 ~", Z: "gb1@3 ~@2 gb1@2 ~ gb1@4 ~ g1@2 ~",
  AA: "ab1@3 ~@2 ab1@2 ~ ab1@2 ~ b1@2 db2@3", AB: "db1/2", AC: "[db2@27 ~@2 db1@2 ~]/2", AD: "[db1@15 ~]/3",
  AE: "ab1@3 gb1@2 ab1@2 ~ b1@3 ab1@2 db2@3", AF: "b1@3 db2@2 d2@3 eb2@3 gb2@2 eb2@3", AG: "e1@3 ~@13",
  AH: "b1@3 ~@2 b1@2 ~@9", AI: "[gb1@5 ~@8 db1@27 ~@6 db1@2]/3", AJ: "[b1@2 db2@3 ~@3 db2@21 ab1@2 ~]/2",
  AK: "[db1@37 ~@3 db2@3 b1@2 ab1@3]/3", AL: "ab1 ~",
})).s("gm_electric_bass_finger").gain(0.35)

// chords · electric guitar muted
const electric_guitar_muted = note(`<
  A B@3 C D@3 A B@3 C E@3 A B@3 C D@3 F G H I F J K L@2 M N O N P A B@3 C D@3 A B@3 C D@3 A B@3 C D@3 F G H I F J K L@2
  M N O N P A B@3 F G H I F G H I F G H I F J K L@2 M N O N P A Q R S@3 T U@3 R S@3 T U@3 V W X Y ~@3 Z ~@2 AA AB AC AD
  ~@2 V W X Y V W X Y V W X Y ~@2 AE@2 ~@2 AF AG AC AD R S@3 T U@3 R S@3 T U@3 AH
>`.pickRestart({
  A: "g2@3 ~@2 g2@3 [g3,c4,e4]@4 ~ g2@3", // C
  B: "[[f3,bb3,d4]@5 ~@3 [c3,f3]@4 ~@4 g2@4 ~ g2@3 [g3,c4,e4]@2 ~ g2@2 ~@3 g2@3 g3@2 ~@3 c3@3 d3@2 f3@2 ~, ~@5 g2@7 ~ [d3,g3]@8 ~@8 [f3,bb3,d4]@5 ~@3 g2@10 ~]/3", // Bb F5 C G5 Bb
  C: "g2@3 g3 ~ g2@3 [g3,c4,e4]@4 ~ g2@3", // C
  D: "[[f3,bb3,d4]@5 ~@3 [c3,f3]@4 ~ g3@3 g2@3 g3 ~ g2@3 [g3,c4,e4]@2 ~ g2@2 ~@3 g2@3 g3@2 ~@3 c3@3 d3@2 f3@2 ~, ~@5 g2@7 ~ d3@8 ~@8 [f3,bb3,d4]@5 ~@3 g2@10 ~]/3", // Bb F5 C Bb
  E: "[[f3,bb3,d4]@5 ~@3 [c3,f3]@4 ~ g3@3 g2@3 g3 ~ g2@3 [g3,c4,e4]@2 ~ g2@2 ~@3 g2@3 g3@2 ~@3 c3@3 d3@2 f3@2 ~, ~@5 g2@7 ~ d3@7 ~@9 [f3,bb3,d4]@5 ~@3 g2@10 ~]/3", // Bb F5 C Bb
  F: "eb2@2 ~ eb3@2 ~@3 [bb3,eb4]@2 ~ bb3@2 [bb3,eb4]@2 ~, ~@5 eb2@9 ~@2", // Eb5
  G: "~@5 bb3 ~@2 [bb3,d4]@2 ~ f3@2 [bb3,d4]@2 ~, bb2@5 ~@3", H: "f2@3 f3@2 f2@3 [f3,a3,c4]@3 ~@2 [f3,a3,c4]@2 ~",
  I: "g2@3 [g3,bb3,d4]@2 ~@3 f3@3 g3@2 bb3@2 ~, ~@5 g2@10 ~, ~ d4", // Gm
  J: "bb2@2 ~ f3@2 bb2@2 ~ [bb3,d4]@2 ~ f3@2 [bb3,d4]@2 ~", K: "f2@3 f3@2 f2@3 ~@5 c2@2 ~, ~ [f3,a3,c4]",
  L: "[[g3,c4]@3 ~@2 [g3,c4]@3 ~@3 [g3,c4]@2 ~@3 [g3,c4]@3 ~@2 [g3,c4]@3 ~@3 [g3,c4]@2 g2@2 ~, c2@8 c3@5 c3@5 ~@14]/2", // C5
  M: "[f3,c4]@3 g3@2 ~@3 [g3,c4]@3 ~@2 [g3,c4]@3, c2@5 ~@3, ~@5 c3@5 ~ c3@5", // F5 C5
  N: "~@3 [g3,c4]@2 ~@3 [g3,c4]@3 ~@2 [g3,c4]@3, c3@5 c3@5 ~ c3@5", // C5
  O: "~@3 [f3,c4]@2 ~@3 [g3,c4]@3 ~@2 [g3,c4]@3, c2@5 ~@3, ~@5 c3@10 ~", // F5 C5
  P: "~@3 [g3,c4]@2 c3@3 [c3,g3,c4]@3 [c3,f3,bb3]@2 [d3,g3]@3, c3@5 ~@11", // C5 Fsus4 G5
  Q: "[f3,bb3,d4]@5 ~@3 [c3,f3]@4 ~ [d3,g3]@3, ~@5 g2@7 ~@4", R: "ab2@3 ~@2 ab2@3 [ab3,db4,f4]@4 ~ ab2@3",
  S: "[[gb3,b3,eb4]@5 ~@3 [db3,gb3]@4 ~@4 ab2@4 ~ ab2@3 [ab3,db4,f4]@2 ~ ab2@2 ~@3 ab2@3 ab3@2 ~@3 db3@3 eb3@2 gb3@2 ~, ~@5 ab2@7 ~ [eb3,ab3]@8 ~@8 [gb3,b3,eb4]@5 ~@3 ab2@10 ~]/3", // B Gb5 Db Ab5 B
  T: "ab2@3 ab3 ~ ab2@3 [ab3,db4,f4]@4 ~ ab2@3", // Db
  U: "[[gb3,b3,eb4]@5 ~@3 [db3,gb3]@4 ~ ab3@3 ab2@3 ab3 ~ ab2@3 [ab3,db4,f4]@2 ~ ab2@2 ~@3 ab2@3 ab3@2 ~@3 db3@3 eb3@2 gb3@2 ~, ~@5 ab2@7 ~ eb3@8 ~@8 [gb3,b3,eb4]@5 ~@3 ab2@10 ~]/3", // B Gb5 Db B
  V: "e2@2 ~ e3@2 ~@3 [b3,e4]@2 ~ b3@2 [b3,e4]@2 ~, ~@5 e2@9 ~@2", // E5
  W: "~@5 b3 ~@2 [b3,eb4]@2 ~ gb3@2 [b3,eb4]@2 ~, b2@5 ~@3", // B
  X: "gb2@3 gb3@2 gb2@3 [gb3,bb3,db4]@3 ~@2 [gb3,bb3,db4]@2 ~", // Gb
  Y: "ab2@3 [ab3,b3,eb4]@2 ~@3 gb3@3 ab3@2 b3@2 ~, ~@5 ab2@10 ~, ~ eb4", Z: "[ab3,db4]@3 ~@13, db2@5 ~@3",
  AA: "~@5 db3@5 ~ db3@5", AB: "~@3 [gb3,db4]@2 ~@3 [ab3,db4]@3 ~@2 [ab3,db4]@3, db2@5 ~@3, ~@5 db3@10 ~",
  AC: "~@3 [ab3,db4]@2 ~@3 [ab3,db4]@3 ~@2 [ab3,db4]@3, db3@5 db3@5 ~ db3@5", // Db5
  AD: "~@3 [ab3,db4]@2 db3@3 [db3,ab3,db4]@3 [db3,gb3,b3]@2 [eb3,ab3]@3, db3@5 ~@11", AE: "[~@13 db2@10 ~@9]/2",
  AF: "~@13 ab2@3", AG: "~@3 db3@5 db3@5 [ab3,db4]@3, db2@5 ~@3", AH: "ab2@3 ~@13",
})).s("gm_electric_guitar_muted").gain(0.3)

// other · harmonica
const harmonica = note("<~@38 A@4 ~@3 B ~@31 C@3 ~@22 D@2 ~@23 E F@3 G ~@26 H@4 I J K@2 L@4 ~@5>".pickRestart({
  A: "[~@4 d4 ~ bb4@3 d5@46 ~@9, ~@5 g4@2 ~@57]/4", B: "~@3 g4", C: "[~@8 g4@5 g4@27 f4 g4 ~@6, ~@8 f4 ~@39]/3",
  D: "[~ d5@15]/2", E: "~@13 ab4@3", F: "[~ b4@5 ~ db5@3 ~@3 eb5@25 db5@8 b4@2]/3", G: "ab4@11 ~@5",
  H: "[eb5@34 bb4@8 ab4@21 ~]/4", I: "gb4@2 ~ gb4@12 ~", J: "gb4@3 ab4 ~@12", K: "[eb5@14 d5 b4, ~@30 db5 ~]/2",
  L: "[ab4@37 gb4@16 ~@11]/4",
})).s("gm_harmonica").gain(0.36).pan(0.3)

// chords · percussive organ
const percussive_organ = note(`<
  ~@40 A@6 B@8 C@8 D@2 E F G H E I@7 J@4 K@3 F K@3 F K@3 F G H E L@4 M@2 H N@2 O@8 P@8 Q@3 R ~@3 S@7 T U Q@3 V Q@3 V Q@3
  R W X Y@5 Z@2 AA P@16 AB
>`.pickRestart({
  A: "[db6 ~@4 f6@86 [f2,ab2,a2] [bb2,b2,c3,db3,d3,eb3] [e3,f3,gb3,ab3] [g3,bb3,db4] [eb4,f4], ~ d6@92 ~@3]/6", // F Gdim Ebsus2
  B: "[g5@64 f5@21 g5@27 f5@13 bb5@3, d5@63 ~]/8", C: "[g5@64 f5@21 g5@27 f5@13 bb5@2 ~, d5@125 ~@3]/8",
  D: "[[eb5,g5]@15 ~ [d5,f5]@15 ~, bb5@31 ~]/2", E: "[a4,c5,f5]", F: "[bb4,d5,g5]", G: "[eb5,g5,bb5]@15 ~",
  H: "[d5,f5,bb5]", I: "[~@3 f5@4, [g5,c6]]/7", J: "[d5,g5]/4",
  K: "[[eb5,g5]@15 ~ [d5,f5]@15 ~ [a4,c5,f5]@16, bb5@11 ~@5]/3", L: "[~@3 f5, [g5,c6]]/4", M: "[e5,g5]/2",
  N: "[d5,g5]/2", O: "[ab5@64 gb5@21 ab5@27 gb5@13 b5@3, eb5@63 ~]/8", P: "[ab5@64 gb5@21 ab5@27 gb5@13 b5@3, eb5]/8",
  Q: "[[e5,ab5]@15 ~ [eb5,gb5]@15 ~ [bb4,db5,gb5]@16, b5@11 ~@5]/3", R: "[b4,eb5,ab5]", S: "[~@3 gb5@4, [ab5,db6]]/7",
  T: "ab4@3 gb4@2 ab4@2 ~ b4@3 ab4@2 db5@3", U: "b4@3 db5@2 d5@3 eb5@3 gb5@2 eb5@3", V: "[b4,eb5,ab5]@15 ~",
  W: "[e5,ab5,b5]@3 ~@13", X: "[eb5,gb5,b5]@3 ~@2 [eb5,gb5,b5]@3 ~@8",
  Y: "[[bb4,db5,gb5]@13 ~@51 gb5@16, ~@13 [ab5,db6]@64 ~@3]/5", Z: "[f5,ab5,db6]/2", AA: "[eb5,gb5,b5]", AB: "ab5 ~",
})).s("gm_percussive_organ").gain(0.21).pan(0.6)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~@50 A B@3 ~@4 C D E ~@8 F@4 ~@6 G ~@3 H@2 ~@10 F@4 ~@9 I J@3 ~@4 K L M ~@8 N@4 ~@3 O P Q R S T U V W X Q R S T Y Z
  AA@4 ~@21
>`.pickRestart({
  A: "~@8 f4@3 d4@3 g3 ~", B: "[~ bb3@2 g3@2 ~ g3@35 ~@7]/3", C: "~@8 d5@3 f5@3 d5 ~", D: "~@3 c5@2 g4@10 ~",
  E: "c5@9 ~@7", F: "[g3@49 ~@15]/4", G: "~@3 d4@2 ~@3 c4@3 g3@5", H: "[~@6 d4 g4 bb4@5 g4@11 ~@8]/2",
  I: "~@8 gb4@3 eb4@3 ab3 ~", J: "[~ b3@2 ab3@2 ~ ab3@35 ~@7]/3", K: "~@8 eb5@3 gb5@3 eb5 ~", L: "~@3 db5@2 ab4@10 ~",
  M: "db5@9 ~@7", N: "[ab3@49 ~@15]/4", O: "ab3@3 gb3@2 ab3@2 ~ b3@3 ab3@2 db4@3",
  P: "b3@3 db4@2 d4@3 eb4@3 gb4@2 eb4@3", Q: "b3@3 ~@2 b3@3 ~@5 ab3@3, ~@3 ab3@8 b3@5, ~@4 e4@3 ~",
  R: "~@11 gb3@2 b3@3, eb4@5 b3@6 ~@5, ~@3 gb3@5 eb4@6 ~@2", S: "db4@3 ~@2 gb3@3 ~@3 gb3@2 bb3@3, ~@3 bb3@5 db4@5 ~@3",
  T: "b3@3 ab3@2 ~@3 ab3@2 ~ b3@2 ab3@3, ~@5 eb4@5 ~@6", U: "~@11 e4@5, ~@5 b3@10 ~, ~@8 gb3@7 ~",
  V: "~@5 eb4@6 ~@2 gb3@3, b3@10 ~ b3@5, ~@3 gb3@7 ~@6", W: "~@13 bb3@3, db4@5 bb3@6 ~@5, ~@3 gb3@13, ~ db4",
  X: "~@5 eb4@8 b3@3, b3@13 ~@3, ~@3 ab3@13", Y: "[e3,ab3,b3]@3 ~@13", Z: "[eb3,gb3,b3]@3 ~@2 [eb3,gb3,b3]@3 ~@8",
  AA: "[[gb3,bb3,db4]@11 ~@2 [gb3,ab3,db4]@50 ~]/4", // Gb Gbsus2
})).s("gm_electric_guitar_clean").gain(0.21).pan(0.8)

// other · woodblock
const woodblock = note("<[~@8 g4 ~@7]!124 ~@4 [~@8 g4 ~@7]!6 ~@2 [~@8 g4 ~@7]!38 ~>").s("gm_woodblock").gain(0.4).pan(0)

// drums · kick
const kick = s("bd").struct(`<
  ~@31 A@7 ~@8 B C B C B C B C B C B C B C B C B C B C B C@2 ~@3 A ~@2 D B C B C B C B C B C B C B C B C B C@2 ~@3 A ~@2
  E B@3 C B C B C B C B C B C B C B C B C B C ~@6 A ~@2 D F@2 B C B C B C B G B C B H B A C ~@3 A ~@3 B C B C B C B C B
  C B C B C B C B
>`.pickRestart({
  A: "x ~@4 x ~@10", B: "x", C: "x ~@12 x ~@2", D: "~@5 x ~@10", E: "~ x", F: "~@3 x ~ x ~@5 x ~ x ~@2",
  G: "x ~@4 x ~@7 x ~@2", H: "x ~@10 x ~@4",
})).gain(0.64)

// drums · rim
const rim = s("rim").struct("<~@79 [~@3 x ~@12] ~@95>").gain(0.64)

// drums · snare
const snare = s("sd").struct(`<
  ~@46 A@15 B A@6 C ~@6 A@4 ~ A@14 C ~@6 D A C A@15 B A@4 ~@9 A E@2 A@7 F A@4 ~@8 G H A@16 ~
>`.pickRestart({
  A: "~ x", B: "~@3 x ~@12", C: "~@8 x ~@2 x ~@4", D: "~@11 x ~@4", E: "x!2", F: "~@3 x ~@4 x ~@7",
  G: "~@8 x ~@2 x ~ x ~@2", H: "x",
})).gain(0.56)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@46 A@7 B A@7 B A@7 C A D A E A@21 C A D A E A@11 B A@7 B A@4 ~@3 C A D A E A@2 F@2 A@12 G ~@2 C A D A E A@9 B A@7 B
  G
>`.pickRestart({
  A: "x ~@2 x ~ x ~@2 x ~@2 x ~ x ~@2", B: "x ~@2 x ~@4 x ~@2 x ~ x ~@2", C: "x ~@4 x ~@2 x ~@4 x ~@2",
  D: "x ~@2 x ~ x ~@2 x ~@2 x ~@4", E: "x ~@2 x!3 ~@2 x ~@2 x ~@4", F: "~@3 x ~@7 x ~@4", G: "x",
})).gain(0.4)

// drums · low tom
const low_tom = s("lt").struct("<~@61 A ~@17 A ~@39 A ~@15 B ~@39>".pickRestart({
  A: "~@13 x ~@2", B: "~@11 x ~ x ~@2",
})).gain(0.56)

// drums · mid tom
const mid_tom = s("mt").struct("<~@61 A ~@7 B ~@5 C ~@3 D ~@15 B ~@7 E ~@15 A ~@23 E ~@13 C ~@16 B>".pickRestart({
  A: "~ x", B: "x", C: "~@11 x ~ x ~@2", D: "~@8 x ~@2 x ~@4", E: "~@13 x ~@2",
})).gain(0.56)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@53 A ~@7 A ~@9 B ~ B ~@23 B ~ B ~@11 A ~@7 A ~@9 B ~ B ~@2 C@2 ~@14 B ~@2 B ~ B ~@9 A ~@7 A ~
>`.pickRestart({
  A: "~@5 x ~@10", B: "~@13 x ~@2", C: "x!2",
})).gain(0.64)

// drums · high tom
const high_tom = s("ht").struct("<~@68 A ~@10 B ~@14 A ~@40 C ~@7 D ~@13 B ~@15 A ~>".pickRestart({
  A: "~@13 x ~@2", B: "~@5 x ~@10", C: "~@3 x ~ x ~@10", D: "~@11 x ~@4",
})).gain(0.56)

// drums · china
// … 10 more lines

More by Celine Dion