Strudelify
Love cover art

Mellon Collie And The Infinite Sadness

Love

The Smashing Pumpkins

KeyG♯ minorTempo94 bpm
0:00/0:00
// Love — The Smashing Pumpkins
// 94 bpm, 4/4, key G# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 73, 4/4 at bar 74) are rendered on a constant 4/4 grid of one bar per cycle
// note: Full arrangement: all 106 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): guitar program 29.
setcpm(94/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 · overdriven guitar
const overdriven_guitar = note(`<
  A@2 B@4 C D E F G H D I J K L M N O P N Q@2 R S T U V U W X Y Z C D E F G H D I J K L M J O P N Q@2 R S T U V U W X Y
  Z AA AB AC AD AE AF AG AH AI AJ AK AL@2 AM AN AO AP AQ AR AS AT AU AV AW AX AY AZ BA BB BC BB BD BE BF BG BH BI@2 BJ
  BK BL@4
>`.pickRestart({
  A: "g#3@3 ~ g#3@3 ~ g#3@3 ~ g#3@3 ~ g#3@3 ~ g#3@3 ~ g#3@3 ~ g#3@3 ~",
  B: "[g#3,d#4,g#4]@4 g#3@3 ~ g#3@3 ~ g#3@3 ~ g#3@3 ~ g#3@3 ~ [g#3,d#4,g#4]@3 ~ [g#3,d#4,g#4]@3 ~", // G#5
  C: "[g#3,d#4,g#4]@4 g#3@3 ~ g#3@3 ~ [g#3,b4]@3 ~ [g#3,c#5]@3 ~ [g#3,b4]@3 ~ [g#3,d#4,g#4,c#5]@3 ~ [g#3,d#4,g#4,d#5]@3 ~", // G#5 G#m C#5 G#m G#sus4 G#5
  D: "[g#3,d#4,g#4]@4 g#3@3 ~ g#3@3 ~ g#3@3 ~ g#3@3 ~ g#3@3 ~ [g#3,d#4,g#4]@3 ~ [g#3,d#4,g#4]@3 ~, d5@13 ~@3 d#5@13 ~@3", // G#5
  E: "[g#3,d#4,g#4,d#5]@4 g#3@3 ~ g#3@3 ~ [g#3,c5]@3 ~ [g#3,c#5]@3 ~ [g#3,b4]@3 ~ [g#3,d#4,g#4,c#5]@3 ~ [g#3,d#4,g#4,d#5]@3 ~", // G#5 G# C#5 G#m G#sus4 G#5
  F: "[g#3,d#4,g#4]@4 [g#3,c#5]@3 ~ [g#3,b4]@3 ~ [g#3,c#5]@3 ~ [g#3,g#4]@3 ~ [g#3,g#4]@3 ~ [g#3,d#4,g#4]@3 ~ [g#3,d#4,f#4,g#4]@3 ~, d#5@3 ~@29", // G#5 C#5 G#m C#5 G# G#5 G#7
  G: "[g#3,d#4,f#4,g#4]@4 b3@3 ~ b3@3 ~ b3@3 ~ e4@3 ~ e4@3 ~ [g#3,d#4,e4,g#4]@3 ~ [g#3,d#4,e4,g#4]@3 ~, b3@3 ~@29", // G#7 Emaj7
  H: "[g#3,d#4,g#4]@4 g#3@3 ~ g#3@3 ~ [g#3,b4]@3 ~ [g#3,c#5]@3 ~ [g#3,b4]@3 ~ [g#3,d#4,g#4,d5]@3 ~ [g#3,d#4,g#4]@3 ~", // G#5 G#m C#5 G#m G# G#5
  I: "[g#3,d#4,g#4]@4 g#3@3 ~ g#3@3 ~ [g#3,b4]@3 ~ [g#3,c#5]@3 ~ b4@4 [g#3,d#4,g#4]@3 ~ [g#3,d#4,g#4,d#5]@3 ~, ~@20 g#3@3 ~@9", // G#5 G#m C#5 G#5
  J: "[g#3,d#4,g#4]@4 [b3,c#5]@3 ~ [b3,b4]@3 ~ [b3,b4]@3 ~ [e4,c#5]@3 ~ [e4,g#4]@3 ~ [g#3,d#4,e4,g#4]@3 ~ [g#3,d#4,e4,f#4,g#4]@3 ~, [b3,d#5]@3 ~@29", // G#5 Bsus2 B C#m E Emaj7 G#7 B
  K: "[g#3,d#4,f#4,g#4]@4 g#3@3 ~ g#3@3 ~ [g#3,b4]@3 ~ [g#3,c#5]@3 ~ [g#3,b4]@3 ~ [g#3,d#4,g#4]@3 ~ [g#3,d#4,g#4,c#5]@2 d#5@2", // G#7 G#m C#5 G#m G#5 G#sus4
  L: "[g#3,d#4,g#4]@4 [g#3,g#4]@3 ~ [g#3,g#4]@3 ~ g#3@3 ~ g#3@3 ~ g#3@3 ~ [g#3,d#4,g#4,d#5]@3 ~ [g#3,d#4,g#4,c#5]@3 ~, d#5@3 ~@9 d#5@12 ~@8", // G#5 G# G#5 G#sus4
  M: "[g#3,d#4,g#4,c#5]@4 g#3@3 ~ g#3@3 ~ [g#3,c#5]@3 ~ [g#3,c#5]@3 ~ b4@4 [g#3,d#4,g#4]@3 ~ [g#3,d#4,g#4,d#5]@3 ~, ~@20 g#3@3 ~@9", // G#sus4 C#5 G#5
  N: "b3@3 ~ b3@3 ~ [b3,b4]@3 ~ [b3,g#4]@3 ~ [e4,f#4]@3 ~ e4@3 ~ e4@3 ~ e4@3 ~", // B E Esus2
  O: "g#3@3 ~ g#3@3 ~ g#3@3 ~ [g#3,b4]@3 ~ [g#3,c#5]@3 ~ [g#3,b4]@3 ~ [g#3,g#4]@3 ~ [g#3,c#5]@3 ~", // G#m C#5 G#m G# C#5
  P: "c#5@4 g#3@3 ~ d#5@4 g#3@3 ~ [g#3,d#5]@3 ~ [g#3,g#4]@3 ~ g#3@3 ~ g#3@3 ~, g#3@3 ~@5 g#3@3 ~@21", // G#5 G#
  Q: "[e3,g#4]@3 ~ [e3,g#4]@3 ~ [e3,g#4]@3 ~ [e3,g#4]@3 ~ [e3,g#4]@3 ~ [e3,f#4,g#4]@3 ~ [e3,e4,g#4]@3 ~ [e3,g#4]@3 ~", // E
  R: "[c#4,f#4,g#4,c#5,f#5]@3 ~ [c#4,f#4,g#4,c#5,f#5]@3 ~ [c#4,f#4,g#4,c#5,f#5]@3 ~ [c#4,f#4,g#4,c#5,f#5]@3 ~ [c#4,f#4,g#4,c#5,f#5]@3 ~ [c#4,f#4,c#5,f#5]@3 ~ [c#4,f4,f#4,c#5,f#5]@3 ~ [c#4,f#4,g#4,c#5,f#5]@3 ~", // C#sus4 F#5 F#maj7 C#sus4
  S: "[c#4,f#4,c#5,f#5]@3 ~ [c#4,f#4,c#5,f#5]@3 ~ [c#4,f#4,g#4,c#5,f#5]@3 ~ [c#4,f#4,c#5,f#5]@3 ~ [c#4,f#4,c#5,f#5]@3 ~ [c#4,e4,f#4,c#5,f#5]@3 ~ [c#4,e4,f#4,c#5,f#5]@3 ~ [c#4,d#4,f#4,c#5,f#5]@3 ~, g#4 ~@7", // F#5 C#sus4 F#5 F#7 D#m7
  T: "g#3@3 ~ g#3@3 ~ [g#3,g#4]@3 ~ [f#4,b4]@2 b4@2 [f#4,b4]@3 ~ [d#4,b4]@3 ~ [g#4,b4]@3 ~ [f#4,c#5]@2 c#5@2", // G# B5 G#m F#5
  U: "[f#4,c#5]@3 ~ [e4,c#5]@3 ~ c#5@3 ~ [f#4,c#5]@2 c#5@2 g#4@4 e4@3 ~ [e4,f#4]@3 ~ [e4,f#4]@2 f#4@2, ~@16 e4@3 ~@13", // F#5 C#m F#5 Esus2
  V: "d#4@4 g#3@3 ~ [g#3,g#4]@3 ~ [f#4,b4]@2 b4@2 [f#4,b4]@3 ~ [e4,b4]@3 ~ [g#4,b4]@3 ~ [f#4,c#5]@2 c#5@2, g#3@3 ~@29", // G# B5 E5 G#m F#5
  W: "f#4@4 b4@3 ~ [g#4,b4]@3 ~ [f#4,b4]@2 b4@2 [f#4,c#5]@3 ~ [e4,c#5]@3 ~ [g#4,c#5]@3 ~ [e4,f#4]@2 e4@2, b4@3 ~@29", // G#m B5 F#5 C#m C#5 Esus2
  X: "[e4,f#4]@3 ~ e4@3 ~ e4@3 ~ e4@2 e4@2 g#4@4 f#4@3 ~ [e4,f#4]@3 ~ [e4,g4]@3 ~, ~@16 f#4@3 ~@13", // Esus2 Em
  Y: "d#4@4 g#4@3 ~ g#4@3 ~ [f#4,b4]@2 b4@2 [f#4,b4]@3 ~ [e4,b4]@3 ~ b4@3 ~ [g#4,c#5]@2 c#5@2, g#4@3 ~@29", // B5 E5 C#5
  Z: "g#4@4 c#5@3 ~ c#5@3 ~ c#5@3 ~ e4@3 ~ e4@3 ~@9, c#5@3 ~@29", AA: "~@12 e4@3 ~ d#5@3 ~ d#5@3 ~ c#5@3 ~ d#5@3 ~",
  AB: "c#5@3 ~ d#5@3 ~ c#5@3 ~ d#5@3 ~ d#5@3 ~ g#4@10 ~@2", AC: "~@8 d#5@3 ~ c#5@3 ~ d#5@3 ~ d#5@3 ~ g#4@3 ~ d#5@3 ~",
  AD: "c#5@3 ~ d#5@3 ~ c#5@3 ~ d#5@3 ~ c#5@3 ~ d#5@10 ~@2",
  AE: "d#5@3 ~ c#5@3 ~ d#5@3 ~ c#5@3 ~ d#5@3 ~ c#5@3 ~ d#5@3 ~ c#5@3 ~",
  AF: "d#5@3 ~ c#5@3 ~ f#4@3 ~ g#4@3 ~ g#4@6 ~@2 b4@3 ~ c#5@3 ~", AG: "c#5@3 ~ d#5@14 ~@14",
  AH: "a5@3 ~ g#5@6 ~@2 b5@3 ~ b5@6 ~@2 d#6@6 ~@2", AI: "d#6@3 ~ c#6@3 ~ b5@6 ~@2 g#5@3 ~ b5@10 ~@2",
  AJ: "g#6@3 ~ f#6@3 ~ d#6@3 ~ c#6@3 ~ c#6@3 ~ b5@3 ~ g#5@6 ~@2",
  AK: "g#5@3 ~ d#6@3 ~ c#6@3 ~ b5@3 ~ b5@3 ~ g#5@3 ~ b5@6 ~@2",
  AL: "[b5@3 ~ d#6@2 d#6@2 g#6@2 b5@2 c#6@3 ~ [e3,g#4]@3 ~ [e3,g#4]@3 ~ [e3,g#4]@3 ~ [e3,g#4]@3 ~ [e3,g#4]@3 ~ [e3,f#4,g#4]@3 ~ [e3,e4,g#4,c#6]@2 b5@2 [e3,g#4,g#5]@3 ~ [e3,g#4]@4 [e3,g#4]@3 ~ [e3,g#4]@3 ~ [e3,g#4]@3 ~, ~@16 c#6@19 ~@29]/2", // E C#m E
  AM: "[e3,g#4]@3 ~ [e3,f#4,g#4]@3 ~ [e3,e4,g#4]@3 ~ [e3,g#4]@3 ~ [c#4,f#4,c#5,f#5]@3 ~ [c#4,f#4,c#5,f#5]@3 ~ [c#4,f#4,g#4,c#5,f#5]@3 ~ [c#4,f#4,g#4,c#5,f#5]@3 ~, ~@4 g#4 ~@3", // E F#5 C#sus4
  AN: "[c#4,f#4,g#4,c#5,f#5]@3 ~ [c#4,f#4,c#5,f#5]@3 ~ [c#4,f4,f#4,c#5,f#5]@3 ~ [c#4,f#4,g#4,c#5,f#5]@3 ~ [c#4,f#4,g#4,c#5,f#5]@3 ~ [c#4,f#4,c#5,f#5]@3 ~ [c#4,f#4,g#4,c#5,f#5]@3 ~ [c#4,f#4,g#4,c#5,f#5]@3 ~", // C#sus4 F#5 F#maj7 C#sus4 F#5 C#sus4
  AO: "[c#4,f#4,b4,c#5,f#5]@3 ~ [c#4,f#4,g#4,c#5,f#5]@3 ~ [c#4,f#4,c#5,f#5]@3 ~ [c#4,f#4,g#4,c#5,f#5]@3 ~ [e3,f#4,g#4]@3 ~ [e3,g#4]@3 ~ [e3,g#4]@3 ~ [e3,g#4]@3 ~", // F#sus4 C#sus4 F#5 C#sus4 E
  AP: "[e3,g#4]@3 ~ [e3,f#4,g#4]@3 ~ [e3,e4,g#4]@3 ~ [e3,g#4]@3 ~ [e3,g#4]@4 [e3,g#4]@3 ~ [e3,g#4]@3 ~ [e3,g#4]@3 ~", // E
  AQ: "[e3,g#4]@3 ~ [e3,f#4,g#4]@3 ~ [e3,e4,g#4]@3 ~ [e3,g#4]@3 ~ [c#4,f#4,c#5,f#5]@3 ~ [c#4,f#4,c#5,f#5]@3 ~ [c#4,f#4,g#4,c#5,f#5]@3 ~ [c#4,f#4,g#4,c#5,f#5]@3 ~", // E F#5 C#sus4
  AR: "[c#4,f#4,b4,c#5,f#5]@3 ~ [c#4,f#4,g#4,c#5,f#5]@3 ~ [c#4,f#4,c#5,f#5]@3 ~ [c#4,f#4,g#4,c#5,f#5]@3 ~ [c#4,f#4,c#5,f#5]@3 ~ [c#4,f#4,c#5,f#5]@3 ~ [c#4,f#4,c#5,f#5]@3 ~ [c#4,f#4,c#5,f#5]@3 ~, ~@4 g#4 ~ g#4 ~", // F#sus4 C#sus4 F#5 C#sus4 F#5
  AS: "[c#4,f#4,c#5,f#5]@3 ~ [c#4,f#4,c#5,f#5]@3 ~ [c#4,f#4,c#5,f#5]@3 ~ [c#4,f#4,c#5,f#5]@3 ~ g#3@3 ~ g#3@3 ~ [g#3,g#4]@3 ~ [f#4,b4]@2 b4@2, b4 ~ d#5 ~@5", // F#5 G# B5
  AT: "[f#4,b4]@3 ~ [d#4,b4]@3 ~ [g#4,b4]@3 ~ [f#4,c#5]@2 c#5@2 [f#4,c#5]@3 ~ [e4,c#5]@3 ~ c#5@3 ~ [f#4,c#5]@2 c#5@2", // B5 G#m F#5 C#m F#5
  AU: "g#4@4 e4@3 ~ [e4,f#4]@3 ~ [e4,f#4]@2 f#4@2 d#4@4 g#3@3 ~ [g#3,g#4]@3 ~ [f#4,b4]@2 b4@2, e4@3 ~@13 g#3@3 ~@13", // Esus2 G# B5
  AV: "[f#4,b4]@3 ~ [e4,b4]@3 ~ [g#4,b4]@3 ~ [f#4,c#5]@2 c#5@2 [f#4,c#5]@3 ~ [e4,c#5]@3 ~ c#5@3 ~ [f#4,c#5]@2 c#5@2", // B5 E5 G#m F#5 C#m F#5
  AW: "g#4@4 e4@3 ~ [e4,f#4]@3 ~ [e4,f#4]@2 f#4@2 f#4@4 b4@3 ~ [g#4,b4]@3 ~ [f#4,b4]@2 b4@2, e4@3 ~@13 b4@3 ~@13", // Esus2 G#m B5
  AX: "[f#4,c#5]@3 ~ [e4,c#5]@3 ~ [g#4,c#5]@3 ~ [e4,f#4]@2 e4@2 [e4,f#4]@3 ~ e4@3 ~ e4@3 ~ e4@2 e4@2", // F#5 C#m C#5 Esus2
  AY: "g#4@4 f#4@3 ~ [e4,f#4]@3 ~ [e4,g4]@3 ~ d#4@4 g#4@3 ~ g#4@3 ~ [f#4,b4]@2 b4@2, f#4@3 ~@13 g#4@3 ~@13", // Esus2 Em B5
  AZ: "[f#4,b4]@3 ~ [e4,b4]@3 ~ b4@3 ~ [g#4,c#5]@2 c#5@2 g#4@4 c#5@3 ~ c#5@3 ~ c#5@3 ~, ~@16 c#5@3 ~@13", // B5 E5 C#5
  BA: "e4@3 ~ e4@3 ~@9 g#3@3 ~ g#3@3 ~ g#3@3 ~ b4@2 b4@2",
  BB: "b4@3 ~ b4@3 ~ b4@3 ~ c#5@2 c#5@2 c#5@3 ~ c#5@3 ~ c#5@3 ~ c#5@2 c#5@2",
  BC: "e4@3 ~ e4@3 ~ f#4@3 ~ f#4@2 f#4@2 g#3@3 ~ g#3@3 ~ g#3@3 ~ b4@2 b4@2",
  BD: "e4@3 ~ e4@3 ~ f#4@3 ~ f#4@2 f#4@2 b4@3 ~ b4@3 ~ b4@3 ~ b4@2 b4@2",
  BE: "c#5@3 ~ c#5@3 ~ c#5@3 ~ e4@2 e4@2 e4@3 ~ e4@3 ~ e4@3 ~ e4@2 e4@2",
  BF: "f#4@3 ~ f#4@3 ~ f#4@3 ~ g4@3 ~ g#4@3 ~ g#4@3 ~ g#4@3 ~ b4@2 b4@2",
  BG: "b4@3 ~ b4@3 ~ b4@3 ~ c#5@2 c#5@2 c#5@3 ~ c#5@3 ~ c#5@3 ~ c#5@3 ~",
  BH: "e4@3 ~ e4@3 ~@9 [g#3,d#4,g#4]@4 g#3@3 ~ g#3@3 ~ g#3@3 ~", // G#5
  BI: "g#3@3 ~ g#3@3 ~ [g#3,d#4,g#4]@3 ~ [g#3,d#4,g#4]@3 ~ [g#3,d#4,g#4]@4 g#3@3 ~ g#3@3 ~ g#3@3 ~", // G#5
  BJ: "g#3@3 ~ g#3@3 ~ [g#3,d#4,g#4]@3 ~ [g#3,d#4,g#4]@3 ~ g#3@3 ~ g#3@3 ~ [g#3,d#5]@3 ~ [g#3,c#5]@3 ~", // G#5 C#5
  BK: "d#5@4 g#3@3 ~ [g#3,d#5]@3 ~ [a3,d#5]@3 ~ [b3,d#5]@3 ~ c#5@4 b3@3 ~ [b3,g#4]@3 ~, g#3@3 ~@17 b3@3 ~@9", // G#5 Adim B E
  BL: "[e3@3 ~ e3@3 ~ b4@4 e3@3 ~ [g#3,d#4,g#4]@58 ~@6 [g#3,d#4,g#4]@26 ~@6 [b3,d#4,g#4]@6 ~@10, ~@8 e3@3 ~@117]/4", // G#5 G#m
})).s("gm_overdriven_guitar").gain(0.3)

// bass · electric bass pick
const bass = note(`<
  ~@2 A@4 B C B@2 D B@3 E F B G H B@2 H I@2 J K L M N M O P Q@2 R S@3 T U@3 V W@2 X Y Z@2 AA AB@4 L M AC M AD P AE AF
  I@2 AG@2 AH M AI AJ@2 AK L AL@8 AM AD AN AD AO M AP AQ AR@5 M AS AT AU AV AW@2 AX AY@3 ~
>`.pickRestart({
  A: "g#2 ~@3 g#2 ~@3 g#2 ~@3 g#2 ~@3 g#2 ~@3 g#2 ~@3 g#2 ~@3 g#2 ~@3",
  B: "g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3",
  C: "g#1 ~@3 g#1 ~@4 g#1 ~@2 g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3",
  D: "b1 ~@3 b1 ~@3 b1 ~@4 b1 ~@2 e1@2 ~@2 e1@2 ~@2 e1@2 ~@2 e1@2 ~@2",
  E: "[a1,b1] ~@3 b1 ~@3 b1 ~@3 b1@2 ~@2 e1@2 ~@2 e1@2 ~@3 e1@2 ~@2 e1@2 ~", // Asus2
  F: "~ g#1 ~@3 g#1 ~@2 g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3",
  G: "g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@2 g#1 ~@4 g#1 ~@2 g#1 ~@4",
  H: "b1 ~@3 b1 ~@3 b1 ~@3 b1 ~@3 e1@2 ~@2 e1@2 ~@2 e1@2 ~@3 e1 ~@2", I: "[e1@63 ~]/2", J: "f#1",
  K: "~@5 f#1 ~@2 f#1 ~@3 f#1 ~@3 f#1 ~@3 f#1 ~@3 f#1 ~@3 f#1 ~@3",
  L: "g#1 ~@3 g#1 ~@3 g#1@2 ~@2 g#1@3 ~ b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@2 ~@2",
  M: "c#2 ~@3 c#2 ~@3 c#2 ~@3 c#2 ~@3 e2 ~@3 e2 ~@3 e2 ~@3 e2 ~@3",
  N: "~ g#1 ~@2 g#1@2 ~@2 g#1@2 ~@2 g#1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@2 ~@2",
  O: "b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 c#2 ~@2 c#2 ~@4 c#2 ~@3 c#2 ~@3",
  P: "e2 ~@3 e2 ~@3 e2 ~@3 e2 ~@3 f#1 ~@3 f#1@2 ~@2 f#1@3 ~ g1@3 ~",
  Q: "[g#1@2 ~@2 g#1@2 ~@2 g#1@2 ~@2 g#1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@2 ~ c#2@2 ~@3 c#2 ~@3 c#2 ~@3 c#2 ~@3 e2@14 ~@2]/2",
  R: "~ g#1@6 ~ g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3",
  S: "[g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1@11 ~ g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1@3 ~ g#1@8 g#1@2 ~@2 g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3]/3",
  T: "b1 ~@3 b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 e1 ~@3 e1@2 ~@2 e1@2 ~@2 e1 ~@3",
  U: "[g#1@9 ~@3 g#1 ~@3 g#1@2 ~@2 g#1 ~@3 g#1@12 ~ g#1@2 ~ g#1@2 ~@2 g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1@11 ~ g#1@2 ~@2 g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3]/3",
  V: "~@4 g#1 ~@3 b1@2 ~@2 b1@2 ~@2 e1@2 ~@2 e1@2 ~@2 e1@2 ~@2 e1@2 ~@2",
  W: "[g#1@9 ~@3 g#1 ~@3 g#1@2 ~@2 g#1 ~@3 g#1@12 ~ g#1 ~@2 g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1@8]/2",
  X: "~@4 g#1 ~@3 g#1@2 ~@2 g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3",
  Y: "b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 e1@2 ~@2 e1@2 ~@2 e1@2 ~@3 e1@2 ~",
  Z: "[g#1@9 ~@3 g#1 ~@3 g#1@2 ~@2 g#1 ~@3 g#1@12 g#1 ~@3 g#1@2 ~@2 g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3]/2",
  AA: "b1 ~@3 b1@2 ~@2 b1@2 ~@2 b1 ~@2 e1@2 ~@3 e1@2 ~@3 e1@2 ~ e1 ~@3",
  AB: "[e1@63 f#1@34 ~@3 f#1 ~@3 f#1 ~@3 f#1 ~@3 f#1 ~@2 f#1 ~@4 f#1 ~@2 f#1 ~@4]/4",
  AC: "g#1 ~@4 g#1 ~@2 g#1 ~@3 g#1 ~@3 b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@2 ~@2",
  AD: "b1 ~@3 b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 c#2 ~@3 c#2 ~@3 c#2 ~@3 c#2 ~@3",
  AE: "g#1 ~@3 g#1 ~@3 g#1@2 ~@2 g#1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@2 ~@2",
  AF: "c#2@2 ~@2 c#2 ~@3 c#2 ~@2 e2@18 ~@3",
  AG: "[e1@29 ~@3 e1 ~@3 e1 ~@2 e1 ~@3 e1 ~@3 e1 ~@3 e1@2 ~@2 e1@2 ~@2 e1 ~@3 g#1, e2@23 ~@9]/2",
  AH: "~@3 g#1@2 ~@2 g#1@3 ~ g#1@3 ~@2 b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1 ~@3",
  AI: "g#1 ~@3 g#1@2 ~@2 g#1@2 ~@2 g#1@2 ~@2 b1@2 ~ b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 c#2",
  AJ: "[~@3 c#2 ~@3 c#2 ~@3 c#2 ~@3 e2@2 ~@2 e2 ~@3 e2 ~@3 e2 ~@3 b1@2 ~@3 b1@2 ~ b1@2 ~@2 b1@2 ~@2 c#2 ~@3 c#2 ~@3 c#2 ~@3 c#2 ~@3 e2]/2",
  AK: "~@3 e2 ~@3 e2 ~@3 e2 ~@3 f#1 ~@3 f#1 ~@3 f#1@3 ~@2 g1@4",
  AL: "[c#2 ~@7 c#2 ~@2 c#2 ~@3 e2@2 ~@3 e2 ~@11 e1@47 ~ f#1@64 e1@62 ~ f#1@34 ~@4 f#1 ~@3 f#1 ~@2 f#1 ~@3, ~@24 e2@21 ~@211]/8",
  AM: "f#1 ~@3 f#1 ~@3 f#1 ~@3 f#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3",
  AN: "e2 ~@3 e2 ~@3 e2 ~@3 e2 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3",
  AO: "e2 ~@3 e2 ~@2 e2@2 ~@3 e2 ~@3 b1 ~@3 b1 ~@3 b1 ~@3 b1 ~@3",
  AP: "f#1 ~@3 f#1 ~@3 f#1@4 g1@2 ~@2 b1 ~@3 b1@2 ~@2 b1@2 ~@2 b1 ~@3",
  AQ: "c#2 ~@3 c#2 ~@2 b1@2 ~@2 b1@2 ~@2 c#2 ~@4 c#2 ~@3 c#2 ~@3 c#2 ~@3",
  AR: "[e2@2 ~@2 e2@2 ~@2 e2@2 ~@2 e2@2 ~@3 g#1 ~@2 g#1 ~@3 g#1@2 ~@2 g#1@2 ~ b1@2 ~@3 b1@2 ~@2 b1@2 ~@2 b1 ~@3 c#2 ~@3 c#2 ~@3 c#2 ~@3 c#2 ~@2 e2@2 ~@3 e2 ~@3 e2 ~@3 e2 ~@3 g#1 ~@3 g#1 ~@3 g#1@2 ~@2 g#1@2 ~ b1@2 ~@3 b1@2 ~@2 b1@2 ~@2 b1 ~@3 c#2 ~@3 c#2 ~@3 c#2 ~@3 c#2 ~@2 e2@2 ~@3 e2 ~@3 e2 ~@3 e2 ~@3 b1 ~@3 b1 ~@3 b1@2 ~@2 b1 ~@3]/5",
  AS: "f#1 ~@3 f#1 ~@3 f#1@3 ~ g1@4 g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3",
  AT: "b1@2 ~@2 b1 ~@3 b1 ~@3 b1 ~@3 c#2 ~@3 c#2 ~@3 c#2 ~@3 c#2 ~@3",
  AU: "e2@12 ~@4 g#1 ~@3 g#1@2 ~@2 g#1 ~@3 g#1 ~@3", AV: "g#1 ~@3 g#1 ~@3 g#1@11 ~ g#1 ~@3 g#1 ~@3 g#1 ~@3",
  AW: "g#1 ~@3 g#1 ~@2 g#1@11 ~@2 g#1 ~@3 g#1 ~@3 g#1 ~@3",
  AX: "g#1 ~@3 g#1 ~@3 g#1 ~@3 a#1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1 ~@3",
  AY: "[e1@2 ~@2 e1@2 ~@2 e1@2 ~@2 e1 ~@3 g#1@54 ~@3 g#1 ~@22]/3",
})).s("gm_electric_bass_pick").gain(0.3)

// other · pad halo
const pad_halo = note("<~@22 A@4 ~@24 B@4 ~@8 C@2 D@2 ~@7 E@8 ~@25>".pickRestart({
  A: "[e2@61 ~@2 f#2@62 ~@3]/4", B: "[e2@64 f#2@2 ~@3 f#2@39 ~@4 f#2@15 ~, ~@66 f2@5 ~@57]/4",
  C: "[[e2,e3]@63 ~, f2 ~@31]/2", D: "[[e2,e3]@31 ~]/2",
  E: "[~@27 [e2,e3]@52 ~ f#3@63 [e2,e3]@64 f#3@49, ~@79 f#2@64 ~@113]/8", // E
})).s("gm_pad_halo").gain(0.56)

// other · pad halo
const pad_halo_2 = note("<~@22 A@2 B@2 ~@24 C@2 D@2 ~@8 E@4 ~@7 F@6 G@3 ~@24>".pickRestart({
  A: "[g#5@59 ~@5]/2", B: "f#5/2", C: "[g#5@61 ~@3]/2", D: "[f#5@61 ~@3]/2", E: "[[g#5,g#6]@59 ~@4 [g#5,g#6]@64 ~]/4",
  F: "[~@15 [g#5,g#6]@60 ~@5 [f#5,f#6]@60 ~@4 [g#5,g#6]@48]/6", G: "[~@8 [f#5,f#6]@31 ~@9]/3",
})).s("gm_pad_halo").gain(0.27)

// drums · kick
const kick = s("bd").struct(`<
  ~@2 A B A B A@5 C A@2 C@8 D E@2 F C@24 G H I J C K L C@5 M ~ H N C@6 O P Q M R I S I ~ T R@11 U R U R@6 I ~@3
>`.pickRestart({
  A: "~ x ~@11 x ~@3 x ~@14", B: "~ x ~@2 x ~@8 x ~@3 x ~@14", C: "x ~@2 x!2 ~@3", D: "x!2 ~@2 x ~@23 x ~@3",
  E: "~@3 x ~@4", F: "~ x!3 ~@4", G: "x!2 ~@2 x ~@2 x", H: "x!2 ~@2", I: "x!2", J: "~@2 x!6",
  K: "x ~@11 x ~@3 x ~@10 x ~@4", L: "x ~ x!3 ~@3", M: "x", N: "~@11 x ~@3 x ~@4 x ~@2 x ~@8",
  O: "x ~@11 x ~@3 x ~@14 x", P: "~@11 x ~@4 x ~@15", Q: "~ x ~@5 x ~ x ~@6 x ~@11 x ~@3", R: "x ~@3 x ~@2 x",
  S: "x ~@2 x!2 ~@2 x", T: "~@4 x ~@3 x ~@4 x ~@2 x ~@11 x ~@3", U: "~@4 x ~@2 x",
})).gain(0.5)

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@22 A B C D ~@24 E F G H ~@10 I J ~@9 K F L ~@28>".pickRestart({
  A: "~@3 x", B: "~ x ~@2", C: "~@2 x ~@2 x ~ x", D: "~ x ~@30", E: "~@11 x!2 ~@3", F: "~@3 x ~@4",
  G: "~@12 x ~@12 x ~@3 x ~@2", H: "~ x ~@6", I: "~@2 x!2", J: "x ~@2 x ~@3 x ~@24", K: "~@16 x ~@10 x ~@4", L: "~@7 x",
})).gain(0.3)

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

// drums · hihat
const hihat = s("hh").struct(`<
  ~@2 A@2 B A@10 C@7 D ~@3 C@24 ~@4 C@8 E ~@3 C@6 F G ~@7 H C@11 G C G C@6 I ~@3
>`.pickRestart({
  A: "~ x ~@7 x ~@7 x ~@7 x ~@6", B: "x!2 ~@7 x ~@7 x ~@7 x ~@6", C: "x!4", D: "~ x ~@30", E: "x",
  F: "x ~@7 x ~@7 x ~@7 x ~@6 x", G: "~ x!3", H: "~@2 x!2", I: "x!3 ~",
})).gain(0.5)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@2 A B A B A B A B A B A B C D C D C D C D ~@4 C D C D C D C D C D C D C D C D C D C D C D C D ~@4 C D C D C D C D
  ~@4 C D C D C D C D ~@7 E F D F D F D F D F D F D F D F D F D F D G ~@3
>`.pickRestart({
  A: "~@5 x ~@7 x ~@7 x ~@10", B: "~@5 x ~@7 x ~@7 x ~@7 x ~@2", C: "~ x ~ x ~ x ~@2", D: "~ x ~ x ~ x ~ x",
  E: "~@5 x ~ x", F: "~ x ~@3 x ~ x", G: "~ x ~@6",
})).gain(0.3)
// … 48 more lines

More by The Smashing Pumpkins