Strudelify

Suicide Note, Part 2

Pantera

KeyD minorTempo120 bpm
0:00/0:00
// Suicide Note, Part 2 — Pantera
// 120 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: Full arrangement: all 121 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/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 · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  A B A B A B A B C@4 D E D E C@4 D E D E F@2 G@4 F@2 G@4 H I H I H I H I A B A B A B A J C@4 D E D E C@4 D E D E F@2
  G@4 F@2 G@4 H I H I H I H I H I H I H I H I A B A B A B A B A B A B A B K@2 L@2 M@3 N O@3
>`.pickRestart({
  A: "~@2 f3@2 f3 ~ e3@2", B: "~@2 a2 bb2 ~ bb2 c3 d3, e3@4 d3@3 ~", C: "[g2,d3,g3]@3 [g2,d3,g3]@2 [gb2,d3,g3]@3",
  D: "~@2 gb3@2 gb3 ~ e3@2", E: "~@2 a2 bb2 ~ bb2 c3 d3, e3@4 [d3,g3]@3 ~", F: "[f2,d3]@3 [f2,d3]@5",
  G: "[~ gb3@2 gb3@2 e3@3]/2", H: "[d3,a3,d4,a4]@4 [d3,a3,d4,a4]@2 [d3,a3,d4,a4]!2",
  I: "[d3,f3,f4,a4]!2 [d3,f3,f4,a4]@2 [d3,f3,f4,a4]@2 [d3,f3,f4,a4]!2", J: "[d3,a3,d4]",
  K: "[~@4 f3@3 f3@2 ~@2 e3@4 ~@4 a2@2 bb2@2 ~@2 bb2@2 c3@2 d3@2 ~, ~@15 e3@8 d3@6 ~@3]/2",
  L: "[~@3 f3@3 f3@2 ~@2 e3@4 ~@4 a2@2 bb2@2 ~@3 c3@2 d3@2 ~@3, ~@14 e3@8 d3@5 ~@5, ~@12 bb2 ~@3]/2",
  M: "[~ f3@4 f3@2 ~@2 e3@3 ~@4 a2@2 bb2@2 ~@2 bb2@2 ~ d3@2 ~@4 f3@4 f3@2 ~@2 e3@3 ~@4 a2@2, ~@6 e3@4 d3@2 c3 ~@8 e3@3]/3",
  N: "bb2@2 ~ bb2@2 c3@2 d3@2 ~@4 f3@3, ~@2 d3@5 ~@9",
  O: "[f3@2 ~@2 e3@4 ~@5 bb2@2 ~@2 bb2@2 c3@2 d3@2 ~ d4@15 ~@9, ~@8 e3@7 d3@5 ~@3 [d3,a3]@16 ~@9, ~@6 a2 ~@17]/3", // D5
})).s("gm_acoustic_guitar_steel").gain(0.64)

// bass · acoustic guitar steel
const bass = note(`<
  A@8 ~@4 A@4 ~@4 A@4 ~@2 B@4 ~@2 B@4 ~@8 A@8 ~@4 A@4 ~@4 A@4 ~@2 B@4 ~@2 B@4 ~@16 A@14 C@7 D@3 ~
>`.pickRestart({
  A: "d2/2", B: "[d2@3 d2]/2", C: "[d2@31 d2@30 d2@30 d2@21]/7", D: "[~@3 d2@10 ~@3]/3",
})).s("gm_acoustic_guitar_steel").gain(0.64)

// other · string ensemble 1
const string_ensemble_1 = note("<~@104 A B C@2 A B D@7 E@3 ~>".pickRestart({
  A: "d5", B: "c5 f5", C: "b4/2", D: "[b4@31 d5@15 c5@8 f5@7 b4@30 d5@15 c5@6]/7", E: "[~@2 f5@7 b4@30 ~@9]/3",
})).s("gm_string_ensemble_1").gain(0.64)

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

stack(acoustic_guitar_steel, bass, string_ensemble_1, kick)

More by Pantera