Strudelify
KeyE majorTempo98 bpm
0:00/0:00
// Quiet — The Smashing Pumpkins
// 98 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (5/8 at bar 1, 4/4 at bar 1, 3/4 at bar 60, 4/4 at bar 62, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: ch 3 "Elec Gtr 1 - Dist (Slide)" named as a guitar, played on electric guitar clean (its lead 2 sawtooth patch is not one); ch 5 "Elec Gtr 2 - Dist (Bass)" named as a bass, played on electric bass finger (its lead 2 sawtooth patch is not one)
// note: duplicate parts dropped: ch 4 "Elec Gtr 2 - Dist (Trbl)" distortion guitar (copy of ch 1 "Elec Gtr 1 - Dist (Trbl)" overdriven guitar); ch 2 "Elec Gtr 1 - Dist (Bass)" distortion guitar (copy of ch 5 "Elec Gtr 2 - Dist (Bass)" electric bass finger); ch 6 "Elec Gtr 3 - Dist (Trbl)" distortion guitar (copy of ch 3 "Elec Gtr 1 - Dist (Slide)" electric guitar clean)
// note: Full arrangement: all 86 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): Elec Gtr 3 - Harmonizer.
setcpm(98/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 · overdriven guitar · "Elec Gtr 1 - Dist (Trbl)"
const overdriven_guitar = note(`<
  ~ A@12 B C B C B C B D A@12 E@3 F G H@5 I J K L@2 G F M@3 N O@5 P Q R S T U R V B C B C B C B W@4 X@2 Y Z@5
>`.pickRestart({
  A: "[e2,b2] [f#2,c#3]!4 [g2,d3]!4 [a2,e3]!4 [b2,f#3]!3", // E5 F#5 G5 A5 B5
  B: "[c#3,g#3]@2 [c#3,g#3]@2 [c#3,g#3] [e2,b2] [e2,b2]@4 [e2,b2]@2 [e2,b2]@2 [e2,b2]!2", // C#5 E5
  C: "[c#3,g#3] [b2,f#3]!3 [b2,f#3]@2 [b2,f#3]!3 [a2,e3]!3 [a2,e3]@2 [a2,e3]!2", D: "[c#3,g#3] [b2,f#3]@7 ~@8",
  E: "[[c#3,g#3]@4 [c#3,g#3]@4 [c#3,g#3]@2 [e2,b2]@2 [e2,b2]@8 [e2,b2]@4 ~ [e2,b2]@4 [e2,b2]@2 [e2,b2]@2 [c#3,g#3]@2 [b2,f#3]@2 [b2,f#3]@2 [b2,f#3]@2 [b2,f#3]@4 [b2,f#3]@2 [b2,f#3]@2 [b2,f#3]@2 [a2,e3]@2 [a2,e3]@2 [a2,e3]@2 [a2,e3]@4 [a2,e3]@2 [a2,e3]@2 [c#3,g#3]@4 [c#3,g#3]@4 [c#3,g#3]@2 [e2,b2]@2 [e2,b2]@8 ~ [e2,b2]@4 [e2,b2]@4 [e2,b2]@2]/3", // C#5 E5 C#5 B5 A5 C#5 E5
  F: "[e2,b2] [c#3,g#3] [b2,f#3]!3 [b2,f#3]@2 [b2,f#3]!3 [a2,e3]!3 [a2,e3]@2 [a2,e3]", // E5 C#5 B5 A5
  G: "[a2,e3] [c#3,g#3]@2 [c#3,g#3]@2 [c#3,g#3] [e2,b2] [e2,b2]@4 [e2,b2]@2 [e2,b2]@2 [e2,b2]", // A5 C#5 E5
  H: "[[e2,b2]@2 [c#3,g#3]@2 [b2,f#3]@2 [b2,f#3]@2 [b2,f#3]@2 [b2,f#3]@4 [b2,f#3]@2 [b2,f#3]@2 [b2,f#3]@2 ~ [a2,e3]@2 [a2,e3]@2 [a2,e3]@2 [a2,e3]@4 [a2,e3]@2 [a2,e3]@2 [c#3,g#3]@4 [c#3,g#3]@4 [c#3,g#3]@2 [e2,b2]@2 [e2,b2]@8 [e2,b2]@4 [e2,b2]@4 [e2,b2]@2 [e2,b2]@2 [c#3,g#3]@2 [c3,g3]@63 b2!28]/5", // E5 C#5 B5 A5 C#5 E5 C#5 C5
  I: "b2!3 c3!16 c#3!13", J: "c#3!2 d3!8 d#3!8 e3!8 f3!6",
  K: "f3!2 f#3!4 g3!4 g#3!3 [g#3,a3] a3!3 a#3!4 b3!4 c4!4 c#4!3", // Amaj7
  L: "[c#4 [c#3,g#3]@4 [c#3,g#3]@4 [c#3,g#3]@2 [e2,b2]@2 [e2,b2]@8 [e2,b2]@4 [e2,b2]@4 [e2,b2]@2 [e2,b2]@2 [c#3,g#3]@2 [b2,f#3]@2 [b2,f#3]@2 [b2,f#3]@2 [b2,f#3]@4 ~ [b2,f#3]@2 [b2,f#3]@2 [b2,f#3]@2 [a2,e3]@2 [a2,e3]@2 [a2,e3]@2 [a2,e3]@4 [a2,e3]@2]/2", // C#5 E5 C#5 B5 A5
  M: "[[a2,e3]@2 [c#3,g#3]@4 [c#3,g#3]@4 [c#3,g#3]@2 ~ [e2,b2]@2 [e2,b2]@8 [e2,b2]@4 [e2,b2]@4 [e2,b2]@2 [e2,b2]@2 [c#3,g#3]@2 [b2,f#3]@2 [b2,f#3]@2 [b2,f#3]@2 [b2,f#3]@4 [b2,f#3]@2 [b2,f#3]@2 [b2,f#3]@2 [a2,e3]@2 [a2,e3]@2 [a2,e3]@2 [a2,e3]@4 [a2,e3]@2 [a2,e3]@2 [c#3,g#3]@4 [c#3,g#3]@4 [c#3,g#3]@2 [e2,b2]@2 [e2,b2]@8 [e2,b2]@4 [e2,b2]@4 [e2,b2]]/3", // A5 C#5 E5 C#5 B5 A5 C#5 E5
  N: "[e2,b2] [c#3,g#3] [b2,f#3]!3 [b2,f#3]@2 [b2,f#3]!3 [d3,a3]!3 [d3,a3]@2 [d3,a3]", // E5 C#5 B5 D5
  O: "[[d3,a3]@2 [e2,b2]@2 [f#2,c#3]@2 [f#2,c#3]@2 [f#2,c#3]@2 [f#2,c#3]@2 [g2,d3]@2 [g2,d3]@2 [g2,d3]@2 [g2,d3]@2 [a2,e3]@2 [a2,e3]@2 [a2,e3]@2 [e2,b2]@2 [f#2,c#3] [f#2,c#3]@2 [f#2,c#3]@2 [f#2,c#3]@2 [g2,d3]@2 [g2,d3]@2 [g2,d3]@2 [g2,d3]@2 [a2,e3]@2 [a2,e3]@2 [a2,e3]@2 [e2,b2]@2 [f#2,c#3]@2 [f#2,c#3]@2 [f#2,c#3]@2 [f#2,c#3]@2 [g2,d3]@2 [g2,d3]@2 [g2,d3]@2 [g2,d3]@2 [a2,e3]@2 [a2,e3]@2 [a2,e3]@2 [e2,b2]@2 [f#2,c#3]@2 [f#2,c#3]@2 [f#2,c#3]@2 [f#2,c#3]@2 [g2,d3]@2 [g2,d3]@2 [g2,d3]@2 [g2,d3]@2 [a2,e3]@2 [a2,e3]@2 [a2,e3]@2 [a2,e3]@2 [b2,f#3]@2 [b2,f#3]@2 [b2,f#3]@2 [e2,b2]@2 [f#2,c#3]@2 [f#2,c#3]@2 [f#2,c#3]@2 [f#2,c#3]@2 [g2,d3]@2 [g2,d3]@2 [g2,d3]@2 [g2,d3]@2 [a2,e3]@2 [a2,e3]@2 ~ [e2,b2]@2 [f#2,c#3]@2 [f#2,c#3]@2 [f#2,c#3]@2 [f#2,c#3]@2 [g2,d3]@2 [g2,d3]@2 [g2,d3]@2 [g2,d3]@2 [a2,e3]@2 [a2,e3]@2 [a2,e3]@2 [e2,b2]@2 [f#2,c#3]@2 [f#2,c#3]@2 [f#2,c#3]@2, ~@127 [a2,e3]@2 ~@31]/5", // D5 E5 F#5 G5 A5 E5 F#5 G5 …
  P: "[f#2,c#3] [g2,d3]!4 [a2,e3]!3 [e2,b2] [f#2,c#3]!4 [g2,d3]!3", // F#5 G5 A5 E5 F#5 G5
  Q: "[g2,d3] [a2,e3]!4 [b2,f#3]!3 [e2,b2,f#4] [f#2,c#3,f#4]!4 [g2,d3,f#4]!3", // G5 A5 B5 Esus2 F#5 Gmaj7
  R: "[g2,d3,f#4] [a2,e3,f#4]!3 [e2,b2,f#4] [f#2,c#3,f#4]!4 [g2,d3,f#4]!4 [a2,e3,f#4]!3", // Gmaj7 F#m7 Esus2 F#5 Gmaj7 F#m7
  S: "[e2,b2,f#4] [f#2,c#3,f#4]!4 [g2,d3,f#4]!4 [a2,e3,f#4]!3 [e2,b2,f#4] [f#2,c#3,f#4]!3", // Esus2 F#5 Gmaj7 F#m7 Esus2 F#5
  T: "[f#2,c#3,f#4] [g2,d3,f#4]!4 [a2,e3,f#4]!4 [b2,f#3,f#4]!3 [e2,b2,f#4] [f#2,c#3,f#4]!3", // F#5 Gmaj7 F#m7 B5 Esus2 F#5
  U: "[f#2,c#3,f#4] [g2,d3,f#4]!4 [a2,e3,f#4]!3 [e2,b2,f#4] [f#2,c#3,f#4]!4 [g2,d3,f#4]!3", // F#5 Gmaj7 F#m7 Esus2 F#5 Gmaj7
  V: "[e2,b2,f#4] [f#2,c#3,f#4]!4 [g2,d3,f#4]!4 [a2,e3,f#4]!4 [b2,f#3,f#4]!3", // Esus2 F#5 Gmaj7 F#m7 B5
  W: "[[c#3,g#3]@2 [b2,f#3]@2 [b2,f#3]@2 [b2,f#3]@2 [b2,f#3]@4 [b2,f#3]@2 [b2,f#3]@2 ~ [a2,e3]@2 [a2,e3]@2 [a2,e3]@2 [a2,e3]@4 [a2,e3]@2 [a2,e3]@2 [c#3,g#3]@4 [c#3,g#3]@4 [c#3,g#3]@2 [e2,b2]@2 [e2,b2]@8 [e2,b2]@4 [e2,b2]@4 [e2,b2]@2 [e2,b2]@2 [c#3,g#3]@2 [b2,f#3]@2 [b2,f#3]@2 [b2,f#3]@2 [b2,f#3]@4 [b2,f#3]@2 [b2,f#3]@2 [b2,f#3]@2 [a2,e3]@2 [a2,e3]@2 [a2,e3]@2 [a2,e3]@4 [a2,e3]@2 [a2,e3]@2 [c#3,g#3]@4 [c#3,g#3]@4 [c#3,g#3]@2 [e2,b2]@2 [e2,b2]@8 [e2,b2]@3 [e2,b2]@4 [e2,b2]@2 [e2,b2]@2 [c#3,g#3]@2, ~@8 [b2,f#3] ~@55]/4", // C#5 B5 A5 C#5 E5 C#5 B5 A5 …
  X: "[[b2,f#3]!3 [b2,f#3]@2 [b2,f#3]!3 [a2,e3]!3 [a2,e3]@2 [a2,e3]!2 [c#3,g#3]@2 [c#3,g#3]@2 [c#3,g#3] [e2,b2] [e2,b2]@4 [e2,b2]@2 [e2,b2]@2 [e2,b2]!2 [c#3,g#3]]/2", // B5 A5 C#5 E5 C#5
  Y: "[b2,f#3]@2 [b2,f#3]@2 [b2,f#3]@2 [b2,f#3]@4 [b2,f#3]@2 [b2,f#3]@2 [b2,f#3]@2 [a2,e3]@2 [a2,e3]@2 [a2,e3] [a2,e3]@4 [a2,e3]@2 [a2,e3]@2 [c#3,g#3]@3", // B5 A5 C#5
  Z: "[~ [c#3,g#3]@4 [c#3,g#3]@2 [e2,b2]@2 [e2,b2]@135 ~@16]/5", // C#5 E5
})).s("gm_overdriven_guitar").gain(0.22)

// bass · electric bass finger · "Elec Gtr 2 - Dist (Bass)"
const bass = note(`<
  A B@12 C D C D C D C E B@12 C F G H I J@7 K G L I H M@4 N@4 O P Q R O S P R B C D C D C D C T@4 U@2 V@6
>`.pickRestart({
  A: "~@24 d3 f#3 f3 e3 d#3 c#3 a#2 f#2", B: "[e2,b2,e3] [f#2,c#3,f#3]@4 [g2,d3,g3]@4 [a2,e3,a3]@4 [b2,f#3,b3]@3",
  C: "[c#3,g#3,c#4]@5 [e2,b2,e3]@11", D: "[c#3,g#3,c#4] [b2,f#3,b3]@8 [a2,e3,a3]@7",
  E: "[c#3,g#3,c#4]@2 [b2,f#3,b3]@22 d#3 g3 f#3 f3 e3 d3 b2 g2", F: "~ [c#3,g#3,c#4]@2 [b2,f#3,b3]@16 [a2,e3,a3]@13",
  G: "~ [c#3,g#3,c#4]@10 [e2,b2,e3]@21", H: "~ [c#3,g#3,c#4] [b2,f#3,b3]@8 [a2,e3,a3]@6",
  I: "~ [c#3,g#3,c#4]@5 [e2,b2,e3]@10", // C#5 E5
  J: "[~@2 [c#3,g#3,c#4]@2 [b2,f#3,b3]@16 ~ [a2,e3,a3]@14 [c#3,g#3,c#4]@10 [e2,b2,e3]@22 [c#3,g#3,c#4]@2 [b2,f#3,b3]@63 b2@31 c3@16 c#3@15 d3@8 d#3@8 e3@8 f3@6]/7", // C#5 B5 A5 C#5 E5 C#5 B5
  K: "~@2 f#3@4 g3@4 g#3@3 a3@4 a#3@4 b3@4 c4@4 c#4@3", L: "~ [c#3,g#3,c#4]@2 [b2,f#3,b3]@16 ~ [a2,e3,a3]@12",
  M: "[~@2 [c#3,g#3,c#4]@10 ~ [e2,b2,e3]@22 [c#3,g#3,c#4]@2 [b2,f#3,b3]@16 [a2,e3,a3]@14 [c#3,g#3,c#4]@10 [e2,b2,e3]@21 [c#3,g#3,c#4]@2 [b2,f#3,b3]@16 [d3,a3,d4]@12]/4", // C#5 E5 C#5 B5 A5 C#5 E5 C#5 …
  N: "[~@2 [e2,b2,e3]@2 [f#2,c#3,f#3]@8 [g2,d3,g3]@8 [a2,e3,a3]@6 [e2,b2,e3]@2 [f#2,c#3,f#3]@7 [g2,d3,g3]@8 [a2,e3,a3]@6 [e2,b2,e3]@2 [f#2,c#3,f#3]@8 [g2,d3,g3]@8 [a2,e3,a3]@6 [e2,b2,e3]@2 [f#2,c#3,f#3]@8 [g2,d3,g3]@8 [a2,e3,a3]@8 [b2,f#3,b3]@6 [e2,b2,e3]@2 [f#2,c#3,f#3]@8 [g2,d3,g3]@8 [a2,e3,a3]@5]/4", // E5 F#5 G5 A5 E5 F#5 G5 A5 …
  O: "[e2,b2,e3] [f#2,c#3,f#3]@4 [g2,d3,g3]@4 [a2,e3,a3]@3 [e2,b2,e3] [f#2,c#3,f#3]@3", // E5 F#5 G5 A5 E5 F#5
  P: "~ [g2,d3,g3]@4 [a2,e3,a3]@3 [e2,b2,e3] [f#2,c#3,f#3]@4 [g2,d3,g3]@3", // G5 A5 E5 F#5 G5
  Q: "~ [a2,e3,a3]@4 [b2,f#3,b3]@3 [e2,b2,e3] [f#2,c#3,f#3]@4 [g2,d3,g3]@3", // A5 B5 E5 F#5 G5
  R: "~ [a2,e3,a3]@3 [e2,b2,e3] [f#2,c#3,f#3]@4 [g2,d3,g3]@4 [a2,e3,a3]@3", // A5 E5 F#5 G5 A5
  S: "~ [g2,d3,g3]@4 [a2,e3,a3]@4 [b2,f#3,b3]@3 [e2,b2,e3] [f#2,c#3,f#3]@3", // G5 A5 B5 E5 F#5
  T: "[[c#3,g#3,c#4]@2 [b2,f#3,b3]@15 [a2,e3,a3]@14 [c#3,g#3,c#4]@10 [e2,b2,e3]@22 [c#3,g#3,c#4]@2 [b2,f#3,b3]@16 [a2,e3,a3]@14 [c#3,g#3,c#4]@10 [e2,b2,e3]@21 [c#3,g#3,c#4]@2]/4", // C#5 B5 A5 C#5 E5 C#5 B5 A5 …
  U: "[[b2,f#3,b3]@8 [a2,e3,a3]@7 [c#3,g#3,c#4]@5 [e2,b2,e3]@11 [c#3,g#3,c#4]]/2", // B5 A5 C#5 E5 C#5
  V: "[[b2,f#3,b3]@16 [a2,e3,a3]@13 [c#3,g#3,c#4]@10 [e2,b2,e3]@137 ~@16]/6", // B5 A5 C#5 E5
})).s("gm_electric_bass_finger").gain(0.14)

// chords · guitar harmonics · "Elec Gtr 5 - Dist (Hrmx)"
const guitar_harmonics = note("<~@29 A@3 B ~@48 C@3 ~@2>".pickRestart({
  A: "a#3@2 a#3@2 a3@2 a3@2 g#3@2 g#3@2 f#3@2 ~ d3@2 d3@2 b2@2 b2@2 ~ b3@2 b3@2 b3@2 b3@2, ~@7 e3 ~@8",
  B: "a#3@2 a#3@2 a3@2 g#3@2 f#3@2 ~ d3@2 d3@2 b2@2 b2@2 g#2@2 g#2@3 ~@8, ~@5 e3 ~@10",
  C: "[~@29 e2@2 e2@2 ~ e2@2 e2@3 ~@2 e3@2 e3@3 e3!3 e3@2 e3 ~ e3!3 e3@2 e3@2 e3 e3@2 e3@3 ~ e3@2 ~ e3@4 ~@22, ~@36 e3 ~@2 e3@2 ~@11 e3@2 ~@42, ~@20 e2 ~@27]/3",
})).s("gm_guitar_harmonics").gain(0.24)

// chords · guitar harmonics · "Elec Gtr 5 - Dist (Hrmx)" · soft notes
const guitar_harmonics_soft = note("<~@82 A@2 ~@2>".pickRestart({
  A: "[~@4 g3 e3 ~@5 g#2@2 ~ c#3 ~ g3 [g#3,a#3]@2 [c4,c#4] ~ c#4 [a#3,c4] g3 ~ e3 ~ a#2 [g2,c3] [e2,g#2]@2 g2 a#2 ~ e3 [c3,g3]@2 [e3,a#3] c#4 e4 ~ a#3 ~ g3 ~ c#3 ~ e3@2 c3@2 g#2@2 e2@2 ~@9, ~@6 c3@2 [g#2,a#2]@2 e2@2 ~@19 e2@2 [g#2,c#3]@2 ~@9 [e3,c4]@2 [a#2,g#3]@2 ~@16, ~@7 c#3@2 g2@2 g2 ~ [a#2,c3]@2 ~@5 e4@2 ~@2 g#3@2 c#3@2 ~@10 g#3@2 [c4,c#4]@2 e4@2 ~@20]/2", // G#sus2 C#maj7 A#sus2 C5 E C5 Edim G#sus2 …
})).s("gm_guitar_harmonics").gain(0.16)

// bass · electric bass pick · "Bass Gtr"
const bass_2 = note(`<
  A B@12 C D C D C D C E B@12 F@3 G H I@5 J K L M@2 H G N@3 O P@5 Q R S T U Q S B C D C D C D C V@4 W@2 X Y@5
>`.pickRestart({
  A: "~@24 d2 f#2 f2 e2 d#2 c#2 a#1 f#1", B: "e1 f#1!4 g1!4 a1!4 b1!3", C: "c#2@2 c#2@2 e1!2 e1@4 e1@2 e1@2 e1!2",
  D: "c#2 b1!3 b1@2 b1!3 a1!3 a1@2 a1!2", E: "c#2@2 b1@22 d#2 g2 f#2 f2 e2 d2 b1 g1",
  F: "[c#2@4 c#2@4 e1@2 e1@2 e1@8 e1@4 ~ e1@4 e1@2 e1@2 c#2@2 b1@2 b1@2 b1@2 b1@4 b1@2 b1@2 b1@2 a1@2 a1@2 a1@2 a1@4 a1@2 a1@2 c#2@4 c#2@4 e1@2 e1@2 e1@8 ~ e1@4 e1@4 e1@2]/3",
  G: "e1 c#2 b1!3 b1@2 b1!3 a1!3 a1@2 a1", H: "a1 c#2@2 c#2@2 e1!2 e1@4 e1@2 e1@2 e1",
  I: "[e1@2 c#2@2 b1@2 b1@2 b1@2 b1@4 b1@2 b1@2 b1@2 ~ a1@2 a1@2 a1@2 a1@4 a1@2 a1@2 c#2@4 c#2@4 e1@2 e1@2 e1@8 e1@4 e1@4 e1@2 e1@2 c#2@2 b1@63 b1!28]/5",
  J: "b1!3 c2!16 c#2!13", K: "c#2!2 d2!8 d#2!8 e2!8 f2!6",
  L: "f2!2 f#2!4 g2!4 g#2!3 [g#2,a2] a2!3 a#2!4 b2!4 c3!4 c#3!3", // Amaj7
  M: "[c#3 c#2@4 c#2@4 e1@2 e1@2 e1@8 e1@4 e1@4 e1@2 e1@2 c#2@2 b1@2 b1@2 b1@2 b1@4 ~ b1@2 b1@2 b1@2 a1@2 a1@2 a1@2 a1@4 a1@2]/2",
  N: "[a1@2 c#2@4 c#2@4 e1@2 ~ e1@2 e1@8 e1@4 e1@4 e1@2 e1@2 c#2@2 b1@2 b1@2 b1@2 b1@4 b1@2 b1@2 b1@2 a1@2 a1@2 a1@2 a1@4 a1@2 a1@2 c#2@4 c#2@4 e1@2 e1@2 e1@8 e1@4 e1@4 e1]/3",
  O: "e1 c#2 b1!3 b1@2 b1!3 d2!3 d2@2 d2",
  P: "[d2@2 e1@2 f#1@2 f#1@2 f#1@2 f#1@2 g1@2 g1@2 g1@2 g1@2 a1@2 a1@2 a1@2 e1@2 f#1 f#1@2 f#1@2 f#1@2 g1@2 g1@2 g1@2 g1@2 a1@2 a1@2 a1@2 e1@2 f#1@2 f#1@2 f#1@2 f#1@2 g1@2 g1@2 g1@2 g1@2 a1@2 a1@2 a1@2 e1@2 f#1@2 f#1@2 f#1@2 f#1@2 g1@2 g1@2 g1@2 g1@2 a1@2 a1@2 a1@2 e1@2 e1@2 e1@2 e1@2 e1@2 f#1@2 f#1@2 f#1@2 f#1@2 g1@2 g1@2 g1@2 g1@2 a1@2 a1@2 ~ e1@2 f#1@2 f#1@2 f#1@2 f#1@2 g1@2 g1@2 g1@2 g1@2 a1@2 a1@2 a1@2 e1@2 f#1@2 f#1@2 f#1@2, ~@127 a1@2 ~@31]/5",
  Q: "f#1 g1!4 a1!3 e1 f#1!4 g1!3", R: "g1 a1!3 e1!5 f#1!4 g1!3", S: "g1 a1!3 e1 f#1!4 g1!4 a1!3",
  T: "e1 f#1!4 g1!4 a1!3 e1 f#1!3", U: "f#1 g1!4 a1!3 e1!5 f#1!3",
  V: "[c#2@2 b1@2 b1@2 b1@2 b1@4 b1@2 b1@2 ~ a1@2 a1@2 a1@2 a1@4 a1@2 a1@2 c#2@4 c#2@4 e1@2 e1@2 e1@8 e1@4 e1@4 e1@2 e1@2 c#2@2 b1@2 b1@2 b1@2 b1@4 b1@2 b1@2 b1@2 a1@2 a1@2 a1@2 a1@4 a1@2 a1@2 c#2@4 c#2@4 e1@2 e1@2 e1@8 e1@3 e1@4 e1@2 e1@2 c#2@2, ~@8 b1 ~@55]/4",
  W: "[b1!3 b1@2 b1!3 a1!3 a1@2 a1!2 c#2@2 c#2@2 e1!2 e1@4 e1@2 e1@2 e1!2 c#2]/2",
  X: "b1@2 b1@2 b1@2 b1@4 b1@2 b1@2 b1@2 a1@2 a1@2 a1 a1@4 a1@2 a1@2 c#2@3", Y: "[~ c#2@4 e1@2 e1@2 e1@135 ~@16]/5",
})).s("gm_electric_bass_pick").gain(0.4)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@42
  [~@5 x!3 ~ x!2 ~ x!3 ~ x!3 ~ x!3 ~ x!3 ~ x!3 ~]
  [x!3 ~ x!3 ~ x!3 ~ x!3 ~ x!3 ~ x!3 ~ x!3 ~ x!2 ~ x]
  [x!2 ~ x!3 ~ x!3 ~ x!3 ~ x!3 ~ x!3 ~ x!3 ~ x!3 ~ x]
  [x!2 ~ x!3 ~ x!3 ~ x!2 ~@2 x ~@16]
  ~@40
>`).gain(0.11)

// drums · pedal hat
const pedal_hat = s("hh").struct(`<
  ~ A@4 ~@7 B C A C A C A C ~@12 B D E F G H I J K ~@5 L M H G J N J O P E@3 A@9 C A C A C A C Q R S T U V W ~@5
>`.pickRestart({
  A: "x!8", B: "~@4 x!4", C: "~@8 x ~ x ~ x ~ x!2", D: "~@16 x ~@3 x ~@4 x ~@3 x ~ x",
  E: "~ x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@2", F: "~@17 x ~@4 x ~@3 x ~@3 x ~",
  G: "x!2 ~ x ~ x ~ x ~ x ~ x ~ x ~ x", H: "~@9 x ~ x ~ x ~ x", I: "x ~ x ~@3 x ~@3 x ~@3 x ~@3 x ~@4 x ~@3 x ~@3 x",
  J: "~@19 x ~@3 x ~@3 x ~@3 x", K: "~ x ~@30", L: "~@17 x ~@3 x ~@3 x ~@3 x ~ x",
  M: "~ x ~@3 x ~@3 x ~@4 x ~@3 x ~@3 x ~@3 x ~@3 x ~", N: "~ x ~ x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x", O: "x",
  P: "~@2 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@2 x ~@2", Q: "x ~@3 x ~@3 x ~@3 x ~@3 x ~@2 x ~@3 x ~@3 x ~@4",
  R: "~@15 x ~@3 x ~@3 x ~@3 x ~ x ~ x", S: "~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@4",
  T: "~@15 x ~@3 x ~@2 x ~@3 x ~ x ~ x ~", U: "~ x ~ x ~@3 x ~ x ~ x ~ x ~@2", V: "~@7 x ~ x ~ x ~ x ~ x",
  W: "~@2 x ~@3 x ~@3 x ~@3 x ~@3 x ~@2 x ~@3 x ~@6",
})).gain(0.14)

// drums · open hat
const open_hat = s("oh").struct("<~@5 A B@3 A B@2 C ~@8 A B@3 A B@2 D A@3 E ~@45 F G ~@6>".pickRestart({
  A: "~ x!7", B: "x!8", C: "x!4 ~@4", D: "x!4 ~ x ~ x", E: "~ x!3 ~@4", F: "~@5 x!2 ~@9", G: "~@7 x",
})).gain(0.11)

// drums · crash
const crash = s("cr").struct(`<
  A B@3 C D ~@3 D ~@3 E B E B E B E F D ~@3 D ~@3 D@4 G H I J K L M N O P ~@3 Q R K J S T M U J H V W B@2 X B@2 Y B@2 C
  E B E B E B E Z AA AB AC AD AE AF AG ~@4
>`.pickRestart({
  A: "~@3 x", B: "x!4", C: "x!2 ~@2", D: "x", E: "x ~@2 x ~@2 x ~", F: "~@23 x!2 ~@7", G: "x ~@11 x ~@12 x ~@6",
  H: "~ x ~@7 x ~@7 x ~@7 x ~@6", I: "~ x ~@11 x ~@12 x ~@5", J: "~ x ~@3 x ~@3 x ~@3 x ~@2", K: "~ x ~@5 x ~@5 x ~@2",
  L: "~@2 x ~@7 x ~@7 x ~@8 x ~@4", M: "~@3 x ~@11 x ~@11 x ~@4", N: "~@30 x!2", O: "x!7 ~ x!7 ~ x!6 ~ x ~ x!7",
  P: "~ x!3 ~@28", Q: "~ x ~@11 x ~@11 x ~@6", R: "~ x ~@7 x ~@8 x ~@7 x ~@5", S: "~@2 x ~@12 x ~@11 x ~@4",
  T: "~@3 x ~@7 x ~@7 x ~@7 x ~@4", U: "~@5 x ~ x ~@7 x", V: "~ x ~@7 x ~@7 x ~@14", W: "~@9 x ~@7 x ~@7 x ~@6",
  X: "~@2 x!2", Y: "x ~@2 x", Z: "~@8 x ~@10 x ~@3 x ~@3 x ~@3 x", AA: "~@11 x ~@11 x ~@7 x",
  AB: "~@7 x ~@7 x ~@7 x ~@3 x ~@3 x", AC: "~@11 x ~@10 x ~@7 x ~", AD: "~@3 x ~@7 x ~ x ~ x", AE: "~@5 x ~@5 x ~@4",
  AF: "~@6 x ~@3 x ~ x ~ x ~@3 x ~@2 x ~ x ~@5 x ~@2", AG: "~@9 x ~@22",
})).gain(0.14)

// drums · crash · soft notes
const crash_soft = s("cr").struct("<~@20 [x!23 ~@9] ~@19 [~@3 x!27 ~@2] [~@7 x ~@7 x ~@8 x ~@7] x ~@43>").gain(0.03)

stack(
  overdriven_guitar, bass, guitar_harmonics, guitar_harmonics_soft, bass_2, snare, snare_soft, pedal_hat, open_hat,
  crash, crash_soft
)

More by The Smashing Pumpkins