Strudelify
Tonight, Tonight cover art

1995 · Mellon Collie And The Infinite Sadness

Tonight, Tonight

The Smashing Pumpkins

KeyF♯ majorTempo142 bpm
0:00/0:00
// Tonight, Tonight — The Smashing Pumpkins
// 142.2 bpm, 4/4, key F# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 158 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(142.2/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, A@4 for four bars: edit a riff to change every repeat.

// chords · electric guitar clean · "Guitar - James"
const electric_guitar_clean = note(`<
  ~ A B C D@4 E@3 F G@4 H@2 I@6 J@3 K@6 L@7 M@4 N@7 O@7 P@2 Q@7 R@5 S T U V@3 W@4 X Y@3 Z AA@3 AB AC@3 AD AE@7 AF@7 P@2
  AG@7 AH@3 AI@3 AJ@3 AK AL@7 AM AN@8 AO@2 AP@3 AQ@7 ~@2
>`.pickRestart({
  A: "c#4@2 ~@2 f#3 [f#2,c#3,a#3]@3, [f#2,c#3]@5 ~@3, f#3@4 ~ f#3 ~@2, a#3@3 ~@5, ~@2 c#4@3 c#4@2 ~", // F# F#5
  B: "~@2 f#3 [f#3,a#3,c#4]@3 [f#3,a#3,c#4]@2, [f#2,c#3,a#3,c#4]@3 [f#2,c#3]@5", // F# F#5
  C: "c#4@2 ~@2 f#3 [f#2,c#3,f#3,a#3,c#4]@3, [f#2,c#3]@5 ~@3, f#3 ~, a#3@3 a#3@2 ~@3, ~@2 c#4@3 ~@3", // F# F#5
  D: "[[f#2,c#3,f#3,a#3,c#4]@3 [f#2,c#3,f#3,a#3,c#4]@3 [f#3,a#3]@2 a#3@2 ~@2 a#2 [d#2,a#2,d#3,f#3,a#3]@3 a#3@3 a#3@3 a#3@2 ~@7 d#3, ~@3 [f#2,c#3,c#4]@8 ~ a#3@2 ~@2, ~@8 [d#3,f#3]@5 ~@3 f#3@5 ~ d#3@5 d#3@4 ~, ~@8 d#2@3 d#2@2 ~@3 [d#2,a#2,d#3]@6 [d#2,a#2]@6 [d#2,a#2,a#3]@4, ~@10 a#3@3 ~@9 f#3@4 f#3@4 ~@2]/4", // F# D#m F#5 D#m D#5
  E: "[[d#2,a#2,d#3,f#3,a#3]@3 [d#2,a#2,d#3,f#3,a#3]@3 [f#3,a#3]@2 c#4@2 ~@2 f#3 [f#2,c#3,f#3,a#3,c#4]@3 [f#2,c#3,f#3,a#3,c#4]@3 [f#2,c#3,f#3,a#3,c#4]@3 [f#2,c#3,f#3,a#3,c#4]@2, ~@3 [d#2,a#2,d#3]@8 ~, ~@8 [f#2,c#3]@5 ~@11, ~@8 f#3@3 a#3@2 ~@11, ~@8 a#3@2 c#4@3 ~@11]/3", // D#m F# D#5 F#5
  F: "c#4@2 ~@2 f#3 [f#2,c#3,a#3,c#4]@3, [f#2,c#3]@5 ~@3, f#3@4 ~ f#3@2 ~, a#3@3 a#3@2 ~@3, ~@2 c#4@3 ~@3", // F# F#5
  G: "[[f#2,c#3,f#3,a#3,c#4]@3 c#4@3 ~ d#2 ~@2 a#3@2 ~@3 a#3 a#3@2 a#3 [d#2,a#2,a#3]@3 d#3@2 ~@2 [f#3,a#3]@2 a#3@2 a#3@2, ~@3 [f#2,c#3]@16 ~@5 d#3@4 ~@4, ~@3 [f#3,a#3]@5 d#2@2 d#3@4 a#2@2 [d#3,f#3]@6 [f#3,a#3]@4 ~@2 f#3@3 ~, ~@3 c#4@8 ~@5, ~@8 a#2@2 f#3@2 a#3 d#2@3 [d#2,a#2]@3 ~@3 [d#2,a#2]@6 [d#2,a#2,d#3]@4]/4", // F# D#5 F# F#5 F# D#m F# D#5
  H: "[[d#2,a#2,d#3,f#3,a#3]@3 [d#2,a#2,d#3,f#3,a#3]@3 f#3@2 [b2,f#3,b3,d#4,f#4]@4 [f#2,c#3,f#3,a#3,c#4]@4, ~@3 [d#2,a#2,d#3,a#3]@3 ~@2]/2", // D#m B F# D#5
  I: "[[c#2,g#2,c#4]@3 ~@5 f#3@4 [c#3,c#4]@4 [c#2,g#2,c#4]@3 ~@5 f#3@4 [c#3,c#4]@4 [c#2,g#2,c#3,g#3,c#4]@6 [c#3,c#4]@2 [f#2,c#3,a#3,c#4]@6 [f#2,c#3,c#4]@2, c#3@5 c#3@7 [f#2,a#3]@12 [b2,b3,d#4,f#4]@16 f#3@8, g#3@4 ~@4 [b2,b3,d#4,f#4]@11 c#4@9 ~@18 a#3 ~, ~@3 [c#2,g#2]@13 [c#3,g#3]@3 [c#2,g#2]@13 ~@6 [c#2,g#2,g#3]@10, ~@3 c#4@9 f#3@9 c#3@7 [f#2,f#3,a#3]@12 ~@8]/6", // C#5 C# C#5 C# C#5 C# F# F#5 …
  J: "[~@20 a#4@3 a#4, c#3@5 f#3@12 a#4@2 c#4@3 ~@2, f#3@3 f#2@3 f#2@16 ~@2, f#2@3 a#3@8 c#4 a#4@2 c#4 a#4 c#3@8, ~ c#4@2 c#3 b2@8]/3",
  K: "[~ a#4@3 ~@42 c#4@2, b2 b2 b2, ~@4 a#4@3 a#4@2 a#4@3 a#4@3 ~@2 a#4@3 a#4@3 a#4@2 ~@3 a#4@3 a#4@2 ~@3 a#4@3 a#4@2 ~@3 a#4@3 ~, ~@6 c#4@5 c#4@3 c#4@5 c#4@3 c#4@5 c#4@3 c#4@5 c#4@3 c#4@5 c#4@3 ~@2, ~ c#3@2 c#3@2 c#3]/6",
  L: "[~@27 c#4, b2@2 d#3@2 b2@2 b2, ~ a#4@3 a#4@3 a#4@2 a#4@2 c#4@3 c#4@5 c#4@3 c#4@5 c#4@3 c#4@5 c#4@3 c#4@5 c#4@3 c#4@5 c#4@3 ~@2, ~@3 c#4@3 c#4@4 f#4@2 a#4@3 a#4@2 ~@3 a#4@3 a#4@2 ~@3 a#4@3 ~@5 a#4@3 a#4@2 ~@3 a#4@3 a#4@2 ~@3 a#4@3 ~, ~ c#3@2 f#3@2 c#3@2]/7",
  M: "[~ a#4@3 ~@19 a#4@2 ~@6 a#4, c#3 c#3, ~@4 a#4@3 a#4@2 a#4@2 c#4@3 c#4@5 c#4@3 c#4@5 c#4@3 c#4@2, ~@6 c#4@4 f#4@2 a#4@3 ~@5 a#4@3 ~@5 a#4@3 ~, ~ b2@2 ~]/4",
  N: "[~@17 a#4@3 ~@8 a#4@3 ~@21 a#4@3 ~, f#3@2 c#3@2 c#3@2 c#3, ~@3 c#4@3 c#4@5 c#4@3 c#4@5 ~@3 c#4@5 ~@8 c#4@3 c#4@5 c#4@3 c#4@5 c#4@3 ~@2, ~@4 a#4@3 a#4@2 ~@3 a#4@3 a#4@2 ~@3 a#4@3 a#4@2 ~@6 a#4@2 ~@3 a#4@3 a#4@2 ~@3 a#4@3 a#4@2 ~@7, ~ b2@2 b2@2 b2@2]/7",
  O: "[[c#3,c#4]@12 ~@12 d#3@6 ~@15 a#3@2 ~@19 a#3@3 a#3@3 ~@18 a#3@5 ~ [c#3,c#4]@12 ~@12 a#3@6 ~@36 [g#2,a#3]@6, f#2@24 [f#3,a#3]@6 d#3@3 f#3@3 a#3@3 f#3@33 b2@36 g#3@35 g#2@7 d#3@9 d#3@6 ~@3, [f#3,a#3]@12 g#2@12 [d#2,a#2]@42 g#2@29 f#2@24 [d#2,a#2]@48 ~, ~@12 [c#2,c#3,c#4]@36 a#3@3 g#3@3 d#3@3 a#3@3 g#3@35 a#3 f#3@12 g#2@12 [d#3,f#3]@6 a#3@3 f#3@3 d#3@2 a#3@6 d#3@4 a#3@9 [g#2,a#3]@9 ~@6, ~@12 g#3@30 d#3@5 g#2@16 d#3@9 a#3@3 f#3@3 d#3@3 a#3@3 f#3@3 d#3@21 [c#2,c#3,c#4]@48 g#3@9 ~@3]/7", // C# G#sus2 F# D#5 C# D#m G#sus2 C#
  P: "[~@2 [b2,f#3,b3,d#4,f#4]!2, b2 ~, a#3 a#3@3, ~@7 f#3@8 f#3@9 ~@24, ~@9 d#3@8 d#3@31]/2", // B
  Q: "[f#3@12 [c#3,c#4]@12 c#4@6 ~@6 c#3@3 ~@9 f#3@12 [c#3,c#4]@12 c#4@6 ~@6 c#3@3 ~@9 f#3@12 [c#3,c#4]@12 c#4@11 ~@13 [f#3,a#3]@12 ~@8 a#3@4, [b2,b3,d#4,f#4]@39 [c#3,c#4]@21 f#3@27 [c#3,c#4]@21 [f#3,a#3]@23 c#4@37, ~@12 [f#2,a#3]@48 [f#2,a#3]@48 f#2@36 d#3@12 [f#3,a#3]@5 d#3@7, ~ f#3@3 [b2,b3,d#4,f#4]@4 [b2,b3,d#4,f#4]@4 [d#2,a#2]@2, ~@8 [c#2,g#2,c#3,g#3]@2 c#4@3 [c#2,g#2,g#3]@11 [c#2,g#2,c#3,g#3]@2 c#4@3 [c#2,g#2,g#3]@11 [c#2,g#2,c#3,g#3]@16]/7", // C# F# B C# F# B D#5 C#5
  R: "[~@6 d#3@3 [d#2,a#2,d#3,f#3,a#3]@9 f#3@6 f#3@11 ~ c#4@11 c#4@9 ~@16 f#3@12 [c#3,c#4]@12 c#4@9 ~@9 c#3@6, [d#2,a#2,f#3,a#3]@9 ~@9 [d#2,a#2,d#3]@18 f#3@11 [c#2,g#2]@48 ~ [c#2,g#2]@24, ~@18 a#3@17 f#2@37 [b2,b3,d#4,f#4]@48, ~@24 [b2,b3,d#4,f#4]@23 [c#3,g#3]@9 c#4@28 ~@12 [c#3,g#3]@9 c#4@15, ~@35 c#3 a#3@48 [f#2,f#3,a#3]@36]/5", // D#m C# D#m D#5 C#5 B C#5 F#
  S: "f#3@2 ~ a#3 ~@2 c#4@2, [f#2,c#3], [a#3,c#4]@3 ~ a#3@4, ~@2 f#3@3 f#3@3, ~@2 c#4 ~", // F#5 A#m
  T: "f#3@2 f#3!2 ~ f#3 [f#3,a#3,c#4]@2, [f#2,c#3,a#3,c#4]@3 [f#2,c#3]@5, ~@3 [a#3,c#4]@3 ~@2", // F# F#5 A#m
  U: "f#3@2 ~@5 c#4, [f#2,c#3], c#4@4 c#4@3 ~, a#3@3 a#3@2 a#3@3, ~ f#3@2 f#3", // F#5
  V: "[f#3@2 f#3 [f#3,a#3,c#4]@3 [f#3,a#3]@2 d#3@2 ~@5 d#3 [d#2,a#2,d#3,f#3]@3 a#3@3 ~ f#3, [f#2,c#3,a#3,c#4]@3 [f#2,c#3]@16 ~@5, ~@3 c#4@8 a#3, ~@8 [d#2,a#2,a#3]@3 f#3 [d#2,a#2,a#3]@4 ~@3 [d#2,a#2,d#3]@5, ~@10 d#3@4 f#3@2 a#3@2 ~ f#3@4 ~]/3", // F# D#m F# F#5 D#5
  W: "[d#3@2 ~@8 f#3 [d#2,a#2,d#3,f#3,a#3]@3 [f#3,a#3]@2 c#4@2 ~@2 f#3 [f#2,c#3,f#3,a#3,c#4]@3 [f#2,c#3,f#3,a#3,c#4]@3 c#4@3 ~ a#3, [d#2,a#2]@8 [d#2,a#2,a#3]@3 ~@5 [f#2,c#3]@5 ~@6 [f#2,c#3,f#3]@5, a#3@4 a#3@3 ~@9 a#3@2 c#4@3 ~@9 c#4@2, f#3@3 f#3@2 ~@11 f#3@3 a#3@2 ~@6 a#3@4 ~, ~@2 d#3@4 d#3@5 ~@3 [a#2,d#3]@16 ~@2]/4", // D#m F# D#5 F#5 D#5
  X: "f#3@3 ~@4 c#4, [f#2,c#3], a#3@5 a#3@3, c#4@4 c#4@3 ~, ~@3 f#3@3 f#3@2", // F#5
  Y: "[f#3@2 f#3 [f#2,c#3,f#3,a#3,c#4]@3 [f#3,a#3]@2 [d#3,f#3,a#3]@3 d#3@2 ~@2 f#3 d#3@2 d#3 [d#3,f#3,a#3]@3 [d#3,f#3,a#3]@2, [f#2,c#3,a#3,c#4]@3 ~@3 [f#2,c#3,c#4]@16 ~@2, ~@8 [d#2,a#2]@8 [d#2,a#2,f#3,a#3]@3 [d#2,a#2]@5, ~@11 f#3@3 a#3@2 ~@8, ~@11 a#3@2 d#3@3 ~@8]/3", // F# D#m F# F#5 D#5 D#m D#5
  Z: "[d#2,a#2,d#3,f#3]@3 [d#3,f#3,a#3]@3 ~ d#2, a#3 ~@2 [d#3,f#3,a#3]", // D#m
  AA: "[[d#2,a#2,d#3,f#3,a#3]@3 [d#3,f#3,a#3]@3 f#3 c#4 [f#3,a#3,c#4]@3 ~@4 [f#2,c#4] [f#2,c#3,f#3,a#3,c#4]@3 c#4@3 ~ a#3, ~@3 [d#2,a#2]@16 [f#2,c#3,f#3]@5, ~@3 d#3@8 c#4, ~@6 a#3@2 c#3@3 c#4@2 f#2 c#3@2 ~@8, ~@8 f#2@3 [f#3,a#3]@5 ~@3 a#3@4 ~]/3", // D#m F# F#5 F# D#5 F#5 F#
  AB: "f#3@2 f#3 c#4@2 c#4!3, [f#2,c#3,a#3,c#4]@3 [f#2,c#3]@5, ~@3 [f#3,a#3]@3 [f#3,a#3]@2", // F# F#5 F#
  AC: "[c#4@2 c#4 [f#2,c#3,f#3,a#3,c#4]@3 f#3@2 [d#2,a#2,d#3,f#3,a#3]@3 a#3@2 ~ f#3@2 [d#2,a#2,d#3,f#3,a#3]@3 a#3@3 a#3@2, [f#2,c#3,f#3,a#3]@3 ~@3 [f#2,c#3,c#4]@16 ~@2, ~@6 a#3 ~@4 [d#2,a#2,d#3]@5 ~@3 [d#2,a#2,d#3]@5, ~@11 f#3@3 ~@5 f#3@4 ~, ~@13 a#3@3 ~@8]/3", // F# D#m F# F#5 D#5
  AD: "[d#2,a#2,d#3,f#3,a#3]@3 a#3@3 a#3@2, ~@3 [d#2,a#2,d#3]@5, ~@3 f#3@4 ~", // D#m D#5
  AE: "[[d#2,a#2,d#3,f#3,a#3]@3 [d#2,a#2,d#3,f#3,a#3]!2 [d#2,a#2,a#3] ~@11 a#4@3 ~@8 a#4@3 ~@21 a#4@3 ~, ~@6 [d#2,a#2,d#3,f#3,a#3]@16 c#4@5 ~@8 c#4@3 c#4@5 c#4@3 c#4@5 c#4@3 ~@2, ~ b2@2 b2@2 b2@2, ~@11 c#4@3 c#4@5 ~ a#4@3 a#4@2 ~@6 a#4@2 ~@3 a#4@3 a#4@2 ~@3 a#4@3 a#4@2 ~@7, ~@12 a#4@3 a#4 c#3@16 c#3@16 c#3@8]/7", // D#m D#5 D#m
  AF: "[[c#3,c#4]@4 ~@4 d#3@2 ~@5 a#3 ~@6 a#3!2 ~@6 a#3@2 [c#3,c#4]@4 ~@4 a#3@2 ~@12 [g#2,a#3]@2, f#2@24 [f#3,a#3]@6 d#3@3 f#3@3 a#3@3 f#3@33 b2@36 g#3@35 g#2@7 d#3@9 d#3@6 ~@3, [f#3,a#3]@12 g#2@12 [d#2,a#2]@42 g#2@30 f#2@24 [d#3,f#3]@6 a#3@3 f#3@3 d#3@3 a#3@5 d#3@4 a#3@9 [g#2,a#3]@9 ~@6, ~@4 [c#2,c#3,c#4]@12 a#3 g#3 d#3 a#3 g#3@12 [f#3,a#3]@4 g#2@4 [d#2,a#2]@16, ~@12 g#3@30 d#3@6 g#2@15 d#3@9 a#3@4 f#3@3 d#3@2 a#3@3 f#3@3 d#3@21 [c#2,c#3,c#4]@48 g#3@9 ~@3]/7", // C# G#sus2 F# D#5 D#m G#sus2 C# F# …
  AG: "[f#3@12 [c#3,c#4]@12 c#4@6 ~@6 c#3@3 ~@21 [c#3,c#4]@12 c#4@6 ~@6 c#3@3 ~@9 f#3@12 [c#3,c#4]@12 c#4@11 ~@13 [d#3,f#3,a#3] [f#3,a#3]@11 ~@9 a#3@3, [b2,b3,d#4,f#4]@39 [c#3,c#4]@9 f#3 f#4@23 [c#2,g#2,c#3,g#3]@6 c#4@9 [c#2,g#2,g#3]@33 [c#2,g#2,c#3,g#3]@48, ~@12 [f#2,a#3]@48 [f#2,a#3]@48 f#2@37 d#3@11 [f#3,a#3]@5 d#3@7, ~@12 f#3@36 [b2,b3,d#4]@39 [c#3,c#4]@21 [f#3,a#3]@23 c#4@37, ~@8 [c#2,g#2,c#3,g#3]@2 c#4@3 [c#2,g#2,g#3]@7 f#3@12 [b2,b3,d#4,f#4]@16 [d#2,a#2]@8]/7", // C# D#m F# B C# C#5 F# B …
  AH: "[~@6 d#3@3 [d#2,a#2,d#3,f#3,a#3]@9 f#3@6 f#3@12 [c#3,c#4]@11 ~ [c#3,g#3,c#4]@11 [c#2,g#2,c#3,g#3,c#4]@12 [f#2,c#3,f#3,a#3], [d#2,a#2,f#3,a#3]@3 ~@3 [d#2,a#2,d#3]@16 ~@2, ~@18 a#3@17 ~ [f#2,f#3,a#3]@35 ~, ~ [b2,b3,d#4,f#4]@2, ~@47 [c#2,g#2]@12 ~@13]/3", // D#m C# C#5 F# D#m D#5 F# B …
  AI: "[[f#2,c#3,f#3,a#3,c#4]@2 c#3@2 [c#3,g#3,c#4]@2 ~@2 [d#3,f#3,a#3]@2 [d#3,f#3,a#3] a#3 [d#3,f#3,a#3]@2 [f#3,a#3]@2 [f#3,a#3,c#4]@2 c#4!2 [f#3,a#3,c#4]@2 [f#3,a#3,c#4]@2, ~@2 [c#2,g#2]@6 [f#2,c#3] a#3 [f#2,c#3]@2, ~@3 g#3@8 ~, ~@3 [c#3,c#4]@4 d#3@5, ~@2 [d#2,a#2] [d#2,a#2]@3]/3", // F# C#5 D#m F# C#5 F#5 C# D#5
  AJ: "[[b3,d#4,f#4]@5 [d#4,f#4]@3 f#4@3 [b3,d#4,f#4]@6 ~@6 [f#3,a#3,c#4]@6 c#4@6 [c#3,g#3,c#4]@6 ~@6 [d#3,f#3,a#3]@6 ~ [d#3,a#3]@3 a#3@3 [d#3,f#3,a#3]@6 [d#3,f#3,a#3]@6, [b2,f#3]@11 b2@30 [c#3,c#4]@31, ~@5 b3@5 ~ f#3@12 f#2@48 ~, ~@17 [b3,d#4,f#4]@30 [d#2,a#2]@7 f#3@6 [d#2,a#2]@12, ~@23 c#3@6 [f#3,a#3]@6 [c#2,g#2]@37]/3", // B D#m B F# C#5 D#m D#5 D#m …
  AK: "[f#3,a#3,c#4] a#3 [f#3,a#3,c#4]!2, [f#2,c#3]!2, ~@2 c#4 ~@5", // F# F#5
  AL: "[[b3,d#4,f#4]@6 [b3,d#4,f#4]@3 [d#4,f#4]@3 [b3,d#4,f#4]@6 ~@6 [f#3,a#3,c#4]@5 [a#3,c#4]@3 ~@3 [c#3,c#4]@6 ~@7 [d#3,f#3,a#3]@6 [f#3,a#3]@3 a#3@3 [d#3,f#3,a#3]@6 [f#3,a#3]@6 [f#3,a#3,c#4]@6 [a#3,c#4]@2 [a#3,c#4]@3 ~ [f#3,a#3,c#4]@6 ~@6 [b3,d#4,f#4]@6 [b3,d#4,f#4]@3 [d#4,f#4]@3 [b3,d#4,f#4]@6 ~@6 [f#3,a#3,c#4]@6 c#4@5 [c#3,g#3,c#4]@6 ~@6 [d#3,f#3,a#3]@6 [d#3,f#3,a#3]@3 [f#3,a#3]@3 ~ [d#3,f#3,a#3]@6 [d#3,f#3,a#3]@6, [b2,f#3]@12 b2@29 g#3@48 ~ [a#3,c#4]@24 [b3,d#4,f#4]@29 [d#2,a#2]@12 ~ [d#2,a#2]@12, ~@12 f#3@12 f#2@24 [d#2,a#2]@12 [d#2,a#2]@36 [b2,f#3]@12 b2@29 [c#3,c#4]@31, ~@18 [b3,d#4,f#4]@23 c#4 c#3@24 d#3@42 f#3@12 c#3@6 [f#3,a#3]@5 [c#2,g#2]@37, ~@24 c#3@5 f#3@6 [c#2,g#2]@37 [f#2,c#3]@12 [f#2,c#3]@36 f#2@48]/7", // B D#m B F# A#m C# D#m F# …
  AM: "[f#3,a#3,c#4]@6 [f#3,a#3,c#4]@3 [f#3,a#3,c#4]@3 [f#3,a#3,c#4]@5 [a#3,c#4]@6 [b2,f#3,b3,d#4,f#4], [f#2,c#3]!2", // F# A#m B F#5
  AN: "[~@6 [b3,d#4,f#4]@3 [d#4,f#4]@2 [b3,d#4,f#4]@7 ~@6 [f#3,a#3,c#4]@6 c#4@6 [c#3,g#3,c#4]@5 ~@7 [d#3,f#3,a#3]@6 [d#3,f#3,a#3]@3 a#3@3 [d#3,f#3,a#3]@6 [f#3,a#3]@6 [f#3,a#3,c#4]@6 [a#3,c#4]@3 c#4@3 [f#3,a#3,c#4]@6 f#3@3 ~@3 [b3,d#4,f#4]@6 [b3,d#4,f#4]@3 [d#4,f#4]@3 [b3,d#4,f#4]@6 ~@6 [f#3,a#3,c#4]@6 c#4@6 [c#3,g#3,c#4]@6 ~@6 [d#3,f#3,a#3]@6 [d#3,f#3,a#3]@5 [d#3,f#3,a#3]@6 [f#3,a#3]@6 [f#2,c#3,f#3,a#3,c#4]@25, ~@11 b2@30 g#3@48 ~ [a#3,c#4]@24 [b3,d#4,f#4]@24 [c#3,c#4]@6 [d#2,a#2]@11 [d#2,a#2]@37, ~@11 f#3@13 f#2@24 [d#2,a#2]@12 [d#2,a#2]@36 [b2,f#3]@12 b2@30 g#3@48 ~@6, ~@18 [b3,d#4,f#4]@23 [c#3,c#4]@25 d#3@42 f#3@12 c#3@6 [f#3,a#3]@6 [c#2,g#2]@48 ~@12, ~@24 c#3@6 [f#3,a#3]@6 [c#2,g#2]@36 [f#2,c#3]@12 [f#2,c#3]@36 f#2@41 d#3@31]/8", // B D#m B F# C#5 D#m F# A#m …
  AO: "[b2,f#3,b3,d#4,f#4]/2", // B
  AP: "[~@9 a#4@3 ~@8 a#4@3 a#4, b2@2 b2, ~@3 c#4@3 c#4@5 ~@3 c#4@5 ~@5, ~@4 a#4@3 a#4@2 ~@3 a#4@3 a#4@2 ~@7, ~ c#3@2]/3",
  AQ: "[~@12 f#3 ~@2 c#4 c#3 ~@3 [d#2,a#2,d#3,f#3,a#3]@8, c#3@46 a#4@3 c#3@21 a#4@26 [c#2,g#2]@48 ~@24, ~@9 c#4@9 c#4@15 ~ c#4@6 f#4@12 a#4@6 c#4@6 f#4@20 a#3@12 [g#3,c#4]@6 c#3@48 ~@18, ~@12 a#4@9 a#4@6 ~@10 a#4@6 c#4@12 f#4@6 a#4@6 c#4@5 f#2@36 g#3@48 ~@12, ~@25 b2@47 [c#3,a#3,c#4]@6 f#3@35 c#4@48 ~@7]/7", // D#m C#5 F#
})).s("gm_electric_guitar_clean").gain(0.72)

// chords · electric guitar clean · "Guitar - James" · soft notes
const electric_guitar_clean_2 = note(`<
  ~ A@2 ~@2 B C D ~@3 E ~ E ~ E ~@2 F@4 ~ G@2 H@7 I@7 J@8 K@6 ~ L ~ M@4 ~ N ~ N ~@2 E ~@2 O@2 P Q R ~ S T U V@4 ~@4 W X
  ~@3 Y ~ E@2 Z AA@8 ~ L ~ M@4 ~ N ~ N ~@2 E ~@3 AB@2 AC AD AE@3 AF AG AH AI AF AJ@3 AF ~ AK AL AF ~@5 AM@5 ~@7
>`.pickRestart({
  A: "[~@3 a#3@2 ~ f#3 f#3@3 ~@6, ~@7 c#4 ~@8]/2", B: "a#2 ~", C: "~@5 f#3 ~@2", D: "~@6 f#3!2", E: "~@7 f#3",
  F: "[~ g#3@3]/2", G: "[~@7 a#3@4 ~@5]/2",
  H: "[~@2 f#4@3 f#4@5 f#4@3 ~@8 f#4@5 f#4@3 ~@2 a#4@2 ~ f#4@3 ~@5 f#4@3 ~@5 f#4@3 f#4@3, ~ a#4@3 ~@9 f#4@5 f#4@3 ~@8 f#4@5 ~@3 f#4@5 ~@3 f#4@5 ~@6, ~@14 c#4@5 c#4@3 ~@19 a#4@3 ~@5 a#4@3 ~@4]/7",
  I: "[~@2 f#4@3 f#4@2 f#4@3 f#4@3 f#4@5 ~@8 f#4@3 ~@5 f#4@3 ~@2 a#4@2 ~ f#4@3 ~@5 f#4@3 f#4@3, ~ a#4@3 ~@3 a#4@2 ~@12 f#4@5 ~@3 f#4@5 ~@3 f#4@5 ~@3 f#4@5 ~@6, ~@25 a#4@3 ~@5 a#4@3 ~@5 a#4@3 ~@5 a#4@3 ~@4]/7",
  J: "[~@2 f#4@3 ~@2 a#4@2 ~@4 f#4@5 ~@5 a#4@2 ~ f#4@3 ~@5 f#4@3 ~@5 f#4@3 ~@5 f#4@3 f#4@5 ~@3 f#4@3, ~ a#4@3 ~ f#4@5 f#4@3 ~@8 f#4@5 ~@3 f#4@5 ~@3 f#4@5 ~@3 f#4@5 ~@8 f#4@3 ~@3, ~@11 c#4@3 ~@11 a#4@3 ~@4 d#3@16 ~@16, ~@33 a#4@3 ~@5 a#4@3 ~@5 a#4@3 ~@7 c#4@3 ~@2]/8",
  K: "[~@10 f#4@3 ~@5 f#4@3 ~@5 f#4@3 ~@2 a#4@16 ~, ~ a#4@3 ~@5 a#4@3 ~@5 a#4@3 ~@5 a#4@3 ~@20, ~@2 f#4@3 f#4@5 ~@3 f#4@5 ~@3 f#4@5 ~@3 f#4@16 ~@3, ~@3 c#4@3 c#4@5 ~@19 c#4@2 ~@16]/6",
  L: "~@7 c#4", M: "[~@27 g#3@8 ~@10 g#3@48 ~@3, ~@17 f#3@38 ~@41, ~@15 d#3@4 ~@13]/4", N: "~@3 g#3@2 ~@3",
  O: "[~@17 c#3@19 ~@12, ~@5 g#3@11]/2", P: "~@5 g#3@3", Q: "~@3 c#4 ~@4", R: "~@4 f#3 ~@3", S: "~@7 d#2",
  T: "f#3@3 ~@5", U: "~@2 a#3 ~@5", V: "[~@7 a#3 ~@6 d#2@16 ~@2, ~@5 f#3@5 ~@22]/4", W: "~@2 a#3 a#2@5, ~@3 d#2@4 ~",
  X: "~@7 [f#2,c#3,f#3]", Y: "~@7 a#3", Z: "~@5 [d#3,f#3] ~@2",
  AA: "[~@2 f#4@3 f#4@5 ~@16 f#4@3 ~@5 f#4@3 ~@5 f#4@3 ~@2 a#4@16 ~, ~ a#4@3 ~@6 f#4@3 f#4@5 f#4@3 f#4@5 ~@3 f#4@5 ~@3 f#4@5 ~@3 f#4@16 ~@3, ~@11 c#4@3 ~@3 a#4@3 ~@5 a#4@3 ~@5 a#4@3 ~@5 a#4@3 ~@20, ~@19 c#4@3 c#4@5 ~@19 c#4@2 ~@16]/8",
  AB: "[~@2 a#3@6 ~@3 [d#3,f#3] ~@4, ~@5 f#3@18 ~@25, ~@5 c#4@6 ~@37, ~ f#2@7]/2", AC: "~@2 f#3!2 ~@4",
  AD: "~@8 d#4@3 ~@13", AE: "[~@21 d#2@2 ~@10 d#3@3 ~@18 f#3@3 [f#3,c#4]@3 ~@12, ~@17 g#3@48 ~@7]/3", AF: "~@3 b3 ~@4",
  AG: "~@8 c#4@3 g#3@6 ~@4 a#2@3, ~ a#3@2", AH: "~@2 d#3 [d#3,f#3] ~@4", AI: "~@6 f#3@2 ~ f#3@3 ~@6 f#3@6",
  AJ: "[~@33 d#3@3 ~@29 f#3@3 ~ f#3@2 ~, ~@17 g#3@48 ~@3 f#4@3 ~]/3", AK: "~@3 [d#3,f#3] ~@4",
  AL: "~@2 f#3 [f#3,a#3] ~@3 [f#3,f#4]", // F#
  AM: "[~@6 f#4@9 f#4@15 ~@48 f#4@9 ~@16 f#4@9 ~@8, ~ a#4@3 ~@6 f#4@3 f#4@5 f#4@3 f#4@5 ~@3 f#4@5 ~@6, ~@33 c#4@9 ~@9 a#4@9 ~@15 a#4@9 ~@16 a#4@9 ~@11, ~@19 c#4@3 c#4@5 ~@13]/5",
})).s("gm_electric_guitar_clean").gain(0.4)

// bass · acoustic bass · "Bass - D'Arcy"
const bass = note(`<
  ~ A B C@2 D E D F A B A B D E D G@2 H I J I K L M N O N O N P@2 O N O D A N O N O N O D A N O N O N O Q R@2 S T U V@2
  W@2 X I Y I Z D AA@2 X I AB@2 B A B D E D F A B C@2 D E AC AD A B A AE D E D AF N O N O N O T U AG AH AI AJ AK AH S I
  X AL X I X D F I AM T AN AO AP T U AO AP AQ AN AO AP T AN AO AP T AN AR@2 AS AT L AU@3 O AV O N O AW AX@5
>`.pickRestart({
  A: "f#2@23 ~", B: "f#2@9 f#2@14 ~", C: "[f#2@23 f#2@10 ~ f#2@14]/2", D: "d#2", E: "d#2@3 d#2@5",
  F: "d#2@9 d#2@8 ~ d#2@6", G: "[d#2@18 d#2@5 b2@13 f#2@12]/2", H: "c#2@18 ~ c#2@5", I: "b2 f#2", J: "c#2@9 ~ c#2@14",
  K: "c#2@9 ~ c#2@8 c#2@4 ~@2", L: "f#2", M: "~ f#2@9 f#2@8 f#2@3 ~@3", N: "b1", O: "c#2", P: "[c#2@23 b1@24 ~]/2",
  Q: "~ f#2@5 ~ f#2@6 c#2@5 c#2@5 ~", R: "[d#2@6 d#2@11 ~ d#2@5 g#1@6 g#1@6 ~ g#1@6 g#1@5 ~]/2",
  S: "b1@5 b1@6 ~ b1@6 b1@6", T: "f#2@6 f#2@6 c#2@6 c#2@5 ~", U: "d#2@6 d#2@5 ~ d#2@6 d#2@6",
  V: "[g#1@12 g#1@6 g#1@5 b1@6 b1@11 ~ b1@6 ~]/2", W: "[b1@5 ~ b1@6 b1@6 ~@6 b2@12 f#2@12, ~@18 b1@13 ~@17]/2",
  X: "c#2@8 ~ c#2@9 c#2@6", Y: "c#2@9 ~ c#2@8 ~ c#2@5", Z: "c#2@9 c#2@14 ~",
  AA: "[d#2@4 ~ d#2@4 ~@2 d#2@4 ~@2 d#2@6 b2@13 f#2@12]/2", AB: "[c#2@9 c#2@14 f#2@24 ~]/2", AC: "~ d#2@23",
  AD: "d#2@18 d#2@5 ~", AE: "f#2@3 f#2", AF: "d#2@9 ~ d#2@14", AG: "g#1@5 ~ g#1@6 g#1@6 g#1@6",
  AH: "b1@5 ~ b1@6 b1@6 b1@6", AI: "f#2@5 f#2@6 c#2@7 c#2@6", AJ: "d#2 d#2@2 d#2", AK: "g#1@6 g#1@5 ~ g#1@11 ~",
  AL: "b2@13 f#2@11", AM: "~ c#2@9 c#2@14", AN: "d#2@6 d#2@6 d#2@11 ~", AO: "f#2@6 f#2@6 f#2@6 f#2@5 ~",
  AP: "b2@5 ~ b2@6 b2@5 ~ b2@6", AQ: "f#2@6 ~ f#2@5 c#2@6 ~ c#2@5", AR: "[f#2@6 f#2@6 f#2@11 b2@5 ~ b2@12 ~ b2@6]/2",
  AS: "f#2!2 c#2@2", AT: "d#2@6 ~ d#2@11 ~ d#2@5", AU: "[~ b2@48 b1@23]/3", AV: "~ b1@23", AW: "~ f#2@23",
  AX: "[c#2@23 d#2@79 ~@18]/5",
})).s("gm_acoustic_bass").gain(0.8)

// chords · string ensemble 1 · "Strings"
const string_ensemble_1 = note(`<
  A@4 B@5 C@8 D@8 ~@26 E@2 F@8 G@7 H@4 I@3 J K@2 L@4 M N O@4 P@2 Q@2 R@2 S@2 ~@6 T@4 U@7 V@4 W@5 X Y Z@4 AA@3 AB@2 AC
  AD@2 AE AF@2 AG@8 ~@11
>`.pickRestart({
  A: "[~@24 c#5@24 a#4@9 g#4@15 f#4@23 g#4, ~@23 f#2@73]/4",
  B: "[~@3 a#4@3 ~@22 a#3@4 ~@4 f#3@4, ~@18 c#5@7 ~@23 f#3@36 ~@12 g#3@24, ~@23 d#2@96 ~, ~@23 d#5@48 d#5@49]/5",
  C: "[~@11 f#3@4 g#3@2 a#3@3 g#3@4 a#4@8 g#4@9 a#4@3 g#4@3 ~@36 [c#4,f#4,c#5]@12 ~ [a#4,d#5]@48 [a#4,d#5]@24 [d#5,f#5]@24, f#2 ~, c#5@25 ~@22 f#4@36 ~@13 d#4@96, ~@72 [a#3,a#4]@13 ~@10 d#2@97]/8", // F#5 D#5 D#m A#
  D: "[~ b3@11 [f#2,a#3]@11 ~@16 d#5@8 ~ b3@12 ~@27 d#5@8 [b2,b3]@12 ~ f#2@11 c#2@25 ~@48, b2@12 ~@11 [c#2,c#4]@24 b2@13 [f#2,a#3]@12 c#4@23 ~@12 a#3@12 c#4@23 ~@50, ~ c#5@39 ~@8 c#5@40 ~@7 c#5@97, ~@71 c#2@25 ~@96]/8", // F# B C# F#
  E: "[[f#2,c#4]@12 ~ c#2@10 ~ d#2@24, c#5@11 ~ [d#4,d#5]@13 ~@23, ~@23 [a#3,a#4]@25]/2", // F#5 D# A#
  F: "[g#4@22 ~@2 b1@23 ~@13 c#2@11 [d#2,a#3,a#4]@24 ~ g#1@23 ~@36 [f#4,f#5]@12 ~ b2@12 [f#2,a#3]@12, [g#1,g#3]@25 ~@22 [c#4,c#5]@12 d#4@12 ~@24 [g#3,g#4]@25 ~@24 [d#4,d#5]@23 c#5@25, ~@22 b4@26 ~@10 d#5@13 ~@48 [b3,b4]@48 b3@13 ~@12, ~@23 b3@25 f#2@12 ~@60 b1@48 ~@24]/8", // D#5 F# G# C# G# D# B
  G: "[~@15 d#5@8 [b2,b3]@13 [f#2,a#3]@12 ~@15 d#5@8 a#3 ~@12 f#2@11 ~ c#4@23 ~@25 g#4@6 a#4@6 g#4@6 f#4@6, [c#2,c#4]@23 c#5@40 ~@8 c#5@48 ~@49, ~@48 [c#2,c#4]@23 b3@12 a#3@14 ~@23 [d#3,d#4]@48, ~@72 b2@13 ~@10 c#2@24 d#2@49]/7", // B F# C# D#
  H: "[~@13 f#2@10 ~@16 d#5@8 ~ b2@12 [f#2,a#3]@12 [c#2,c#4]@24, c#5@39 ~@8 c#5@41 ~@8, [b2,b3]@13 ~@11 c#2@24 ~@48, ~@11 a#3@12 c#4@24 b3@13 ~@36]/4", // F# C# B
  I: "c#5/3", J: "d#5 c#5", K: "[a#4,d#5]/2", L: "[~ f#5 c#5@2, ~ d#5@48 ~@47]/4", M: "c#5", N: "[c#5,d#5]",
  O: "[a#4,d#5,f#5]/2", P: "[c#4,c#5]/2", Q: "[~ d#5, [c#4,c#5]]/2", R: "[d#4,a#4,d#5,f#5]/2",
  S: "[~@12 c#6@11 ~, a#5@23 ~]/2",
  T: "[[f#2,c#4]@12 c#2@11 [d#2,a#3,a#4]@25 g#4@23 ~ b1@24, c#5@11 ~ [d#4,d#5]@13 ~@23 [g#1,g#3]@25 ~@23, ~@71 [b3,b4]@25]/4", // F#5 D#5 D# G# B
  U: "[[f#2,c#4,c#5]@11 ~ c#2@11 [d#2,a#3,a#4]@24 ~@60 [f#4,f#5]@12 ~@3 b2@10 [f#2,a#3]@12 ~@15 d#5@8 b3, ~@11 [d#4,d#5]@13 ~@23 [g#3,g#4]@24 b4@48 c#5@40 ~@9, ~@24 g#1@12 b1@25 ~@11 [c#2,c#4]@12, ~@72 b3@47 b3@13 ~@36, ~@96 [d#4,d#5]@23 ~@49]/7", // F#5 D#5 F# D# G# C# D#
  V: "[b2@12 [f#2,a#3]@12 ~@15 d#5@8 a#3 ~@12 f#2@12 [c#2,c#4]@24, c#5@40 ~@7 [b2,b3]@12 a#3@14 ~@23, ~ [c#2,c#4] c#5@2]/4", // F# C# B C#
  W: "[~@24 g#4@6 a#4@6 g#4@6 f#4@5 ~ b3@11 ~ f#2@12 c#4@18 c#4@3 ~@4 [f#2,a#3]@11 [c#2,c#4]@12, [d#2,d#3,d#4]@47 b2@12 a#3@12 ~ c#2@26 ~@22, ~@48 c#5@39 ~@3 c#5 ~@2 [c#4,c#5]@10 ~@17]/5", // F# C# D# C#
  X: "~ d#2@23, d#4", Y: "[f#2,f#4]",
  Z: "[d#4@11 c#4@12 ~ f#2@11 ~ c#4@11 ~ d#4@24 [f#2,f#4]@24, b2@23 a#3@12 c#2@12 d#2@26 ~@23]/4", // F#
  AA: "[[b2,g#4]@23 [f#2,a#4]@12 ~@13 d#5@24, ~@35 c#2@12 d#2@25, ~@36 c#5@13 ~@23]/3", // E F#
  AB: "[[f#2,f#5]@23 d#5@13 ~ c#5@11, ~@23 b2@25]/2", AC: "[f#2,a#4]@11 [c#2,c#5]@13",
  AD: "[d#5 ~ g#5 a#5, d#2@23 f#2@25, ~@12 f#5@13 ~@23]/2", AE: "c#6 d#6, b2",
  AF: "[[f#2,f#6]@11 ~@14 c#6@11 a#5@12, ~@11 c#2@13 d#2@24, ~@6 d#6@7 ~@11]/2", // F#
  AG: "[g#5@12 a#5@11 ~ b5@12 a#5@11 ~ f#5@6 g#5@6 ~@17 c#5@6 a#4@7 g#4@5 ~ [f#2,c#5]@24 ~ b2@48 ~@23, f#5@48 c#5@25 ~@22 f#4@26 ~@71, f#2@23 ~ b2@23 f#2@13 c#2@12 ~@120, ~@60 f#5@7 ~@4 d#2@25 ~@96, ~@65 d#5@31 ~@24 [b4,f#5]@50 ~@22]/8", // F#5 B5
})).s("gm_string_ensemble_1").gain(0.72)

// drums · kick
const kick = s("bd").struct(`<
  ~@17 A B C D A B ~@2 E@11 F G E@4 H E F G E@3 H I ~@9 A D A D A B J K A D A D ~@24 G H E@2 H I ~@9 A D A D A D J K A
  D@2 ~@36
>`.pickRestart({
  A: "~@3 x ~@4", B: "x", C: "~@5 x ~@6", D: "~ x ~@22", E: "x ~@6 x", F: "x ~@4 x ~ x", G: "~@7 x", H: "x ~@10 x",
  I: "x ~@9 x ~ x ~@2 x ~@2 x ~@2 x ~@2", J: "x ~@11 x ~@10 x", K: "~ x!3",
})).gain(0.58)

// drums · rim
const rim = s("rim").struct("<~@25 A@11 B A@7 C A@5 D ~@45 A@5 D ~@56>".pickRestart({
  A: "x!4", B: "x ~@2 x!2 ~ x ~", C: "x ~ x!2 ~ x ~@2", D: "x!3 ~",
})).gain(0.58)

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

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A@15 B ~@6 C D E@11 F E@7 G E@5 H I J K C L C@3 L ~@6 M K ~@4 C A@12 N C A@9 E@5 H I J K C L C@2 O L ~@6 M K ~@2 L
  C@3 P C L C L C@3 L C@3 L C L C L C@2 Q B ~@6 R C ~@4
>`.pickRestart({
  A: "x!4", B: "x ~@6 x ~@5 x ~@5 x ~@4", C: "~ x!3", D: "x ~@6 x ~@4 x ~@5 x ~@5", E: "~ x ~ x ~ x ~ x",
  F: "~ x!2 ~@2 x ~ x", G: "~ x ~@2 x ~@2 x", H: "~ x ~ x ~@4", I: "~@7 x ~@10 x ~@5", J: "~@5 x ~@5 x ~@6 x ~@5",
  K: "~@5 x ~@6 x ~@5 x ~@5", L: "~ x ~ x", M: "x ~@10 x ~@11 x", N: "x ~@5 x ~@5 x ~@5 x ~@4 x",
  O: "~@6 x ~@6 x ~@4 x ~@5", P: "~@5 x ~@12 x ~@5", Q: "~@7 x ~@5 x ~@5 x ~@4", R: "~@7 x ~@5 x ~@4 x ~@5",
})).gain(0.52)

// drums · open hat
const open_hat = s("oh").struct("<~@44 [~@3 x] ~@113>").gain(0.58)

// drums · crash
const crash = s("cr").struct(`<
  ~@17 A ~ A ~ A ~@29 B C ~ D E D ~ A F A ~ A ~ A ~@3 A ~@33 B C ~ A F D ~ A F A ~ A ~ A ~@3 A ~ F A G D E A@3 H A@3 B ~
  A D E A@3 F I ~ A ~@7 G A@2 ~@3
>`.pickRestart({
  A: "x", B: "~ x ~@10 x ~@10 x", C: "~@23 x", D: "x ~@22 x", E: "~ x", F: "x!2", G: "~ x ~@22", H: "x ~@10 x ~@12",
  I: "~ x ~@21 x",
})).gain(0.58)

// drums · ride
// … 14 more lines

More by The Smashing Pumpkins