Strudelify

The Art of Self Destruction, Part One

Nine Inch Nails

KeyD minorTempo106 bpm
0:00/0:00
// The Art of Self Destruction, Part One — Nine Inch Nails
// 106 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 84 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(106/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.

// bass · synth bass 2 · "SynBass2"
const bass = note(`<
  A B A C A B A D A B A B A B A D A B A C A B A D A B A B A B A D A B ~@24 A D A B A D A B@2 A C A B A D A B A D A B A D
  A B A
>`.pickRestart({
  A: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~", B: "d3!12 c3@2 ab2@2", C: "d3!12 c3@2 ab2 ~",
  D: "d3!10 d3@2 c3@2 ab2@2",
})).s("gm_synth_bass_2").gain(0.51)

// chords · electric guitar muted · "Guitar 2"
const electric_guitar_muted = note("<~@34 A B C D A B E D F B G D H@2 I D G J C K L B M D ~@26>".pickRestart({
  A: "bb2@2 bb2 ~ bb2 ~ bb2 ~ b2 ~ b2 ~ b2 ~ b2 ~, d4@3 ~", B: "c3 ~ c3 ~ c3 ~ d3@4 d3@2 [c3,c4]@4",
  C: "bb2 ~ bb2 ~ bb2 ~ bb2 ~ b2 ~ b2 ~ b2 ~ b2 ~, d4@9 ~@7", D: "c3 ~ c3 ~ c3 ~ f2@3 ~ f2@2 d2@4",
  E: "bb2@2 bb2 ~ bb2 ~ bb2 ~ b2 ~ b2 ~ b2 ~ b2 ~, d4@4 a4@11 ~",
  F: "bb2 ~ bb2 ~ bb2 ~ bb2 ~ b2 ~ b2 ~ b2 ~ b2 ~, d4@11 ~@5",
  G: "bb2@2 bb2 ~ bb2 ~ bb2 ~ b2 ~ b2 ~ b2 ~ b2 ~, d4@4 a4@9 ~@3",
  H: "[bb2 ~ bb2 ~ bb2 ~ bb2 ~ b2 ~ b2 ~ b2 ~ b2 ~ c3 ~ c3 ~ c3 ~ d3@4 d3@2 [c3,c4]@4, d4@25 ~@7]/2", // C
  I: "bb2@2 bb2 ~ bb2 ~ bb2 ~ b2 ~ b2 ~ b2 ~ b2 ~, d4@9 ~@7", J: "c3 ~ c3 ~ c3 ~ d3@4 d3@2 c3@4",
  K: "c3 ~ c3 ~ c3 ~ f2@3 ~@3 d2@4, ~@5 f2 ~@2, ~@11 c4@5", L: "bb2@2 bb2 ~ bb2 ~ bb2 ~ b2 ~ b2 ~ b2 ~ b2 ~, d4@5 ~@11",
  M: "bb2 ~ bb2 ~ bb2 ~ bb2 ~ b2 ~ b2 ~ b2 ~ b2 ~, d4@2 a4@3 ~@3",
})).s("gm_electric_guitar_muted").gain(0.24)

// drums · kick
const kick = s("bd").struct("<[x!8]!34 ~@24 [x!8]!26>").gain(0.51)

// drums · pedal hat
const pedal_hat = s("hh").struct("<[~ x!15]!34 ~@24 [~ x!15]!26>").gain(0.51)

// drums · open hat
const open_hat = s("oh").struct("<x!34 ~@24 x!26>").gain(0.51)

// drums · high tom
const high_tom = s("ht").struct("<[x!15 ~]!34 ~@24 [x!15 ~]!26>").gain(0.51)

stack(bass, electric_guitar_muted, kick, pedal_hat, open_hat, high_tom)

More by Nine Inch Nails