Strudelify

Leave That Thing Alone

Rush

KeyE minorTempo120 bpm
0:00/0:00
// Leave That Thing Alone — Rush
// 120 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 3/4 at bar 45, 6/4 at bar 47, 4/4 at bar 80, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 126 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/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.

// chords · lead 2 sawtooth · "Saw Wave"
const lead_2_sawtooth = note("<A@36 ~@41 B C@15 D ~@6 E F@21 G ~@3>".pickRestart({
  A: "~@4 [e3,a3,c4] ~@2 [e3,a3,c4] ~@2 [e3,a3,c4] ~ [e3,a3,c4] ~@3 [e3,a3,c4] ~ [e3,a3,c4] ~@3 [e3,a3,c4] ~ [e3,a3,c4] ~@3 [e3,a3,c4] ~@2 [e3,a3,c4]", // Am
  B: "~@15 [e3,a3,c4] ~ [e3,a3,c4] ~@2 [e3,a3,c4] ~ [e3,a3,c4] ~@3 [a3,c4] e3 [e3,a3,c4] ~@3", // Am
  C: "[e3,a3,c4] ~ [e3,a3,c4] ~@3 [e3,a3,c4] ~@2 [e3,a3,c4] ~@5 [e3,a3,c4] ~ [e3,a3,c4] ~@2 [e3,a3,c4] ~ [e3,a3,c4] ~@3 [a3,c4] e3 [e3,a3,c4] ~@3", // Am
  D: "[e3,a3,c4] ~ [e3,a3,c4] ~@3 [e3,a3,c4] ~@2 [e3,a3,c4] ~@22", // Am
  E: "~@12 [e3,a3,c4] ~@2 [e3,a3,c4] ~@2 [e3,a3,c4] ~ [e3,a3,c4] ~@3 [e3,a3,c4] ~ [e3,a3,c4] ~@3 [e3,a3,c4] ~", // Am
  F: "[e3,a3,c4] ~@3 [e3,a3,c4] ~@2 [e3,a3,c4] ~@4 [e3,a3,c4] ~@2 [e3,a3,c4] ~@2 [e3,a3,c4] ~ [e3,a3,c4] ~@3 [e3,a3,c4] ~ [e3,a3,c4] ~@3 [e3,a3,c4] ~", // Am
  G: "[e3,a3,c4] ~@3 [e3,a3,c4] ~@2 [e3,a3,c4] ~@24", // Am
})).s("gm_lead_2_sawtooth").gain(0.32)

// chords · electric guitar clean · "Clean Elec. Gtr"
const electric_guitar_clean = note("<A@8 B@16 C@6 ~@47 D@8 E@7 F@4 ~@4 G@7 H@8 I@8 ~@3>".pickRestart({
  A: "[~@4 [e4,a4] ~@4 [e4,b4] ~ [e4,b4]@2 [e4,b4]@2 [e4,b4]@2 e4@3 ~ [e4,a4]@2 [e4,a4]@3 [e4,a4]@2 [e4,a4]@8 [e4,a4]@4 ~ [e4,b4] ~ [e4,b4]@2 [e4,b4]@2 [e4,b4]@2 e4@4 [e4,a4]@2 [e4,a4]@4 [e4,a4]@2 [e4,a4]@8 [e4,a4]@3 ~ [e4,b4] ~ [e4,b4]@2 [e4,b4]@2 [e4,b4] e4@4 ~ [e4,a4] [e4,a4]@4 [e4,a4]@2 [e4,a4]@8 ~ [e4,a4]@3 b4 e4 ~ e4 [e4,b4]@2 [e4,b4]@2 ~ e4@4 [e4,a4]@2 [e4,a4]@4 [e4,a4]@2 [e4,a4]@7 e4@4 ~ [e4,b4]@2 [e4,b4]@2 [e4,b4]@2 [e4,b4]@2 e4@3 ~ [e4,a4]@2 [e4,a4]@3 [e4,a4]@2 [e4,a4]@8 [e4,a4]@4 ~ [e4,b4] ~ [e4,b4]@2 [e4,b4]@2 [e4,b4]@2 e4@4 [e4,a4]@2 [e4,a4]@4 [e4,a4]@2 [e4,a4]@8 [e4,a4]@3 ~ [e4,b4] ~ [e4,b4]@2 [e4,b4]@2 [e4,b4] e4@4 ~ [e4,a4] [e4,a4]@4 [e4,a4]@2 [e4,a4]@8 ~ [e4,a4]@3 b4 e4 ~ e4 [e4,b4]@2 [e4,b4]@2 ~ e4@4 [e4,a4]@2 [e4,a4]@4 [e4,a4]@2 [e4,a4]@3, ~@17 b4@23 ~@9 b4@23 ~@8 b4@24 ~@2 b4@2 ~@4 b4@24 ~@9 b4@23 ~@9 b4@23 ~@8 b4@24 ~@2 b4@2 ~@4 b4@16, ~@33 a4@4 ~@27]/8", // A5 E5 A5 E5 A5 E5 A5 E5 …
  B: "[~@4 e4@4 ~ [e4,b4]@2 [e4,b4]@2 [e4,b4]@2 [e4,b4]@2 e4@3 ~ [e4,a4]@2 [e4,a4]@3 [e4,a4]@2 [e4,a4]@8 [e4,a4]@4 ~ [e4,b4] ~ [e4,b4]@2 [e4,b4]@2 [e4,b4]@2 e4@4 [e4,a4]@2 [e4,a4]@4 [e4,a4]@2 [e4,a4]@8 [e4,a4]@3 ~ [e4,b4] ~ [e4,b4]@2 [e4,b4]@2 [e4,b4] e4@4 ~ [e4,a4] [e4,a4]@4 [e4,a4]@2 [e4,a4]@8 ~ [e4,a4]@3 b4 e4 ~ e4 [e4,b4]@2 [e4,b4]@2 ~ e4@4 [e4,a4]@2 [e4,a4]@4 [e4,a4]@2 [e4,a4]@7 e4@4 ~ [e4,b4]@2 [e4,b4]@2 [e4,b4]@2 [e4,b4]@2 e4@3 ~ [e4,a4]@2 [e4,a4]@3 [e4,a4]@2 [e4,a4]@8 [e4,a4]@4 ~ [e4,b4] ~ [e4,b4]@2 [e4,b4]@2 [e4,b4]@2 e4@4 [e4,a4]@2 [e4,a4]@4 [e4,a4]@2 [e4,a4]@8 [e4,a4]@3 ~ [e4,b4] ~ [e4,b4]@2 [e4,b4]@2 [e4,b4] e4@4 ~ [e4,a4] [e4,a4]@4 [e4,a4]@2 [e4,a4]@8 ~ [e4,a4]@3 b4 e4 ~ e4 [e4,b4]@2 [e4,b4]@2 ~ e4@4 [e4,a4]@2 [e4,a4]@4 [e4,a4]@2 [e4,a4]@3, ~ a4@4 ~@28 a4@4 ~@27, ~@17 b4@23 ~@9 b4@23 ~@8 b4@24 ~@2 b4@2 ~@4 b4@24 ~@9 b4@23 ~@9 b4@23 ~@8 b4@24 ~@2 b4@2 ~@4 b4@16]/8", // E5 A5 E5 A5 E5 A5 E5 A5 …
  C: "[~@4 e4@4 ~ [e4,b4]@2 [e4,b4]@2 [e4,b4]@2 [e4,b4]@2 e4@3 ~ [e4,a4]@2 [e4,a4]@3 [e4,a4]@2 [e4,a4]@8 [e4,a4]@4 ~ [e4,b4] ~ [e4,b4]@2 [e4,b4]@2 [e4,b4]@2 e4@4 [e4,a4]@2 [e4,a4]@4 [e4,a4]@2 [e4,a4]@8 [e4,a4]@3 ~ [e4,b4] ~ [e4,b4]@2 [e4,b4]@2 [e4,b4] e4@4 ~ [e4,a4] [e4,a4]@4 [e4,a4]@2 [e4,a4]@8 ~ [e4,a4]@3 b4 e4 ~ e4 [e4,b4]@2 [e4,b4]@2 ~ e4@4 [e4,a4]@2 [e4,a4]@4 [e4,a4]@2 [e4,a4]@64 ~@3, ~ a4@4 ~@43, ~@17 b4@23 ~@9 b4@23 ~@8 b4@24 ~@2 b4@2 ~@4 b4@64 ~@16]/6", // E5 A5 E5 A5 E5 A5 E5 A5
  D: "[~@14 [e4,a4]@4 ~ [e4,b4] ~ [e4,b4]@2 [e4,b4]@2 [e4,b4]@2 e4@3 ~ [e4,a4]@2 [e4,a4]@3 [e4,a4]@2 ~ [e4,a4]@7 [e4,a4]@4 ~ [e4,b4] ~ [e4,b4]@2 [e4,b4]@2 [e4,b4]@2 e4@4 [e4,a4]@2 [e4,a4]@4 [e4,a4]@2 [e4,a4]@8 [e4,a4]@3 ~ [e4,b4] ~ [e4,b4]@2 [e4,b4]@2 [e4,b4] e4@4 ~ [e4,a4]@2 [e4,a4]@3 ~ a4 [e4,a4]@8 ~ [e4,a4]@4 [e4,b4] ~ [e4,b4] [e4,b4]@2 [e4,b4]@2 ~ e4@4 [e4,a4]@2 [e4,a4]@4 [e4,a4]@2 [e4,a4]@7 [e4,a4]@4 ~ [e4,b4] ~ [e4,b4]@2 [e4,b4]@2 [e4,b4]@2 e4@3 ~ [e4,a4]@2 [e4,a4]@3 [e4,a4]@2 ~ [e4,a4]@7 [e4,a4]@4 ~ [e4,b4] ~ [e4,b4]@2 [e4,b4]@2 [e4,b4]@2 e4@4 [e4,a4]@2 [e4,a4]@4 [e4,a4]@2 [e4,a4]@8 [e4,a4]@3 ~ [e4,b4] ~ [e4,b4]@2 [e4,b4]@2 [e4,b4] e4@4 ~ [e4,a4]@2 [e4,a4]@3 ~ a4 [e4,a4]@8 ~ [e4,a4]@4 [e4,b4] ~ [e4,b4] [e4,b4]@2 [e4,b4]@2 ~ e4@4 [e4,a4], ~@27 b4@23 ~@9 b4@23 ~@8 b4@24 ~@8 b4@24 ~@9 b4@23 ~@9 b4@23 ~@8 b4@24 ~@8 b4@6, ~@50 e4 ~@63 e4 ~@13]/8", // A5 E5 A5 E5 A5 E5 A5 E5 …
  E: "[~ [e4,a4]@4 [e4,a4]@2 [e4,a4]@7 [e4,a4]@4 ~ [e4,b4] ~ [e4,b4]@2 [e4,b4]@2 [e4,b4]@2 e4@3 ~ [e4,a4]@2 [e4,a4]@3 [e4,a4]@2 ~ [e4,a4]@7 [e4,a4]@4 ~ [e4,b4] ~ [e4,b4]@2 [e4,b4]@2 [e4,b4]@2 e4@4 [e4,a4]@2 [e4,a4]@4 [e4,a4]@2 [e4,a4]@8 [e4,a4]@3 ~ [e4,b4] ~ [e4,b4]@2 [e4,b4]@2 [e4,b4] e4@4 ~ [e4,a4]@2 [e4,a4]@3 ~ a4 [e4,a4]@8 ~ [e4,a4]@4 [e4,b4] ~ [e4,b4] [e4,b4]@2 [e4,b4]@2 ~ e4@4 [e4,a4]@2 [e4,a4]@4 [e4,a4]@2 [e4,a4]@7 [e4,a4]@4 ~ [e4,b4] ~ [e4,b4]@2 [e4,b4]@2 [e4,b4]@2 e4@3 ~ [e4,a4]@2 [e4,a4]@3 [e4,a4]@2 ~ [e4,a4]@7 [e4,a4]@4 ~ [e4,b4] ~ [e4,b4]@2 [e4,b4]@2 [e4,b4]@2 e4@4 [e4,a4]@2 [e4,a4]@4 [e4,a4]@2 [e4,a4]@8 [e4,a4]@3 ~ [e4,b4] ~ [e4,b4]@2 [e4,b4]@2 [e4,b4] [e4,b4]@5 [e4,a4], ~@27 b4@23 ~@9 b4@23 ~@8 b4@24 ~@8 b4@24 ~@9 b4@23 ~@9 b4@23 ~@14, ~@50 e4 ~@61]/7", // A5 E5 A5 E5 A5 E5 A5 E5 …
  F: "[~ [e4,a4]@3 ~ a4 [e4,a4]@8 ~ [e4,a4]@4 [e4,b4] ~ [e4,b4] [e4,b4]@2 [e4,b4]@2 ~ e4@4 [e4,a4]@2 [e4,a4]@4 [e4,a4]@2 [e4,a4]@64 ~@25, ~@2 e4 ~@10 b4@32 ~@19]/4", // A5 E5 A5
  G: "[~@12 [e4,a4]@4 ~ [e4,b4] ~ [e4,b4]@2 [e4,b4]@2 [e4,b4]@2 e4@3 ~ [e4,a4]@2 [e4,a4]@3 [e4,a4]@2 [e4,a4]@8 [e4,a4]@4 ~ [e4,b4] ~ [e4,b4]@2 [e4,b4]@2 [e4,b4]@2 e4@4 [e4,a4]@2 [e4,a4]@4 [e4,a4]@2 [e4,a4]@8 [e4,a4]@3 ~ [e4,b4] ~ [e4,b4]@2 [e4,b4]@2 [e4,b4] e4@4 ~ [e4,a4] [e4,a4]@4 [e4,a4]@2 [e4,a4]@8 ~ [e4,a4]@3 b4 e4 ~ e4 [e4,b4]@2 [e4,b4]@2 ~ e4@4 [e4,a4]@2 [e4,a4]@4 [e4,a4]@2 [e4,a4]@7 e4@4 ~ [e4,b4]@2 [e4,b4]@2 [e4,b4]@2 [e4,b4]@2 e4@3 ~ [e4,a4]@2 [e4,a4]@3 [e4,a4]@2 [e4,a4]@8 [e4,a4]@4 ~ [e4,b4] ~ [e4,b4]@2 [e4,b4]@2 [e4,b4]@2 e4@4 [e4,a4]@2 [e4,a4]@4 [e4,a4]@2 [e4,a4]@8 [e4,a4]@3 ~ [e4,b4] ~ [e4,b4]@2 [e4,b4]@2 [e4,b4] e4@4 ~ [e4,a4] [e4,a4]@2, ~@25 b4@23 ~@9 b4@23 ~@8 b4@24 ~@2 b4@2 ~@4 b4@24 ~@9 b4@23 ~@9 b4@23 ~@8 b4@8, ~@35 a4@4 ~@17]/7", // A5 E5 A5 E5 A5 E5 A5 E5 …
  H: "[~@2 [e4,a4]@2 [e4,a4]@8 ~ [e4,a4]@3 b4 e4 ~ e4 [e4,b4]@2 [e4,b4]@2 ~ e4@4 [e4,a4]@2 [e4,a4]@4 [e4,a4]@2 [e4,a4]@7 [e4,a4]@4 ~ [e4,b4] ~ [e4,b4]@2 [e4,b4]@2 [e4,b4]@2 e4@3 ~ [e4,a4]@2 [e4,a4]@3 [e4,a4]@2 [e4,a4]@8 [e4,a4]@4 ~ [e4,b4] ~ [e4,b4]@2 [e4,b4]@2 [e4,b4]@2 e4@4 [e4,a4]@2 [e4,a4]@4 [e4,a4]@2 [e4,a4]@8 [e4,a4]@3 ~ [e4,b4] ~ [e4,b4]@2 [e4,b4]@2 [e4,b4] e4@4 ~ [e4,a4] [e4,a4]@4 [e4,a4]@2 [e4,a4]@8 ~ [e4,a4]@3 b4 e4 ~ e4 [e4,b4]@2 [e4,b4]@2 ~ e4@4 [e4,a4]@2 [e4,a4]@4 [e4,a4]@2 [e4,a4]@7 e4@4 ~ [e4,b4]@2 [e4,b4]@2 [e4,b4]@2 [e4,b4]@2 e4@3 ~ [e4,a4]@2 [e4,a4]@3 [e4,a4]@2 [e4,a4]@8 [e4,a4]@4 ~ [e4,b4] ~ [e4,b4]@2 [e4,b4]@2 [e4,b4]@2 e4@4 [e4,a4]@2 [e4,a4]@4 [e4,a4]@2 [e4,a4]@8 [e4,a4]@3 ~ [e4,b4] ~ [e4,b4]@2 [e4,b4]@2 [e4,b4] e4@4 ~ [e4,a4] [e4,a4]@2, ~@18 b4@2 ~@4 b4@24 ~@9 b4@23 ~@9 b4@23 ~@8 b4@24 ~@2 b4@2 ~@4 b4@24 ~@9 b4@23 ~@9 b4@23 ~@8 b4@8, ~@43 a4@4 ~@17]/8", // A5 E5 A5 E5 A5 E5 A5 E5 …
  I: "[~@2 [e4,a4]@2 [e4,a4]@8 ~ [e4,a4]@3 b4 e4 ~ e4 [e4,b4]@2 [e4,b4]@2 ~ e4@4 [e4,a4]@2 [e4,a4]@4 [e4,a4]@2 [e4,a4]@7 [e4,a4]@4 ~ [e4,b4] ~ [e4,b4]@2 [e4,b4]@2 [e4,b4]@2 e4@3 ~ [e4,a4]@2 [e4,a4]@3 [e4,a4]@2 [e4,a4]@8 [e4,a4]@4 ~ [e4,b4] ~ [e4,b4]@2 [e4,b4]@2 [e4,b4]@2 e4@4 [e4,a4]@2 [e4,a4]@4 [e4,a4]@2 [e4,a4]@8 [e4,a4]@3 ~ [e4,b4] ~ [e4,b4]@2 [e4,b4]@2 [e4,b4] e4@4 ~ [e4,a4] [e4,a4]@4 [e4,a4]@2 [e4,a4]@8 ~ [e4,a4]@3 b4 e4 ~ e4 [e4,b4]@2 [e4,b4]@2 ~ e4@4 [e4,a4]@2 [e4,a4]@4 [e4,a4]@2 [e4,a4]@7 e4@4 ~ [e4,b4]@2 [e4,b4]@2 [e4,b4]@2 [e4,b4]@2 e4@3 ~ [e4,a4]@2 [e4,a4]@3 [e4,a4]@2 [e4,a4]@8 [e4,a4]@4 ~ [e4,b4] ~ [e4,b4]@2 [e4,b4]@2 [e4,b4]@2 b4@23 ~@16, ~@18 b4@2 ~@4 b4@24 ~@9 b4@23 ~@9 b4@23 ~@8 b4@24 ~@2 b4@2 ~@4 b4@24 ~@9 b4@23 ~@48, ~@172 a4@16 ~@29 e4@4 ~@35]/8", // A5 E5 A5 E5 A5 E5 A5 E5 …
})).s("gm_electric_guitar_clean").gain(0.56)

// chords · rock organ
const rock_organ = note("<~@44 A@6 B@7 ~@36 C@6 ~@27>".pickRestart({
  A: "[~ [d3,e3] ~@6 b4 ~@40 f6@6 ~@2 e6@47 ~ d5@41 [f5,f6]@7 ~ e5@38, ~ f3@2 [b3,c4]@2 e4@2 a4@2 a5@183, ~ [g3,a3] d4 [f4,g4] e5@48 ~@44, ~@9 e6@47 ~ f6@2 ~@46 d6@39 ~@9 e6@39]/6", // Dsus2 F Cmaj7 Gsus2 Fsus2
  B: "[~@48 [f5,f6]@9 e5@47 ~ [d5,d6]@40 [f5,f6]@8 [e5,e6]@47 ~@24, ~@9 a4@191 ~@24, ~@57 e6@87 ~@80]/7", // F D F E
  C: "[~@141 d6@4 ~@4 g6@5 ~@3 e6@4 ~@15 e6@2 ~ d6 ~@12, ~@8 a6@64 ~@2 e6@63 g6@12 ~@5 g6@7 g6@12 g6@5 ~@14, ~@41 g6@64 d6@36 ~@4 d6@22 d6@12 ~@13, ~@138 e6@9 e6@10 ~@5 e6@8 e6@6 ~@16]/6",
})).s("gm_rock_organ").gain(0.43)

// other · overdriven guitar · "Overdrive Gtr"
const overdriven_guitar = note("<~@36 A B@2 C D E F ~@50 G H I J@2 K ~@27>".pickRestart({
  A: "a2@2 ~@3 a2@2 ~ c3@7 d3@2 ~@2 d3 ~@2 d3 ~ e3@3 ~@2 e3@3",
  B: "[~ f#2@2 ~@2 f#2@2 ~@2 g2@6 a2@2 ~@2 a2 ~@2 a2@2 c3@4 c3 ~@4 d3@3 d3 ~@3 e3@6 ~ f#2@3 ~ f#2@2 ~ f#2 ~@2 g2@3 g2@2 ~@2, ~@31 c3@7 d3@7 ~@19]/2",
  C: "~ a2@3 ~ a2@2 ~@2 c3@6 ~ d3@2 ~ d3@2 ~@4 e3@4 e3@3, ~@23 d3@8 ~",
  D: "~ f#2@2 ~@2 f#2@2 ~@2 g2@6 a2@2 ~@2 a2@2 ~ a2 ~ c3@4 c3 ~@2 c3",
  E: "~ d3@4 d3 ~@2 e3@6 ~ f#2@2 ~@2 f#2@2 ~@4 g2@2 ~@2 g2@2 ~, ~@7 d3@7 ~@9 f#2@4 ~@5", F: "~ a2@9 ~@22",
  G: "~@8 a2@2 ~@3 a2@2 ~ c3@7 d3@2 ~@2 d3 ~@2 d3 ~", H: "e3@3 ~@2 e3@4 f#2@2 ~@2 f#2@2 ~@2 g2@6 a2@2 ~@2 a2 ~@2 a2@2",
  I: "c3@4 c3 ~@4 d3@3 d3 ~@3 e3@6 ~ f#2@3 ~ f#2@2 ~ f#2 ~, ~@7 c3@7 d3@7 ~@11",
  J: "[~ g2@3 g2@2 ~@3 a2@3 ~ a2@2 ~@2 c3@6 ~ d3@2 ~ d3@2 ~@4 e3@4 e3@3 ~ f#2@2 ~@2 f#2@2 ~@2 g2@6 a2@2 ~@2 a2@2 ~ a2 ~, ~@31 d3@8 ~@25]/2",
  K: "c3@4 c3 ~@2 c3 ~ d3@4 d3 ~@2 e3@6 ~@10, ~@15 d3@7 ~@10",
})).s("gm_overdriven_guitar").gain(0.51)

// chords · string ensemble 2 · "Strings"
const string_ensemble_2 = note("<~@12 A@8 ~@8 A@8 ~@90>".pickRestart({
  A: "[~ e5@15 b4@8 c5@8 g4@29 f4@4 e4@26 ~ e4@4 f4@9 a4@7 ~ c5@12 ~@3 e5@16 b4@8 c5@8 g4@28 ~ f4@4 e4@27 d4@5 c5@31, ~ [a5,e6]@253 ~@2]/8", // A5
})).s("gm_string_ensemble_2").gain(0.47)

// bass · electric bass finger · "Bass Fretless"
const bass = note(`<
  ~@4 A B C D E F C D G H I J K L M@2 A B C D E F C D G N O P Q R@2 S T U V W X Y@5 Z@3 AA@3 AB@3 AC@2 AD AE AF AG@2 AH
  AD AE AF AG@2 AH AD AE AF AG@2 AI AJ AK AL AM@3 AN AO@3 AP AQ@2 AR@2 AS@3 AT AU@2 AV AW AX ~ AY AZ BA BB BC BD BA BB
  BE AZ BA BB BF BG BH BI BJ BG BH BI BJ BG BK ~@3
>`.pickRestart({
  A: "~ g1@10 ~@10 a2@3 g2@2 f2@2 e2@2 ~@2", B: "d2@3 ~ e2@16 c2@4 ~ e2 ~@2 e2@4, ~@27 c2@2 ~@3",
  C: "~ a1@12 ~@8 c3@3 b2@2 a2@2 g2@3 ~", D: "f2@17 d2@3 ~ f2 d2@3 ~ f2@2 d2@4",
  E: "a1@10 ~@10 a2@5 ~ f2@2 e2@2 ~@2, ~@25 g2@2 ~@5", F: "~ d2@4 e2@14 ~@2 c2@3 ~ e2 ~@2 e2@4, ~@27 c2@2 ~@3",
  G: "~ a1@22 ~@2 a1@7", H: "f1@8 ~ g1@20 f1@3", I: "~@17 e2@9 ~@3 e2@3, e1@23 ~@3 e1@5 ~",
  J: "~ f1@10 ~@2 f1@3 g1@8 f1@4 g1@4", K: "~@5 a1@19 ~ a1@7", L: "~ f1@7 g1@19 ~ f1@4",
  M: "[e1@10 ~@7 e2@8 e1@4 e2@4 f1@10 ~@2 f1@4 g1@7 f1@3 g1@4 ~, ~@12 e1@11 ~@41]/2", N: "~@2 f1@7 g1@20 f1@3",
  O: "~@2 e1@10 ~ e1@12 ~ e1@6", P: "~ f1@11 ~ f1@4 g1@8 f1@4 g1@3", Q: "~ a1@23 ~@2 a1@6",
  R: "[~@2 f1@7 g1@19 ~@2 f1@3 e1@26 ~@2 e1@3]/2", S: "~ f1@10 ~@2 f1@4 g1@7 ~ f1@4 g1@2 ~",
  T: "~ a1@2 ~@2 a1@3 ~ c2@5 ~ d2@2 ~@2 d2@2 ~@2 d2 ~ e2@3 ~ e2@3",
  U: "~ f#1@2 ~@2 f#1@2 ~@2 g1@5 ~ a1@3 ~ a1@2 ~@2 a1@2 c2@3 ~ c2@2 ~",
  V: "~ d2@3 ~ d2@2 ~@2 e2@6 f#1@2 ~@2 f#1@2 ~@2 f#1 ~ g1@3 ~ g1@2 ~",
  W: "~ a1@2 ~@2 a1@2 ~@2 c2@5 ~ d2@2 ~@2 d2@2 ~@2 d2 ~ e2@3 ~ e2@3",
  X: "~ f#1@2 ~@2 f#1@2 ~@2 g1@5 ~ a1@2 ~@2 a1@2 ~@2 a1 ~ c2@3 ~ c2@2 ~",
  Y: "[~ d2@2 ~@2 d2@2 ~@2 e2@6 ~ f#1 ~@2 f#1@2 ~@2 f#1 ~ g1@2 ~@5 a1@5 b1@4 c2@4 e2@2 d2@2 c2@2 ~@2 e2@2 ~ a1@5 b1@4 c2@4 e2@2 d2@2 c2@2 ~@2 e2@2 ~ a1@5 b1@4 c2@4 e2@2 d2@2 c2@2 d2@2 e2@2 ~ a1@5 b1@4 c2@4 e2@2 d2@2 c2@2 d2@2 e2@2 a1@6 b1@3 c2@4 ~ e2@2 d2@2 c2@2 d2 ~ e2@2 e1@6 f1@3, ~@30 g1@39 ~@91, ~@26 d2 ~@11 d2 ~@41]/5",
  Z: "[~ g1@4 b1@2 a1@2 g1@2 ~ b1@2 ~ e1@6 f1@4 g1@4 b1@2 a1@2 g1@2 a1 b1@3 e1@6 f1@4 g1@4 b1@2 a1@2 g1@2 a1@2 b1@2 e1@6 f1@4 g1@4 b1@2 a1@2 g1@2 a1 b1@3 ~ a1@5 b1@3, ~@11 a1@2 ~@83]/3",
  AA: "[~ c2@4 e2@2 d2@2 ~@2 d2 ~ e2@2 a1@6 b1@4 c2@4 e2@2 d2@2 c2@2 ~ e2@2 ~@2 a1@5 b1@4 c2@4 e2@2 d2@2 c2@2 d2@2 e2@2 a1@6 b1@3 c2@4 ~ e2@2 d2@2 c2@2 d2 ~ e2@2 e1@6 f1@3, ~@10 c2@2 ~@23 d2@2 ~@59]/3",
  AB: "[~ g1@4 b1@2 a1@2 g1@2 ~ b1@2 ~ e1@6 f1@4 g1@4 b1@2 a1@2 g1@2 a1 b1@3 ~ b1@5 f1@4 g1@4 b1@2 a1@2 g1@2 a1@2 b1@2 e1@6 f1@4 g1@4 b1@2 a1@2 g1@2 a1 b1@3 ~ a1@5 b1@3, ~@11 a1@2 ~@26 e1@6 ~@51]/3",
  AC: "[~ c2@4 e2@2 d2@2 ~@2 d2 ~ e2@2 a1@6 b1@4 c2@4 e2@2 d2@2 c2@2 ~ e2@2 ~@4 d2@3 d2@4 d2@3 ~@2 d2@3 d2@3 ~ d2@3, ~@10 c2@2 ~@23 d2@2 ~@27]/2",
  AD: "~ d2@3 ~@2 d2@3 ~ d2@3 ~ d2@3 d2@4 ~ d2@3 ~ b1@3 b1@3",
  AE: "~ b1@4 ~ b1@3 ~ b1@3 ~ b1@3 ~ b1@3 b1@4 b1@3 ~ b1@3", AF: "~ b1@3 ~@2 b1@4 g1@3 g1@4 ~ g1@3 ~ g1@3 g1@3 ~ g1@3",
  AG: "[~ g1@3 ~ g1@3 ~ g1@3 ~ g1@4 ~ g1@3 g1@3 ~@2 e2@3 ~ e2@7 e2@3 ~ e2@3 ~ e2@4 e2@3 ~ e2@3 ~ e2@3 ~ d2@3, ~@21 f1 ~@42]/2",
  AH: "~ e2@4 f#2@3 ~@2 d2@3 d2@4 d2@3 ~@2 d2@3 d2@3 ~ d2@3",
  AI: "~ e2@4 f#2@3 e1@5 f1@4 g1@4 ~ b1@2 ~ g1@2 ~ b1@2 ~@2, ~@24 a1@2 ~ a1@2 ~@3",
  AJ: "e1@2 ~@2 e1@2 f1@4 g1@4 b1@2 a1@2 g1@2 ~ b1@2 ~ e1@5 f1@3, ~@10 a1 ~@5",
  AK: "~ g1@4 ~ b1@2 ~ g1@2 ~ b1@2 ~@2 e1@2 ~@2 e1@2 f1@4 g1@4 b1@2, ~@8 a1@2 ~ a1@2 ~@19",
  AL: "a1@2 g1@2 ~ b1@2 ~@2 g1@12 ~@11, ~@2 a1 ~@13",
  AM: "[~@2 a1@7 f1@9 g1@20 f1@3 e1@18 e2@11 e1@4 f1@9 ~@2 f1@5 g1@6]/3",
  AN: "~@2 f1@4 g1@3 ~@5 a1@4 ~@3 b1@3 ~@2 a1@6",
  AO: "[~@3 a1@7 f1@7 ~ g1@20 f1@4 e1@10 ~@2 e1@5 e2@7 e1@4 e2@4 f1@10 ~@3 f1@4 g1@5]/3",
  AP: "~@2 f1@4 g1@3 ~@6 a1@3 ~@2 b1@3 ~@3 a1@6", AQ: "[~@2 a1@8 f1@7 ~ g1@19 f1@5 e1@11 ~ e1@4 ~ e2!2 ~ e1@2]/2",
  AR: "[e2@4 ~@2 e2@4 f1@10 ~@3 f1@3 ~ g1@3 ~ g1@3 f1@3 ~ g1@4 ~@3 a1@3 ~@4 b1@2 ~@4 a1@6, ~@5 e1@2 ~@57]/2",
  AS: "[~@2 a1@7 ~ f1@8 g1@19 f1@5 e1@11 ~@2 e1@4 e2!2 ~@2 e1@2 e2@4 ~ e2@4 ~ f1@9 ~ f1@4 ~ g1@6, ~@69 e1@2 ~@25]/3",
  AT: "~@2 f1@4 g1@3 a1@2 ~@2 a1@3 ~ c2@5 ~ d2@2 ~@2 d2@2 ~@2 d2",
  AU: "[~ e2@3 ~ e2@3 ~ f#1@2 ~@2 f#1@2 ~@2 g1@5 ~ a1@3 ~ a1@2 ~@2 a1@2 c2@3 ~ c2@2 ~@2 d2@3 ~ d2@2 ~@2 e2@6 f#1@2 ~@2 f#1@2 ~@2 f#1]/2",
  AV: "~ g1@3 ~ g1@2 ~@2 a1@2 ~@2 a1@2 ~@2 c2@5 ~ d2@2 ~@2 d2@2 ~@2 d2",
  AW: "~ e2@3 ~ e2@4 f#1@2 ~@2 f#1@2 ~@2 g1@5 ~ a1@2 ~@2 a1@2 ~@2 a1",
  AX: "~ c2@3 ~ c2@2 ~@2 d2@2 ~@2 d2@2 ~@2 e2@6 ~@9", AY: "~@9 g1@10 ~@10 a2@3",
  AZ: "g2@2 f2@2 e2@2 ~@2 d2@3 ~ e2@16 c2@4", BA: "~ e2 ~@2 e2@4 ~ a1@12 ~@8 c3@3, ~@3 c2@2 ~@27",
  BB: "b2@2 a2@2 g2@3 ~ f2@17 d2@3 ~ f2 d2@2", BC: "~ f2 d2@2 a1@5 ~@5 a2@2",
  BD: "~@2 f2@2 e2@2 ~@3 d2@4 e2@14 ~@2 c2@3, ~ g2@2 ~@29", BE: "~@2 f2@2 d2@4 ~ g1@10 ~@10 a2@3",
  BF: "~@2 f2@2 d2@4 ~ g1@10 ~@9 g1@2 ~@2", BG: "~@3 g1@2 ~@3 a1@12 ~@4 c2 ~ c2 ~@3 c2 ~",
  BH: "~@2 c2@4 d2 ~ a1@11 ~@10 g2@2 ~", BI: "~@3 g2@2 ~@3 g2@2 ~@12 c2 ~ g2@2 ~ c2 f2@2 c2@2, ~@10 a2@15 ~@7",
  BJ: "e2@2 c2@2 f2 ~@4 g1@10 ~@9 g1@2 ~@2", BK: "~@2 c2@4 d2 ~ a1@11 ~@13",
})).s("gm_electric_bass_finger").gain(0.8)

// other · tubular bells · "Bells"
const tubular_bells = note("<~@44 A@3 B@6 C@3 ~@70>".pickRestart({
  A: "[~@9 [e4,e5]@38 ~@2 [f4,a5]@8 ~ e4@38, ~@19 e5@13]/3", // E F
  B: "[~@9 [d4,d5]@40 ~ [f4,a5]@7 [e4,e5]@47 ~ [e4,e5]@40 ~ [f4,a5]@7 [e4,e5]@39]/6", // D F E F E
  C: "[~@10 d5@40 [g4,a5]@7 [e4,e5]@32 ~@7, ~@9 d4@40 ~@47]/3", // Gsus2 E
})).s("gm_tubular_bells").gain(0.67)

// chords · overdriven guitar · "Overdrive Gtr"
const overdriven_guitar_2 = note("<~@56 A@6 B C@6 D@3 E@6 ~@48>".pickRestart({
  A: "[~@14 b3@7 ~@12 a4@14 ~@22 b4@8 a4@2 ~@2 b4@20 a4@3 ~ b4@12 ~@12 f#4@15 ~@9 b3@10 ~@3 a3@7 f#3 ~@3 a3@15, ~@9 a3@39 ~@9 a4@20 ~@40 b4@27 ~@48, ~@21 b3@27 ~@5 f#4@26 ~@45 a4@19 ~@2 a4@19 ~@28, ~@25 e4@22 ~@2 d4@30 ~@70 f#4@15 ~@28]/6",
  B: "~@5 b3@3 ~ e4@11 ~ d4@11, ~ a3@7 ~@24",
  C: "[~@2 d4@14 ~@6 f#4@3 ~ a4@11 ~@7 a4@3 ~@2 b4@19 a4@3 ~@22 e5@24 ~ d5@2 ~@21 b5@23 a5@2 ~@3 d6@12 d6@11, ~@18 d4@7 ~@60 d5@18 ~@31 a5@30 ~@28, ~@20 e4@5 ~@12 b4@10 ~@26 e5@20 ~@29 b5@18 ~@52]/6",
  D: "[~ d6@16 ~ d6@6 ~@22 e6@23 ~ d6@3 e6@10 ~@3 e6@10, ~@25 e6@21 ~@50, ~@19 d6@6 ~@23]/3",
  E: "[~ e6@4 d6@4 e6@15 ~ e6@12 e6@12 e6@4 d6@3 ~ e6@111 ~@24, ~@9 d6 ~@182]/6",
})).s("gm_overdriven_guitar").gain(0.61)

// chords · piano · "GM Dance Kit"
const piano = note("<~@28 A B C D C E C E ~@26 F ~@5 G H ~ I ~@33 J ~@3 K ~@7 L ~@8>".pickRestart({
  A: "~@25 d#2@3 ~@4", B: "~@25 [e1,e2,f3]@7", C: "~@25 d#2@2 ~@5", D: "~@25 f3@4 ~@3, ~@12 [e1,e2]@3 ~",
  E: "~@25 [e1,e2,f3]@5 ~@2", F: "~@9 e3@6 ~@17", G: "~@9 [e1,e2,f3]@8 ~@15", H: "~@26 e3@5 ~", I: "~@9 d#2@6 ~@17",
  J: "~ [e3,g3] ~@2", K: "~@4 [f2,a2,d3]@5 ~@7", L: "~@9 [f2,c3]@8 ~@15, ~@8 [a2,f3]@7 ~@17, ~@8 g2@3 ~@21",
})).s("gm_piano").gain(0.8)

// chords · distortion guitar · "Distortion Gtr"
const distortion_guitar = note("<~@56 A@6 B C@6 D@3 E@6 ~@48>".pickRestart({
  A: "[~@14 b2@7 ~@12 a3@14 ~@22 b3@8 a3@2 ~@2 b3@20 a3@3 ~ b3@12 ~@12 f#3@15 ~@9 b2@10 ~@3 a2@7 f#2 ~@3 a2@15, ~@9 a2@39 ~@9 a3@20 ~@40 b3@27 ~@48, ~@21 b2@27 ~@5 f#3@26 ~@45 a3@19 ~@2 a3@19 ~@28, ~@25 e3@22 ~@2 d3@30 ~@70 f#3@15 ~@28]/6",
  B: "~@5 b2@3 ~ e3@11 ~ d3@11, ~ a2@7 ~@24",
  C: "[~@2 d3@14 ~@6 f#3@3 ~ a3@11 ~@7 a3@3 ~@2 b3@19 a3@3 ~@22 e4@24 ~ d4@2 ~@21 b4@23 a4@2 ~@3 d5@12 d5@11, ~@18 d3@7 ~@60 d4@18 ~@31 a4@30 ~@28, ~@20 e3@5 ~@12 b3@10 ~@26 e4@20 ~@29 b4@18 ~@52]/6",
  D: "[~ d5@16 ~ d5@6 ~@22 e5@23 ~ d5@3 e5@10 ~@3 e5@10, ~@25 e5@21 ~@50, ~@19 d5@6 ~@23]/3",
  E: "[~ e5@4 d5@4 e5@15 ~ e5@12 e5@12 e5@4 d5@3 ~ e5@111 ~@24, ~@9 d5 ~@182]/6",
})).s("gm_distortion_guitar").gain(0.68)

// drums · kick
const kick = s("bd").struct(`<
  A B A B A C A D A E A F A@3 G H I@2 J I K I L I M I L N@8 O P O@4 Q ~ R N@11 S T@9 U T V W U X Y Z AA AB AC AD AE AF
  AG AH AI AJ AK AH AF AI AL AH AF AI AM AN AO AP@3 AQ ~ AR AS AT AU AV AU AW AX AV AS AT AU AV AU AW AX AV AS AT AU AV
  AU AW ~@3
>`.pickRestart({
  A: "x ~@6 x", B: "x ~@14 x", C: "x ~@5 x!2 ~@3 x!2 ~@3", D: "x ~@6 x!2 ~@2 x ~ x ~ x", E: "x ~@6 x!2 ~@2 x!2 ~@2 x",
  F: "x ~@13 x ~@2 x ~@4 x ~@3 x ~@3 x ~", G: "~ x ~@4 x ~@5 x ~@7 x ~@11", H: "~@5 x ~@7 x ~@2 x ~@12 x ~@2",
  I: "~ x ~@27 x ~@2", J: "~ x ~@5 x ~@5 x ~@7 x ~@10", K: "~ x ~@11 x ~ x ~@7 x ~ x ~@6",
  L: "~ x ~@13 x ~ x ~@5 x ~@3 x ~@3 x", M: "~ x ~@13 x ~ x ~@5 x ~ x ~@5 x", N: "~ x ~@7 x ~@7 x ~@7 x ~@6",
  O: "~ x ~@3 x ~@9 x ~@4 x ~@3 x ~@7", P: "~ x ~@2 x ~@10 x ~@4 x ~@3 x ~@7", Q: "~ x ~@30",
  R: "~@9 x ~@7 x ~@7 x ~@6", S: "~ x ~@7 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@2",
  T: "~ x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@2", U: "~ x ~@3 x ~@3 x ~@3 x ~@4 x ~@2 x ~@3 x ~@3 x ~@2",
  V: "~ x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@4 x ~@2 x ~@2", W: "~@2 x ~@2 x ~@4 x ~@3 x ~@2 x ~@4 x ~@2 x ~@3 x ~@2",
  X: "~ x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@4 x ~", Y: "~ x ~@3 x ~@4 x ~@2 x ~@4 x ~@3 x ~@2 x ~@4 x ~",
  Z: "~ x ~@4 x ~@3 x ~@3 x ~@3 x ~@3 x ~@2 x ~@3 x ~@2", AA: "~@2 x ~@2 x ~@3 x ~@3 x ~@4 x ~@3 x ~@3 x ~@3 x ~",
  AB: "~@2 x ~@2 x ~@4 x ~@3 x ~@3 x ~@2 x ~@4 x ~@3 x ~", AC: "~@2 x ~@3 x ~@2 x ~@4 x ~@3 x ~@3 x ~@3 x ~@3 x ~",
  AD: "~ x ~ x ~ x ~@9 x", AE: "~@5 x ~@2 x ~@2 x ~@3 x", AF: "~@3 x ~ x ~@9 x", AG: "~@3 x ~ x ~@2 x ~@2 x ~@3 x",
  AH: "~@7 x ~@2 x ~@2 x ~@2", AI: "~@3 x ~ x ~ x ~@3 x ~ x ~@2", AJ: "x ~@2 x ~ x ~@9 x",
  AK: "~@3 x ~ x ~@2 x ~@4 x ~@2", AL: "x ~@2 x ~ x ~@2 x ~@4 x ~@2", AM: "x ~@2 x ~ x ~@2 x ~@2 x ~@3 x",
  AN: "~@9 x ~@3 x ~@9 x ~@4 x ~@3", AO: "x ~@8 x ~@2 x ~@10 x ~@4 x ~@3", AP: "x ~@8 x ~@3 x ~@9 x ~@4 x ~@3",
  AQ: "x ~@8 x ~@3 x ~@13 x ~@4", AR: "~ x ~@2", AS: "~@2 x ~ x ~@5 x!2 ~@3 x", AT: "x!2 ~@2",
  AU: "~@2 x ~ x ~@6 x!2 ~@2 x", AV: "~ x ~ x!2 ~@11", AW: "x ~@2 x!2 ~@11", AX: "~@4 x ~@3 x ~@13 x ~@2 x ~@4 x ~",
})).gain(0.68)

// drums · rim
const rim = s("rim").struct("<~@99 [~ x] [~@5 x ~@26] ~@25>").gain(0.68)

// drums · snare
const snare = s("sd").struct(`<
  A@15 B@2 C@11 D E@2 D@2 E@2 D C@6 ~@2 F G H I J K L M K L M K N O@12 P O@2 Q R S@2 T U V@6 W U V@2 X Y V@3 P O@4 Z AA
  AB AC@21 AD ~@3
>`.pickRestart({
  A: "~ x ~ x", B: "~@8 x ~@16 x ~@6", C: "~@9 x ~@15 x ~@6", D: "~@21 x ~@3 x ~@6", E: "~@21 x ~@10",
  F: "~@3 x ~ x ~ x ~@17 x ~@6", G: "~@17 x ~@14", H: "~@5 x ~@3 x ~@7 x ~@13 x", I: "~ x ~@7 x ~@15 x ~@6",
  J: "~@17 x ~ x ~ x ~ x ~@8", K: "~@5 x ~@3 x ~@8 x ~@12 x", L: "~ x ~ x!3 ~ x ~@13 x ~@3 x ~@6",
  M: "~@2 x ~@12 x ~ x ~ x!3 ~ x ~@8", N: "~ x ~ x!3 ~ x ~@9 x ~@14", O: "~ x ~@15 x ~@14", P: "~@2 x ~@14 x ~@14",
  Q: "~ x ~@16 x ~@13", R: "~ x ~@16 x ~@6 x ~@6", S: "~ x ~@3 x ~@3 x ~@3 x ~@2", T: "~ x ~@3 x ~@3 x ~@3 x!3",
  U: "x!5 ~@4 x ~@6", V: "~ x ~@7 x ~@6", W: "~@2 x ~@15 x ~@7 x!5 ~", X: "~@2 x ~@15 x ~@7 x!4 ~@2", Y: "~@9 x ~@6",
  Z: "~ x ~@15 x ~@9 x ~@4", AA: "~@16 x ~@2 x!3 ~ x ~@3 x!3 ~@2", AB: "~@5 x ~@10 x ~@15", AC: "x!2", AD: "x",
})).gain(0.68)

// drums · clap
const clap = s("cp").struct("<~@99 [~ x] [~@5 x ~@26] ~@25>").gain(0.68)

// drums · low tom
const low_tom = s("lt").struct("<~@28 A B@2 A@2 B@2 A ~@53 C ~@9 D E ~@25>".pickRestart({
  A: "~@5 x ~ x ~ x ~@22", B: "~@5 x ~ x ~ x ~@15 x ~@6", C: "~@3 x!2 ~@11", D: "~ x", E: "~@3 x ~@12",
})).gain(0.68)

// drums · hihat
const hihat = s("hh").struct(`<
  A B@3 A C B C B C B C ~@8 D E F E F E F E G@8 D F@5 ~@51 H F@4 I ~ J B K B K B K B L B K B K B K B L B K B K B M ~@3
>`.pickRestart({
  A: "~ x!7", B: "x!8", C: "x!7 ~", D: "~@5 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@2",
  E: "~ x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@6", F: "~ x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@2",
// … 51 more lines

More by Rush