Strudelify
Dead Souls cover art

The Downward Spiral

Dead Souls

Nine Inch Nails

KeyC majorTempo103 bpm
0:00/0:00
// Dead Souls — Nine Inch Nails
// 103 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 2 "Slap Bass 2" slap bass 2 (copy of ch 1 "Electric Bass (finger)" electric bass finger)
// note: Full arrangement: all 119 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(103/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 · electric bass finger · "Electric Bass (finger)"
const bass = note(`<
  A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 C@6 D E A@2 B@2 A@2 B@2 C@6 D E A@2 B@2 A@2 B@2 A@2 B@2 C@6 D E F@14
  G@2 C@6 D H C@6 D H A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 I@2 ~
>`.pickRestart({
  A: "[g1!4 g1@2 a#1 g1@2 f1 f1@6]/2", B: "[g1!4 g1@2 a#1 c2@2 f1 f1@6]/2", C: "[d#2!7 c3@2 c3!2 a#2@2 g2 f2@2]/2",
  D: "d#2!7 c3", E: "c3!2 a#2!2 g#2!2 g2!2", F: "g1!8", G: "[g1!7 g1@2 f1 f1@6]/2", H: "c3!8", I: "[g1!6 g1@10]/2",
})).s("gm_electric_bass_finger").gain(0.41).pan(0.2)

// chords · overdriven guitar · "Guitar"
const overdriven_guitar = note(`<
  ~@10 A@2 B@4 C@4 D@2 E@2 F@4 G@2 H@2 ~@6 I@2 F@4 J@2 H@2 K L K L ~@4 M N M O F@4 J@2 H@2 ~@15 P F@4 J@2 Q@2 F@4 J@2
  H@2 K L K ~@16
>`.pickRestart({
  A: "[~@5 f3 [f3,a#3] [g3,c4]@2 [g3,c4] [g3,c4]@6]/2", B: "[a#2 f3@2 a#2 f3@2 a#2 g3@2 a#2 f3@2 a#2@2 f3@2]/2",
  C: "[a#3!7 c4@2 f3 f3@4 f3@2]/2", D: "[[f3,a#3]!7 [g3,c4]@2 [f3,a#3] [f3,a#3]@4 [f3,a#3]@2]/2",
  E: "[[c3,f3]@2 [c3,f3]@2 [c3,f3]@2 [c3,f3]@2 [c3,f3]@2 [c3,f3]@2 [c3,f3]@2 [d3,g3]@4 [d3,g3]@2 ~@10 [f3,c4,f4,a4]!2, ~@5 [d3,g3]@3]/2", // F5 G5 F G5
  F: "[[f3,c4,f4,a4]@2 [f3,c4,f4,a4]@2 [f3,c4,f4,a4]@2 [d#3,a#3,d#4,g4]!2 [d#3,a#3,d#4,g4]@2 [d#3,a#3,d#4,g4]@2 [d#3,a#3,d#4,g4]@2 [a#2,f3,a#3,d4]@4 [c3,g3,c4,e4]@4 [a#2,f3,a#3,d4]@2 [c3,g3,c4,e4]@6 [f3,c4,f4,a4]!2]/2", // F D# A# C A# C F
  G: "[[f3,c4,f4,a4]@2 [f3,c4,f4,a4]@2 [f3,c4,f4,a4]@2 [d#3,a#3,d#4,g4]!2 [d#3,a#3,d#4,g4]@2 [d#3,a#3,d#4,g4]@2 [d#3,a#3,d#4,g4]@2 [a#2,f3,a#3,d4]@4 [c3,g3,c4,e4]@4 [a#2,f3,a#3,d4]@2 [c3,g3,c4,e4]@6 [a#2,f3,a#3,d4]!2]/2", // F D# A# C A# C A#
  H: "[[a#2,f3,a#3,d4]!7 [c3,g3,c4,e4]@9]/2", I: "[~@12 a#2@2 c3@4 f2@2 f2@10 [f3,c4,f4,a4]!2]/2",
  J: "[[f3,c4,f4,a4]@2 [f3,c4,f4,a4]@2 [f3,c4,f4,a4]@2 [d#3,a#3,d#4,g4]!2 [d#3,a#3,d#4,g4]@2 [d#3,a#3,d#4,g4]@2 [d#3,a#3,d#4,g4]@2 [a#2,f3,a#3,d4]@4 [c3,g3,c4,e4]@4 [a#2,f3,d4]@2 [c3,g3,c4,e4]@6 [a#2,f3,a#3,d4]!2]/2", // F D# A# C A# C A#
  K: "[f3,a#3,d4]!2", L: "[g3,c4,e4]!2", M: "[f3,a#3]!2", N: "[g3,c4]!2", O: "[g3,c4]@8 c4@6 [f3,c4,f4,a4]!2, ~ g3",
  P: "~@14 [f3,c4,f4,a4]!2", // F
  Q: "[[a#2,f3,a#3,d4]@2 [a#2,f3,a#3,d4]@2 [a#2,f3,a#3,d4]@2 [a#2,f3,a#3,d4]@2 [a#2,f3,a#3,d4]@2 [a#2,f3,a#3,d4]@2 [a#2,f3,a#3,d4]@2 [c4,e4]@16 [f3,c4,f4,a4]!2, ~@7 [c3,g3]@9]/2", // A# C F C5
})).s("gm_overdriven_guitar").gain(0.31).pan(0.3)

// chords · overdriven guitar · "Guitar" · soft notes
const overdriven_guitar_soft = note("<A@10 B ~@27 C ~@13 D E D E ~@47 E D E D E F G F G F G F G H@2 ~>".pickRestart({
  A: "[f3 [f3,a#3] f3 [f3,a#3] f3!2 [f3,a#3] [g3,c4]@2 [g3,c4] [g3,c4]@6]/2", B: "f3 [f3,a#3] f3 [f3,a#3] f3 ~@3",
  C: "g2!3 g2@3 ~@2", D: "[f3,a#3,d4]!2", E: "[g3,c4,e4]!2", F: "[f3,a#3]!2", G: "[g3,c4]!2", H: "[g3 c3@3]/2",
})).s("gm_overdriven_guitar").gain(0.15).pan(0.3)

// chords · pad sweep · "Pad 6 (metallic)"
const pad_sweep = note(`<
  ~@16 A B A B A B A B ~@8 A B A B A B A B ~@12 A B A B A B A B ~@8 C@8 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 D@2 ~
>`.pickRestart({
  A: "d4", B: "e4", C: "[~ g4@127]/8", D: "d4/2",
})).s("gm_pad_sweep").gain(0.32).pan(0.7)

// chords · pad sweep · "Pad 6 (metallic)" · soft notes
const pad_sweep_soft = note(`<
  ~@16 A B A B A B A B ~@8 A B A B A B A B ~@12 A B A B A B A B ~@16 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 ~@3
>`.pickRestart({
  A: "a#5", B: "c6",
})).s("gm_pad_sweep").gain(0.16).pan(0.7)

// drums · kick
const kick = s("bd").struct("<[x!2]!68 [x!2 ~@2 x!2 ~@2]!12 [x!2]!12 [x!2 ~@2 x!2 ~@2]!8 [x!2]!16 ~@3>").gain(0.8)

// drums · rim
const rim = s("rim").struct("<[~ x ~ x]!92 ~@8 [~ x ~ x]!16 ~@3>").gain(0.8)

// drums · snare
const snare = s("sd").struct("<~@92 [x!4]!8 ~@19>").gain(0.8)

// drums · low tom
const low_tom = s("lt").struct(`<
  A B A B A B A B A B A B A B A B A B A B A B A C A B A B A B A C A B A B A B A C A B A B A B A C A B A B A B A B A B A
  C A B A B A B A C ~@12 A B A C A B A B A B A@2 B A B A B A B A@2 B A B A B A B A B A C A B A C ~@3
>`.pickRestart({
  A: "x!5 ~ x!7 ~ x!2", B: "x!5 ~ x!7 ~ x ~", C: "x!5 ~ x!10",
})).gain(0.64)

// drums · hihat
const hihat = s("hh").struct("<~@92 [~ x ~ x ~ x ~ x]!8 ~@19>").gain(0.8)

// drums · crash
const crash = s("cr").struct("<~@40 A ~@7 A ~@11 A ~@23 A ~@4 A ~@2 A ~ A ~ A ~ A ~ A ~@18>".pickRestart({
  A: "x",
})).gain(0.64)

// drums · congas
const congas = s("conga:13").struct("<[~ x ~ x]!116 ~@3>").gain(2.56)

stack(
  bass, overdriven_guitar, overdriven_guitar_soft, pad_sweep, pad_sweep_soft, kick, rim, snare, low_tom, hihat, crash,
  congas
)

More by Nine Inch Nails