Strudelify

The Twilight Zone

Rush

KeyA minorTempo114 bpm
0:00/0:00
// The Twilight Zone — Rush
// 114 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: Full arrangement: all 90 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(114/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 · "Bass"
const bass = note(`<
  A@2 B@2 C@4 D@2 E@4 F G H@8 I@2 J@8 K@2 L M@2 N@2 O P@4 Q@2 R S T U@2 V@6 W@2 X Y@2 Z V@2 W@2 X Y@2 Z V@12 AA@2 AB ~@2
>`.pickRestart({
  A: "[~@6 a2@4 ~@8 g2@5 ~@7 f2@14 e2@7 ~ f2@7 ~ g2@4, ~@44 f2 ~@19]/2",
  B: "[~@3 a2@4 ~@8 g2@5 ~@7 f2@14 e2@7 ~ f2@7 ~ g2@6 ~, ~@41 f2 ~@22]/2",
  C: "[a2@6 ~@7 g2@4 ~@7 f2@34 ~@4 e2@5 e2@2 ~ b1@5 e2@2 d2@5 ~@3 a1@5 ~@3 c2@5 ~@8 c2@2 d2@5 d2@2 ~ a1@2 ~ c2@2 d2@2 e2@5, ~@62 d2 ~@19 d2@8 d2@6 ~@2 c2@7 ~@3 c2 ~@14 d2 ~@4, ~@101 g1@8 ~@10 a1 ~@8]/4",
  D: "[e2@2 ~ b1@5 e2@2 ~ d2@5 ~@3 a1@4 ~@3 c2@5 ~@8 c2@3 d2@5 d2@2 a1@2 ~ c2@2 d2@2 d2 e2@5 e2@2, ~@16 d2@7 d2@6 ~@2 c2@7 ~@4 c2 ~@21, ~@34 g1@8 ~@10 a1 ~@11]/2",
  E: "[~ b1@4 e2@2 ~ d2@5 ~@3 a1@5 ~@3 c2@5 ~@7 c2@3 d2@5 d2@2 ~ a1@2 c2@2 ~ d2@2 e2@5 e2@2 ~ b1@5 e2@2 d2@5 ~@3 a1@5 ~@3 c2@5 ~@8 c2@2 d2@5 d2@2 ~ a1@2 c2@2 ~ d2@2 ~ a1@8 ~@4, ~@13 d2@8 d2@6 ~@2 c2@7 ~@3 c2 ~@14 d2 ~@19 d2@8 d2@6 ~@2 c2@7 ~@3 c2 ~@27, ~@31 g1@8 ~@10 a1 ~@43 g1@8 ~@9 a1 ~@17]/4",
  F: "~ a1@2 ~@6 b1@4 ~@7 d2@8 ~@4, ~@4 e2@9 ~@19", G: "~ d2 ~@2 e2@4 ~@8 e2@3 a1@8 ~@5, ~ e2 ~@2, ~@11 b1@8 ~@13",
  H: "[~ a1@3 e2@5 f#2@4 e2@6 d2@36 ~@8 b1@4 g1@3 ~@5 c2@4 b1@3 ~@29 a1@16 b1@4 g1@3 ~@5 c2@4 b1@3 ~@29 a1@16 b1@4 g1@3 ~@5 c2@4 b1@3 ~@29 a1@16 b1, ~@71 e1@8 ~@4 a1@27 ~@25 e1@8 ~@4 a1@27 ~@25 e1@8 ~@4 a1@27 ~@18, ~@95 a2@31 ~@33 a2@31 ~@33 a2@31 ~@2, ~@103 e2@23 ~@41 e2@23 ~@41 e2@23 ~@2]/8",
  I: "[~@3 g1@3 ~@5 c2@4 b1@3 ~@29 a1@16 a1, ~@7 e1@8 ~@4 a1@27 ~@18, ~@31 a2@31 ~@2, ~@39 e2@23 ~@2]/2",
  J: "[~@3 a1@4 c2@3 ~ d2@3 ~ e2@3 f2 ~@8 f2@3 ~ e2@7 f2 f2@3 ~ e2@8 f2@4 ~@4 c2@3 ~ d2@7 ~ a1@4 b1@4 ~@12 f2@4 e2@7 ~ f2@3 ~ e2@7 ~@13 b1@4 g1@3 ~@5 c2@4 b1@3 ~@29 a1@16 b1@4 g1@3 ~@5 c2@4 b1@3 ~@29 a1@16 b1, ~@19 f2@8 ~@28 e2@7 ~@21 f2@7 ~@45 e1@8 ~@4 a1@27 ~@25 e1@8 ~@4 a1@27 ~@18, ~@23 c2@8 ~@48 c2@7 ~ c2@8 ~@20 d2@31 ~@13 a2@31 ~@33 a2@31 ~@2, ~@167 e2@23 ~@41 e2@23 ~@2]/8",
  K: "[~@3 g1@3 ~@5 c2@4 b1@3 ~ a2@4 ~@8 g2@5 ~@7 f2@14 e2@7, ~@7 e1@8 ~@42 f2 ~@6]/2",
  L: "~ f2@7 ~ g2@6 ~ a2@4 ~@8 g2@4", M: "[~@8 f2@14 e2@7 ~ f2@7 ~ g2@6 ~@2 a2@6 ~@6 g2@4 ~@2, ~@22 f2 ~@41]/2",
  N: "[~@5 f2@34 ~@4 e2@5 e2@2 ~ b1@5 e2@2 d2@5 ~, ~@43 d2 ~@20]/2",
  O: "~@2 a1@5 ~@3 c2@5 ~@8 c2@3 d2@4 d2@2, d2@7 d2@6 ~@2 c2@7 ~@4 c2 ~@5, ~@9 g1@4 ~@3",
  P: "[~ a1@2 ~ c2@2 d2@2 e2@5 ~ e2@2 b1@5 e2@2 ~ d2@5 ~@3 a1@5 ~@3 c2@5 ~@7 c2@3 d2@5 d2@2 ~ a1@2 c2@2 d2@2 ~ e2@5 e2@2 ~ b1@4 e2@2 ~ d2@5 ~@3 a1@5 ~@3 c2@5 ~@7 c2@3 d2@5 d2@2 ~ a1@2 c2@2, ~@4 a1 ~@3 d2 ~@20 d2@8 d2@6 ~@2 c2@7 ~@3 c2 ~@14 d2 ~@19 d2@8 d2@6 ~@2 c2@7 ~@3 c2 ~@11, ~@47 g1@8 ~@10 a1 ~@43 g1@8 ~@9 a1 ~]/4",
  Q: "[~ d2@2 e2@5 e2@2 ~ b1@5 e2@2 d2@5 ~@3 a1@5 ~@3 c2@5 ~@8 c2@2 d2@5 d2@2 ~ a1@2 ~ c2@2 d2@2, ~@3 d2 ~@19 d2@8 d2@6 ~@2 c2@7 ~@3 c2 ~@14, ~@42 g1@8 ~@10 a1 ~@3]/2",
  R: "~ a1@8 ~@5 a1@2 ~@6 b1@4 ~@6, ~@17 e2@9 ~@6", S: "~ d2@8 ~@5 d2 ~@2 e2@4 ~@8 e2@3, ~@22 e2@7 ~@3, ~@3 b1",
  T: "a1@8 ~@6 a1@3 e2@4 ~ f#2@4 e2@4 ~@2", U: "[d2@36 ~@8 b1@4 g1@3 ~@5 c2@4 b1@3 ~, ~@13 e1@2 ~]/2",
  V: "[~@28 a1@16 b1@4 g1@3 ~@5 c2@4 b1@3 ~, ~ a1@27 ~@24 e1@8 ~@4, ~@12 a2@31 ~@21, ~@20 e2@23 ~@21]/2",
  W: "[~@28 a1@16 ~ a1@3 a1@4 ~ c2@3 d2@3 ~ e2@3 f2, ~ a1@27 ~@36, ~@12 a2@31 ~@21, ~@20 e2@23 ~@21]/2",
  X: "~@8 f2@3 ~ e2@7 f2 f2@4 e2@8, f2 ~@3, ~ c2@2 ~@5",
  Y: "[~ f2@4 ~@3 c2@3 ~ d2@7 ~ a1@4 b1@4 ~@12 f2@4 e2@7 ~ f2@3 ~ e2@7 ~, ~@5 e2@7 ~@17 c2@7 c2@8 ~@20, ~@32 f2@7 ~@25]/2",
  Z: "~@12 b1@4 g1@3 ~@5 c2@4 b1@3 ~, d2@31 ~, ~@5 e1@2 ~",
  AA: "[~@28 a1@16 b1@4 g1@3 ~@6 c2@4 ~ b1@2, ~ a1@27 ~@24 e1@8 ~@4, ~@12 a2@31 ~@21, ~@20 e2@23 ~@21]/2",
  AB: "~@4 a1@27 ~",
})).s("gm_electric_bass_finger").gain(0.2)

// chords · acoustic guitar steel · "Clean Gtr"
const acoustic_guitar_steel = note(`<
  ~@5 A@3 B@2 C@4 D E F@2 G@8 H@3 I@6 ~@5 J@2 K@6 L M N O P@8 Q R S T U@5 V W X Y Z AA@6 AB@7 AC@3
>`.pickRestart({
  A: "[~@30 e2@5 ~@2 [a#2,d3] ~@7 d3@5 ~@10 c3@5 ~@3 [g3,b3,e4]@13 f#3@2 ~ [g3,e4]@5 [g3,b3]@2 e2@5, ~@35 e2@36 ~@25, ~@37 b2@23 ~@6 c3@10 ~@20, ~@37 [g3,b3]@13 d3@9 ~@9 d3@7 ~@21, ~@37 e3 e4@15 [g3,b3,e4]@15 ~@16 b3@2 ~@10]/3", // A# Em C G Em
  B: "[~@3 [a#2,d3] ~@7 d3@5 ~@10 c3@5 ~@3 d3@7 f#3@5 ~ f#3@2 [g3,b3]@5 [g3,b3]@2 e2@5 ~@3, ~@3 b2@23 ~@5 c3@10 ~@23, ~@3 [g3,b3,e4]@15 [g3,b3,e4]@15 ~ [g3,b3,e4]@15 f#3@14 ~, ~@3 e3@7 ~@6 d3@9 ~@39]/2", // A# G Em
  C: "[[a#2,d3] ~@7 d3@5 ~@10 c3@5 ~@3 d3@7 f#3@5 ~ f#3@2 [g3,b3]@5 [g3,b3]@2 ~ e2@5 ~@2 [a#2,d3] ~@7 d3@5 ~@10 c3@5 ~@3 d3@7 ~ f#3@5 f#3@2 ~ [f#3,b3]@5 [g3,b3]@2 [g3,c4]@12 ~, b2@23 ~@5 c3@10 ~@23 b2@23 ~@6 c3@10 ~@28, [g3,b3,e4]@15 [g3,b3]@15 ~ [g3,b3,e4]@15 f#3@14 ~ [g3,b3,e4]@15 ~ [g3,b3,e4]@15 [g3,b3,e4]@15 g3@5 ~@16, e3@8 ~@5 d3@9 ~@39 e3@8 ~@5 d3@9 ~@45, ~@16 e4@15 ~@84 e4@7 ~@6]/4", // A# G A# B5 G C5 Em G …
  D: "~@3 [c4,d4,g4]@5 [c4,g4]@4 ~@7 [a3,d4,f#4]@13, ~@3 e4@9 ~@7 d3 ~@12", // Csus2 C5 D
  E: "~@3 f#4@5 f#4 ~@10 [g3,c4]@12 ~, ~@3 [a3,d4]@13 ~@3 e4@7 ~@6, ~@3 f#3 ~@28", // C5 D5
  F: "[~@3 [c4,e4,g4,b4]@5 [c4,e4,g4,b4]@4 ~@7 [d3,a3,d4,f#4]@32 ~@12 b2]/2", // Cmaj7 D
  G: "[~@3 g2@3 ~@5 c3@4 b2@3 ~@30 [c4,e4]@7 ~@4 a2@4 b2@3 ~ g2@3 ~@5 c3@4 b2@3 ~@17 c4@12 c4@8 ~@4 a2@4 b2@4 g2@3 ~@5 c3@4 b2@3 ~@25 a2@4 c4@8 ~@4 a2@4 b2@4 g2@3 ~@5 c3@4 b2@4 b2 ~@28 e4@7 ~ c4@7 b2, ~@7 e2@59 ~@5 e2@56 ~@8 e2@59 ~@5 e2@57, ~@19 a2@20 e3@4 a2@12 e4@32 e3@32 c4@32 e3@12 g3@20 ~@32 e3@20 e3@13 e3@5 ~@3, ~@23 e3@12 g3@48 a2@27 ~ g3@36 a2@20 e3@8 [a2,e3]@14 ~@22 a2@40 ~@5, ~@27 g3@4 c4@16 e3@9 c4@35 g3@4 e4@16 a2@8 e4@36 g3@4 c4@16 ~@8 [c4,e4]@36 g3@4 e4@4 c4@20 e4@9]/8", // C A5 C
  H: "[~@3 g2@4 c3@3 ~ d3@4 e3@4 f4@8 ~@15 a3@6 ~@2 d4@9 d3@3 ~@17 a2 ~@3 f4@10 ~@2 e4, ~@27 a3@15 ~@21 c4@19 ~@14, ~@31 e4@18 ~@26 e3@7 ~@14]/3",
  I: "[~@31 b2@4 g2@3 ~@5 c3@4 b2@3 ~@30 [c4,e4]@7 ~@4 a2@4 b2@3 ~ g2@3 ~@5 c3@4 b2@3 ~@17 c4@12 c4@8 ~@4 a2@4 b2@4 g2@3 ~@5 c3@4 b2@3 ~@14, ~@19 a2@31 ~ a2@20 e3@4 a2@12 e4@32 e3@37 ~@36, ~@20 f4@27 ~@8 e3@12 g3@48 a2@27 ~ g3@36 ~@13, ~@39 e2@59 ~@5 e2@56 ~@8 e2@12 ~@13, ~@59 g3@4 c4@16 e3@9 c4@35 g3@4 e4@16 a2@8 [c4,e4]@28 ~@13]/6", // C
  J: "[~@11 e2@5 ~@2 [a#2,d3] e3@7 d3@5 ~@11 c3@5 ~@3 e4@12 f#3@2, ~@4 e2@9 ~@3, ~@18 b2@23 ~@6 c3@10 ~@7, ~@18 g3@14 d3@9 ~@9 d3@7 ~@7, ~@19 [b3,e4]@15 [g3,b3,e4]@15 [g3,b3]@15]/2", // A# E5 Em G
  K: "[~ [g3,e4]@5 [g3,b3]@2 e2@5 ~@3 [a#2,d3] ~@7 d3@5 ~@10 c3@5 ~@3 d3@7 f#3@5 ~ f#3@2 [g3,b3]@5 [g3,b3]@2 e2@5 ~@3 [a#2,d3] ~@7 d3@5 ~@10 c3@5 ~@3 d3@7 ~ f#3@5 f#3@2 ~ b3@4 [g3,b3]@2 ~ e2@5 ~@2 [a#2,d3] e3@7 d3@5 ~@11 c3@5 ~@2 d3@7 ~ f#3@5 f#3@3 [f#3,b3]@5 [g3,b3]@2, ~ b3@2 ~@13 b2@23 ~@5 c3@10 ~@23 b2@23 ~@6 c3@10 ~@22 b2@23 ~@6 c3@10 ~@15, ~@16 [g3,b3,e4]@15 [g3,b3,e4]@15 ~ [g3,b3,e4]@15 f#3@14 ~ [g3,b3,e4]@15 ~ [g3,b3,e4]@15 [g3,b3,e4]@15 g3@5 ~@10 g3@14 d3@9 ~@31, ~@16 e3@8 ~@5 d3@9 ~@39 e3@8 ~@5 d3@9 ~@25 f#3@14 ~ [b3,e4]@15 [g3,b3,e4]@15 [g3,b3,e4]@15 ~ g3@4 ~@3]/6", // C G A# G A# G A# B5 …
  L: "[g3,c4]@12 ~@4 [c4,d4,g4]@5 [c4,g4]@4 ~@7, e4@7 ~@9 e4@9 ~@7", // C5 Csus2 C5
  M: "[a3,d4,f#4]@15 ~ f#4@5 f#4 ~@10, d3 ~@15 [a3,d4]@13 ~@3, ~@16 f#3 ~@15", // D D5
  N: "[g3,c4]@12 ~@4 [c4,e4,g4,b4]@5 ~ [c4,e4]@4 ~@6, e4@7 ~@14 [g4,b4]@4 ~@7", O: "~ f#4@31, [d3,a3,d4]",
  P: "[~@13 b2@3 g2@4 ~@4 c3@4 b2@3 ~@30 [c4,e4]@7 ~@4 a2@4 b2@3 ~ g2@3 ~@5 c3@4 b2@3 ~@17 c4@12 ~ c4@7 ~@4 a2@4 ~ b2@3 g2@4 ~@4 c3@4 b2@3 ~@25 a2@4 c4@8 ~@4 a2@4 b2@4 g2@3 ~@5 c3@4 b2@4 b2 ~@28 e4@3, ~@20 e2@59 ~@5 e2@56 ~@8 e2@59 ~@5 e2@44, ~@8 a2@5 e3 a2@3 e4@8 e3@8 c4@8 e3@3 g3@5 ~@8 e3@5 e3@2, ~@36 e3@12 g3@48 a2@27 ~ g3@36 a2@20 e3@8 [a2,e3]@14 ~@22 a2@32, ~@40 g3@4 c4@16 e3@9 c4@36 g3@3 e4@16 a2@8 e4@36 g3@4 c4@16 ~@8 [c4,e4]@36 g3@4 e4@4 c4@16]/8", // C A5 C
  Q: "~@6 e3@5 ~@2 b2@4 g2@4 c3@3 d3@4 e3@3 ~, ~@2 e4@7 ~@7, ~@5 c4@11 ~@16",
  R: "f4@4 ~@8 a3@3 ~, ~@8 a3@15 ~@9, ~@6 e4@9 ~", S: "d4@8 d3@3 ~@17 a2 ~@3, ~@12 c4@19 ~, ~@24 e3@7 ~",
  T: "f4@5 ~ e4@9 ~",
  U: "[~@13 b2@3 g2@4 ~@4 c3@4 b2@3 ~@30 [c4,e4]@7 ~@4 a2@4 b2@3 ~ g2@3 ~@5 c3@4 b2@3 ~@17 c4@12 ~ c4@7 ~@4 a2@4 ~ b2@4 g2@4 c3@3 d3@4 e3@3 ~, a2@31 ~ a2@21 e3@4 a2@11 e4@32 e3@37 ~@23, ~ f4@27 ~@8 e3@12 g3@48 a2@27 ~ g3@36, ~@20 e2@59 ~@5 e2@56 ~@20, ~@40 g3@4 c4@16 e3@9 c4@35 g3@4 e4@16 a2@8 [c4,e4]@28]/5", // C
  V: "f4@4 ~@8 a3@2 e3 ~, ~@8 a3@15 ~@9, ~@6 e4@9 ~, ~@10 c4@5 ~",
  W: "~@4 a3@4 d3@3 ~@17 a2 ~@3, d4@10 ~@2 c4@19 ~, ~@5 a3@3, ~@24 e3@7 ~",
  X: "~@4 c4@7 ~@13 a3@4 c4@3 ~, f4@5 ~ e4@9 ~, ~@20 c4@7 ~@5", Y: "~ [d4,f4]@27 ~@4, [d3,a3]@31 ~",
  Z: "~@29 [c4,e4]@3, a2@23 ~ a2@8, ~@4 e3@15 ~ e3@8 e3@4, ~@8 g3@7 ~ g3@16, ~@3 c4@4 ~", // C
  AA: "[~@8 a2@4 b2@3 ~ g2@3 ~@5 c3@4 b2@3 ~@17 c4@12 ~ c4@7 ~@4 a2@4 ~ b2@3 g2@4 ~@4 c3@4 b2@3 ~@30 [c4,e4]@7 ~@4 a2@4 b2@3 ~ g2@3 ~@5 c3@4 b2@3 ~@17 c4@12 ~ c4@3, ~@4 e4@32 e3@32 c4@32 e3@12 g3@48 a2@27 ~ [a2,g3]@4, ~@5 c4@36 g3@3 e4@16 a2@8 e4@36 g3@4 c4@12 a2@12 e4@32 e3@28, ~@20 e2@56 ~@8 e2@59 ~@5 e2@44, ~@32 a2@27 ~ g3@36 a2@20 e3@8 e3@9 c4@36 g3@3 e4@20]/6", // C A7
  AB: "[~@8 a2@4 ~ b2@3 g2@4 ~@4 c3@4 b2@3 ~@30 [c4,e4]@7 ~@4 a2@4 b2@3 ~ g2@3 ~@5 c3@4 b2@3 ~@17 c4@12 ~ c4@7 ~@4 a2@4 ~ b2@3 g2@4 ~@4 c3@4 b2@3 ~@30 [c4,e4]@7 ~@4 a2@4 b2@3 ~ g2@3 ~@6 c3@4 ~ b2@2, ~ e4@9 g3 c4@3 a2@3 e4@8 e3@8 c4@8 e3@3 g3@12, ~@4 c4@32 e3@12 g3@48 a2@27 ~ g3@36 a2@20 e3@4 a2@12 e4@28, ~@20 e2@59 ~@5 e2@56 ~@8 e2@59 ~@5 e2@12, ~@32 a2@20 e3@8 e3@9 c4@36 g3@3 e4@16 a2@8 e4@36 g3@4 c4@16 e3@9 c4@27]/7", // C
  AC: "[~@5 [c4,e4]@68 ~@23, ~ a2@18 ~@5, ~ a3@16 ~@7, ~@5 e3@75 ~@16]/3", // C
})).s("gm_acoustic_guitar_steel").gain(0.36)

// chords · acoustic guitar steel · "Clean Gtr" · soft notes
const acoustic_guitar_steel_2 = note(`<
  ~@6 A B C D E F G H I J K@2 ~@3 L ~ M@2 N@2 O P@3 ~@2 L ~@6 Q R S T@2 U V W X Y Z AA ~@3 AB ~@2 AC@3 AD AE AF@2 ~@2 AB
  ~ AG ~ AH@2 ~@2 AB ~@3 AB ~@3 AB ~@6
>`.pickRestart({
  A: "~@3 a2@2 ~@27", B: "~@12 f#3@5 ~@8 e4@2 ~@5, ~@19 f#3@13", C: "a2@2 a#2 ~@7 e3 ~@21",
  D: "~@16 e4@5 ~ e4@2 ~@5 a2@2 ~", E: "~@8 e3 ~@23", F: "~@14 e4@5 e4@2 ~@6 a2@2 ~@3", G: "~@5 e3 ~@26",
  H: "~@11 e4@5 e4@2 ~ a2@12 ~, ~@19 e3@8 ~@5", I: "~@3 a2 ~@4 d4@4 ~@20", J: "~@8 e4@7 ~@4 a2@12 ~, ~@19 e3@8 ~@5",
  K: "[~@12 [b3,f#4,a#4] [a3,a#3,c#4,d4,d#4,e4,f4,g#4,a4] [g#3,c4,d#4,g4] ~@4 a2@32 ~@13]/2", L: "~@7 g3@8 ~@17",
  M: "[~@24 g3@31 ~@9]/2", N: "[~@7 g3@16 ~@4 a2@4 ~@20 e4 ~@3 c4@7 ~@2, ~@24 g3@27 ~@13]/2",
  O: "~@14 e3@2 ~@7 a3@6 ~@3, ~@7 c4@10 ~@15",
  P: "[~@7 a3@12 ~@24 a3@4 c4@2 c#4 ~@2 d4@27 ~@17, ~@23 c4@7 ~@9 c4@7 ~@4 d4@2 ~@44, ~@27 a3@15 ~@9 [d3,a3]@31 ~@14]/3", // D5
  Q: "~@8 a2 ~@7", R: "~@25 f#3@5 ~@2", S: "~@6 e4@2 ~@5 a2@2 a#2 ~@8 e3 ~@7, f#3@15 ~@17",
  T: "[~@29 e4@5 ~ e4@2 ~@6 a2@2 ~@8 e3 ~@10]/2", U: "~@27 e4@5", V: "e4@2 ~@6 a2@2 ~@8 e3 ~@13", W: "~@24 e4@5 ~ e4@2",
  X: "a2@12 ~@4 a2 ~@4 d4@4 ~@7, e3 ~@3", Y: "~@21 e4@7 ~@4",
  Z: "a2@12 ~@13 [b3,f#4,a#4] [a3,a#3,c#4,d4,d#4,e4,f4,g#4,a4] [g#3,c4,d#4,g4] ~@4, e3 ~@3", AA: "a2", AB: "~@5 g3@2 ~",
  AC: "[~@5 g3@31 ~@16 g3@16 ~@5 a2@4 ~@19, ~@23 g3@9]/3", AD: "e4 ~@3 c4@7 ~@9 c4@8 e3@2 ~@2", AE: "~@2 a3@3 ~@5 a3@6",
  AF: "[~@24 a3@4 c4@2 c#4 ~@2 d4@27 ~@4, ~@4 c4@7 ~@9 c4@7 ~@4 d4@2 ~@31, ~@8 a3@15 ~@9 [d3,a3]@31 ~]/2", // D5
  AG: "e4 ~@3 c4@7 ~@21", AH: "[~@8 a3@15 ~@7 c#4 d4@2 ~@31]/2",
})).s("gm_acoustic_guitar_steel").gain(0.15)

// other · distortion guitar · "Lead Gtr"
const distortion_guitar = note("<A@4 B@2 ~@28 C@2 D@5 ~@31 E@5 F@6 G@2 H@2 I@3>".pickRestart({
  A: "[~@6 c5@12 b4@11 a4@15 g4@8 a4@7 b4@8 c5@12 b4@11 a4@15 g4@8 a4@8 b4@7]/4",
  B: "[[a4,c5]@12 [g4,b4]@12 [f4,a4]@35 ~@5]/2", C: "[~@19 c5@12 b4@11 a4@15 g4@7]/2",
  D: "[~ a4@7 b4@8 c5@12 b4@12 a4@14 g4@8 a4@8 b4@7 [a4,c5]@12 [g4,b4]@12 [f4,a4]@35 ~@24]/5", // Am G F
  E: "[~@4 c#7@36 ~@46 e4@2 d4@58 ~@10 b3@3 ~, ~@11 a4@11 ~@18, ~@85 g4@2 ~@73]/5",
  F: "[c4@2 ~@2 d4@40 ~@4 c4@3 ~ d4@2 ~@2 d4@7 ~ a3@47 ~@5 a4@4 ~@27 d5 ~@3 c5@7 ~ d5@2 c5@19 ~ c5@2 b4@9, ~@63 c4@3 ~@54 e6@34 ~@38, ~@149 e5@2 ~@41, ~@75 d5@2 ~@13 b4 ~@5]/6",
  G: "[a4@3 g4@41 ~@9 a3@2 ~ c4@4 d4@2 ~@2, ~@52 g3@3 ~@9]/2", H: "[~ c4@55 ~@8, d4@3 ~@61]/2", I: "[~@4 d4@71 ~@21]/3",
})).s("gm_distortion_guitar").gain(0.51)

// chords · overdriven guitar · "2nd Gtr"
const overdriven_guitar = note("<A@4 B@2 ~@28 C@5 D@2 ~@49>".pickRestart({
  A: "[~@6 [a2,e3,g3,c4,e4]@5 ~@7 [g2,g3,c4,e4]@5 ~@6 [a3,b3]@10 ~@5 [g2,b2,d3,g3]@7 [e2,a2,a3]@8 [b2,g3,b3]@8 [a2,e3,g3,c4,e4]@5 ~@8 [g3,c4,e4]@5 ~@5 [a3,b3]@10 ~@5 [g2,b2,d3,g3]@7 [e2,a2,a3]@7 g#3 [b2,g3,b3]@8, ~@6 f#4 ~@11 b2 ~@10 [f2,f3,e4]@29 ~@21 g2@5 ~@6 [f2,f3,e4]@29 ~@9, ~@29 a2@22 ~@16 f#4 ~@12 b2 ~@9 a2@22 ~@16]/4", // Am7 C Asus2 G A5 Em Am7 C …
  B: "[[a2,e3,g3,c4,e4]@5 ~@8 [g2,g3,c4,e4]@5 ~@5 [f2,f3,a3,b3,e4]@33 ~@8, f#4 ~@12 b2 ~@9 a2@30 ~@11]/2", // Am7 C Fmaj7
  C: "[~@19 [a2,e3,g3,c4,e4]@5 ~@8 [g3,c4]@5 ~@5 [a3,b3]@10 ~@5 [g2,b2,d3,g3]@7 [e2,a2,a3]@8 [b2,g3,b3]@8 [a2,e3,g3,c4,e4]@5 ~@8 [g2,g3,c4,e4]@5 ~@5 [a3,b3]@10 ~@6 d3@7 [e2,a2,a3]@6 g#3 [b2,g3,b3]@8 f#4 [a2,e3,g3,c4,e4]@5 ~@7 [g2,g3,c4,e4]@5 ~, ~@19 f#4 ~@11 [g2,e4]@5 ~@6 [f2,f3,e4]@29 ~@22 b2 ~@9 [f2,f3,e4]@29 ~@28, ~@32 b2 ~@9 a2@22 ~@16 f#4 ~@22 a2@23 ~@28 b2 ~@5, ~@118 [g2,b2,g3]@7 ~@35]/5", // Am7 C5 Asus2 G A5 Em Am7 C …
  D: "[~@5 [f2,f3,a3,b3,e4]@33 ~@26, ~@5 a2@30 ~@29]/2", // Fmaj7
})).s("gm_overdriven_guitar").gain(0.31)

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

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@64 [~@17 x!2 ~ x ~ x!2 ~@8] ~@25>").gain(0.15)

// drums · low tom
const low_tom = s("lt").struct("<~ A ~@70 B C ~@3 C ~@3 C ~@8>".pickRestart({
  A: "~@19 x ~@7 x ~@4", B: "~@21 x ~ x ~@8", C: "x!2 ~@30",
})).gain(0.36)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~@48 [~ x ~ x] ~@41>").gain(0.41)

// drums · mid tom
const mid_tom = s("mt").struct("<~ A ~ B ~ C ~@9 D ~@20 E F G H I ~@8 J ~@22 K ~@17>".pickRestart({
  A: "~@3 x ~@4", B: "x!2 ~@3 x ~@7 x ~@7 x ~@6 x ~@3", C: "~@14 x ~ x ~@2 x ~@2 x ~ x ~@2 x ~@4",
  D: "~@3 x ~@5 x ~ x ~@20", E: "~ x ~@3 x ~@2 x ~@23", F: "~@13 x ~ x ~@3 x ~@6 x ~@5", G: "~ x ~@3 x ~@10",
  H: "~@27 x ~@2 x ~", I: "x ~@2 x ~@2 x ~ x ~@23", J: "~@3 x", K: "~@9 x!2 ~@5",
})).gain(0.41)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@13
  [~@27 x ~@4]
  [~@11 x ~@15 x ~@4]
  [~@27 x ~@4]
  [~@4 x ~@3 x ~@4 x ~@18]
  ~@33
  [~@8 x ~@8 x ~@3 x ~@4 x ~@5]
  ~@39
>`).gain(0.46)

// drums · high tom
const high_tom = s("ht").struct("<~@4 A B ~@9 C ~@19 D E ~@2 F ~@32 G ~@17>".pickRestart({
  A: "~@31 x", B: "x ~ x ~@2 x ~ x ~ x ~@2 x ~@19", C: "~ x ~ x ~@12", D: "~@17 x!2 ~@4 x ~@2 x ~@5", E: "x",
  F: "~@12 x!2 ~ x ~@2 x ~ x ~ x ~@2 x ~@6", G: "~ x",
})).gain(0.41)

// drums · crash
const crash = s("cr").struct(`<
  A ~ B ~ C ~ D ~@6 E@4 ~@12 E ~@4 E F G H I J ~@8 K@4 ~@12 K@2 ~@3 K ~@2 K ~@4 L ~ L ~ L ~ L ~ M N O ~@2
>`.pickRestart({
  A: "~@6 x ~@12 x ~@9 x ~@2", B: "~@3 x ~@12 x ~@9 x ~@5", C: "x ~@12 x ~@9 x ~@8", D: "~@5 x ~@26", E: "~@19 x ~@12",
  F: "x ~@4 x ~@10", G: "~@16 x ~@12 x ~@2", H: "~@7 x ~@24", I: "~@13 x ~@12 x ~@5", J: "~ x ~@6", K: "x", L: "~@7 x",
  M: "x ~@6 x", N: "~@15 x", O: "~@3 x ~@12",
})).gain(0.41)

// drums · ride
const ride = s("rd").struct("<~@18 A B@10 C A B@3 C ~@18 D@11 ~ D@4 E D@2 F D@13 G H I ~>".pickRestart({
  A: "~@19 x ~@3 x ~@3 x ~@3 x", B: "~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x",
  C: "~@3 x ~@3 x ~@3 x ~@3 x ~@16", D: "x!8", E: "~ x!7", F: "x", G: "x!3 ~@5",
  H: "~@11 x ~@2 x ~@2 x!3 ~ x!2 ~ x!3 ~ x!2 ~ x", I: "x ~ x!2 ~@3 x ~ x ~@3 x ~@2 x ~@4 x ~@4 x ~@4 x",
})).gain(0.41)

// … 4 more lines

More by Rush