Strudelify

Becoming

Pantera

KeyD minorTempo256 bpm
0:00/0:00
// Becoming — Pantera
// 256.4 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 198 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 31.
setcpm(256.4/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.

// chords · overdriven guitar
const overdriven_guitar = note(`<
  A B A C D E D F D E D F D E D F D E D F G H@2 F G H@2 F G H@2 F G H@2 F D E D F D E D F D E D F D E D F I J@3 K J@3 I
  J@3 K J@3 A C D E D F D E D F D E D F D E D F G H@2 F G H@2 F G H@2 F G H@2 F D E D F D E D F D E D F D E D F I J@3 K
  J@3 I J@3 K J@3 A C D E D F D E D F D E D F D E D F A C I J@3 K J@3 I J@3 K J@3 A B A C D E D F D E D F D E D F D E D
  F L@3 F L@3 M
>`.pickRestart({
  A: "[g2,d3,g3]!3 ~@3 [g2,d3,g3]!2", B: "[g2,d3,g3] ~@3 [g2,d3,g3]!3 ~", C: "[g2,d3,g3] ~@3 [g2,d3,g3]!2 ~@2",
  D: "[d2,a2,d3]@2 [d2,a2,d3]@2 [d3,a3,d4]@2 [d2,a2,d3] [c2,g2,c3]", // D5 C5
  E: "[d2,a2,d3]@2 [d2,a2,d3]@2 ~@2 [e2,b2,e3] [eb2,bb2,eb3]", F: "[d2,a2,d3] [e2,b2,e3] [f2,c3,f3]@2",
  G: "[d2,a2,d3]@2 [d2,a2,d3]@4 [ab2,eb3,ab3] [g2,d3,g3]", H: "[ab2,eb3,ab3]@2 [d2,a2,d3]@4 [ab2,eb3,ab3] [g2,d3,g3]",
  I: "[a2,e3,a3] [g2,d3,g3]", J: "[[eb2,bb2,eb3] [d2,a2,d3] [c2,g2,c3]@10]/3", K: "[a2,e3,a3] [g2,d3,g3] [e2,b2,e3]@2",
  L: "[d2,a2,d3] ~ [d2,a2,d3] ~@5", M: "[d2,a2,d3] [e2,b2,e3] [f2,c3,f3] ~",
})).s("gm_overdriven_guitar").gain(0.64)

// bass · electric bass finger
const bass = note(`<
  A B A C D E D F D E D F D E D F D E D F G H@2 F G H@2 F G H@2 F G H@2 F D E D F D E D F D E D F D E D F I J@3 K J@3 I
  J@3 K J@3 A C D E D F D E D F D E D F D E D F G H@2 F G H@2 F G H@2 F G H@2 F D E D F D E D F D E D F D E D F I J@3 K
  J@3 I J@3 K J@3 A C D E D F D E D F D E D F D E D F A C I J@3 K J@3 I J@3 K J@3 A B A C D E D F D E D F D E D F D E D
  F L@3 F L@3 M
>`.pickRestart({
  A: "g1!3 ~@3 g1!2", B: "g1 ~@3 g1!3 ~", C: "g1 ~@3 g1!2 ~@2", D: "d1@2 d1@2 d2@2 d1 c1", E: "d1@2 d1@2 ~@2 e1 eb1",
  F: "d1 e1 f1@2", G: "d1@2 d1@4 ab1 g1", H: "ab1@2 d1@4 ab1 g1", I: "a1 g1", J: "[eb1 d1 c1@10]/3", K: "a1 g1 e1@2",
  L: "d1 ~ d1 ~@5", M: "d1 e1 f1 ~",
})).s("gm_electric_bass_finger").gain(0.64)

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

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

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@4 A B@2 C A B@2 C A B@2 C A B@11 A@9 B@2 C A B@2 C A B@2 C A B@2 C ~@18 A B@2 C A B@2 C A B@2 C A B@11 A@9 B@2 C A
  B@2 C A B@2 C A B@2 C ~@18 A B@2 C A B@2 C A B@2 C A B@3 ~@22 A B@2 C A B@2 C A B@2 C A B@2 C B@7 ~
>`.pickRestart({
  A: "~ x!3", B: "x!4", C: "x!2 ~ x",
})).gain(0.64)

// drums · crash
const crash = s("cr").struct(`<
  ~@4 A ~@2 B A ~@2 B A ~@2 B A ~@11 A@9 ~@2 B A ~@2 B A ~@2 B A ~@2 B A B ~@2 A B ~@2 A B ~@2 A B ~@4 A ~@2 B A ~@2 B A
  ~@2 B A ~@11 A@9 ~@2 B A ~@2 B A ~@2 B A ~@2 B A B ~@2 A B ~@2 A B ~@2 A B ~@4 A ~@2 B A ~@2 B A ~@2 B A ~@5 A B ~@2 A
  B ~@2 A B ~@2 A B ~@6 A ~@2 B A ~@2 B A ~@2 B A ~@2 B ~@7 C
>`.pickRestart({
  A: "x", B: "~ x", C: "x!3 ~",
})).gain(0.64)

// drums · ride bell
const ride_bell = s("rd").struct(`<
  ~@52 A B C@2 A B C@2 A B C@2 A B C@2 ~@50 A B C@2 A B C@2 A B C@2 A B C@2 ~@20 A B C@2 A B C@2 A B C@2 A B C@2 ~@28
>`.pickRestart({
  A: "~ x!3", B: "x!2 ~@2", C: "x!4",
})).gain(0.64)

stack(overdriven_guitar, bass, kick, snare, open_hat, crash, ride_bell)

More by Pantera