Strudelify
KeyG majorTempo126 bpm
0:00/0:00
// Zero — The Smashing Pumpkins
// 126 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 40, 4/4 at bar 40) are rendered on a constant 4/4 grid of one bar per cycle
// note: ch 1 "Billy Corgan-Vocals" named as an organ, played on drawbar organ (its tenor sax patch is not one)
// note: Full arrangement: all 86 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): James Iha-Guitar 1.
setcpm(126/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.

// other · overdriven guitar · "James Iha-Guitar 1"
const overdriven_guitar = note("<A B C ~@3 D ~@18 E ~@4 F ~@3 F G ~@50>".pickRestart({
  A: "~@8 [c4,c5] ~ [b3,b4] ~ [b3,b4] ~ d4 ~", // C B
  B: "b5@2 g#5@2 e3 ~ [c4,c5] ~ [c4,c5] ~ [b3,b4] ~ [b3,b4] ~ d4 ~, b4 ~ g#4 ~@13", // C B
  C: "b5@2 g#5@2 e3 ~ e3 ~@9, b4 ~ g#4 ~@13", D: "~@4 e3 ~ e3 ~@9", E: "~@4 e3 ~ e3!2 ~@8", F: "~@14 d4 ~",
  G: "~@2 g#5@3 ~@11, ~@2 g#3 ~@13",
})).s("gm_overdriven_guitar").gain(0.41)

// bass · slap bass 1 · "D'arcy-Bass"
const bass = note(`<
  ~@2 A B C B C B C B C B C B D E F E F E F E G A B C B C B C B C B C B H I@2 J ~ K L K L K L K L K L K L M N M N M N M
  N ~ O L O L O L O L M N M N M N M N K L K L K L K P ~
>`.pickRestart({
  A: "~@8 c2 ~ b1 ~ b1 ~ e1 ~", B: "e1 ~ e1 ~ e1 ~ c2 ~ c2 ~ b1 ~ b1 ~ e1 ~",
  C: "e1 ~ e1 ~ e1 ~ e1 ~ c2 ~ b1 ~ b1 ~ e1 ~", D: "e1 ~ e1 ~ e1 ~ e1 ~ e2 ~ e1 ~ e1 ~ e2 ~",
  E: "e1 ~ e1 ~ e2 ~ e1 ~ e1 ~ e2 ~ e1 ~ e1 ~", F: "f#2 ~ d2 ~ d2 ~ d2 ~ e2 ~ e1 ~ e1 ~ e2 ~",
  G: "f#2 ~ d2 ~ d2 ~ d2 ~@9", H: "e1 ~ e1 ~ e1 ~ e1 ~ e2 ~ e2 ~ e2@3 ~", I: "~@8 e2 ~ e2 ~ e2@3 ~",
  J: "~@8 e2 ~ e2 ~@5", K: "c2 ~ b1 ~ b1 ~ e1 ~ e1 ~ e1 ~ e1 ~ c2 ~", L: "c2 ~ b1 ~ b1 ~ e1 ~ e1 ~ e1 ~ e1 ~ e1 ~",
  M: "e2 ~ e1 ~ e1 ~ e2 ~ e1 ~ e1 ~ e2 ~ e1 ~", N: "e1 ~ e2 ~ e1 ~ e1 ~ f#2 ~ d2 ~ d2 ~ d2 ~",
  O: "c2 ~ f1 ~ g1 ~ b1 ~ e1 ~ e1 ~ e1 ~ c2 ~", P: "c2 ~ b1 ~ b1 ~@11",
})).s("gm_slap_bass_1").gain(0.41)

// other · distortion guitar · "Billy Corgan-Guitar 2"
const distortion_guitar = note(`<
  ~@2 A B C B D B C B C B C B E F G F H F I F J A B K B L B C M N B C M O P@2 Q ~ R S@3 T U T U T U T U V W V X V Y V Z
  AA AB AC@2 AD AE@2 AF AG V X V X AH AI AJ AK AL AM AN AO AP AQ AP AR ~
>`.pickRestart({
  A: "~@8 [c4,c5] ~ [b3,b4] ~ [b3,b4] ~ d4 ~", // C B
  B: "b5@2 g#5@2 e3 ~ [c4,c5] ~ [c4,c5] ~ [b3,b4] ~ [b3,b4] ~ d4 ~, b3 ~ g#3 ~@13", // C B
  C: "b5@2 g#5@2 e3 ~ e3 ~ [c4,c5] ~ [b3,b4] ~ [b3,b4] ~ d4 ~, b3 ~ g#3 ~@13", // C B
  D: "b3 ~ g#3 ~ g4@3 ~ [c4,c5] ~ [b3,b4] ~ [b3,b4] ~ d4 ~", // C B
  E: "b5@2 g#5@2 e3 ~ e3 ~ [e4,e5] ~ e3 ~ e3 ~ [f#4,f#5] ~, b3 ~ g#3 ~@13", // E F#
  F: "e3 ~ e3 ~ [e4,e5] ~ e3 ~ e3 ~ [g4,g5] ~ e3 ~ e3 ~", // E G
  G: "[f#4,f#5] ~ [d4,f#4,f#5] ~ [d4,f#4,f#5] ~ e3 ~ [e4,e5] ~ e3 ~ e3 ~ [f#4,f#5] ~", // F# D E F#
  H: "[f#4,f#5] ~ [a4,a5] ~ [a4,a5] ~ [a4,a5] ~ [e4,e5] ~ e3 ~ e3 ~ [f#4,f#5] ~", // F# A E F#
  I: "[f#4,f#5] ~ [d4,f#4,f#5] ~ [d4,f#4,f#5] ~ [e4,e5]!3 ~ e3 ~ e3 ~ [f#4,f#5] ~", // F# D E F#
  J: "[f#4,f#5] ~ [d4,f#4,f#5] ~ [d4,f#4,f#5] ~ d4 ~@9", // F# D
  K: "b5@2 g#5@2 f#4@3 ~ [c4,c5] ~ [b3,b4] ~ [b3,b4] ~ d4 ~, b3 ~ g#3 ~@13", // C B
  L: "[g#3,c#4,f#4,b4,b5]@3 ~ e4@3 ~ [c4,c5] ~ [b3,b4] ~ [b3,b4] ~ d4 ~", // G#m7 C B
  M: "b5@2 g#5@2 e3 ~ [c4,c5] ~ [c4,c5] ~ [b3,b4] ~ [b3,b4] ~@3, b3 ~ g#3 ~@13", // C B
  N: "e4@3 ~ g4@3 ~ [c4,c5] ~ [b3,b4] ~ [b3,b4] ~ d4 ~", // C B
  O: "[g4,b4,d5]@3 ~ e3 ~ e3 ~ [e3,e4,b4,e5] ~ [e3,e4,b4,e5] ~ [e3,e4,b4,e5]@3 ~", // G E5
  P: "~@8 [e3,e4,b4,e5] ~ [e3,e4,b4,e5] ~ [e3,e4,b4,e5]@3 ~", Q: "~@8 [e3,e4,b4,e5] ~ [e3,e4,b4,e5] ~@5",
  R: "[c4,c5] ~ [b3,b4,d#5,g5] ~ [b3,b4,e5,g#5] ~ [d4,e5,g#5] ~ [e5,g#5,b5]@2 [g#3,g#5]@2 [e3,e5,g#5] ~ [c4,a#4,c5,d5] ~, ~@8 b3 ~@7", // C Baug E E7 E G# E Gm
  S: "[[c4,a#4,c5,d5] ~ [b3,b4,c5,e5] ~ [b3,b4,c6,e6] ~ [d4,c6,e6] ~ [b3,c6,e6] ~ [g#3,c6,e6] ~ e3 ~ e3 ~ [c4,c5] ~ [b3,b4,d#5,g5] ~ [b3,b4,e5,g#5] ~ [d4,e5,g#5] ~ [e5,g#5,b5]@2 [g#3,g#5]@2 [e3,e5,g#5] ~ [c4,a#4,c5,d5] ~ [c4,c5] ~ [b3,b4] ~ [e6,g#6]@2 a3 ~ [f6,a6]@2 g3 ~ e4 ~ e3 ~, ~@8 b5@2 g#5@2 [f5,a#5]@8 ~@2 d#6@4 ~@2 [d#6,f#6]@7 ~@13, ~@22 b5@2 b3 ~@11 [b3,b4] ~@3 b3 ~@7]/3", // Gm Cmaj7 C Cmaj7 G#aug C Baug E …
  T: "[c4,c5] ~ [b3,b4] ~ [b3,b4] ~ d4 ~ b5@2 g#5@2 e3 ~ [c4,c5] ~, ~@8 b3 ~ g#3 ~@5", // C B C
  U: "[c4,c5] ~ [b3,b4] ~ [b3,b4] ~ d4 ~ b5@2 g#5@2 e3 ~ e3 ~, ~@8 b3 ~ g#3 ~@5", // C B
  V: "[e4,e5] ~ e3 ~ e3 ~ [f#4,f#5] ~ e3 ~ e3 ~ [e4,e5] ~ e3 ~", // E F# E
  W: "e3 ~ [g4,g5] ~ e3 ~ e3 ~ [f#4,f#5] ~ [d4,f#4,f#5] ~ [d4,f#4,f#5] ~ e3 ~", // G F# D
  X: "e3 ~ [g4,g5] ~ e3 ~ e3 ~ [f#4,f#5] ~ [a4,a5] ~ [a4,a5] ~ [a4,a5] ~", // G F# A
  Y: "e3 ~ [g4,g5] ~ e3 ~ e3 ~ [f#4,f#5] ~ [d4,f#4,f#5] ~ [d4,f#4,f#5] ~ [e4,e5]!2", // G F# D E
  Z: "e3 ~ [g4,g5] ~ e3 ~ e3 ~ [f#4,f#5] ~ [d4,f#4,f#5] ~ [d4,f#4,f#5] ~ d4 ~", // G F# D
  AA: "[b5,c6] [a#5,b5] [g#5,a5,a#5] [f#5,g5,g#5] [e5,f5,f#5] [d5,d#5,e5] [c5,c#5,d5] [a#4,b4,c5] [g#4,a4,a#4] [f#4,g4,g#4] [e4,f4,f#4] [d4,d#4,e4] [c4,c#4,d4] [a#3,b3,c4] [g#3,a3,a#3] [f#3,g3,g#3]", // Cmaj7 Bmaj7
  AB: "[g5,c#6]@2 f3 ~ [g3,g5,c#6] ~ [b3,g5,c#6] ~ [e3,f5,g5] [g5,b5] e3 [g5,c#6] [g5,c#6]@2 [c4,c5] ~, [f#3,c4] ~@11 e3 ~@3", // Gdim C#m7b5 Em G Gdim C F#dim
  AC: "[[c4,c5,e5,e6]@2 [b3,b4] [d#5,d#6] [b3,b4,d#5,d#6]@2 e3 [a#4,c#6] [a#4,c#6]@2 e3 ~ e3 ~ e3 ~ c4 ~ f3 ~ [g3,g4,e5] [a4,f5] [g4,e5]@2 e3 ~ [e3,c#6] ~ [b5,f#6]@2 [c4,c5] ~, ~@8 e3 ~@3 [g5,c#6]@7 ~@3 b3 ~@5 e3 ~@3]/2", // C B D# B A#m C Dm C …
  AD: "[c4,c5,a5,d6] [g5,c6] [b3,b4,f5,a#5] [g5,c6] [b3,b4,c#6] d6 [e3,e6] ~ d#6@2 e3 ~ [e4,g4,b4]@2 e3 ~, ~@8 e3 ~@3 e3 ~@3", // D7 C5 A# C5 Bsus2 E Em
  AE: "[c4 ~ f3 ~ g3 ~ b3 ~ e3 ~ e3 ~ e3 ~ [c4,c5] ~ [c4,c5] ~ [b3,b4] e6 [b3,e4,g4,b4] [g4,b4,d5] e3 e6 [b5,f#6]@2 e3 ~ [e3,e4,g4,b4] ~ [e3,f5,a5,c6] ~, e6@8 ~@6 e6@4 ~@6 e3 ~@7, ~@2 f#6@5 ~@25]/2", // C B Em G B5 Em Fmaj7
  AF: "e6@2 f3 ~ [e6,a6]@2 b3 ~ [d#6,f#6]@2 e3 ~ [b5,e6]@2 [c4,c5] ~, c4 ~@3 g3 ~@3 e3 ~@3 e3 ~@3", // A5 D#m E5 C
  AG: "[b4,d5,f5]@2 [b3,b4] ~ [b3,b4,g6,c7] ~ [e3,b4] ~ [e3,a5] ~ [e3,b5] ~ [e3,b5] ~ [e3,e4,g4,b4] ~, [c4,c5] ~@15", // Bdim B Cmaj7 E5 A5 E5 Em C
  AH: "[e4,e5] ~ [e3,f4,f5] [f4,f5] [e3,f4,f5] ~ [f4,f#4,f5,f#5] [g4,g5] [e3,g4,g5] [g4,g5] [e3,g4,g5] ~ [e4,g4,e5,g5] [a4,a5] [e3,a4,a5] [a4,a5]", // E Fmaj7 F Fmaj7 F#maj7 G Em G …
  AI: "[e3,a4,a5] ~ [g4,a4,g5,a5] [b4,b5] [e3,b4,b5] [b4,b5] [e3,b4,b5] ~ [f#4,c5,f#5,c6] ~ [a4,c5,a5,c6] [c5,c6] [a4,c5,a5,c6] ~ [a4,d5,a5,d6] [d5,d6]", // A5 Gsus2 B E5 B E5 F#dim Am …
  AJ: "[e4,d5,e5,d6] [e5,e6] [e3,e5,e6] [e5,e6] [e3,e5,e6] ~ [f#4,e5,f#5,e6] [f5,f6] [e3,f5,f6] [f5,f6] [e3,f5,f6] ~ [e4,e5,f5,f6] [g5,g6] [e3,g5,g6] [g5,g6]", // E7 E F#7 F Fmaj7 F Fmaj7 G …
  AK: "[e3,g5,g6] ~ [g4,g5,g6] [a5,a6] [e3,a5,a6] [a5,a6] [e3,a5,a6] ~ [f#4,f#5,a5,a6] [b5,b6] [a4,a5,b5,b6] [b5,b6] [a4,a5,e6] ~ [a4,a5,e6] ~", // Em G A A5 A A5 F#m B …
  AL: "[c4,c5] ~ [b3,b4] ~ [b3,b4] ~ d4 ~ [b5,e6]@2 g#5@2 e6@2 [c4,c5] ~, e6@2 ~@2 e6@2 ~@2 b3 ~ g#3 ~ e3 ~@3", // C B E5 C
  AM: "[c4,c5] ~ [b3,b4] ~ [b3,b4] ~ d4 ~ [e5,b5]@2 g#5@2 b4@2 e3 ~, e6@2 ~@2 e6@2 ~@2 b3 ~ g#3 ~ e3 ~@3", // C B E5
  AN: "[b3,c4,c5] ~ [b3,b4] ~ [a3,b3,c4,e4,b4] ~ d4 ~ b5@2 g#5@2 e6@2 [c4,c5] ~, ~@8 b3 ~ g#3 ~ e3 ~@3", // Cmaj7 B Am C
  AO: "[c4,c5] ~ [b3,b4] ~ [b3,b4] ~ e3 ~ [g3,c4,f#4,b4,e6]@3 ~ g4 ~ e3 ~, e6 ~ e6 ~@5", // C B Cmaj7
  AP: "[c4,c5] ~ [b3,b4] ~ [b3,b4] ~ d4 ~ [b5,e6]@2 g#5@2 e6@2 [c4,c5] ~, e6@5 ~@3 b3 ~ g#3 ~ e3 ~@3", // C B E5 C
  AQ: "[c4,c5] ~ [b3,b4] ~ [b3,b4] ~ d4 ~ [b5,e6]@2 g#5@2 e3 ~ e3 ~, e6@5 ~@3 b3 ~ g#3 ~@5", // C B E5
  AR: "[c4,c5] ~ [b3,b4] ~ [b3,b4] ~@11, e6 ~@7", // C B
})).s("gm_distortion_guitar").gain(0.36)

// drums · kick
const kick = s("bd").struct(`<
  ~@2 A B@12 C@3 A C@3 D A B@7 E B@2 F G H@2 I ~ J@12 C@3 D C@4 ~ C@9 D C D C D C D J@3 K J@3 D ~
>`.pickRestart({
  A: "~ x", B: "x!2 ~@2 x ~@3", C: "x!2", D: "x", E: "x!3 ~", F: "x!2 ~@2 x ~ x ~", G: "x ~ x ~ x!3 ~", H: "~@4 x!3 ~",
  I: "~@4 x!2 ~@2", J: "x ~@3 x!2 ~@2", K: "x ~ x!2",
})).gain(0.41)

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

// drums · low tom
const low_tom = s("lt").struct("<~@35 [~@4 x!2 ~@2]!4 ~@47>").gain(0.41)

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

// drums · china
const china = s("cr").struct("<~@2 A ~@20 A ~@3 A ~@3 A ~@8 B ~@36 B ~@3 B ~ B ~@2>".pickRestart({
  A: "~ x", B: "x",
})).gain(0.41)

// drums · ride bell
const ride_bell = s("rd").struct("<~@2 A B@11 C ~@8 A B@11 C ~@4 B@12 ~@25 B@3 ~ B@3 C ~>".pickRestart({
  A: "~@2 x!2", B: "x!4", C: "x!2 ~@2",
})).gain(0.41)

stack(overdriven_guitar, bass, distortion_guitar, kick, snare, low_tom, open_hat, china, ride_bell)

More by The Smashing Pumpkins