Strudelify
KeyE♭ majorTempo72 bpm
0:00/0:00
// Mayonaise — The Smashing Pumpkins
// 72 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (1/16 at bar 1, 4/4 at bar 2) are rendered on a constant 4/4 grid of one bar per cycle
// note: ch 2 "Clean Guitar 1" named as a guitar, played on electric guitar clean (its french horn patch is not one); ch 3 "Clean Guitar 2" named as a guitar, played on electric guitar clean (its french horn patch is not one); ch 4 "Acoustic Guitar 1" named as a guitar, played on acoustic guitar steel (its muted trumpet patch is not one); ch 5 "Bass Guitar" named as a bass, played on electric bass finger (its soprano sax patch is not one); ch 6 "Distorted Guitar 1" named as a guitar, played on distortion guitar (its brass section patch is not one); ch 7 "Distorted Guitar 2" named as a guitar, played on distortion guitar (its brass section patch is not one); ch 8 "Fill Guitar w/dist" named as a guitar, played on electric guitar clean (its synth brass 1 patch is not one)
// note: Full arrangement: all 104 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): Distorted Guitar 1.
setcpm(72/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 · electric guitar clean · "Clean Guitar 1"
const electric_guitar_clean = note(`<
  A@2 B C A@2 B C D E F G H I J@2 ~@48 K L M N K L ~@26 A@2 B C A@2 B C
>`.pickRestart({
  A: "~@7 f3, bb2, ~ f3@2 f3@3 c4@2, ~@2 c4@3 bb3@3, ~ db4",
  B: "~@7 bb3, c3, ~ g3@2 g3@2 g3@3, ~@2 bb3@5 ~, ~@2 e4 db4",
  C: "~@3 bb3 ~@3 bb3, eb3, ~ bb3@2 ~ f4@4, ~ db4@2 db4, ~@5 bb3@2 ~",
  D: "[b2,g3]@4 [b2,g3,bb3]@3 [b2,g3,bb3] [b2,g3]!2 [b2,g3,bb3]@3 [b2,g3,bb3,db4]!3", // Em Eb Em Eb Gdim
  E: "[eb3,bb3,db4]@4 [eb3,bb3]@3 [eb3,bb3,db4]!3 [eb3,bb3,db4]@3 [eb3,bb3,db4]!2 ~", // Eb7 Eb5 Eb7
  F: "[b2,g3,bb3]@4 [b2,g3,bb3]@3 [b2,g3,bb3]!3 [b2,g3,bb3]@3 [b2,g3,bb3,db4]!3", // Eb Gdim
  G: "[eb3,bb3,db4]@4 [eb3,bb3,db4]@3 [eb3,bb3,db4]!3 [eb3,bb3,db4]@3 [eb3,bb3,db4]!2 bb2", // Eb7
  H: "[bb2,f3,bb3,c4,db4]@3 [bb2,f3,bb3,c4,db4] [bb2,f3,bb3,c4,db4]@3 [bb2,f3,bb3,c4,db4]!2 [bb2,f3,bb3,c4,db4]@2 [bb2,f3,bb3,c4,db4]@3 [bb2,f3,bb3,c4,db4]!2", // Bbm
  I: "[f2,d3,ab3,bb3,db4]@3 [f2,d3,ab3,bb3,db4] [f2,d3,ab3,bb3,db4]@3 [f2,d3,ab3,bb3,db4]@2 [f2,d3,ab3,bb3,db4]@2 [f2,d3,ab3,bb3,db4] [f2,d3,ab3,bb3,db4]@2 [f2,d3,ab3,bb3,db4]@2", // Bb7
  J: "[eb2,eb3,bb3]@3 [eb2,eb3,bb3] [eb2,eb3,bb3]@2 [eb2,eb3,bb3]!4 [eb2,eb3,bb3]@6", // Eb5
  K: "[bb2,f3,bb3]@2 [bb2,f3,bb3]@2 [bb2,f3,bb3]@2 [bb2,f3,bb3] [bb2,f3,bb3]@2 [bb2,f3,bb3]@2 [bb2,f3,bb3] [bb2,f3,bb3]@2 [bb2,f3,bb3]!2", // Bb5
  L: "[g2,d3,g3]@2 [g2,d3,g3]@2 [g2,d3,g3]@2 [g2,d3,g3] [g2,d3,g3]@2 [g2,d3,g3]@2 [g2,d3,g3] [g2,d3,g3]@2 [g2,d3,g3]!2", // G5
  M: "[eb2,eb3,bb3]@3 [eb2,eb3,bb3] [eb2,eb3,bb3]@2 [eb2,eb3,bb3]!4 [eb2,eb3,bb3]@3 [eb2,eb3,bb3]!3", // Eb5
  N: "[eb2,eb3,bb3]@2 [eb2,eb3,bb3]!2 [eb2,eb3,bb3]@2 [eb2,eb3,bb3] [eb2,eb3,bb3]@2 [eb2,eb3,bb3] [eb2,eb3,bb3]@2 [eb2,eb3,bb3]!4", // Eb5
})).s("gm_electric_guitar_clean").gain(0.19)

// chords · acoustic guitar steel · "Acoustic Guitar 1"
const acoustic_guitar_steel = note("<~@14 A@2 ~@48 B C D@2 B C ~@34>".pickRestart({
  A: "~ [g3,bb3,eb4]@15, [eb2,bb2,eb3]", // Eb Eb5
  B: "[f3,c4,d4]@2 [f3,c4,d4]@2 [f3,c4,d4]@2 [f3,c4,d4] [f3,c4,d4]@2 [f3,c4,d4]@2 [f3,c4,d4] [f3,c4,d4]@2 [f3,c4,d4]!2", // Dm7
  C: "[bb2,d3,a3]@2 [bb2,d3,a3]@2 [bb2,d3,a3]@2 [bb2,d3,a3] [bb2,d3,a3]@2 [bb2,d3,a3]@2 [bb2,d3,a3] [bb2,d3,a3]@2 [bb2,d3,a3]!2", // Bbmaj7
  D: "[eb3,bb3,eb4]@3 [eb3,bb3,eb4] [eb3,bb3,eb4]@2 [eb3,bb3,eb4]!2 [eb3,bb3,d4] [eb3,bb3,eb4] [eb3,bb3,d4]@3 [eb3,bb3,d4]!3", // Eb5 Ebmaj7 Eb5 Ebmaj7
})).s("gm_acoustic_guitar_steel").gain(0.45)

// bass · electric bass finger · "Bass Guitar"
const bass = note(`<
  ~@3 A B@2 ~@8 C@2 D E F G H I J@2 D K L M N O P Q R S T U V@2 W@2 D K L M N O P Q X E Y Z H AA AB Z AC AD AE AF AG AH
  AI AJ AK ~@5 AL@2 H E AB Z AM AN AO AP AQ AA AR AS AT AU AV AW H AX AY AZ H BA BB BC ~@8
>`.pickRestart({
  A: "~@2 f3 eb3@3 f3@2", B: "bb2", C: "eb2", D: "bb1@3 bb1 bb1@3 bb1@2 bb1@2 bb1 bb1@2 c2@2",
  E: "g1@3 g1 g1@2 g1 g1@2 g1@2 g1 g1@2 bb1@2", F: "eb1@3 eb1 eb1@2 eb2!8 eb2@2", G: "eb1@3 eb1 eb2@2 eb2!10",
  H: "bb1@2 bb1!2 bb1@2 bb1 bb1@2 bb1@2 bb1 bb1@2 c2@2", I: "g1@2 g1!5 g1@2 g1@2 g1 g1@2 bb1@2",
  J: "eb2@3 eb2 eb2@2 eb2!10", K: "g1!2 g1@4 g1 g1@2 g1@2 g1 g1@2 bb1@2", L: "eb2@2 eb2!2 eb2@3 eb2@2 eb2 eb2@2 eb2!4",
  M: "eb2@3 eb2 eb2@2 eb2 eb2@2 eb2 eb2@2 eb2!4", N: "bb1@3 bb1 bb1@2 bb1 bb1@2 bb1@2 bb1 bb1@2 c2@2",
  O: "g1@3 g1 g2@3 g1@2 g1@2 g1 g1@2 bb1@2", P: "eb2@2 eb2!2 eb2@2 eb2!4 eb2@2 eb2!4",
  Q: "eb2@2 eb2!2 eb2@2 eb2!5 eb2@2 eb2!3", R: "c2@2 g2 c3 c2@2 c3 g2 c3 g2 c2!2 c2@2 c2@2",
  S: "ab1@4 ab1@2 eb2@3 eb2!5 eb2@2", T: "c2@2 g2 c3 c2@2 c2 g2 c3 g2 c2!2 c2@2 c2@2", U: "ab1 ab1@3 ab1@2 eb2@3 eb2!7",
  V: "[f1@2 f1!2 f1@2 f1!2 f1@2 f1@2 ~@2 eb1@4 eb1@2 eb2!4 eb2@2 eb2@2 eb2!4]/2",
  W: "[f1@4 f1@2 f1!2 f1@2 g1@2 ~@2 ab1@4 ab1!8 ab1@2 ab1!4]/2", X: "bb1@4 bb1@2 ab1 bb1@2 bb1@2 bb1 bb1@2 c2@2",
  Y: "eb2@2 eb2@2 ~@2 eb2@4 eb2!6", Z: "eb2@2 eb2!2 eb2@2 eb2 eb2@2 eb2@2 eb2!5",
  AA: "g1@2 g1!2 g1@2 g1 g1@2 g1@2 g1 g1@2 bb1@2", AB: "eb2@2 eb2!2 ~@2 eb2@4 eb2!6",
  AC: "eb2@2 eb2!2 bb2@2 eb2!6 bb2 eb2 bb2!2", AD: "bb1!14 c2@2", AE: "eb2!7 eb2@2 eb2@2 eb2!5",
  AF: "bb1@2 bb1!5 bb1@2 bb1@2 bb1!5", AG: "c2@2 c2!2 c2@2 c3 f2@2 f2 c2@2 c2!4",
  AH: "eb2!4 eb2@2 eb2 eb2@2 eb2@2 eb2!5", AI: "ab2@4 ab2!4 g2 g2@3 g2!2 g2@2",
  AJ: "f2@2 f2 ~ c3@3 f3@2 c3 f2@2 f2!2 f2@2, ~@3 f2@4 ~@9", AK: "bb1", AL: "eb2!16",
  AM: "bb1@3 bb1 bb1@2 bb1 bb1@2 bb1@2 bb1 bb1@2 c2!2", AN: "g1@2 g1!2 g1@2 g1 g1@2 g1@2 g1!3 bb1@2",
  AO: "eb2@2 eb2!2 ~@2 eb2 eb2@3 eb2!6", AP: "ab1@2 ab1!5 ab1@2 ab1@2 ab1!5",
  AQ: "bb1@2 bb1!2 bb1@3 bb1@2 bb1@2 bb1 bb1@2 c2@2", AR: "eb2@2 eb2!2 eb2@2 eb3 eb2@2 eb2!7",
  AS: "eb2@2 eb2!5 eb2@2 eb2@2 eb2!3 f2@2", AT: "bb1@2 bb2!2 bb1@2 bb1 bb1@2 bb1@2 bb1 bb1@2 c2@2",
  AU: "g1@2 g1!2 g1@3 g1@2 g1@2 g1 g1@2 bb1@2", AV: "eb2@2 eb2 eb3 eb2@2 eb2 eb2@2 eb2!7", AW: "eb2!6 f2!4 g2!4 ab2!2",
  AX: "g1@2 g1!2 g2@3 g1@2 g1@2 g1 g1@2 bb1@2", AY: "eb2@2 eb2!2 ~@2 eb2@4 eb3!2 eb2!4",
  AZ: "ab1@2 ab1!2 ab1@2 ab1 ab1@2 ab1@2 ab1!3 ab1@2", BA: "g1@2 g1!2 g1@2 g1 g1@2 g1@2 g1 g2@2 bb1@2",
  BB: "eb2!2 ~ eb2@3 ~@2", BC: "eb2@2 ~ eb1@3 ~@2",
})).s("gm_electric_bass_finger").gain(0.57)

// chords · distortion guitar · "Distorted Guitar 1"
const distortion_guitar = note(`<
  ~@18 A@2 ~@2 A B ~@2 A@2 ~@2 A B ~ C D E ~ F ~@4 A@2 ~@2 A B G ~ H ~ G ~ H ~@2 I J K ~ L ~ M ~@7 N G ~ H ~ G ~ H ~ G
  ~@3 G ~@2 O G ~ H ~ G ~@11
>`.pickRestart({
  A: "bb2@3 [bb2,g3] [bb2,g3,bb3]@2 ~@10", B: "bb2@3 [bb2,g3] [bb2,g3,bb3]@2 ~@2 [g3,g4] [ab3,ab4] [g3,g4]@4 ~@2",
  C: "~@3 bb3@2 ~@3", D: "~@10 [c3,g3] ~@5", E: "~@5 bb2 ~@10", F: "~ [eb2,bb2] ~@6", G: "~@8 [bb2,f3,bb3] ~@7",
  H: "~@13 [eb2,bb2,eb3] ~@2", I: "~@10 bb2 ~@5", J: "bb2@2 bb2!2 bb2@2 bb2 ~@9", K: "~@14 bb2!2", L: "~@11 eb3 ~@4",
  M: "~@2 f2!2 ~@11 f2", N: "~@5 [f3,f4]!4 [g3,g4]!4 [ab3,ab4]!3",
  O: "~ [eb2,eb3,eb4] ~@3 [f3,f4]!4 [g3,g4]!4 [ab3,ab4]!3", // Eb F G Ab
})).s("gm_distortion_guitar").gain(0.32)

// chords · distortion guitar · "Distorted Guitar 2"
const distortion_guitar_2 = note(`<
  ~@16 A B C@2 A B C@2 A B C@2 A B C@2 D E F G H@2 I@2 A B C@2 A B C@2 J K L M J K L M N O P Q R S T U ~@6 V@2 W X Y Z W
  X Y AA W X AB@2 W X AB AC W X Y AA W X AD AE ~@8
>`.pickRestart({
  A: "[bb2,f3,bb3,c4]@3 [bb2,f3,bb3,c4] [bb2,f3,bb3,c4]@2 [bb2,f3,bb3,c4] [bb2,f3,bb3,c4]@2 [bb2,f3,bb3,c4]@2 [bb2,f3,bb3,c4] [bb2,f3,bb3,c4]@2 [bb2,f3,bb3,c4]!2", // Bbsus2
  B: "[g2,d3,bb3,c4]@2 [g2,d3,bb3,c4]!2 [g2,d3,bb3,c4]@2 [g2,d3,bb3,c4] [g2,d3,bb3,c4]@2 [g2,d3,bb3,c4]@2 [g2,d3,bb3,c4] [g2,d3,bb3,c4]@2 [g2,d3,bb3,c4] [eb2,bb2]", // Gm Eb5
  C: "[eb2,eb3]@3 [eb2,eb3] [eb2,eb3]@2 [eb2,eb3]!2 [d3,d4] [eb3,eb4] [d3,d4]@4 [eb2,bb2]!2", // Eb D Eb D Eb5
  D: "[c3,g3,bb3,db4]@3 [c3,g3,bb3,db4] [c3,g3,bb3,e4]@2 [c3,g3,bb3,e4] [c3,g3,bb3,db4]@2 [c3,g3,bb3,db4]!3 [c3,g3,bb3,e4]@2 [c3,g3,bb3,db4] [ab2,eb3]", // Gdim C7 Gdim C7 Gdim Ab5
  E: "[ab2,eb3,c4,f4]@3 [ab2,eb3,c4,eb4] [ab2,eb3] [bb2,f3] eb2@3 [eb2,eb3,bb3,eb4]!2 [eb2,eb3,bb3,eb4,gb4] [eb2,eb3,bb3,eb4,gb4]@2 b2!2", // Fm7 Ab Ab5 Bb5 Eb5 Ebm
  F: "[c3,g3,bb3,db4]@3 [c3,g3,bb3,db4] [c3,g3,bb3,db4]@2 [c3,g3,bb3,e4] [c3,g3,bb3,db4]@2 [c3,g3,bb3,db4]@2 [c3,g3,bb3,db4] [c3,g3,bb3,e4]@2 [c3,g3,bb3,db4] ~", // Gdim C7 Gdim C7 Gdim
  G: "[ab2,eb3,c4,db4,gb4]@3 [ab2,eb3,c4,f4]!3 [eb2,eb3,bb3,db4]@3 [eb2,eb3,bb3,db4]!3 [eb2,eb3,bb3,db4]@2 [eb2,eb3,bb3,db4]!2", // Ab7 Fm7 Eb7
  H: "[[f2,c3,bb3,c4,f4]@4 [f2,c3,bb3,c4,f4]@3 [f2,c3,bb3,c4,f4] [f2,c3,bb3,c4,f4]@2 [f2,c3,bb3,c4,f4]@2 ~@3 db4@5 [eb2,eb3,bb3,db4]@3 [eb2,eb3,bb3,db4] [eb2,eb3,bb3,db4]@2 [eb2,eb3,bb3,db4]@2 [eb2,eb3,bb3,db4]!4, ~@7 [eb2,eb3,bb3]@3 ~@6]/2", // Fsus4 Eb7 Eb5
  I: "[[f2,c3,g3,c4]@4 [f2,c3,g3,c4]@2 [f2,c3,g3,c4]!4 [g2,d3]@2 ~@2 [ab2,eb3,bb3,e4]@4 [ab2,eb3,bb3,db4]@2 [ab2,eb3,bb3,db4]@2 [ab2,eb3,bb3,db4]!3 [ab2,eb3,bb3,c4,db4] [ab2,eb3,bb3,c4,db4]@2 [ab2,eb3,bb3,c4,db4]!4]/2", // Fsus2 G5 Absus2 Absus4 Ab
  J: "[bb2,f3,bb3,c4,db4]@3 [bb2,f3,bb3,c4,db4] [bb2,f3,bb3,c4,db4]@2 [bb2,f3,bb3,c4,db4] [bb2,f3,bb3,c4,db4]@2 [bb2,f3,bb3,c4,db4]@2 [bb2,f3,bb3,c4,db4] [bb2,f3,bb3,c4,db4]@2 eb2!2", // Bbm
  K: "[g2,d3,a3,bb3,db4]@3 [g2,d3,a3,bb3,db4] [g2,d3,a3,bb3,db4]@2 [g2,d3,a3,bb3,db4] [g2,d3,a3,bb3,db4]@2 [g2,d3,a3,bb3,db4]@2 [g2,d3,a3,bb3,db4] [g2,d3,a3,bb3,db4]@2 bb2 eb2", // Gm
  L: "[eb2,eb3,bb3,db4]@3 [eb2,eb3,bb3,db4] ~@3 db4@3 [eb2,eb3,bb3,db4]@2 [eb2,eb3,bb3,db4]@2 [eb2,eb3,bb3,db4]!2, ~@3 [eb2,eb3,bb3]@2 ~@3", // Eb7 Eb5
  M: "[eb2,eb3,bb3,db4]@3 [eb2,eb3,bb3,db4] [eb2,eb3,bb3,db4]@2 [eb2,eb3,bb3,db4] [eb2,eb3,bb3,db4]@2 [eb2,eb3,bb3,db4]!3 [eb2,eb3,bb3,db4]@2 [eb2,eb3,bb3,db4]!2", // Eb7
  N: "[eb2,eb3,bb3]@2 [eb2,eb3,bb3]!2 [eb2,eb3,bb3]@2 [eb2,eb3,bb3]!2 [eb2,eb3,bb3]@2 [eb2,eb3,bb3]!2 [eb2,eb3,bb3]@2 [eb2,eb3,bb3]!2", // Eb5
  O: "[bb2,f3,bb3]@2 [bb2,f3,bb3]!2 [bb2,f3,bb3]@2 [bb2,f3,bb3] [bb2,f3,bb3]@2 [bb2,f3,bb3]@2 [bb2,f3,bb3] [bb2,f3,bb3]@2 [bb2,f3,bb3]!2", // Bb5
  P: "[eb2,eb3]@4 [eb2,eb3]@2 [eb2,eb3] [eb2,eb3]@2 [eb2,eb3]!3 [eb2,eb3]@2 [eb2,eb3]!2", // Eb
  Q: "[bb2,f3,bb3]@4 [bb2,f3,bb3]@2 [bb2,f3,bb3] [bb2,f3,bb3]@2 [bb2,f3,bb3]!5 eb2!2", // Bb5
  R: "[c3,g3,c4]@2 [c3,g3,c4]!2 [c3,g3,c4]@2 [c3,g3,c4] [c3,g3,c4]@2 [c3,g3,c4]!3 [c3,g3,c4]@2 [c3,g3,c4]!2", // C5
  S: "[eb2,eb3,bb3]@2 [eb2,eb3,bb3]!2 [eb2,eb3,bb3]@2 [eb2,eb3,bb3] [eb2,eb3,bb3]@2 [eb2,eb3,bb3]!2 ~ [eb2,eb3,bb3]@2 [eb2,eb3,bb3]!2", // Eb5
  T: "[ab2,eb3,bb3]@4 [ab2,eb3,bb3]!4 [g2,d3,bb3]@4 [g2,d3,bb3]!4", // Absus2 Gm
  U: "[f2,c3]@4 [f2,c3]!3 [f2,c3]@2 [f2,c3,bb3]@2 [f2,c3,bb3] [f2,c3,bb3]@2 [f2,c3,bb3]@2", V: "[eb2,eb3,bb3]!16",
  W: "[bb2,f3,bb3,d4]@3 [bb2,f3,bb3,d4] [bb2,f3,bb3,d4]@2 [bb2,f3,bb3,d4] [bb2,f3,bb3,d4]@2 [bb2,f3,bb3,d4]@2 [bb2,f3,bb3,d4] [bb2,f3,bb3,d4]@2 eb2!2", // Bb
  X: "[g2,d3,a3,bb3]@3 [g2,d3,a3,bb3] [g2,d3,a3,bb3]@2 [g2,d3,a3,bb3] [g2,d3,a3,bb3]@2 [g2,d3,a3,bb3]@2 [g2,d3,a3,bb3] [g2,d3,a3,bb3]@2 bb2 eb2", // Gm
  Y: "[eb2,eb3,bb3,d4]@3 [eb2,eb3,bb3,d4] ~@3 d4@3 [eb2,eb3,bb3,d4]@2 [eb2,eb3,bb3,d4]@2 [eb2,eb3,bb3,d4]!2, ~@3 [eb2,eb3,bb3]@2 ~@3", // Ebmaj7 Eb5
  Z: "[eb2,eb3,bb3,d4]@3 [eb2,eb3,bb3,d4] [eb2,eb3,bb3,d4]@2 [eb2,eb3,bb3,d4] [eb2,eb3,bb3,d4]@2 [eb2,eb3,bb3,d4]!3 [eb2,eb3,bb3,d4]@2 [eb2,eb3,bb3,d4]!2", // Ebmaj7
  AA: "[ab2,eb3,ab3,c4]@2 [ab2,eb3,ab3,c4]!2 [ab2,eb3,ab3,c4]@2 [ab2,eb3,ab3,c4] [ab2,eb3,ab3,c4]@2 [ab2,eb3,ab3,c4] [ab2,eb3,ab3,c4]@2 [ab2,eb3,ab3,c4]!4", // Ab
  AB: "[eb2,eb3,bb3,eb4]@2 [eb2,eb3,bb3,eb4]!2 [eb2,eb3,bb3,eb4]@2 [eb2,eb3,bb3,eb4] [eb2,eb3,bb3,eb4]@2 [eb2,eb3,bb3,eb4]@2 [eb2,eb3,bb3,eb4]!5", // Eb5
  AC: "[eb2,eb3,bb3,eb4]@2 [eb2,eb3,bb3,eb4]!2 [eb2,eb3,bb3,eb4]@2 [eb2,eb3,bb3,eb4]!2 [eb2,eb3,bb3,eb4]@2 [eb2,eb3,bb3,eb4]!6", // Eb5
  AD: "[eb2,eb3,bb3,d4]@2 ~ [eb2,eb3,bb3,d4]@3 ~@2", AE: "[eb2,eb3,bb3,d4]@2 ~ [eb2,eb3,bb3,d4]@5",
})).s("gm_distortion_guitar").gain(0.29)

// other · electric guitar clean · "Fill Guitar w/dist"
const electric_guitar_clean_2 = note(`<
  ~@36 A ~ A ~@11 B C ~@4 D E F G H I J K@2 ~@9 L M ~@2 N ~@11 O ~@13
>`.pickRestart({
  A: "~@11 eb4 b3@2 ~@2", B: "~@4 eb4 b3 ~@10", C: "~@5 bb3 ~@10, ~@2 b3 ~@5", D: "eb3 f3!4 g3!4 ab3!4 bb3!3",
  E: "bb3@3 [g3,ab3] ab3 g3 ab3 ab3@2 g3@2 db3 f3 g3@2 ~", F: "d3@11 c3 bb2 c3@2 c3",
  G: "f2 g2@2 f2!3 g2 c3@2 bb2!2 f3@2 eb3@3", H: "c3@6 bb2@6 f2 g2 f2 g2", I: "g2@6 eb2@3 eb2!6 ~",
  J: "ab3@4 g3 f3 g3 f3 bb3@4 ab3 g3 eb3@2, ~@8 g3 ~@7", K: "[c4@7 c4@2 ~ eb2@2 ab3 eb3@19]/2", L: "~@4 eb4 c4 ~@10",
  M: "~@5 bb3 ~@10, ~@2 c4 ~@5", N: "~@2 eb4 ~@5", O: "~@2 b3 ~@5",
})).s("gm_electric_guitar_clean").gain(0.64)

// drums · kick
const kick = s("bd").struct(`<
  ~@14 A B C@15 D E F E F G F G H C@7 D C@8 ~ C@3 D C@3 D ~@5 I@2 C@3 D C@3 D C@3 D C@3 D C@3 D C D ~@10
>`.pickRestart({
  A: "x ~@4 x ~@2", B: "x", C: "x ~@2 x ~@3 x ~ x ~ x ~@2 x!2", D: "x ~@2 x ~@3 x ~ x ~ x ~ x!2 ~",
  E: "x ~@2 x ~@3 x ~ x ~ x ~@4", F: "x!2", G: "x ~@2 x ~@3 x ~ x ~@6", H: "x ~@2 x ~@4", I: "x!16",
})).gain(0.62)

// drums · snare
const snare = s("sd").struct(`<
  ~@14 A B C@15 D E F E F G F G H C@7 D C@8 ~ C@3 D C@3 D ~@6 I C@3 D C@3 D C@3 D C@3 D C@3 D C D J@2 ~@8
>`.pickRestart({
  A: "~@5 x ~@2", B: "~ x", C: "~ x ~ x", D: "~@4 x ~@2 x ~ x ~ x ~ x!2 ~", E: "~@4 x ~@2 x ~ x ~ x!2 ~@3",
  F: "~@4 x ~@5 x!3 ~@3", G: "~@4 x ~@2 x ~ x ~@4 x ~", H: "~@4 x ~@3 x ~@3 x!3 ~", I: "~@4 x ~ x ~ x ~ x ~ x!4",
  J: "x",
})).gain(0.62)

// drums · mid tom
const mid_tom = s("mt").struct("<~@14 [~@12 x!2 ~@2] [~@8 x ~ x ~ x ~ x!2] ~@23 [~@4 x ~@3 x ~ x!2 ~@4] ~@64>")
  .gain(0.62)

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

// drums · crash
const crash = s("cr").struct(`<
  ~@14 A@3 ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ B ~ B ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ C A ~ A ~ A ~ A ~@7 D A ~@3 A
  ~@3 A ~@3 A ~@3 A ~@5 E@2 ~@8
>`.pickRestart({
  A: "x", B: "x ~@6 x", C: "x!4", D: "~@4 x ~ x ~ x ~ x ~ x!4", E: "~@3 x ~@4",
})).gain(0.62)

// drums · high tom
const high_tom = s("ht").struct("<~@56 [x!16] ~@47>").gain(0.62)

stack(
  electric_guitar_clean, acoustic_guitar_steel, bass, distortion_guitar, distortion_guitar_2, electric_guitar_clean_2,
  kick, snare, mid_tom, open_hat, crash, high_tom
)

More by The Smashing Pumpkins