Strudelify

Toxicity

Joel Gonzalez

KeyE♭ majorTempo116 bpm
0:00/0:00
// Toxicity — Joel Gonzalez
// 116 bpm, 12/8, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Transcription provider: pdmx. https://musescore.com/score/5933852; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 72 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(116/6)

// 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 · "Guitar 1"
const acoustic_guitar_steel = note(`<
  A B C D ~@8 A B C D A E C F A E C F ~@8 A B C D A E C F A E C F ~@28
>`.pickRestart({
  A: "~@11 g4, c4!6, ~ g4@2 g4@2 g4@2 g4@2 g4@2 ~", B: "~@11 bb4, eb4!6, ~ bb4@2 bb4@2 bb4@2 bb4@2 bb4@2 ~",
  C: "~@11 g4, c4@2 c4@2 c4@3 c4@3 c4@2, ~ g4@2 g4@2 g4@4 g4@2 ~, ~@3 ab4 ab4@2",
  D: "~@11 bb4, eb4@2 eb4@2 eb4@3 eb4@3 eb4@2, ~ bb4@2 bb4@3 bb4@2 bb4@3 ~, ~@5 c5@7, ~@3 ab4",
  E: "~@11 eb4, eb4@2 eb4@3 eb4@3 eb4@3 ~, ~ bb4@3 bb4@3 bb4@3 bb4@2, ~ d5@2 d5, ~ eb5",
  F: "~@11 bb4, eb4@2 eb4@2 eb4@3 eb4@3 eb4@2, ~ bb4@5 bb4@2 bb4@3 ~, ~@3 c5@2 c5@7, ~@3 ab4",
})).s("gm_acoustic_guitar_steel").gain(0.3).pan(0)

// chords · electric guitar jazz · "Guitar 2"
const electric_guitar_jazz = note("<A B C D ~@8 A B C D A E C D A E C D ~@8 A B C D A E C D A E C D ~@28>".pickRestart({
  A: "~@11 g3, c3!6, ~ g3@2 g3@2 g3@2 g3@2 g3@2 ~", B: "~@11 bb3, eb3!6, ~ bb3@2 bb3@2 bb3@2 bb3@2 bb3@2 ~",
  C: "~@11 g3, c3@2 c3@2 c3@3 c3@3 c3@2, ~ g3@2 g3@2 g3@4 g3@2 ~, ~@3 ab3 ab3@2",
  D: "~@11 ab3, eb3@2 eb3@2 eb3@3 eb3@3 eb3@2, ~ bb3@5 bb3@2 bb3@4, ~@3 c4@2 c4@7, ~@9 ab3@2 ~",
  E: "~@11 eb3, eb3@2 eb3@3 eb3@3 eb3@3 ~, ~ bb3@3 bb3@3 bb3@3 bb3@2, ~ d4@2 d4, ~ eb4",
})).s("gm_electric_guitar_jazz").gain(0.3).pan(1)

// chords · distortion guitar · "Guitar 3"
const distortion_guitar = note(`<
  ~@4 A B A B C B A B D@2 ~@6 E F E F A B A B C B A B G ~@7 E F E F A B A B C B A B H@2 I@2 J@2 I@2 A B A B C B A B I@2
  J K
>`.pickRestart({
  A: "[c2,g2,c3]@2 ~@10 [eb2,bb2] [d2,a2] [c2,g2] [d2,a2] [c2,g2,c3]@2 ~@6", // C5 Eb5 D5 C5 D5 C5
  B: "[ab2,eb3,ab3]@3 [ab2,eb3,ab3]!3 [g2,d3,g3]@3 [g2,d3,g3]!3", // Ab5 G5
  C: "[eb2,bb2] [d2,a2] [c2,g2] [d2,a2] [c2,g2]!2 [eb2,bb2] [d2,a2] [c2,g2] [d2,a2] [c2,g2]!2 [eb2,bb2] [d2,a2] [c2,g2] [d2,a2] [c2,g2]!2 [eb2,bb2] [d2,a2] [c2,g2] [d2,a2] [c2,g2]!2", // Eb5 D5 C5 D5 C5 Eb5 D5 C5 …
  D: "[c2,g2,c3]/2", // C5
  E: "[c2,g2] ~ [c2,g2]!2 ~ [c2,g2]!2 ~ [c2,g2] ~ [c2,g2] ~ [c2,g2] ~ [c2,g2]!2 ~ [c2,g2]!2 ~ [c2,g2] ~ [c2,g2] ~", // C5
  F: "[eb2,bb2] ~ [eb2,bb2]!2 ~ [eb2,bb2]!2 ~ [eb2,bb2] ~ [eb2,bb2] ~ [eb2,bb2] ~ [eb2,bb2]!2 ~ [eb2,bb2]!2 ~ [eb2,bb2] ~ [eb2,bb2] ~", // Eb5
  G: "[c2,g2,c3]@2 ~", H: "c3!6 eb3 c3!2 d3@3 c3!6 eb3 c3!2 d3@3",
  I: "[eb2,bb2] [d2,a2] [c2,g2]!4 [eb2,bb2] [d2,a2] [c2,g2]!4 [eb2,bb2] [d2,a2] [c2,g2]!4 [eb2,bb2] [d2,a2] [c2,g2]!4", // Eb5 D5 C5 Eb5 D5 C5 Eb5 D5 …
  J: "[c2,g2] ~@2 [c2,g2] ~ [c2,g2] [eb2,bb2] [d2,a2] [c2,g2] d2@3 [c2,g2] ~@2 [c2,g2] ~ [c2,g2] [eb2,bb2] [d2,a2] [c2,g2] d2@3", // C5 Eb5 D5 C5 Eb5 D5 C5
  K: "[c2,g2] ~@2 [c2,g2] ~ [c2,g2] [eb2,bb2] [d2,a2] [c2,g2] d2@3 [c2,g2] ~@2 [c2,g2] ~ [c2,g2] [eb2,bb2] [d2,a2] [c2,g2] d2@2 ~", // C5 Eb5 D5 C5 Eb5 D5 C5
})).s("gm_distortion_guitar").gain(0.4)

// bass · electric bass finger · "Bass"
const bass = note(`<
  ~@4 A B A B C B A B D E F E D E F E D E F E A B A B C B A B D E F E D E F E D E F E A B A B C B A B G ~ H@2 I@2 H@2 A
  B A B C B A B H@2 J K
>`.pickRestart({
  A: "c1@2 ~@10 eb1 d1 c1 d1 c1@2 ~@6", B: "ab1@3 ab1!3 g1@3 g1!3",
  C: "eb1 d1 c1 d1 c1!2 eb1 d1 c1 d1 c1!2 eb1 d1 c1 d1 c1!2 eb1 d1 c1 d1 c1!2", D: "c2 g2 c2 g2 c2 g2 c2 g2 c2 g2 c2!2",
  E: "eb2 bb2 eb2 bb2 eb2 bb2 eb2 bb2 eb2 bb2 eb2!2", F: "c2 g2 c2 c3 c2 g2 c2 g2 c2 g2 c2!2", G: "c1 ~@3",
  H: "eb1 d1 c1!4 eb1 d1 c1!4 eb1 d1 c1!4 eb1 d1 c1!4", I: "c1@3 c1@2 c1 eb1 d1 c1 d1@3 c1@3 c1@2 c1 eb1 d1 c1 d1@3",
  J: "c1@3 c1@2 c1 eb1 d1 c1 d1@3 c1@2 c1!4 eb1 d1 c1 d1@3",
  K: "c1@3 c1@2 c1 eb1 d1 c1 d1@3 c1@2 c1!4 eb1 d1 c1 d1 ~@2",
})).s("gm_electric_bass_finger").gain(0.3)

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

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

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@4 A ~ B ~ C ~ B D ~@12 E ~ E ~ F ~ A ~@13 E ~ E ~ F ~ G ~@11 G ~ F ~ H ~@5
>`.pickRestart({
  A: "~@21 x!3", B: "~@17 x ~@3 x!3", C: "~@2 x!4 ~@4 x!2 ~@2 x!4 ~@3 x!3", D: "~@23 x", E: "~@15 x!3 ~@2 x!4",
  F: "~@2 x!4 ~@4 x!2 ~@2 x!4 ~@4 x!2", G: "~@13 x ~ x ~@5 x!3", H: "~@20 x!4",
})).gain(0.3)

// drums · hihat
const hihat = s("hh").struct("<~@12 A B@7 A B@3 ~@8 A B@3 A B@6 C ~@28>".pickRestart({
  A: "~ x!11", B: "x!12", C: "x!9 ~ x ~",
})).gain(0.3)

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

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

// drums · ride
const ride = s("rd").struct(`<
  ~@5 A ~ A ~ A ~ B ~@13 A ~ A ~ A ~ C ~@13 A ~ A ~ A ~ A D ~@8 A ~ A ~ A ~ A ~@4
>`.pickRestart({
  A: "~ x!5 ~ x!5", B: "~ x!5 ~ x!2 ~@3", C: "~ x!5 ~@2 x!2 ~@2", D: "~ x ~@10",
})).gain(0.3)

stack(
  acoustic_guitar_steel, electric_guitar_jazz, distortion_guitar, bass, kick, snare, low_tom, hihat, mid_tom, crash,
  ride
)

More by Joel Gonzalez