Strudelify
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: 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 B@3 C D C@2 E C F G H I J K L M C N O@2 P Q R S T U V W X@2 Y Z@3 AA AB@3 AC AD@2 AE AF AG@2 AH AI@4 AJ AK AL AM
  AN AO AP AQ AR@2 AS@2 AT AU AV AW@2 AX AY AZ@8 BA BB BC BD BE BF BG BH BI@4 BJ BF BK BL BM BN BO@2 BP BQ@3 ~
>`.pickRestart({
  A: "g#2 ~@3 g#2 ~@3 g#2@2 ~@2 g#2 ~@3 g#2 ~@3 g#2 ~@3 g#2 ~@3 g#2 ~@3",
  B: "g#2 ~@3 g#2 ~@3 g#2 ~@3 g#2 ~@3 g#2 ~@3 g#2 ~@3 g#2 ~@3 g#2 ~@3",
  C: "g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3",
  D: "g#1 ~@3 g#1 ~@4 g#1 ~@2 g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3",
  E: "b1 ~@3 b1 ~@3 b1 ~@4 b1 ~@2 e1@2 ~@2 e1@2 ~@2 e1@2 ~@2 e1@2 ~@2",
  F: "g#1 ~@3 g#1 ~@3 g#1 ~@4 g#1 ~@2 g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3",
  G: "g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@4 g#1 ~@2 g#1 ~@3 g#1 ~@3 g#1 ~@3",
  H: "[a1,b1] ~@3 b1 ~@3 b1 ~@3 b1@2 ~@2 e1@2 ~@2 e1@2 ~@3 e1@2 ~@2 e1@2 ~", // Asus2
  I: "~ g#1 ~@3 g#1 ~@2 g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3",
  J: "g#1 ~@3 g#1 ~@3 g#1 ~@4 g#1 ~@3 g#1 ~@2 g#1 ~@3 g#1 ~@3 g#1 ~@3",
  K: "g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@2 g#1 ~@4 g#1 ~@2 g#1 ~@4",
  L: "b1 ~@3 b1 ~@3 b1 ~@3 b1 ~@3 e1@2 ~@2 e1@2 ~@2 e1@2 ~@3 e1 ~@2",
  M: "g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@2 g#1 ~@4",
  N: "b1 ~@3 b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 e1 ~@3 e1@2 ~@2 e1@2 ~@2 e1 ~@3", O: "[e1@31 ~]/2", P: "f#1",
  Q: "~@5 f#1 ~@2 f#1 ~@3 f#1 ~@3 f#1 ~@3 f#1 ~@3 f#1 ~@3 f#1 ~@3",
  R: "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",
  S: "c#2 ~@3 c#2 ~@3 c#2 ~@3 c#2 ~@3 e2 ~@3 e2 ~@3 e2@2 ~@2 e2@2 ~@2",
  T: "~ 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",
  U: "c#2 ~@3 c#2 ~@3 c#2 ~@3 c#2 ~@3 e2@2 ~@2 e2 ~@3 e2@2 ~@2 e2 ~@3",
  V: "b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 c#2 ~@2 c#2 ~@4 c#2 ~@3 c#2 ~@3",
  W: "e2 ~@3 e2 ~@3 e2 ~@3 e2 ~@3 f#1 ~@3 f#1@2 ~@2 f#1@3 ~ g1@3 ~",
  X: "[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",
  Y: "~ g#1@6 ~ g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3",
  Z: "[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",
  AA: "b1 ~@3 b1 ~@3 b1@2 ~@2 b1@2 ~@2 e1@2 ~@2 e1@2 ~@2 e1@2 ~@2 e1@2 ~@2",
  AB: "[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 ~@3 g#1@2 ~@2 g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3]/3",
  AC: "~@4 g#1 ~@3 b1@2 ~@2 b1@2 ~@2 e1@2 ~@2 e1@2 ~@2 e1@2 ~@2 e1@2 ~@2",
  AD: "[g#1@9 ~@3 g#1 ~@3 g#1 ~@3 g#1@2 ~@2 g#1@11 ~@2 g#1 ~@2 g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1@8]/2",
  AE: "~@4 g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1@2 ~@2 g#1 ~@3 g#1 ~@3",
  AF: "b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 e1@2 ~@2 e1@2 ~@2 e1@2 ~@3 e1@2 ~",
  AG: "[g#1@9 ~@3 g#1 ~@3 g#1@2 ~@2 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 ~@3]/2",
  AH: "b1 ~@3 b1@2 ~@2 b1@2 ~@2 b1 ~@2 e1@2 ~@3 e1@2 ~@3 e1@2 ~ e1 ~@3",
  AI: "[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",
  AJ: "g#1 ~@3 g#1@2 ~@2 g#1@2 ~@2 g#1@3 ~ b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1 ~@3",
  AK: "c#2 ~@3 c#2 ~@3 c#2 ~@3 c#2 ~@3 e2 ~@3 e2 ~@3 e2 ~@3 e2@2 ~@2",
  AL: "g#1 ~@4 g#1 ~@2 g#1 ~@3 g#1 ~@3 b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@2 ~@2",
  AM: "c#2@2 ~@2 c#2 ~@3 c#2 ~@3 c#2 ~@3 e2 ~@2 e2 ~@4 e2 ~@2 e2 ~@4",
  AN: "b1 ~@3 b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 c#2 ~@3 c#2 ~@3 c#2 ~@3 c#2 ~@3",
  AO: "e2 ~@3 e2 ~@3 e2 ~@3 e2 ~@3 f#1 ~@3 f#1 ~@3 f#1@3 ~ g1@4",
  AP: "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",
  AQ: "c#2@2 ~@2 c#2 ~@3 c#2 ~@2 e2@18 ~@3", AR: "[e1@63 ~]/2",
  AS: "[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",
  AT: "~@3 g#1@2 ~@2 g#1@3 ~ g#1@3 ~@2 b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1 ~@3",
  AU: "c#2 ~@3 c#2 ~@3 c#2 ~@3 c#2 ~@3 e2 ~@3 e2@2 ~@2 e2 ~@3 e2 ~@3",
  AV: "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",
  AW: "[~@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",
  AX: "~@3 e2 ~@3 e2 ~@3 e2 ~@3 f#1 ~@3 f#1 ~@3 f#1@3 ~@2 g1@4",
  AY: "g#1 ~@3 g#1 ~@3 g#1@2 ~@2 g#1@2 ~ b1@2 ~@3 b1@2 ~@2 b1@2 ~@2 b1@2 ~@2",
  AZ: "[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",
  BA: "f#1 ~@3 f#1 ~@3 f#1 ~@3 f#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3",
  BB: "b1@2 ~@2 b1 ~@3 b1 ~@3 b1 ~@3 c#2 ~@3 c#2 ~@3 c#2 ~@3 c#2 ~@3",
  BC: "e2 ~@3 e2 ~@3 e2 ~@3 e2 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3",
  BD: "b1 ~@3 b1 ~@3 b1@2 ~@2 b1 ~@3 c#2 ~@3 c#2 ~@3 c#2 ~@3 c#2 ~@3",
  BE: "e2 ~@3 e2 ~@2 e2@2 ~@3 e2 ~@3 b1 ~@3 b1 ~@3 b1 ~@3 b1 ~@3",
  BF: "c#2 ~@3 c#2 ~@3 c#2 ~@3 c#2 ~@3 e2 ~@3 e2 ~@3 e2 ~@3 e2 ~@3",
  BG: "f#1 ~@3 f#1 ~@3 f#1@4 g1@2 ~@2 b1 ~@3 b1@2 ~@2 b1@2 ~@2 b1 ~@3",
  BH: "c#2 ~@3 c#2 ~@2 b1@2 ~@2 b1@2 ~@2 c#2 ~@4 c#2 ~@3 c#2 ~@3 c#2 ~@3",
  BI: "[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 ~@2 b1@2 ~@3 b1 ~@3 b1 ~@3 c#2 ~@3 c#2 ~@3 c#2 ~@2 c#2 ~@3 e2]/4",
  BJ: "~@4 e2 ~@3 e2 ~@3 e2 ~@3 b1 ~@3 b1 ~@3 b1@2 ~@2 b1 ~@3",
  BK: "f#1 ~@3 f#1 ~@3 f#1@3 ~ g1@4 g#1 ~@3 g#1 ~@3 g#1 ~@3 g#1 ~@3",
  BL: "b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1 ~@3 c#2 ~@3 c#2 ~@3 c#2 ~@3 c#2 ~@3",
  BM: "e2@12 ~@4 g#1 ~@3 g#1@2 ~@2 g#1 ~@3 g#1 ~@3", BN: "g#1 ~@3 g#1 ~@3 g#1@11 ~ g#1 ~@3 g#1 ~@3 g#1 ~@3",
  BO: "g#1 ~@3 g#1 ~@2 g#1@11 ~@2 g#1 ~@3 g#1 ~@3 g#1 ~@3",
  BP: "g#1 ~@3 g#1 ~@3 g#1 ~@3 a#1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1@2 ~@2 b1 ~@3",
  BQ: "[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@11 C A@2 D C E F@2 G D@24 H I J K D L M D@5 N ~ O P D@4 Q D R S T N U J V J ~ W U@11 X U X U@6 J ~@3
>`.pickRestart({
  A: "~ x ~@11 x ~@3 x ~@14", B: "~ x ~@2 x ~@8 x ~@3 x ~@14", C: "~ x ~@10 x ~@3 x ~@15", D: "x ~@2 x!2 ~@3",
  E: "x!2 ~@2 x ~@23 x ~@3", F: "~@3 x ~@4", G: "~ x!3 ~@4", H: "x!2 ~@2 x ~@2 x", I: "x!2 ~@2", J: "x!2", K: "~@2 x!6",
  L: "x ~@11 x ~@3 x ~@10 x ~@4", M: "x ~ x!3 ~@3", N: "x", O: "x ~@8 x ~@22", P: "~@11 x ~@3 x ~@4 x ~@2 x ~@8",
  Q: "x ~@10 x ~@3 x ~@16", R: "x ~@11 x ~@3 x ~@14 x", S: "~@11 x ~@4 x ~@15", T: "~ x ~@5 x ~ x ~@6 x ~@11 x ~@3",
  U: "x ~@3 x ~@2 x", V: "x ~@2 x!2 ~@2 x", W: "~@4 x ~@3 x ~@4 x ~@2 x ~@11 x ~@3", X: "~@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@3 F B G H I B J K ~@2 L M N O N P N@3 Q N@3 R S N T N U N V N W N X Y ~@3 Z N AA N AB N R N@2
  ~@3 AC N AD N AB N AE N AF ~@7 AG N AH AI AJ N AK AL N AM N AN X AO X AP AQ N@3 AR AS ~@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: "~@9 x ~@15 x ~ x ~ x ~ x",
  G: "~@9 x ~@15 x ~@2 x ~ x ~", H: "~@8 x ~@3 x ~@11 x!2 ~@2 x ~@3", I: "~@8 x!2 ~@2 x ~ x ~@10 x ~ x ~ x ~@2",
  J: "~@8 x ~@9 x ~@6 x ~@2 x ~ x ~", K: "~@8 x ~ x ~@2 x ~ x ~@8 x ~@7", L: "~@7 x",
  M: "~ x ~@2 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~@3 x ~ x ~", N: "~ 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 ~@7 x ~ x!2", Y: "~@4 x!4 ~@4 x ~@3", Z: "~ x!7",
  AA: "~@8 x ~@12 x ~@2 x!3 ~@2 x!2 ~", AB: "~ x!3", AC: "~@3 x ~@3 x ~@3 x ~@3 x ~@4 x ~@2 x ~@8",
  AD: "~@4 x ~@5 x ~ x!4", AE: "~@4 x ~@4 x ~@2 x ~@3", AF: "~@7 x ~@16 x ~@7", AG: "~@4 x ~@3 x ~@4 x ~@10 x ~@7",
  AH: "x ~ x ~ x ~@7 x ~ x!2", AI: "~@8 x!2 ~@2 x ~ x ~@9 x ~@7", AJ: "x ~ x ~@3 x!2", AK: "~@8 x ~@15 x ~@4 x ~@2",
  AL: "~@7 x!2 ~@15 x ~@7", AM: "~@4 x ~@7 x ~@2 x", AN: "~@8 x ~@15 x ~@6 x", AO: "~@7 x!3 ~ x ~ x ~@10 x ~@6 x",
  AP: "~@2 x!2 ~@2 x ~", AQ: "x!2 ~ x", AR: "x ~ x ~ x!4 ~@4 x!4", AS: "~ x!2 ~@5",
})).gain(0.45)
// … 71 more lines

More by The Smashing Pumpkins