Strudelify
The Becoming cover art

1994 · The Downward Spiral

The Becoming

Nine Inch Nails

KeyG minorTempo75 bpm
0:00/0:00
// The Becoming — Nine Inch Nails
// 75 bpm, 6/8, key G minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (7/8 at bar 1, 6/8 at bar 2, 7/8 at bar 3, 6/8 at bar 5, ...) are rendered on a constant 6/8 grid of one bar per cycle
// note: Full arrangement: all 136 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(75/3)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once · [...]/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 · "A.PIANO 1"
const piano = note(`<
  A B C D E F@2 G@2 H ~@42 A B C D E F@2 G@2 I J K L M N C D E ~@16 O P G@2 Q@2 K L M B C D E F@2 G@2 I J K L M N C D E
  ~@24
>`.pickRestart({
  A: "~@8 g2!4", B: "~ ab2!2 f2 g2 ab2 f2 g2 c3 bb2 g2!2", C: "g2!2 ~ ab2!2 f2!5 g2!2",
  D: "g2!2 ~ ab2!2 ~@6 bb2, ~@5 f2@2 ab2@2 g2@2 ~, ~@3 g2 f2 c3", E: "g2!4 ~ ab2!2 f2!5",
  F: "[g2!4 ~ ab2!2 ~@6 bb2 g2!4 ~ ab2!2 f2!3, ~@7 f2@2 ab2@2 g2@2 ~@11, ~@4 g2 f2 c3 ~@5]/2",
  G: "[f2!2 g2!4 ~ ab2!2 ~@6 bb2 g2!4 ~ ab2!2 f2, ~@9 f2@2 ab2@2 g2@2 ~@9, ~@5 g2 f2 c3 ~@4]/2", H: "f2!4 ~@8",
  I: "f2!4 g2!4 ~ ab2!2 f2", J: "g2 ab2 f2 g2 c3 bb2 g2!4 ~ ab2", K: "ab2 f2!5 g2!4 ~ ab2",
  L: "ab2 ~@6 bb2 g2!4, ~ f2@2 ab2@2 g2@2 ~@5, ~ g2 f2 c3 ~@2", M: "~ ab2!2 f2!5 g2!4",
  N: "~ ab2!2 ~@6 bb2 g2!2, ~@3 f2@2 ab2@2 g2@2 ~@3, ~@2 g2 f2 c3 ~", O: "g2!4 ~ ab2!2 f2 g2 ab2 f2 g2",
  P: "c3 bb2 g2!4 ~ ab2!2 f2!3",
  Q: "[f2!4 g2!4 ~ ab2!2 ~@6 bb2 g2!4 ~ ab2, ~@11 f2@2 ab2@2 g2@2 ~@7, ~@6 g2 f2 c3 ~@3]/2",
})).s("gm_piano").gain(0.51)

// bass · pad poly · "POLYSYNTH"
const bass = note(`<
  ~@9 A B C D E F G H I J K L M N B C D E F G H I J K L M N B C D E F G H I J K L M N B C D E F G H I J K L M N B C D E
  F G H I ~@16 J K L M N B C D E F G H I J K L M N B C D E F G H I ~@24
>`.pickRestart({
  A: "~@4 [g1,g2]!4 ~ [ab1,ab2]!2 [f1,f2]", // G Ab F
  B: "[g1,g2] [ab1,ab2] [f1,f2] [g1,g2] [c2,c3] [bb1,bb2] [g1,g2]!4 ~ [ab1,ab2]", // G Ab F G C Bb G Ab
  C: "[ab1,ab2] [f1,f2]!5 [g1,g2]!4 ~ [ab1,ab2]", // Ab F G Ab
  D: "[ab1,ab2] [f1,f2] [g1,g2] [ab1,ab2] [f1,f2] [g1,g2] [c2,c3] [bb1,bb2] [g1,g2]!4", // Ab F G Ab F G C Bb …
  E: "~ [ab1,ab2]!2 [f1,f2]!5 [g1,g2]!4", // Ab F G
  F: "~ [ab1,ab2]!2 [f1,f2] [g1,g2] [ab1,ab2] [f1,f2] [g1,g2] [c2,c3] [bb1,bb2] [g1,g2]!2", // Ab F G Ab F G C Bb …
  G: "[g1,g2]!2 ~ [ab1,ab2]!2 [f1,f2]!5 [g1,g2]!2", // G Ab F G
  H: "[g1,g2]!2 ~ [ab1,ab2]!2 [f1,f2] [g1,g2] [ab1,ab2] [f1,f2] [g1,g2] [c2,c3] [bb1,bb2]", // G Ab F G Ab F G C …
  I: "[g1,g2]!4 ~ [ab1,ab2]!2 [f1,f2]!5", J: "[g1,g2]!4 ~ [ab1,ab2]!2 [f1,f2] [g1,g2] [ab1,ab2] [f1,f2] [g1,g2]",
  K: "[c2,c3] [bb1,bb2] [g1,g2]!4 ~ [ab1,ab2]!2 [f1,f2]!3", // C Bb G Ab F
  L: "[f1,f2]!2 [g1,g2]!4 ~ [ab1,ab2]!2 [f1,f2] [g1,g2] [ab1,ab2]", // F G Ab F G Ab
  M: "[f1,f2] [g1,g2] [c2,c3] [bb1,bb2] [g1,g2]!4 ~ [ab1,ab2]!2 [f1,f2]", // F G C Bb G Ab F
  N: "[f1,f2]!4 [g1,g2]!4 ~ [ab1,ab2]!2 [f1,f2]", // F G Ab F
})).s("gm_pad_poly").gain(0.57)

// chords · blown bottle · "BOTTLEBLOW"
const blown_bottle = note(`<
  ~@7 A@3 ~@14 B@3 ~@6 A@3 ~@6 C@2 ~@6 B@3 ~@6 A@3 ~@6 C@2 ~@22 B@3 ~@15 C@2 ~@24
>`.pickRestart({
  A: "[~@3 [g1,d2,g2,d3,g3]@11 ~@4]/3", B: "[~@5 [g1,d2,g2,d3,g3]@11 ~@2]/3", C: "[~ [g1,d2,g2,d3,g3]@11]/2",
})).s("gm_blown_bottle").gain(0.37)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  ~@70 A B C D A B C D A B C D A B C D ~@26 A B C D A B C D A B C D A B C D A B C D A B C D
>`.pickRestart({
  A: "[g3,d4,g4]!4 ~@2 [f3,c4,f4]!4 ~@2", B: "[c4,g4,c5]!4 ~@2 [bb3,f4,bb4]!4 ~@2",
  C: "[f3,c4,f4]!4 ~@2 [c4,g4,c5]!4 ~@2", D: "[f3,c4,f4] ~@2 [bb3,f4,bb4] ~@8",
})).s("gm_acoustic_guitar_steel").gain(0.4)

// other · pad halo · "HALO PAD"
const pad_halo = note(`<
  A B@8 C ~@16 D E F G H@2 I J K L ~@16 D E F G H@2 I J K M N O P Q E F G H ~@12 R S R S ~@50
>`.pickRestart({
  A: "~@10 g6 f6", B: "f6@2 d7 ~ g6@2 f6@2 f6@2 d7 ~ g6@2 f6@2 f6@2 d7 ~ g6@2 f6@2", C: "f6@2 d7 ~ g6@2 f6@2 ~@16",
  D: "~@11 f5", E: "~@4 f5 ~@4 f5 ~@2", F: "~ f5 ~@4 f5 ~@5", G: "~ f5 ~@4 f5 ~@4 f5", H: "~@3 f5 ~@4 f5 ~@3",
  I: "~ f5 ~@3 f5 ~@4 f5 ~", J: "~@5 f5 ~@4 f5 ~", K: "~@3 f5 ~@3 f5 ~@4", L: "f5 ~@11", M: "f5 ~@6 f5 ~@4",
  N: "f5 ~@4 f5 ~@3 f5 ~@2", O: "~@2 f5 ~@6 f5 ~@2", P: "~@2 f5 ~@4 f5 ~@3 f5", Q: "~@4 f5 ~@6 f5",
  R: "~@6 f5 ~@9 f5 ~@7", S: "~@2 f5 ~@7 f5 ~@9 f5 ~@3",
})).s("gm_pad_halo").gain(0.1)

// other · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note("<~@90 A B C D E ~ F ~ G ~ H I ~ J ~@32>".pickRestart({
  A: "~@4 [g2,g3]@2 ~ [g2,g3]@2 [g2,g3]!3", B: "[g2,g3]!3 ~ [g2,g3] ~ [g2,g3]@2 ~ [g2,g3]!3",
  C: "[g2,g3]!6 [g2,g3]@2 ~ [g2,g3]@2 [g2,g3]", D: "[g2,g3]!5 ~ [g2,g3] ~ [g2,g3]@2 ~ [g2,g3]", E: "[g2,g3]!8 ~@4",
  F: "~@6 [g2,d3,g3]!4 ~@2", G: "~@8 [g2,d3,g3]!4", H: "~@10 [g2,d3,g3]!2", I: "[g2,d3,g3]!2 ~@10",
  J: "[g2,d3,g3]!4 ~@8", // G5
})).s("gm_overdriven_guitar").gain(0.4)

// other · pad metallic · "METAL PAD"
const pad_metallic = note(`<
  ~@70 A@2 B@2 A@2 B@2 A@2 B@2 A@2 B@2 ~@26 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: "[b3 c4@2 d4]/2", B: "[b3@3 c4@4 ~@5]/2",
})).s("gm_pad_metallic").gain(0.4)

// other · distortion guitar · "DISTORTION"
const distortion_guitar = note("<~@103 A B C D E F G H I ~@24>".pickRestart({
  A: "~@8 g2@4 g2!4 d3@2 g2@2 g2 ~@3", B: "g2!2 d3@2 g2@2 d3@2 g2@2 ~@6 g2!4 d3@2 g2@2",
  C: "g2 ~@3 f2!8 g2@4 g2!4 d3@2 g2@2", D: "g2 ~@3 g2!2 d3@2 g2@2 d3@2 g2@2 ~@6 g2!4",
  E: "d3@2 g2@2 g2 ~@3 f2!8 g2@4 g2!4", F: "d3@2 g2@2 g2 ~@3 g2!2 d3@2 g2@2 d3@2 g2@2 ~@6",
  G: "g2!4 d3@2 g2@2 g2 ~@3 f2!8 g2@4", H: "g2!4 d3@2 g2@2 g2 ~@3 g2!2 d3@2 g2@2 d3@2 g2@2 ~@2",
  I: "~@4 g2!4 d3@2 g2@2 g2 ~@3 f2!8",
})).s("gm_distortion_guitar").gain(0.64)

// other · distortion guitar · "DISTORTION"
const distortion_guitar_2 = note(`<
  ~@86
  [g4!2 f4 bb4@2 g4 bb4 g4 c5 bb4 a4@2]
  [~ bb4 g4 bb4 g4 bb4!2 a4 g4 bb4 a4 g4]
  [f4 d4 g4!2 f4 bb4@2 g4 bb4 g4 c5 bb4]
  [a4@3 bb4 g4 bb4 g4 bb4!2 a4 g4 bb4]
  [a4 g4 f4 d4 ~@8]
  ~@45
>`).s("gm_distortion_guitar").gain(0.22)

// drums · kick
const kick = s("bd").struct(`<
  ~@9 A B C D E F G H I J K L M A B C D E F G H I J K L M A B C D E F G H I J K L M A B C D E F G H I J K L M A B C D E
  F G H I ~@16 J K L M A B C D E F G H I J K L M N O P Q R S T U V ~@24
>`.pickRestart({
  A: "~@4 x ~@2 x ~ x!2 ~", B: "~ x ~ x ~@2 x ~@2 x ~ x", C: "x ~@5 x ~@2 x ~ x", D: "x ~@2 x ~ x ~@2 x ~@2 x",
  E: "~ x!2 ~@5 x ~@2 x", F: "~ x!2 ~@2 x ~ x ~@2 x ~", G: "~ x ~ x!2 ~@5 x ~", H: "~ x ~ x!2 ~@2 x ~ x ~@2",
  I: "x ~@2 x ~ x!2 ~@5", J: "x ~@2 x ~ x!2 ~@2 x ~ x", K: "~@2 x ~@2 x ~ x!2 ~@3", L: "~@2 x ~@2 x ~ x!2 ~@2 x",
  M: "~ x ~@2 x ~@2 x ~ x!2 ~", N: "~@8 x ~@3 x!5 ~ x ~ x ~@3", O: "x!3 ~ x ~ x ~ x ~@3 x ~@3 x!5 ~ x ~",
  P: "x ~@3 x ~ x ~ x ~ x ~ x ~@3 x!5 ~ x ~", Q: "x ~@3 x!3 ~ x ~ x ~ x ~@3 x ~@3 x!4",
  R: "x ~ x ~ x ~@3 x ~ x ~ x ~ x ~ x ~@3 x!4", S: "x ~ x ~ x ~@3 x!3 ~ x ~ x ~ x ~@3 x ~@3",
  T: "x!5 ~ x ~ x ~@3 x ~ x ~ x ~ x ~ x ~@3", U: "x!5 ~ x ~ x ~@3 x!3 ~ x ~ x ~ x ~@3",
  V: "x ~@3 x!5 ~ x ~ x ~@3 x ~ x ~ x ~ x ~",
})).gain(0.64)

// drums · snare
const snare = s("sd").struct(`<
  ~@9 A B C D E F G H I J K L M N B C D E F G H I J K L M N B C D E F G H I J K L M N B C D E F G H I J K L M N B C D E
  F G H I ~@16 J K L M N B C D E F G H I J K L M N O C P E Q G R I ~@24
>`.pickRestart({
  A: "~@2 x", B: "~@5 x ~@4 x ~", C: "~@2 x!4 ~@4 x ~", D: "~@7 x ~@4", E: "x ~@3 x!4 ~@4", F: "x ~@2 x",
  G: "~@2 x ~@3 x!4 ~@2", H: "~@2 x ~@8 x", I: "~@4 x ~@3 x!4", J: "~ x ~", K: "~ x ~@4 x ~@3 x!2", L: "x!2 ~@4 x ~@5",
  M: "~@3 x ~@4 x ~@3", N: "x!4 ~@4 x ~@3", O: "~ x ~ x ~@6 x ~", P: "~@3 x ~ x ~@6", Q: "x ~@4 x ~ x ~@4",
  R: "~@2 x ~@4 x ~ x ~@2",
})).gain(0.72)

// drums · low tom
const low_tom = s("lt").struct("<~@105 A B C D E F G ~@24>".pickRestart({
  A: "~@12 x ~@3 x!4 ~@2 x ~", B: "x ~@3 x!2 ~@2 x ~@3 x ~@7 x!4", C: "~@2 x ~ x ~@3 x!9 ~@3 x!4",
  D: "~@2 x ~ x ~@3 x!2 ~@2 x ~@3 x ~@7", E: "x!4 ~@2 x ~ x ~@3 x!9 ~@3", F: "x!4 ~@2 x ~ x ~@3 x!2 ~@2 x ~@3 x ~@3",
  G: "~@4 x!4 ~@2 x ~ x ~@3 x!8",
})).gain(0.64)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@9 A B C D E F G H I J K L M N B C D E F G H I J K L M N B C D E F G H I J K L M N B C D E F G H I J K L M N B C D E
  F G H I ~@16 J K L M N B C D E F G H I J K L M N O P Q R S T U V ~@24
>`.pickRestart({
  A: "~@3 x!3", B: "x ~ x ~ x!3 ~ x ~ x ~", C: "x ~ x!4 ~@2 x ~ x ~", D: "x ~ x ~ x ~ x!3 ~ x ~",
  E: "x ~ x ~ x!4 ~@2 x ~", F: "x ~ x ~ x ~ x ~ x!3 ~", G: "x ~ x ~ x ~ x!4 ~@2", H: "x ~ x ~ x ~ x ~ x ~ x!2",
  I: "x ~ x ~ x ~ x ~ x!4", J: "~ x!5", K: "x!3 ~ x ~ x ~ x ~ x!2", L: "x!2 ~@2 x ~ x ~ x ~ x ~",
  M: "x ~ x!3 ~ x ~ x ~ x ~", N: "x!4 ~@2 x ~ x ~ x ~", O: "x!2 ~ x!3", P: "x ~@2 x ~ x ~@2 x ~ x ~",
  Q: "x ~ x ~ x ~@2 x ~@2 x ~", R: "x ~ x ~@2 x ~ x ~@2 x ~", S: "x!4 ~ x", T: "x ~ x ~ x ~@2 x ~ x ~@2",
  U: "x ~ x ~ x ~ x ~ x ~@2 x", V: "~@2 x ~ x ~ x ~@2 x ~ x",
})).gain(0.48)

// drums · open hat
const open_hat = s("oh").struct("<~@106 [~@2 x] ~@4 x ~@24>").gain(0.48)

// drums · high tom
const high_tom = s("ht").struct("<~@105 A B C D E F G ~@24>".pickRestart({
  A: "~@5 x", B: "~@3 x ~ x ~@6", C: "x", D: "x ~@4 x ~ x ~@4", E: "~ x ~@4", F: "~@2 x ~@4 x ~ x ~@2", G: "~ x ~",
})).gain(0.64)

// drums · splash
const splash = s("cr").struct(`<
  ~@9 A B C D E F G H I J K L M N B C D E F G H I J K L M N B C D E F G H I J K L M N B C D E F G H I J K L M N B C D E
  F G H I ~@16 J K L M N B C D E F G H I J K L M O ~ P ~ Q ~ R ~ S ~@24
>`.pickRestart({
  A: "~@2 x", B: "~@5 x ~@4 x ~", C: "~@2 x!4 ~@4 x ~", D: "~@7 x ~@4", E: "x ~@3 x!4 ~@4", F: "x ~@2 x",
  G: "~@2 x ~@3 x!4 ~@2", H: "~@2 x ~@8 x", I: "~@4 x ~@3 x!4", J: "~ x ~", K: "~ x ~@4 x ~@3 x!2", L: "x!2 ~@4 x ~@5",
  M: "~@3 x ~@4 x ~@3", N: "x!4 ~@4 x ~@3", O: "x!4 ~@8", P: "~@3 x ~ x ~@6", Q: "~@5 x ~ x ~@4", R: "~@7 x ~ x ~@2",
  S: "~@9 x ~ x",
})).gain(0.72)

stack(
  piano, bass, blown_bottle, acoustic_guitar_steel, pad_halo, overdriven_guitar, pad_metallic, distortion_guitar,
  distortion_guitar_2, kick, snare, low_tom, hihat, open_hat, high_tom, splash
)

More by Nine Inch Nails