Strudelify

All the Pigs, All Lined Up

Nine Inch Nails

KeyD minorTempo135 bpm
0:00/0:00
// All the Pigs, All Lined Up — Nine Inch Nails
// 135 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 254 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(135/4)

// 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.

// chords · overdriven guitar · "Guitar"
const overdriven_guitar = note(`<
  ~@32 A B@2 C@2 B@2 D@2 ~@31 A@3 E A@3 E A@3 E A@3 E A@3 E A@3 E A@3 E A@3 E ~@17 F G F ~ F G F ~ F G F ~ F G F ~ F G F
  ~ F G F ~ H I J K H I J K L M N O N M N O L M N O N M N O P@3 E P@3 E P@3 E P@3 E ~@69
>`.pickRestart({
  A: "[d3,a3,d4]@4 [d3,a3,d4]@2 [d3,a3,d4] [d3,a3,d4]@2 [d3,a3,d4] [d3,a3,d4]@2 [c3,g3,c4]@2 [b2,f3,b3]@2", // D5 C5 Bdim
  B: "[[d3,a3,d4]@4 [d3,a3,d4]@2 [d3,a3,d4] [d3,a3,d4]@2 [d3,a3,d4] [d3,a3,d4]@2 [c3,g3,c4]@2 ~@2 [d3,a3,d4]@4 [d3,a3,d4]@2 [d3,a3,d4] [d3,a3,d4]@2 [d3,a3,d4] [d3,a3,d4]@2 [c3,g3,c4]@2 [b2,f3,b3]@2, ~@7 [f3,b3] ~@8, ~@15 b2@2 ~@15]/2", // D5 C5 D5 C5 Bdim Fdim
  C: "[[d3,a3,d4]@4 [d3,a3,d4]@2 [d3,a3,d4] [d3,a3,d4]@2 [d3,a3,d4] [eb3,bb3,eb4]@2 ~ [e3,b3,e4]@2 ~ [d3,a3,d4]@4 [d3,a3,d4]@2 [d3,a3,d4] [d3,a3,d4]@2 [d3,a3,d4] [d3,a3,d4]@2 [c3,g3,c4]@2 [b2,f3,b3]@2, ~@15 [f3,c4,f4]@2 ~@15]/2", // D5 Eb5 E5 D5 C5 Bdim F5
  D: "[[d3,a3,d4]@4 [d3,a3,d4]@2 [d3,a3,d4] [d3,a3,d4]@2 [d3,a3,d4] [eb3,bb3,eb4]@2 ~ [e3,b3,e4]@2 [f3,c4,f4]@2 ~@15]/2", // D5 Eb5 E5 F5
  E: "[d3,a3,d4]@4 [d3,a3,d4]@2 [d3,a3,d4] [d3,a3,d4]@2 [d3,a3,d4] [eb3,bb3,eb4]@2 [e3,b3,e4]@2 [f3,c4,f4]@2", // D5 Eb5 E5 F5
  F: "[d3,a3,d4]!2 ~@6", G: "~@6 d3!2", H: "[d3,a3,d4]@2 [d3,a3,d4]@2 ~@4 d3 ~ d3 ~@5",
  I: "~@2 [d3,a3,d4]@2 [d3,a3,d4]@2 [d3,a3,d4]@2 ~@4 d3 ~ d3 ~", J: "[d3,a3,d4]@2 [d3,a3,d4]@2 ~@8 d3 ~ d3 ~",
  K: "~@4 [d3,a3,d4]!2 [e3,b3,e4] ~", L: "c2!8 ~ c2 [c2,d3,a3,d4]@2 eb2@2 c2@2, ~@4 [c2,d3,a3,d4] ~@3",
  M: "d2!11 ~ db2@2 b1@2",
  N: "~ c2 ~ c2!5 ~ c2 [c2,eb3,bb3,eb4]@2 eb2@2 c2@2, [c2,d3,a3,d4]!2 ~@2 [c2,eb3,bb3,eb4] ~@3", O: "d2!16",
  P: "[d3,a3,d4]@4 [d3,a3,d4]@2 [d3,a3,d4] [d3,a3,d4]@2 [d3,a3,d4] [d3,a3,d4]@2 ~@4", // D5
})).s("gm_overdriven_guitar").gain(0.3).pan(0.6)

// other · orchestra hit
const orchestra_hit = note(`<
  A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B ~@18 C@14 ~@42 C@14 ~@20 D ~@7 E ~@7 F ~@7 D ~@89
>`.pickRestart({
  A: "c4 ~@6 f3", B: "c4@2 ~@5 bb3@2 bb3@2 bb3 a3@2 g3@2", C: "c3!8", D: "~@7 d4@2 d4@2 d4 db4@2 b3@2",
  E: "~@7 db4@2 db4@2 db4 c4@2 bb3@2", F: "~@7 c4@2 c4@2 c4 b3@2 a3@2",
})).s("gm_orchestra_hit").gain(0.3).pan(0.4)

// bass · lead 2 sawtooth · "Sawtooth"
const bass = note(`<
  ~@16 A B@2 C A B@2 C A B@2 C A B@2 C A B@2 C A B@2 C A B@2 C A B@2 C ~@24 A B@2 C A B@2 C A B@2 C A B@2 C A B@2 C A
  B@2 C A B@2 C A B@2 C ~@65 A B@2 C A B@2 C A B@2 C A B@2 C A B@2 C A B@2 C A B@2 C A B@2 C A B@2 C A B@2 C A B@2 C A
  B@2 C A B@2 C A B@2 C A B@2 C A B@2 C A B@2 C A B@2 C ~@12 D
>`.pickRestart({
  A: "c2@2 f2@2 f2@2 f2 f2@2 f2 gb2@2 bb1@2 c2@2", B: "f2@2 f2@2 f2@2 f2 f2@2 f2 gb2@2 bb1@2 c2@2",
  C: "f2@2 f2@2 f2!3 gb2!2 g2!2 ab2!2 bb2!2 a1", D: "c2",
})).s("gm_lead_2_sawtooth").gain(0.3).pan(0.6)

// bass · electric bass finger · "Bass"
const bass_2 = note(`<
  ~@32 A@3 B A@3 B A@3 B A@3 B C@3 D E F C D E F C D E F C D ~@8 A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B C@3 D E
  F C D E F C D E F C D ~@3 G ~@3 H ~@3 H ~@3 H ~@3 H ~@3 H ~@3 H ~@3 H ~@3 H ~@3 H ~@3 H ~@3 H ~ A@3 B A@3 B A@3 B A@3
  B ~@69
>`.pickRestart({
  A: "d2@4 d2@2 d2 c2@2 c2 ab1@2 g1@2 gb1@2", B: "d2@4 d2@2 d2!3 eb2!2 e2!2 f2 gb2!2", C: "d2!16", D: "ab1!16",
  E: "g1!16", F: "f1!16", G: "~@3 f4", H: "~@3 g4",
})).s("gm_electric_bass_finger").gain(0.37).pan(0.4)

// chords · piano
const piano = note("<~@64 A B@5 ~@50 A ~@133>".pickRestart({
  A: "~ d3 f3 [c3,g3,e4]@2 g3 c4 e4, [bb2,f3,d4] ~@3", B: "[d3,a3,gb4]/5",
})).s("gm_piano").gain(0.37)

// bass · synth bass 1 · "Synth Bass"
const bass_3 = note("<~@24 A B A C A B A C ~@222>".pickRestart({
  A: "c3!2 b2!3 b2@2 b2@2 b2 b2@2 b2 b2@2 ~", B: "b2@2 b2@2 b2@2 ~@2 b2@2 b2@2 b2 b2@2 ~",
  C: "b2@2 b2@2 b2@2 ~@2 b2@2 c3@2 db3 d3@2 ~",
})).s("gm_synth_bass_1").gain(0.54).pan(0.4)

// other · agogo
const agogo = note("<~@50 [c4!3 ~ c4!2 b3!2]!14 ~@42 [c4!3 ~ c4!2 b3!2]!14 ~@134>").s("gm_agogo").gain(0.13)

// chords · taiko drum · "Taiko"
const taiko_drum = note(`<
  ~@128 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ C D C
  D C D C D C D C D E
>`.pickRestart({
  A: "~@8 [a1,c2,e2] ~ [a1,c2,e2] ~@5", B: "[a1,c2,e2] ~ [a1,c2,e2] ~ [a1,c2,e2] ~ [a1,c2,e2] ~ [a1,c2,e2] ~@7",
  C: "[g1,a1,b1,c2,d2,e2] ~ [g1,a1,b1,c2,d2,e2] ~ [g1,a1,b1,c2,d2,e2] ~ [g1,a1,b1,c2,d2,e2] ~ [g1,a1,b1,c2,d2,e2] ~@5 [g1,a1,b1,c2,d2,e2] ~", // Cmaj7
  D: "[g1,a1,b1,c2,d2,e2] ~@7 [g1,a1,b1,c2,d2,e2] ~@7", E: "[f1,g1,a1,b1,c2,d2,e2,f2] ~@15",
})).s("gm_taiko_drum").gain(0.64)

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

// drums · rim
const rim = s("rim").struct(`<
  ~@121 A@7 ~ A@7 ~ A@7 ~ A@7 ~ A@7 ~ A@7 ~ A@7 ~ A@7 ~ A@7 ~ A@7 ~ A@7 ~ A@7 ~ A@7 ~ A@16 ~@13
>`.pickRestart({
  A: "~@7 x",
})).gain(0.45)

// drums · snare
const snare = s("sd").struct(`<
  A@48 ~@24 A@32 ~@17 B@7 C B@7 C B@7 C B@7 C B@7 C B@7 C B@7 C B@7 C B@7 C B@7 C B@7 C B@7 C B@7 C B@16 D E D E D E D E
  D E D E ~
>`.pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~ x ~ x ~ x ~@2", C: "~ x ~ x ~@2 x!2", D: "~@5 x ~@2", E: "~@2 x ~@2 x ~@2",
})).gain(0.45)

// drums · low tom
const low_tom = s("lt").struct(`<
  A@48 ~@24 A@32 ~@19 B ~@3 B C ~@2 B ~@3 B C ~@2 B ~@3 B C ~@2 B ~@3 B C ~@2 B ~@3 B C ~@2 B ~@3 B C ~@2 B ~@3 B C ~@2
  B ~@3 B C ~@2 B ~@3 B C ~@2 B ~@3 B C ~@2 B ~@3 B C ~@2 B ~@3 B C ~@2 B ~@3 B C D ~ D ~ D ~ D ~ D ~ D ~ D ~ D ~ E F E
  F E F E F E F E F G
>`.pickRestart({
  A: "~@3 x", B: "x!4 ~@4", C: "~@4 x!2 ~@2", D: "x!5 ~@3", E: "x!5 ~@2 x", F: "x!2", G: "x",
})).gain(0.45)

// drums · hihat
const hihat = s("hh").struct("<[x!2 ~@2 x!2 ~ x!3 ~@6]!48 ~@24 [x!2 ~@2 x!2 ~ x!3 ~@6]!32 ~@25 [x!16]!112 ~@13>")
  .gain(0.45)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@128 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ C D C
  D C D C D C D C D E
>`.pickRestart({
  A: "~@4 x!2 ~@2", B: "x!5 ~@3", C: "x!5 ~@2 x", D: "x!2", E: "x",
})).gain(0.45)

// drums · open hat
const open_hat = s("oh").struct("<[~ x ~ x ~ x!2 ~]!48 ~@24 [~ x ~ x ~ x!2 ~]!32 ~@150>").gain(0.34)

// drums · china
const china = s("cr").struct(`<
  ~@128 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B C B
  C B C B C B C B C ~
>`.pickRestart({
  A: "~@6 x!2", B: "~@5 x ~@2", C: "~@2 x ~@2 x ~@2",
})).gain(0.45)

stack(
  overdriven_guitar, orchestra_hit, bass, bass_2, piano, bass_3, agogo, taiko_drum, kick, rim, snare, low_tom, hihat,
  mid_tom, open_hat, china
)

More by Nine Inch Nails