Strudelify
Terrible Lie cover art

Pretty Hate Machine

Terrible Lie

Nine Inch Nails

KeyA majorTempo88 bpm
0:00/0:00
// Terrible Lie — Nine Inch Nails
// 88 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 4 "Pad 5 (bowed)" pad bowed (copy of ch 5 "Pad 2 (warm)" pad warm)
// note: Full arrangement: all 101 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(88/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.

// chords · distortion guitar
const distortion_guitar = note(`<
  ~@3 A B A B A B A B A B ~@6 A B A B A B A B A B ~@22 A B A B A B A B A B ~@30 A B ~@8
>`.pickRestart({
  A: "~@6 [b2,f#3,b3] ~", B: "[c#3,g#3,c#4] ~@7",
})).s("gm_distortion_guitar").gain(0.32)

// other · pad metallic · "Pad 6 (metallic)"
const pad_metallic = note("<~@4 A@7 ~@9 B C B C B C B C ~@24 B C B C B C B C ~@41>".pickRestart({
  A: "~ b4!2 ~ b4 ~@11", B: "~@2 b4 ~ b4 ~ b4 ~ b4 ~ b4 ~ b4 ~@2 b4", C: "b4 ~@3 b4 ~ b4 ~ b4 ~ b4 ~ b4 ~ b4!2",
})).s("gm_pad_metallic").gain(0.19)

// other · pad warm · "Pad 2 (warm)"
const pad_warm = note(`<
  ~@12 A B C D A B C D ~@8 A B C D A B C D ~@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 A B C D A B C E A B C D
  A B C F@2
>`.pickRestart({
  A: "c#5", B: "c#5 b4", C: "b4", D: "b4 a#4", E: "b4@2 a#4 ~", F: "[b4 a#4@3]/2",
})).s("gm_pad_warm").gain(0.36)

// other · lead 2 sawtooth · "Lead 2 (sawtooth)"
const lead_2_sawtooth = note("<~@12 A@8 ~@8 A@8 ~@24 A@31 B A@8 ~>".pickRestart({
  A: "c#5!2 b4@2 c#5@2 b4 e5@2 e5 c#5@2 b4@4", B: "c#5!2 b4@2 c#5@2 b4 e5@2 e5 c#5@2 ~@4",
})).s("gm_lead_2_sawtooth").gain(0.19)

// bass · fretless bass
const bass = note(`<
  ~@12 A B C D A B C D ~@8 A B C D A B C D ~@4 D B E D@2 B E F D B E D ~@8 A B C D A B C D A B C D A B C D A B C D A B C
  D A B C D A B C G A B C D A B C D ~
>`.pickRestart({
  A: "c#2", B: "g1", C: "b1", D: "f#1", E: "e1", F: "f#1@3 ~", G: "f#1@6 b1 ~",
})).s("gm_fretless_bass").gain(0.41)

// other · lead 1 square · "Lead 1 (square)"
const lead_1_square = note("<~@76 A B C D E F C D C F C G C F H A@2 F E I C F C D ~>".pickRestart({
  A: "b4!2 [b4,b5]@2 ~ [c#5,c#6] ~ [a4,a5]@2 [c#5,f#5] [b4,c#5]@2 ~@4", // B C# A F#5 Bsus2
  B: "b4!2 [b4,b5]@2 ~ [c#5,c#6] ~ [a4,a5]@2 [c#5,f#5] [b4,c#5]@2 [b4,b5] [b4,c#5]!2 ~", // B C# A F#5 Bsus2 B Bsus2
  C: "b4!2 [b4,b5]@2 ~ [c#5,c#6]@2 [a4,a5]@2 [c#5,f#5] [b4,c#5]@2 ~@4", // B C# A F#5 Bsus2
  D: "b4!2 [b4,b5]@2 ~ [c#5,c#6]@2 [a4,a5]@2 [c#5,f#5] [b4,c#5]@2 [b4,c#5,c#6] [b4,b5]!2 [c#5,c#6]", // B C# A F#5 Bsus2 B C#
  E: "b4!2 [b4,b5] ~@2 [c#5,c#6]@2 [a4,a5]@2 [c#5,f#5] [b4,c#5]@2 ~@4", // B C# A F#5 Bsus2
  F: "b4!2 [b4,b5]@2 ~ [c#5,c#6]@2 [a4,a5]@2 [c#5,f#5] [b4,c#5]@2 [b4,b5] [b4,c#5]!2 ~", // B C# A F#5 Bsus2 B Bsus2
  G: "b4!2 [b4,b5]@2 ~ [c#5,c#6]@2 [a4,a5]@2 [c#5,f#5] [b4,c#5] ~ [b4,c#5,c#6] [b4,b5]!2 [c#5,c#6]", // B C# A F#5 Bsus2 B C#
  H: "b4!2 [b4,b5]@2 ~ [c#5,c#6]@2 [a4,a5] ~ [c#5,f#5] [b4,c#5]@2 ~@4", // B C# A F#5 Bsus2
  I: "b4!2 [b4,b5] ~@2 [c#5,c#6]@2 [a4,a5]@2 [c#5,f#5] [b4,c#5]@2 [b4,c#5,c#6] [b4,b5]!2 [c#5,c#6]", // B C# A F#5 Bsus2 B C#
})).s("gm_lead_1_square").gain(0.32)

// drums · kick
const kick = s("bd").struct(`<
  ~@2 A B C@7 D E F E F E F E G C@7 D E F E F E F E H I J I J I J I J I J I J I J I J C@7 D E F E F E F E H E F E F E F
  E H E F E F E F E H E F E F E F E H E F E F E F E H K
>`.pickRestart({
  A: "x ~@2 x!2 ~@5 x ~@5", B: "x ~@2 x!2 ~@7 x ~@3", C: "x ~@4 x ~@2", D: "x ~@3 x ~ x ~ x ~ x ~ x!3 ~",
  E: "x!3 ~@6 x!2 ~@5", F: "x!3 ~@7 x ~ x!3 ~", G: "x!3 ~@7 x ~ x ~@3", H: "x!3 ~@7 x ~@5", I: "x!4 ~@6 x ~@5",
  J: "x!4 ~@6 x ~@2 x ~@2", K: "x",
})).gain(0.64)

// drums · rim
const rim = s("rim").struct(`<
  ~@4 A B A B A B C ~ A D A D A D A D A B A B A B C ~ A D A D A D A E F E F E F E F E F E F E F E F E A B A B A B C ~ A
  D A D A D A E A D A D A D A E A D A D A D A E A D A D A D A E A D A D A D A E ~
>`.pickRestart({
  A: "~ x ~ x", B: "~@4 x ~@7 x!2 ~@2", C: "~@4 x ~@7 x ~ x!2", D: "~@4 x ~@2 x ~ x ~@6",
  E: "~@4 x ~@2 x ~ x ~@2 x ~@3", F: "~@4 x ~@4 x ~@2 x ~@3",
})).gain(0.64)

// drums · snare
const snare = s("sd").struct(`<
  ~@3 A B C B C B C D E B F B F B F B G B C B C B C D E B F B F B F B H I H I H I H I H I H I H I H I H B C B C B C D E
  B F B F B F B H B F B F B F B H B F B F B F B H B F B F B F B H B F B F B F B H ~
>`.pickRestart({
  A: "~@8 x!6 ~@2", B: "~ x ~ x", C: "~@4 x ~@7 x!2 ~@2", D: "~@4 x ~@7 x ~ x!2", E: "~ x ~@6",
  F: "~@4 x ~@2 x ~ x ~@6", G: "~@4 x ~@2 x ~ x ~@2 x!2 ~@2", H: "~@4 x ~@2 x ~ x ~@2 x ~@3",
  I: "~@4 x ~@4 x ~@2 x ~@3",
})).gain(0.64)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~@4 [~ x]!7 ~@9 [~ x]!7 ~@25 [~ x]!7 ~@42>").gain(0.64)

// drums · open hat
const open_hat = s("oh").struct("<[~ x ~ x]!4 ~@15 [~@3 x] ~@4 [~ x ~ x]!2 ~@30 [~ x ~ x]!2 ~@43>").gain(0.48)

// drums · mid tom
const mid_tom = s("mt").struct("<~@5 A ~ A ~ A ~@11 A ~ A ~ A ~@27 A ~ A ~ A ~@43>".pickRestart({
  A: "~@13 x ~@2",
})).gain(0.64)

// drums · high tom
const high_tom = s("ht").struct("<~@5 A ~ A ~ A ~@11 A ~ A ~ A ~@27 A ~ A ~ A ~@43>".pickRestart({
  A: "~@3 x",
})).gain(0.64)

// drums · ride bell
const ride_bell = s("rd").struct("<A@2 B@2 ~@15 C ~@4 A@2 ~@30 A@2 ~@43>".pickRestart({
  A: "~ x ~ x", B: "~@2 x!2 ~@2 x ~", C: "~@3 x",
})).gain(0.48)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@11 [~@3 x!5] ~@15 [~@3 x!5] ~@31 [~@3 x!5] ~@41>").gain(3.24)

// drums · shaker
const shaker = s("sh").struct("<~@11 [~ x ~@6] ~@15 [~ x ~@6] ~@31 [~ x ~@6] ~@41>").gain(0.8)

// drums · guiro
const guiro = s("guiro:0").struct("<~@10 [~@14 x!2] ~@15 [~@14 x!2] ~@31 [~@14 x!2] ~@42>").gain(13.52)

// drums · guiro
const guiro_2 = s("guiro:4").struct("<[x!2 ~@6 x!2 ~@6]!4 ~@20 [x!2 ~@6 x!2 ~@6]!2 ~@30 [x!2 ~@6 x!2 ~@6]!2 ~@43>")
  .gain(13.52)

// drums · triangle
const triangle = s("triangles:30").struct("<~@2 [x ~@2 x!2 ~@3 x ~ x ~ x ~@3]!2 ~@15 [~@3 x] ~@81>").gain(5.57)

stack(
  distortion_guitar, pad_metallic, pad_warm, lead_2_sawtooth, bass, lead_1_square, kick, rim, snare, pedal_hat,
  open_hat, mid_tom, high_tom, ride_bell, cabasa, shaker, guiro, guiro_2, triangle
)

More by Nine Inch Nails