Strudelify
Burn cover art

The Downward Spiral

Burn

Nine Inch Nails

KeyC majorTempo178 bpm
0:00/0:00
// Burn — Nine Inch Nails
// 178 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: ch 7 "Guitar III" named as a guitar, played on electric guitar clean (its lead 5 charang patch is not one); ch 12 "Guitar VI" named as a guitar, played on electric guitar clean (its lead 5 charang patch is not one)
// note: duplicate parts dropped: ch 7 "Guitar III" electric guitar clean (copy of ch 6 "Guitar II" distortion guitar); ch 9 "Guitar V" distortion guitar (copy of ch 8 "Guitar IV" overdriven guitar); ch 12 "Guitar VI" electric guitar clean (copy of ch 8 "Guitar IV" overdriven guitar)
// note: Full arrangement: all 218 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 II.
setcpm(178/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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 · synth drum · "drum track II"
const synth_drum = note(`<
  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 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 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 B A B A B A B A B A B ~@16 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 ~@58
>`.pickRestart({
  A: "c3!2 ~ c4 ~ c3!3", B: "c3!3 ~@5",
})).s("gm_synth_drum").gain(0.64)

// bass · lead 8 bass lead · "Synth Bass"
const bass = note("<~@16 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 ~@170>".pickRestart({
  A: "d1 g#1", B: "g1",
})).s("gm_lead_8_bass_lead").gain(0.29)

// other · pad poly · "Synth Leads"
const pad_poly = note("<~@33 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@33 A ~ A ~ A ~ A ~ A ~ A ~ A ~@124>".pickRestart({
  A: "~@6 c5 ~@3 c4 ~@5",
})).s("gm_pad_poly").gain(0.12)

// bass · lead 8 bass lead · "Synth Bass II"
const bass_2 = note(`<
  ~@64 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 ~@32 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 C@3 D E@2 ~@2 C@3 D E@2 ~@2 C@3 D E@2 ~@2 C@3 D E@2 ~@2 C@3 D E@2 ~@2 C@3 D E@2 ~@2 F@8 ~@2
>`.pickRestart({
  A: "d2 g#2", B: "g2@3 c3@2 c2@2 f2", C: "[d2!2 d2 d2]/3", D: "d2", E: "d2!2",
  F: "[d2@13 d2@13 d2@14 d2@15 d2@22 d2@11 d2@11 ~ d2@11 d2@11 ~@6]/8",
})).s("gm_lead_8_bass_lead").gain(0.36)

// other · overdriven guitar · "Guitar I"
const overdriven_guitar = note(`<
  ~@112 A B@2 C A B@2 ~ A B@2 C A B@2 ~@33 A B@2 C A B@2 ~ A B@2 C A B@2 ~ A B@2 C A B@2 ~ A B@2 C A B@2 ~ A B@2 C A B@2
  ~ A B@2 C A B@2 ~ D@3 E@2 F G@2 H@2
>`.pickRestart({
  A: "c4 d4!2 c4@3 c4 d4", B: "[d4 c4@3 c4 d4!2 c4@3 c4 d4!2 c4@3]/2", C: "f4 d4 c4 g4@2 f4@3",
  D: "[c4@2 d4@2 d4@2 c4@6 ~ c4@2 d4@2 d4@2 c4@7 c4@2 d4@2 ~ d4@2 c4@7 c4@2 ~ d4@2 d4@2 ~]/3",
  E: "[c4@7 f4@3 d4@2 c4@3 g4@5 ~ f4@8 c4@3]/2", F: "d4@3 d4@3 c4@8 c4@2",
  G: "[~ d4@3 d4@3 c4@8 c4@3 d4@3 d4@3 c4@8]/2", H: "[c4@3 d4@3 [c4,d4]@3 c4@20 ~@3]/2",
})).s("gm_overdriven_guitar").gain(0.36)

// other · overdriven guitar · "Guitar IV"
const overdriven_guitar_2 = note(`<
  ~@168 A@4 B@4 C@2 D@2 C@2 D@2 C@2 D@2 C@2 D@2 C@2 D@2 C@2 D@2 C@2 D@2 C@2 D@2 E@4 F@6
>`.pickRestart({
  A: "f#4/4", B: "[~ f#4@62 ~]/4", C: "[f#3@3 g3]/2", D: "[c3@3 c4]/2", E: "[f#3@26 g3@9 c3@29]/4",
  F: "[~@2 c4@11 f#3@34 g3@11 ~ c3@34 ~@3]/6",
})).s("gm_overdriven_guitar").gain(0.64)

// drums · kick
const kick = s("bd").struct(`<
  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 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 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 B A B A B A B A B A B C@15 D 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 C@39 E F@7 E ~@10
>`.pickRestart({
  A: "x ~ x ~@4 x", B: "~@3 x ~ x ~ x", C: "x ~@3 x!2 ~@2", D: "x!2 ~@3 x ~@2", E: "x!2", F: "x ~ x ~ x!3 ~",
})).gain(0.64)

// drums · snare
const snare = s("sd").struct(`<
  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 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 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 B A B A B A B A B A B C@15 D 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 C@39 E C@7 E ~@10
>`.pickRestart({
  A: "~ x", B: "~ x ~@5 x", C: "~ x ~ x", D: "~@3 x ~@2 x!2", E: "~@2 x!2 ~@2 x!2",
})).gain(0.64)

// drums · hihat
const hihat = s("hh").struct("<A@80 B@6 C B@7 D B A@16 E@15 A@17 B@16 E@48 ~@10>".pickRestart({
  A: "x!4", B: "x!8", C: "x!5 ~ x!2", D: "x ~ x!6", E: "x!16",
})).gain(0.64)

// drums · open hat
const open_hat = s("oh").struct("<~@33 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@24 B@8 ~@119 C ~@7 C ~@10>".pickRestart({
  A: "~@5 x ~@2", B: "~ x ~ x", C: "x!4",
})).gain(0.64)

stack(synth_drum, bass, pad_poly, bass_2, overdriven_guitar, overdriven_guitar_2, kick, snare, hihat, open_hat)

More by Nine Inch Nails