Strudelify
KeyF minorTempo116 bpm
0:00/0:00
// Heresy — Nine Inch Nails
// 116 bpm, 4/4, key F minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 4 overdriven guitar (copy of ch 3 distortion guitar)
// note: Full arrangement: all 112 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(116/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [...]/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 · lead 8 bass lead · "ªªªªªªHeresyªªªªªª"
const bass = note("<[f1!5 ~ f1!3 ~ f1!2 ~ f1!3]!72 ~@16 [f1!5 ~ f1!3 ~ f1!2 ~ f1!3]!24>")
  .s("gm_lead_8_bass_lead").gain(0.64)

// other · piano
const piano = note(`<
  [f2 ~ eb3 f3 f2 ~ eb3 f3 f2 ~ eb3 f3 f2 ~ eb3 f3]!32
  ~@24
  [f2 ~ eb3 f3 f2 ~ eb3 f3 f2 ~ eb3 f3 f2 ~ eb3 f3]!16
  ~@16
  [f2 ~ eb3 f3 f2 ~ eb3 f3 f2 ~ eb3 f3 f2 ~ eb3 f3]!23
  [f2 ~ eb3 f3 f2 ~@11]
>`).s("gm_piano").gain(0.24)

// other · piano · soft notes
const piano_soft = note(`<
  [~ f2 ~@3 f2 ~@3 f2 ~@3 f2 ~@2]!32
  ~@24
  [~ f2 ~@3 f2 ~@3 f2 ~@3 f2 ~@2]!16
  ~@16
  [~ f2 ~@3 f2 ~@3 f2 ~@3 f2 ~@2]!23
  [~ f2 ~@3 f2 eb3 f3 f2!2 eb3 f3 f2!2 eb3 f3]
>`).s("gm_piano").gain(0.12)

// other · lead 5 charang
const lead_5_charang = note(`<
  ~@24 A@2 B@2 A@2 B@2 ~@24 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 ~@16 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2
>`.pickRestart({
  A: "[b2@6 bb2@8 ab2@8 g2@6 f2@3 ~]/2", B: "[ab2@6 g2@8 eb2@6 f2@3 ~ f2@7 ~]/2",
})).s("gm_lead_5_charang").gain(0.71)

// other · guitar harmonics
const guitar_harmonics = note(`<
  ~@64
  [f1 f2 f3 f1 f2 f3 f1 f2 f3 f1 f2 f3 f1 f2 f3 f1]!8
  ~@32
  [f1 f2 f3 f1 f2 f3 f1 f2 f3 f1 f2 f3 f1 f2 f3 f1]!8
>`).s("gm_guitar_harmonics").gain(0.8)

// bass · electric bass finger
const bass_2 = note("<~@72 A B A C A B A C A B A C A B A C ~@24>".pickRestart({
  A: "eb2@3 d2@4 f1", B: "ab1@2 f1@3 ~ f1@10", C: "ab1 f1@2 f2@5",
})).s("gm_electric_bass_finger").gain(0.48)

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

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@72 A B A B A B A B A B A B A B A B ~@23 C>".pickRestart({
  A: "~ x ~ x ~ x ~ x ~ x ~ x ~@2 x ~", B: "~@3 x ~ x!2 ~ x ~ x!2 ~ x!2 ~", C: "~@6 x!3 ~ x!3 ~@3",
})).gain(0.32)

// drums · rim
const rim = s("rim").struct("<~@36 [x!16]!20 ~@56>").gain(0.64)

// drums · snare
const snare = s("sd").struct("<~@4 [~ x ~ x]!68 ~@16 [~ x ~ x]!24>").gain(0.64)

// drums · hihat
const hihat = s("hh").struct("<~@8 [x!16]!24 ~@24 [x!16]!16 ~@16 [x!16]!23 [x!6 ~@10]>").gain(0.64)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@72 [x!16]!16 ~@23 [~@6 x!10]>").gain(0.24)

// drums · ride bell
const ride_bell = s("rd").struct("<~@41 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@56>".pickRestart({
  A: "~@2 x!2",
})).gain(0.64)

// drums · tambourine
const tambourine = s("tb").struct("<~@40 A B A B A B A B A B A B A B A B ~@56>".pickRestart({
  A: "x!2 ~ x ~ x ~ x", B: "~ x ~ x ~ x ~ x",
})).gain(0.4)

// drums · shaker
const shaker = s("sh").struct("<~@40 A B A B A B A B A B A B A B A B ~@56>".pickRestart({
  A: "~ x!3", B: "x!2 ~@2 x ~@11",
})).gain(0.56)

stack(
  bass, piano, piano_soft, lead_5_charang, guitar_harmonics, bass_2, kick, kick_soft, rim, snare, hihat, hihat_soft,
  ride_bell, tambourine, shaker
)

More by Nine Inch Nails