Strudelify
KeyC♯ minorTempo128 bpm
0:00/0:00
// Sin — Nine Inch Nails
// 128 bpm, 4/4, key C# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 3 "syn string" named as a string part, played on synth strings 1 (its drawbar organ patch is not one)
// note: Full arrangement: all 143 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(128/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.

// bass · synth bass 1 · "bass"
const bass = note(`<
  ~@16 A B C D A B C D A B C D A B C D ~@2 A B C D A B C D A B C D A B C D E F G E@2 F G E ~@8 A B C D A B C D E F G E@2
  F G E ~@16 E F G E@2 F G E A B C D A B C D A B C D A B C D E F G E@2 F G E@2 F G E@2 F G E H@2 ~@3
>`.pickRestart({
  A: "c#2!5 ~ c#2!2 ~ c#2!2 ~ c#2!3 ~", B: "d2!5 ~ d2!2 ~ d2!2 ~ d2!3 ~", C: "b1!5 ~ b1!2 ~ b1!2 ~ b1!3 ~",
  D: "c#2!5 ~ c#2!2 ~ c#2!2 ~ b1!3 ~", E: "c#2!16", F: "d2!16", G: "b1!12 d2!4", H: "c#2/2",
})).s("gm_synth_bass_1").gain(0.36)

// other · synth strings 1 · "syn string"
const synth_strings_1 = note(`<
  ~@42 A B C A@2 B C A D E F G D E H F ~@8 A B C A@2 B C A D E F G D E H F ~@8 I J K L I J M N I J K L I J M N A B C A@2
  B C A@2 B C A@2 B C A D E F G D E H F D E F G D E H O ~@5
>`.pickRestart({
  A: "c#3", B: "d3", C: "b2", D: "c#4", E: "d4", F: "g#4", G: "f4", H: "b4", I: "[g#3,c#4]", J: "[a3,d4]",
  K: "[b3,g#4]", L: "[c#4,f4]", M: "[f#4,b4]", N: "[g#4,c#5]", O: "c#5",
})).s("gm_synth_strings_1").gain(0.48)

// bass · electric bass finger · "fing bass"
const bass_2 = note("<~@59 [c#2@2 ~@4 c#2@2 ~ c#2@2 ~ c#2@2 ~@2]!7 ~@64 [c#2@2 ~@4 c#2@2 ~ c#2@2 ~ c#2@2 ~@2]!8 ~@5>")
  .s("gm_electric_bass_finger").gain(0.36)

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

// drums · snare
const snare = s("sd").struct("<~@15 A B@16 ~@2 B@48 ~@4 C@3 D ~ D ~ D ~ D ~ D B@40 ~@5>".pickRestart({
  A: "~@8 x!8", B: "~ x ~ x", C: "~ x ~@2", D: "~@4 x ~@9 x!2",
})).gain(0.3)

// drums · pedal hat
const pedal_hat = s("hh").struct("<~@16 [x!16]!122 ~@5>").gain(0.3)

// drums · crash
const crash = s("cr").struct("<A B C D E F@11 ~@68 F@2 ~@52 F@4 ~>".pickRestart({
  A: "x ~@2 x ~@2 x ~@3 x ~@2 x ~ x", B: "~ x ~@2 x ~@2 x ~@3 x ~@2 x ~", C: "x ~ x ~@2 x ~@3 x ~@2 x ~@2 x",
  D: "~ x ~ x ~@2 x ~@3 x ~@2 x ~@2", E: "x ~ x!2 ~@2 x ~@2 x ~@2 x ~ x ~", F: "x ~@2 x ~@2 x ~@2 x ~@2 x ~ x ~",
})).gain(0.3)

stack(bass, synth_strings_1, bass_2, kick, snare, pedal_hat, crash)

More by Nine Inch Nails