Strudelify

Mr Self Destruct

Nine Inch Nails

KeyD minorTempo106 bpm
0:00/0:00
// Mr Self Destruct — Nine Inch Nails
// 106.3 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 90 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(106.3/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 · piano · "Noise"
const piano = note("<~@75 A@8 B@7>".pickRestart({
  A: "[~@19 f2@2 ~@3 c3@7 ~@35 a2@6 ~@2 f2@7 ~@23 b2@5 ~@16 gb2@2 a2, c3@15 g3@8 ~ f2@5 ~@5 gb2@7 ~@3 c3@11 ~ f3@11 ~@5 eb3@5 ~@4 c3@12 ~ e3@10 ~@5 eb3@10 g2@4 ~@5, ~@5 c2@121 ~@2, ~@10 g2@8 gb2@11 ~@2 eb3@7 ~ d2@10 ~ g2@10 gb2@13 ~@10 gb2@13 ~ f2@18 gb2@6 c3@7]/8",
  B: "[~@7 d3@5 ~@15 gb2 ~@19 f2@2 ~@24 c4@32 ~@7, ~@2 [d2,e2]@7 ~@3 c2@11 ~@10 c2@10 ~@8 e3@22 ~@39, ~@14 gb2@6 ~@7 e2@15 ~@5 g2@9 ~@3 f2@10 ~@43, ~@15 c3@5 ~ eb3@15 ~ b2@15 c2@25 ~@35, ~@18 g2@10 ~@13 gb2@26 d2@13 ~@32]/7", // Dsus2
})).s("gm_piano").gain(0.31)

// other · oboe · "Soundtrk"
const oboe = note("<~@48 A B@2 C@2 D E F@3 G ~@31>".pickRestart({
  A: "~@7 f5@9", B: "[~@15 c5@2 d5@5 f5@4 d5@6]/2", C: "[~@5 d5@10 d5@4 f5@4 d5@5 c5@4, c5@7 ~@25]/2",
  D: "d5@4 f5@3 d5@5 c5@4", E: "d5@3 f5@5 d5@4 c5@4",
  F: "[~@4 f5@3 d5@6 c5@3 d5@3 f5@4 d5@4 c5@4 d5@5 f5@3 d5@4 c5@5, d5@5 ~@43, ~ d3@44 ~@3]/3", G: "d5@3 ~@13",
})).s("gm_oboe").gain(0.15)

// other · oboe · "Soundtrk" · soft notes
const oboe_soft = note("<~@40 A@3 B@8 ~@39>".pickRestart({
  A: "[~@13 d3@35]/3", B: "[~@55 f5@8 ~@17 d5@7 ~@9 d5@15 ~@17, ~ d3@15, ~@37 d5@20 ~@7 d5@12 ~@52, ~@36 c5@5 ~@23]/8",
})).s("gm_oboe").gain(0.04)

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

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

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

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

stack(piano, oboe, oboe_soft, kick, pedal_hat, open_hat, high_tom)

More by Nine Inch Nails