Strudelify

I Am Hell

White Zombie

KeyE♭ majorTempo153 bpm
0:00/0:00
// I Am Hell — White Zombie
// 153 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 105 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): guitar program 29.
setcpm(153/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("<~@54 [g2!8] ~@50>").s("gm_overdriven_guitar").gain(0.64)

// bass · electric bass pick
const bass = note(`<
  ~@4 A B A C D E D F D E D F D G D H D G D H A B A C A B A C D G D H D G D H A B A C A B A C I@16 J@8 D G D H D G D H A
  B A C A B A C I@16 K
>`.pickRestart({
  A: "eb1!8", B: "eb1!3 e1!5", C: "eb1!3 d1!5", D: "eb1@2 eb1!3 ~ eb1@2 ~@2 eb1@2 ~@4",
  E: "eb1@2 eb1!3 ~ e1@2 ~@2 e1@2 ~@4", F: "eb1@2 eb1!3 ~ d1@2 ~@2 d1@2 ~@4", G: "eb1@2 eb1!3 ~ eb1@2 ~@2 eb1@2 e1@4",
  H: "eb1@2 eb1!3 ~ eb1@2 ~@2 eb1@2 d1@4", I: "g1!8", J: "eb1/4", K: "g1 ~@7",
})).s("gm_electric_bass_pick").gain(0.64)

// chords · distortion guitar
const distortion_guitar = note(`<
  A B A C A D A E F G F H F G F H F I F J F I F J A D A E A D A E F I F J F I F J A D A E A D A E K@2 L M K@2 N M K@2 L
  M K@2 L M O@8 F I F J F I F J A D A E A D A E K@2 L M K@2 L M K@2 L M K@2 L M P
>`.pickRestart({
  A: "[eb1,bb2,eb3]!8", B: "[eb1,bb2,eb3]!3 [e1,b2,e3]!5, ~@3 e4@5", C: "[eb1,bb2,eb3]!3 [d1,a2,d3]!5, ~@3 d4@5",
  D: "[eb1,bb2,eb3]!3 [e1,b2,e3]!5", E: "[eb1,bb2,eb3]!3 [d1,a2,d3]!5",
  F: "[eb1,bb2,eb3]@2 [eb1,bb2,eb3]!3 ~ [eb1,bb2,eb3]@2 ~@2 [eb1,bb2,eb3]@2 ~@4", // Eb5
  G: "[eb1,bb2,eb3]@2 [eb1,bb2,eb3]!3 ~ [e1,b2,e3]@2 ~@2 [e1,b2,e3]@2 ~@4", // Eb5 E5
  H: "[eb1,bb2,eb3]@2 [eb1,bb2,eb3]!3 ~ [d1,a2,d3]@2 ~@2 [d1,a2,d3]@2 ~@4", // Eb5 D5
  I: "[eb1,bb2,eb3]@2 [eb1,bb2,eb3]!3 ~ [eb1,bb2,eb3]@2 ~@2 [eb1,bb2,eb3]@2 [e1,b2,e3]@4", // Eb5 E5
  J: "[eb1,bb2,eb3]@2 [eb1,bb2,eb3]!3 ~ [eb1,bb2,eb3]@2 ~@2 [eb1,bb2,eb3]@2 [d1,a2,d3]@4", K: "[g1,d3,g3]!8",
  L: "[g1,f3,bb3]!8", M: "[g1,ab3,db4]!8", N: "[bb1,f3,bb3]!8", O: "[eb1,bb2,eb3]/4", P: "[g1,d3,g3] ~@7",
})).s("gm_distortion_guitar").gain(0.64)

// drums · kick
const kick = s("bd").struct("<~@4 [x ~ x!2 ~@2 x ~@3 x ~@5]!100 x>").gain(0.64)

// drums · snare
const snare = s("sd").struct(`<
  ~@4 A B A B A B A@3 B A@3 B A@3 B A@3 B A B A B A B A B A@3 B A@3 B A B A B A B A B A B A B A B A B A B A B A B A B A
  B A B A B A B A@3 B A@3 B A B A B A B A B A B A B A B C@8 ~
>`.pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@7 x ~ x!2", C: "~@4 x ~@7 x!4",
})).gain(0.64)

// drums · hihat
const hihat = s("hh").struct("<~@8 [x!4]!16 ~@8 [x!4]!8 ~@24 [x!4]!16 ~@25>").gain(0.64)

// drums · open hat
const open_hat = s("oh").struct("<~@4 [~ x!3] [x!4]!3 ~@97>").gain(0.64)

// drums · crash
const crash = s("cr").struct("<~@4 x ~@91 [x!4]!8 x>").gain(0.64)

// drums · ride
const ride = s("rd").struct("<~@48 [x!4]!16 ~@24 [x!4]!8 ~@9>").gain(0.64)

// drums · tambourine
const tambourine = s("tb").struct("<[x!16]!104 x>").gain(0.64)

stack(overdriven_guitar, bass, distortion_guitar, kick, snare, hihat, open_hat, crash, ride, tambourine)

More by White Zombie