Strudelify

Ringfinger

Nine Inch Nails

KeyC majorTempo108 bpm
0:00/0:00
// Ringfinger — Nine Inch Nails
// 108 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 3 "From Pretty Hate Machine" koto (copy of ch 2 whistle)
// note: Full arrangement: all 151 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(108/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// bass · synth bass 1
const bass = note(`<
  ~@60 A@7 B A@7 B ~@30 C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D E ~@6
>`.pickRestart({
  A: "c4!2 ~ c5 c4 ~ a#3 ~ c4 ~@2 c5 c4 ~@3", B: "c4!2 ~ c5 c4 ~ a#3 ~ c5 ~ c5 ~ c5 ~ c5 ~",
  C: "[c2,c3,c4]!2 [c2,c3] [c2,c3,c5] [c3,c4] ~ [f1,f2,a#3] [f1,f2] c4 [a#1,a#2]!2 c5 c4 ~@3", // C A#5 F A#
  D: "[c2,c3,c4]!2 [c2,c3] [c2,c3,c5] [c3,c4] ~ [f1,f2,a#3] [f1,f2] c4 [a#1,a#2]!2 c5 [a#2,c4] a#1 c3 a#2", // C A#5 F A# A#sus2
  E: "c2 ~@15",
})).s("gm_synth_bass_1").gain(0.8)

// bass · synth bass 1 · soft notes
const bass_soft = note(`<
  ~@106 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 ~@7
>`.pickRestart({
  A: "~@5 c3 ~@2 [f1,f2] ~@7", B: "~@5 c3 ~@2 [f1,f2] ~@2 a#2 ~@4",
})).s("gm_synth_bass_1").gain(0.48)

// other · whistle
const whistle = note(`<
  ~@32 A B C D C B C D ~@12 A B C D C B C D ~@24 A B C D C B C D A B C D ~@10 E F E F E F E F ~@37
>`.pickRestart({
  A: "c5 c#5 c5 a#4 c5 c#5 c5 g5", B: "~ g#5 ~ g#5 a#5 ~ c5 a#4", C: "~ c#5 c5 a#4 c5 c#5 c5 g5",
  D: "~ g#5 ~ a#5 c6 ~ c5 c#5", E: "c4", F: "a4@3 a#4@3 f4@2",
})).s("gm_whistle").gain(0.4).pan(0)

// bass · electric bass pick
const bass_2 = note("<~@32 A B A B A B A B ~@12 A B A B A B A B ~@24 A B A B A B A B A B A B ~@55>".pickRestart({
  A: "c2@3 a#1@3 g1@2", B: "g#1@3 g1@3 f1@2",
})).s("gm_electric_bass_pick").gain(0.8)

// bass · fretless bass · C
const bass_3 = note(`<
  ~@44
  [[c1,c2]!3 ~@3 [c1,c2]!5 ~@3 [c1,c2]!2]!7
  [[c1,c2]!3 ~@13]
  ~@24
  [[c1,c2]!3 ~@3 [c1,c2]!5 ~@3 [c1,c2]!2]!7
  [[c1,c2]!3 ~@13]
  ~@67
>`).s("gm_fretless_bass").gain(0.8)

// other · woodblock · "this is one of the best songs on the Cd!!"
const woodblock = note("<~@32 A B A B A B A B ~@12 A B A B A B A B ~@24 A B A B A B A B A B A B ~@55>".pickRestart({
  A: "c3 c4 c3 c4 c3 c4 c3 c4 c3 c4 c3 c4 c3 c4 c3 c4", B: "a2 a3 a2 a3 a2 a3 a#2 a#3 a#2 a#3 a#2 a#3 f2 f3 f2 f3",
})).s("gm_woodblock").gain(0.4)

// bass · synth bass 1
const bass_4 = note(`<
  A B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C
  B ~@16 C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B ~@45
>`.pickRestart({
  A: "c3!2 c2!2 [c2,c3] c3 ~ c3 ~@2 c3 ~@2 c3 ~@2", B: "a2 ~@2 a2 ~@2 a#2 ~@2 a#2 ~@2 f2 ~ f2 ~",
  C: "c3 [c2,c3] c2!2 [c2,c3] c3 ~ c3 ~@2 c3 ~@2 c3 ~@2", // C
})).s("gm_synth_bass_1").gain(0.8).pan(0.2)

// bass · synth bass 1
const bass_5 = note(`<
  A B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C
  B ~@16 C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B ~@45
>`.pickRestart({
  A: "c3!2 c2!2 [c2,c3] c2 ~@2 c3 ~@2 c3 ~@2 c3 ~", B: "~ a2 ~@2 a2 ~@2 a#2 ~@2 a#2 ~@2 f2 ~ [f1,f2]",
  C: "c3 [c2,c3] c2!2 [c2,c3] c2 ~@2 c3 ~@2 c3 ~@2 c3 ~", // C
})).s("gm_synth_bass_1").gain(0.8).pan(0.8)

// drums · rim
const rim = s("rim").struct("<~@67 A ~@7 A ~@61 B ~ C D E F G ~@7>".pickRestart({
  A: "~@4 x!4", B: "~@3 x ~@12", C: "~@10 x ~@2 x ~@2", D: "x", E: "~@5 x ~ x ~@8", F: "~@11 x!2 ~@2 x",
  G: "~@7 x ~ x ~@6",
})).gain(0.8)

// drums · kick
const kick = s("bd").struct("<A@44 B@7 C A@15 D A@7 D A@7 D A@60 E@2 ~@5>".pickRestart({
  A: "x!4", B: "x!3 ~ x ~ x!5 ~ x ~ x!2", C: "x!3 ~ x ~@11", D: "x!2 ~@2", E: "x ~@3 x ~@2 x!4 ~ x ~@3",
})).gain(0.8)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@61 A@2 ~@2 A@2 ~@2 A@2 ~@2 A@2 ~@76>".pickRestart({
  A: "~@2 x!2 ~@4",
})).gain(0.4)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~@32 A@8 ~@4 A@7 B A@8 ~@24 A@12 ~@55>".pickRestart({
  A: "x!16", B: "x!8 ~@8",
})).gain(0.24)

stack(bass, bass_soft, whistle, bass_2, bass_3, woodblock, bass_4, bass_5, rim, kick, snare, snare_soft, pedal_hat)

More by Nine Inch Nails