Strudelify
Hurt cover art

1994 · The Downward Spiral

Hurt

Nine Inch Nails

KeyA majorTempo80 bpm
0:00/0:00
// Hurt — Nine Inch Nails
// 80 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: ch 5 "strings" named as a string part, played on string ensemble 1 (its choir aahs patch is not one)
// note: sustain pedal (CC 64) lengthens the held notes
// note: duplicate parts dropped: ch 1 "guitar" piano (copy of ch 2 "guitar" piano); ch 1 "guitar" acoustic guitar steel (copy of ch 2 "guitar" acoustic guitar steel)
// note: Full arrangement: all 100 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(80/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 · "guitar"
const piano = note("<~@8 A B@2 C@2 D@2 E@2 D@2 F@2 D@2 G ~@24 H@3 E@2 D@2 E@2 D@2 E@2 D@2 G I D@2 J ~@32>".pickRestart({
  A: "~ f4@3, b2, ~ f#3@7",
  B: "[~@13 d4@3, d3@4 e3@3 d5@3 f4@6, ~ a3@4 b3@4 f#3@7, ~@2 d4@4 d4@7 ~@3, ~@3 e4@5 b2@8]/2",
  C: "[~@13 d4@3, d3@7 d4@4 ~@5, ~ a3@3 e3@4 b2@8, ~@2 d4@3 b3@3 ~ f#3@7, ~@3 e4@7 f4@6]/2",
  D: "[~@5 f4@3, d3@4 e3@3 d5@4 ~@5, ~ a3@4 b3@4 f#3@7, ~@2 d4@4 d4@7 ~@3, ~@3 e4@5 b2@8]/2",
  E: "[~@13 d4@3, d3@7 d4@4 ~@5, ~ a3@3 e3@4 b2@8, ~@2 d4@3 b3@4 f#3@7, ~@3 e4@7 f4@6]/2",
  F: "[~@13 d4@3, d3@7 d4@3 f4@6, ~ a3@3 e3@4 b2@8, ~@2 d4@3 b3@4 f#3@7, ~@3 e4@8 ~@5]/2",
  G: "~@7 d4, d3, ~ a3@3 e3@4, ~@2 d4@3 b3@3, ~@3 e4@5",
  H: "[~@7 d4, b2@8 d3@4 e3@3 d5@3 f4@6, ~ f#3@7 ~ a3@4 b3@4 f#3@7, ~@2 f4@6 ~@3 e4@5 b2@8, ~@5 d4@4 ~ d4@4 d4@7 ~@3]/3",
  I: "~@5 d4@3, b2, ~ f#3@7, ~ f4@3", J: "~ e3, d3, ~ a3@4 ~@3, ~@2 d4@5 ~",
})).s("gm_piano").gain(0.62).pan(1)

// chords · acoustic guitar steel · "guitar"
const acoustic_guitar_steel = note(`<
  ~@24 A@3 B A@3 B A@3 B A@3 B A@3 B A@3 C@8 ~@13 D A@2 E@4 F G@8 ~@16
>`.pickRestart({
  A: "[a3,e4,a4]!4", B: "[a3,f#4,a4]!4", C: "[[a3,f#4,a4]!3 [f#4,a4]@29, ~@3 a3 ~@28]/8",
  D: "[a3,e4,a4] [a3,a4] [a3,e4,a4]!2, ~@2 e4 ~@5", // A5 A A5
  E: "[[a3,f#4,a4]!3 [a3,a4] [a3,e4,a4]!4 [a3,e4,a4]!4 [a3,e4,a4]!4, ~@3 f#4@13]/4", // D A A5
  F: "[a3,f#4,a4]!2 a3!2, ~ [f#4,a4]", G: "[a2,a3]!4",
})).s("gm_acoustic_guitar_steel").gain(0.54).pan(1)

// bass · acoustic bass · "bass"
const bass = note(`<
  ~@24 A B C D A B C D A B C D A B C D A B C D A B C D E@8 ~@12 A B C D A B C D A B C D A B C D A B C D A B C F G ~@7
>`.pickRestart({
  A: "a1!4", B: "b1!4", C: "g1!4", D: "d2!4", E: "b1/8", F: "a1@2 ~ d1@5", G: "b0",
})).s("gm_acoustic_bass").gain(0.56)

// other · string ensemble 1 · "strings"
const string_ensemble_1 = note("<A@8 ~@15 B@8 C D@2 E C D@2 E C ~@27 B@8 C ~@24>".pickRestart({
  A: "b3/8", B: "[~ a4@2 e4 f#4 a4@2 e4, ~ a3@15]/8", C: "f#4", D: "a4/2", E: "e4",
})).s("gm_string_ensemble_1").gain(0.62)

// other · piano
const piano_2 = note("<~@40 A@8 ~@28 A@4 B@3 C ~@16>".pickRestart({
  A: "[e5!5 d5@2 d5@2 d5!4 c#5@2 c#5@2 c#5!4 b4@2 b4@2 b4!3 a4 b4 c#5@2]/4",
  B: "[e5!5 d5@2 d5@2 d5!4 c#5@2 c#5@2 c#5!4 b4@2 b4]/3", C: "b4!4 a4 b4 c#5@2",
})).s("gm_piano").gain(0.32)

// other · overdriven guitar · "guitar"
const overdriven_guitar = note("<~@61 A B@7 ~@15 C@7 D E@8>".pickRestart({
  A: "~ a3!3", B: "a3!4", C: "[a1,a2]!4", D: "[a1,a2,e3,a3]@3 [d1,d2,a2,d3]@5", E: "[b0,b1,b2]/8",
})).s("gm_overdriven_guitar").gain(0.36)

// drums · kick
const kick = s("bd").struct("<~@40 [~ x ~ x ~ x ~ x]!8 ~@28 [~ x ~ x ~ x ~ x]!15 ~@9>").gain(0.64)

// drums · low tom
const low_tom = s("lt").struct("<~@40 [x!4]!8 ~@28 [x!4]!15 ~@9>").gain(0.64)

stack(piano, acoustic_guitar_steel, bass, string_ensemble_1, piano_2, overdriven_guitar, kick, low_tom)

More by Nine Inch Nails