Strudelify
Closer cover art

1994 · The Downward Spiral

Closer

Nine Inch Nails

KeyA♭ majorTempo90 bpm
0:00/0:00
// Closer — Nine Inch Nails
// 90 bpm, 4/4, key Ab major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Full arrangement: all 141 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(90/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 · piano
const piano = note("<~@132 A B C D E@5>".pickRestart({
  A: "g5@3 f5@5", B: "f5@3 e5@5", C: "eb5@3 d5@4 bb4", D: "bb4 a4 c5 c4@5",
  E: "[~ g5@6 f5@11 f5@7 e5@11 eb5@7 d5@9 bb4@2 ~ bb4@2 a4@2 ~ c5@14 ~@6]/5",
})).s("gm_piano").gain(0.4)

// bass · pad poly · "Pad 3 (polysynth)"
const bass = note(`<
  ~@8 A B C D E F G H C H G B I B I B ~@8 J B G B C H A B K B A L C H A B K F E F I B C B ~@8 G L C B ~@32 C B E H C B I
  L J F I B G F M F M F M F C F C B C H K B C B E B ~@9
>`.pickRestart({
  A: "~@2 c2@2 c3@2 [c1,c2] ~ [c1,c2]@2 ~ bb1@2 ~ bb2 ~", B: "~@2 c2 ~ c3@2 [c1,c2] ~ [c1,c2]@2 ~@2 bb2 [f2,g2] f2 ~",
  C: "~@2 c2 ~ c3@2 [c1,c2] ~ [c1,c2]@2 ~ bb1@2 ~ bb2 ~", D: "~@2 [c1,c2]@2 c3@2 [c1,c2]@2 c2@2 ~@2 bb2 [f2,g2] f2 ~",
  E: "~@2 c2@2 c3@2 [c1,c2] ~ [c1,c2]@2 ~ bb1@2 ~ bb2@2", F: "~@2 c2@2 c3@2 [c1,c2] ~ [c1,c2]@2 ~@2 bb2 [f2,g2] f2 ~",
  G: "~@2 c2 ~ c3@2 [c1,c2]@2 [c1,c2]@2 ~ bb1@2 ~ bb2@2", H: "~@2 c2 ~ c3@2 [c1,c2]@2 [c1,c2]@2 ~@2 bb2 [f2,g2] f2 ~",
  I: "~@2 c2 ~ c3@2 [c1,c2] ~ [c1,c2]@2 ~ bb1@2 ~ bb2@2", J: "~@2 c2@2 c3@2 [c1,c2]@2 [c1,c2]@2 ~ bb1@2 ~ bb2@2",
  K: "~@2 c2@2 c3@2 [c1,c2]@2 [c1,c2]@2 ~ bb1@2 ~ bb2 ~", L: "~@2 c2@2 c3@2 [c1,c2]@2 [c1,c2]@2 ~@2 bb2 [f2,g2] f2 ~",
  M: "~@2 c2 ~ c3@2 [c1,c2]@2 [c1,c2]@2 ~ bb1@2 ~ bb2 ~", // C
})).s("gm_pad_poly").gain(0.44)

// other · harpsichord
const harpsichord = note(`<
  ~@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 ~@8 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 ~@9
>`.pickRestart({
  A: "d4 e4!5 d4 e4!5 d4 e4!3", B: "e4 f4!8 g4!3 ab4!4",
})).s("gm_harpsichord").gain(0.25)

// bass · fretless bass
const bass_2 = note(`<
  ~@24 A@8 ~@24 A@8 ~@4 B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~@42
>`.pickRestart({
  A: "f2!4 f2@2 f2@3 ~ bb2@3 ~ b2@2", B: "eb2!3 f2 ~@12",
})).s("gm_fretless_bass").gain(0.29)

// other · taiko drum · "Additional Drums"
const taiko_drum = note("<~@124 [b3!7 b3@2 b3@2 b3!5]!8 ~@9>").s("gm_taiko_drum").gain(0.29).pan(1)

// other · shakuhachi
const shakuhachi = note("<~@56 A B A B A B A B ~@77>".pickRestart({
  A: "~@4 a4@3 ~ bb4@3 ~ bb4@3 ~", B: "c5@3 ~ c5@3 ~ eb5@3 ~ eb5@2 c5@2",
})).s("gm_shakuhachi").gain(0.52)

// other · lead 2 sawtooth · "Lead 2 (sawtooth)"
const lead_2_sawtooth = note("<~@68 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@42>".pickRestart({
  A: "eb3!3 f3 ~@12",
})).s("gm_lead_2_sawtooth").gain(0.52)

// other · english horn
const english_horn = note("<~@84 A B A B A B A B A B A B A B A B ~@41>".pickRestart({
  A: "~@4 f3 eb3 ~ f3 eb3 ~ f3 eb3 ~ f3 eb3 ~", B: "~ f3 eb3 ~ f3 eb3 ~ f3 eb3 ~ f3 eb3 ~ f3@2 f3",
})).s("gm_english_horn").gain(0.36)

// other · distortion guitar · "Guitar"
const distortion_guitar = note("<~@24 A@8 ~@24 A@8 ~@15 B C@4 D@16 ~@16 E@16 ~@9>".pickRestart({
  A: "f4@3 f4 f5 f4 ~@2 bb4 f4 ~@2 c5 f4 ~@2", B: "~@4 [ab3,ab4] [g3,g4] [gb3,gb4]@2",
  C: "[~ [f3,f4] [ab3,ab4] [db4,db5] [c4,c5] [eb3,eb4] [ab3,ab4] [bb3,bb4]@2 [f3,f4] [f4,f5]@2 [ab3,ab4] [g3,g4] [gb3,gb4]@2]/2", // F Ab Db C Eb Ab Bb F …
  D: "[~@2 f3@2 ~ eb3@2 ~@3 ab3@2 ~@2 db4 eb4@2 ~ f3@2 ~ eb3@2 ~ eb4@2 ~ ab3@2 ~@3]/2", E: "eb3@6 c3 bb2@4 ~@5",
})).s("gm_distortion_guitar").gain(0.39)

// other · distortion guitar · "Guitar" · soft notes
const distortion_guitar_soft = note("<~@74 A@4 B@2 ~@61>".pickRestart({
  A: "[~ [f3,f4] [ab3,ab4] [db4,db5] [c4,c5] [eb3,eb4] [ab3,ab4] [bb3,bb4]@2 [f3,f4] [f4,f5]@2 [ab3,ab4] [g3,g4] [gb3,gb4]@2]/2", // F Ab Db C Eb Ab Bb F …
  B: "[~ [f3,f4] [ab3,ab4] [db4,db5] [c4,c5] [eb3,eb4] [ab3,ab4] [bb3,bb4]@2 [f3,f4] [f4,f5]@2 ~@4]/2", // F Ab Db C Eb Ab Bb F
})).s("gm_distortion_guitar").gain(0.15)

// drums · rim
const rim = s("rim").struct("<[~ x ~ x]!8 [x!16]!124 ~@9>").gain(0.52)

// drums · kick
const kick = s("bd").struct(`<
  [x!4]!40
  [x!2 ~@2 x ~ x ~ x ~@3 x ~@3]!16
  [x!4]!28
  [x!2 ~@2 x ~@3 x!2 ~@2 x ~@3]!16
  [x!4]!32
  ~@9
>`).gain(0.52)

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@40 [~@3 x ~@12]!16 ~@28 [~@3 x ~@7 x ~@4]!16 ~@41>").gain(0.26)

// drums · snare
const snare = s("sd").struct("<~@24 [~ x ~ x]!8 ~@24 [~ x ~ x]!8 ~@77>").gain(0.52)

// drums · hihat
const hihat = s("hh").struct("<[~ x ~ x]!132 ~@9>").gain(0.52)

// drums · open hat
const open_hat = s("oh").struct("<~@16 [~ x ~ x ~ x ~ x]!7 ~@17 [~ x ~ x ~ x ~ x]!16 ~@85>").gain(0.52)

// drums · ride bell
const ride_bell = s("rd").struct("<~@23 [~ x ~ x ~ x ~ x]!9 ~@24 [~ x ~ x ~ x ~ x]!8 ~@77>").gain(0.52)

// drums · splash
const splash = s("cr").struct("<~@16 [~ x ~ x ~ x ~ x]!7 ~@17 [~ x ~ x ~ x ~ x]!16 ~@85>").gain(0.52)

// drums · congas
const congas = s("conga:33").struct("<~@24 [~ x ~ x]!8 ~@24 [~ x ~ x]!8 ~@77>").gain(1.68)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<[~ x ~ x]!132 ~@9>").gain(2.66)

// drums · shaker
const shaker = s("sh").struct("<[~ x ~ x]!132 ~@9>").gain(0.52)

stack(
  piano, bass, harpsichord, bass_2, taiko_drum, shakuhachi, lead_2_sawtooth, english_horn, distortion_guitar,
  distortion_guitar_soft, rim, kick, kick_soft, snare, hihat, open_hat, ride_bell, splash, congas, cabasa, shaker
)

More by Nine Inch Nails