Strudelify
Year of the Boomerang cover art

1996 · Evil Empire

Year of the Boomerang

Rage Against the Machine

KeyG majorTempo173 bpm
0:00/0:00
// Year of the Boomerang — Rage Against the Machine
// 173 bpm, 4/4, key G major. 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 164 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(173/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, A@4 for four bars: edit a riff to change every repeat.

// chords · distortion guitar
const distortion_guitar = note(`<
  A B A B A B A B ~@36 A B A B A B A B A B A B A B A B ~@11 C D@2 E@2 F G@2 ~@18 H@8 ~@8 I@8 J@8 K ~@11 L@2 F D@2 M@2
  N@2 O P@4 Q R@2 S@3 T@2 U
>`.pickRestart({
  A: "[d4,a4,d5,a5,d6]@2 d5 d4", B: "e4 d4 g4 d4", C: "~@17 [g3,c4,g4]@2 [g3,c4,g4]@2 [g3,c4,g4]@2 ~",
  D: "[[g3,c4,g4]@2 [g3,c4,g4]@2 [g3,c4,g4]@2 ~ [g3,c4,g4]@2 [g3,c4,g4]@2 [g3,c4,g4]@2 ~ [g3,c4,g4]@2 [g3,c4,g4]@2 [g3,c4,g4]@2 ~ [g3,c4,g4]@2 [g3,c4,g4]@2 [g3,c4,g4]@2 [g3,c4,g4]@2 ~ [g3,c4,g4]@2 [g3,c4,g4]@2 [g3,c4,g4]@2 ~ [g3,c4,g4]@2 [g3,c4,g4]@2 [g3,c4,g4]@2 ~ [g3,c4,g4]@2 [g3,c4,g4]@2]/2", // C5
  E: "[[g3,c4,g4]@2 [g3,c4,g4]@2 ~ [g3,c4,g4]@2 [g3,c4,g4]@2 [g3,c4,g4]@2 ~ [g3,c4,g4]@2 [g3,c4,g4]@2 [g3,c4,g4]@2 ~ [g3,c4,g4]@2 [g3,c4,g4]@2 [g3,c4,g4]@2 [g3,c4,g4]@2 ~ [g3,c4,g4]@2 [g3,c4,g4]@2 [g3,c4,g4]@2 ~ [g3,c4,g4]@2 [g3,c4,g4]@2 [g3,c4,g4]@2 ~ [g3,c4,g4]@2 [g3,c4,g4]@2 [g3,c4,g4]@2]/2", // C5
  F: "~ [g3,c4,g4]@2 [g3,c4,g4]@2 [g3,c4,g4]@2 ~ [g3,c4,g4]@2 [g3,c4,g4]@2 [g3,c4,g4]@2 [g3,c4,g4]@2 ~ [g3,c4,g4]@2 [g3,c4,g4]@2 [g3,c4,g4]@2 ~", // C5
  G: "[[g3,c4,g4]@2 [g3,c4,g4]@2 [g3,c4,g4]@2 ~ [g3,c4,g4]@2 [g3,c4,g4]@2 [g3,c4,g4]@2 ~ [g3,c4,g4]@2 [g3,c4,g4]@2 [g3,c4,g4]@2 ~ [g3,c4,g4]@2 [g3,c4,g4]@2 [g3,c4,g4]@2 [g3,c4,g4]@2 ~ [g3,c4,g4]@2 [g3,c4,g4]@3 ~@13]/2", // C5
  H: "[~@7 g4@6 d4@26 g4@6 d4@10 d6@8 ~]/8",
  I: "[~@7 [d4,a4,d5,a5,d6]@4 d5@2 d4@2 e4@2 d4@2 g4@2 d4@2 [d4,a4,d5,a5,d6]@4 d5@2 d4@2 e4@2 d4@2 g4@2 d4@2 [d4,a4,d5,a5,d6]@4 d5@2 d4@2 e4@2 d4@2 g4@2 d4@2 [d4,a4,d5,a5,d6]@4 d5@2 d4@2 e4]/8", // D5
  J: "[~ d4@2 g4@2 d4@2 [d4,a4,d5,a5,d6]@4 d5@2 d4@2 e4@2 d4@2 g4@2 d4@2 [d4,a4,d5,a5,d6]@4 d5@2 d4@2 e4@2 d4@2 g4@2 d4@2 [d4,a4,d5,a5,d6]@4 d5@2 d4@2 e4@2 d4@2 g4@2 d4@2 [d4,a4,d5,a5,d6]@4 d5@2 d4@2 e4]/8", // D5
  K: "~ d4@2 g4@2 d4@2 ~",
  L: "[~@14 [g3,c4,g4]@2 [g3,c4,g4]@2 ~ [g3,c4,g4]@2 [g3,c4,g4]@2 [g3,c4,g4]@2 [g3,c4,g4]@2 ~ [g3,c4,g4]@2 [g3,c4,g4]@2 [g3,c4,g4]@2 ~ [g3,c4,g4]@2 [g3,c4,g4]@2 [g3,c4,g4]@2 ~ [g3,c4,g4]@2 [g3,c4,g4]@2 [g3,c4,g4]@2]/2", // C5
  M: "[[g3,c4,g4]@2 [g3,c4,g4]@2 [g3,c4,g4]@2 ~ [g3,c4,g4]@2 [g3,c4,g4]@2 [g3,c4,g4]@2 ~ [g3,c4,g4]@2 [g3,c4,g4]@2 [g3,c4,g4]@2 ~ [g3,c4,g4]@2 [g3,c4,g4]@2 [g3,c4,g4]@2 ~ [g3,c4,g4]@2 [g3,c4,g4]@2 [g3,c4,g4]@2 ~ [g3,c4,g4]@2 [g3,c4,g4]@2 [g3,c4,g4]@2 ~ [g3,c4,g4]@2 [g3,c4,g4]@2 [g3,c4,g4]@2]/2", // C5
  N: "[[g3,c4,g4]@2 ~ [g3,c4,g4]@2 [g3,c4,g4]@2 g3@2 ~ g3@2 g3@2 g3@2 ~ g3@2 g3@2 a#3@5 f3@4 g3@2 ~ g3@2 g3@2 g3@2 ~ g3@2 g3@2 a#3@4]/2", // C5
  O: "~ f3@5 g3@2 g3@2 g3@2 g3@2 ~ g3@2 g3@2 a#3@5",
  P: "[f3@5 g3@2 g3@2 g3@2 ~ g3@2 g3@2 g3@2 a#3@5 f3@5 g3@2 g3@2 g3@2 ~ g3@2 g3@2 g3@2 ~ a#3@4 f3@5 g3@2 g3@2 g3@2 ~ g3@2 g3@2 g3@2 ~ a#3@4 f3@5 g3@2 g3@2 g3@2 ~ g3@2 g3@2 g3@2 ~ a#3@4 f3@4]/4",
  Q: "~ g3@2 g3@2 g3@2 ~ g3@2 g3@2 g3@2 ~ a#3@4 f3@5",
  R: "[g3@2 g3@2 ~ g3@2 g3@2 g3@2 g3@2 ~ a#3@4 f3@5 g3@2 g3@2 ~ g3@2 g3@2 g3@2 ~ g3@2 a#3@4 f3@5 g3@2]/2",
  S: "[g3@2 ~ g3@2 g3@2 g3@2 ~ g3@2 a#3@5 f3@4 g3@2 g3@2 ~ g3@2 g3@2 g3@2 ~ g3@2 a#3@5 f3@4 g3@2 ~ g3@2 g3@2 g3@2 g3@2 ~ g3@2 a#3@5 f3@4 g3@2 ~ g3@2]/3",
  T: "[g3@2 g3@2 g3@2 ~ g3@2 a#3@5 f3@4 g3@2 ~ g3@2 g3@2 g3@2 ~ g3@2 g3@2 a#3@5 f3@4 g3@2 ~ g3@2 g3@2]/2",
  U: "g3@2 ~ g3@2 g3@2 a#3@5 f3@5 ~@7",
})).s("gm_distortion_guitar").gain(0.64)

// bass · electric bass finger
const bass = note(`<
  ~@8 A@24 B ~@3 A@24 C@3 D E@3 F@2 G@2 H I@2 J@2 K L@2 ~@2 M@8 N@8 O@8 P@8 N@16 Q@8 R H I@2 J@2 K S@2 T@4 U V@4 W ~@3
  X@2 Y@2 Z
>`.pickRestart({
  A: "[e1@2 ~@2 d2 e2@2 d1@3 e1@2 ~@3 d1]/2", B: "e1 ~@7", C: "g1@7 g1@3 ~@9 f1@5", D: "~ g1@7 g1@3 ~@9 f1@4",
  E: "[g1@7 g1@3 ~@4 a#1@5 f1@4 g1@7 g1@3 ~@4 a#1@5 f1@4 g1@7 g1@3 ~@4 a#1@5 f1@4 g1@2 ~]/3",
  F: "[g1@2 g1@2 f1@5 g1@2 a#1@5 f1@5 g1@2 g1@2 g1@2 g1@2 ~ g1@2 g1@2 a#1@5 f1@5 g1@2 g1@2]/2",
  G: "[g1@2 ~ g1@2 g1@2 g1@2 a#1@5 f1@5 g1@2 g1@2 g1@2 ~ g1@2 g1@2 g1@2 ~ a#1@4 f1@5 g1@2 g1@2 g1@2]/2",
  H: "~ g1@2 g1@2 g1@2 ~ a#1@4 f1@5 g1@2 g1@2 g1@2 ~",
  I: "[g1@2 g1@2 g1@2 ~ a#1@4 f1@5 g1@2 g1@2 ~ g1@2 g1@2 g1@2 g1@2 ~ a#1@4 f1@5 g1@2 g1@2 ~ g1@2 g1@2]/2",
  J: "[g1@2 g1@2 ~ a#1@4 f1@5 g1@2 g1@2 ~ g1@2 g1@2 g1@2 ~ g1@2 a#1@4 f1@5 g1@2 g1@2 ~ g1@2 g1@2 g1@2]/2",
  K: "~ g1@2 a#1@5 f1@4 g1@2 g1@2 ~ g1@2 g1@2 g1@2 ~",
  L: "[g1@2 a#1@5 f1@4 g1@2 ~ g1@2 g1@2 g1@2 g1@2 ~ g1@2 a#1@5 f1@5 ~@13]/2",
  M: "[~@7 e1@2 ~@2 d2 e2@2 d1@3 e1@2 ~@3 d1 e1@2 ~@2 d2 e2@2 d1@3 e1@2 ~@3 d1 e1@2 ~@2 d2 e2@2 d1@3 e1@2 ~@3 d1 e1@2 ~@2 d2 e2@2 d1@2]/8",
  N: "[~ e1@2 ~@3 d1 e1@2 ~@2 d2 e2@2 d1@3 e1@2 ~@3 d1 e1@2 ~@2 d2 e2@2 d1@3 e1@2 ~@3 d1 e1@2 ~@2 d2 e2@2 d1@3 e1@2 ~@3 d1 e1@2 ~@2 d2 e2@2 d1@2]/8",
  O: "[~ e1@2 ~@3 d1 e1@2 ~@2 d2 e2@2 d1@3 e1@2 ~@3 d1 e1@2 ~@2 d2 e2@2 d1@3 e1@2 ~@3 d1 e1@2 ~@2 d2 e2@2 d1@3 e1@2 ~@3 d1 e1@2 ~@7]/8",
  P: "[~@6 d1 e1@2 ~@2 d2 e2@2 d1@3 e1@2 ~@3 d1 e1@2 ~@2 d2 e2@2 d1@3 e1@2 ~@3 d1 e1@2 ~@2 d2 e2@2 d1@3 e1@2 ~@3 d1 e1@2 ~@2 d2 e2@2 d1@2]/8",
  Q: "[~@3 e1@6 ~@9 d1@3 g1@7 g1@3 ~@9 f1@5 g1@7 g1@3 ~@9 f1@5 g1@7 g1@3 ~@9 f1@5 ~ g1@6 ~ g1@3 ~@9 f1@4 g1@7 g1@3 ~@4 a#1@5 f1@4 g1@7 g1@3 ~@4 a#1@5 f1@5 g1@6 g1@3 ~@4 a#1@5 f1@5 g1@2 g1@2 g1]/8",
  R: "~@2 f1@4 g1@2 a#1@5 f1@5 g1@2 g1@2 g1@2",
  S: "[g1@2 a#1@5 f1@4 g1@2 ~ g1@2 g1@2 g1@2 g1@2 ~ g1@2 a#1@5 f1@4 g1@2 ~ g1@2 g1@2 g1@2 g1@2 ~ g1@2]/2",
  T: "[a#1@5 f1@4 g1@2 ~ g1@2 g1@2 g1@2 g1@2 ~ g1@2 a#1@5 f1@4 g1@2 ~ g1@2 g1@2 g1@2 ~ g1@2 g1@2 a#1@5 f1@4 g1@2 ~ g1@2 g1@2 g1@2 ~ g1@2 g1@2 a#1@5 f1@4 g1@2 ~ g1@2 g1@2 g1@2 ~ g1@2 g1@2 a#1@4]/4",
  U: "~ f1@5 g1@2 g1@2 g1@2 g1@2 ~ g1@2 g1@2 a#1@5",
  V: "[f1@5 g1@2 g1@2 g1@2 ~ g1@2 g1@2 g1@2 a#1@5 f1@5 g1@2 g1@2 g1@2 ~ g1@2 g1@2 g1@2 ~ a#1@4 f1@5 g1@2 g1@2 g1@2 ~ g1@2 g1@2 g1@2 ~ a#1@4 f1@5 g1@2 g1@2 g1@2 ~ g1@2 g1@2 g1@2 ~ a#1@4 f1@4]/4",
  W: "~ g1@2 g1@2 g1@2 ~ g1@2 g1@2 g1@2 ~ a#1@4 f1@5",
  X: "[~@11 a#1@5 f1@4 g1@2 ~ g1@2 g1@2 g1@2 g1@2 ~ g1@2 a#1@5 f1@4 g1@2 ~ g1@2]/2",
  Y: "[g1@2 g1@2 g1@2 ~ g1@2 a#1@5 f1@4 g1@2 ~ g1@2 g1@2 g1@2 ~ g1@2 g1@2 a#1@5 f1@4 g1@2 ~ g1@2 g1@2]/2",
  Z: "g1@2 ~ g1@2 g1@2 a#1@5 f1@5 ~@7",
})).s("gm_electric_bass_finger").gain(0.64)

// chords · electric guitar jazz
const electric_guitar_jazz = note("<~@32 A@4 ~@42 B@4 ~@82>".pickRestart({
  A: "[~@7 g3, e2!2 f2!2 g2 f2 e2 ~, ~@2 b2@6 b2@6 c3@6 c3@6 d3@6 c3@6 b2@3 ~@7, ~@4 e3@6 e3@6 f3@6 f3@6 g3@6 f3@6 e3@3 ~@5]/4",
  B: "[~@75 b2@4 ~@3 g3@11 ~@3, ~@13 e3@11 e3@11 f3@11 f3@11 g3@11 f3@11 e3@5 ~@12, ~@17 e2@11 f2@10 f2@11 g2@11 f2@11 e2@11 ~@14, ~@20 b2@11 c3@11 c3@11 d3@11 c3@11 ~@21]/4",
})).s("gm_electric_guitar_jazz").gain(0.64)

// drums · kick
const kick = s("bd").struct(`<
  ~@8 A B A B A B A B A B A B A B A B A B A B A B A B A ~@3 A B A B A B A B C D A D C D A D C D A D C D A D E@3 F G H I
  J K L M N O P Q R S T U ~@2 V@2 W V W V W V W V W V W V W V W V W V W V W V W V W V W V W V W X W ~ W X W ~ W X W ~ W
  X W ~ W J@2 Y Z J K AA M N O P Q R S T AB AC AD AE AF AG AH AI AJ AK AL E ~@2 AM L AN AO AP
>`.pickRestart({
  A: "x", B: "x!2 ~@2", C: "x ~@6 x", D: "~ x ~@2", E: "x ~@6 x ~@11 x ~@4", F: "~ x ~@6 x ~@11 x ~@3",
  G: "x ~@6 x ~@11 x ~@3 x", H: "~@3 x ~@5 x ~ x", I: "~@5 x ~@11 x ~@6", J: "~@4 x ~@11 x ~@4 x ~@2",
  K: "~@3 x ~@11 x ~@4 x ~@3", L: "~@3 x ~@10 x ~@4 x ~@4", M: "~@2 x ~@10 x ~@4 x ~@5", N: "~ x ~@10 x ~@4 x ~@6",
  O: "x ~@10 x ~@4 x ~@6 x", P: "~@10 x ~@4 x ~@6 x ~", Q: "~@9 x ~@4 x ~@6 x ~@2", R: "~@8 x ~@4 x ~@6 x ~@3",
  S: "~@8 x ~@3 x ~@6 x ~@4", T: "~@7 x ~@3 x ~@6 x ~@5", U: "~@6 x ~@4 x ~@12", V: "~@7 x", W: "~ x ~@5 x", X: "~@3 x",
  Y: "~@2 x ~@5 x ~@2 x", Z: "~@5 x ~@11 x ~@3 x ~@2", AA: "~ x ~@5 x ~@4", AB: "~@6 x ~@3 x ~@6 x ~@6",
  AC: "~@5 x ~@3 x ~@6 x ~@7", AD: "~@4 x ~@3 x ~@6 x ~@8", AE: "~@3 x ~@3 x ~@6 x ~@9", AF: "~@2 x ~@3 x ~@6 x ~@10",
  AG: "~ x ~@4 x ~@5 x ~@11", AH: "x ~@4 x ~@6 x ~@10 x", AI: "~@4 x ~@6 x ~@10 x ~", AJ: "~@3 x ~@6 x ~@10 x ~@2",
  AK: "~@2 x ~@6 x ~@10 x ~@3", AL: "~ x ~@6 x ~@10 x ~@4", AM: "~@4 x!2", AN: "~ x ~@5 x ~ x ~@2",
  AO: "~ x ~@11 x ~@3 x ~@6", AP: "x!2",
})).gain(0.64)

// drums · snare
const snare = s("sd").struct(`<
  ~@8 A B A B A B A B A B A B A B A B A B A B A B A B ~@4 A B A B A B A B A B@3 A B@3 A B@3 A B@3 C@4 D E B F G H@2 I J
  K L M N O P ~@3 H Q H Q H Q H Q H Q H Q H Q H Q H Q H Q H Q H Q H Q H Q H Q H Q H Q@3 H Q@3 H Q@3 H Q@3 A@4 R G S T I
  J K L M N O P U V W X@2 Y@2 Z C@2 ~@3 R G H I J
>`.pickRestart({
  A: "~ x", B: "~@4 x ~@2 x", C: "~@5 x ~@2", D: "~@7 x ~@4", E: "~@13 x ~@10", F: "x ~ x ~@4 x ~ x ~ x ~@12",
  G: "~@5 x ~@6", H: "~@3 x ~@4", I: "~ x ~", J: "~@7 x ~@16", K: "~ x ~@2", L: "~@5 x ~@18", M: "~ x ~@4",
  N: "~ x ~@6", O: "~ x ~@10", P: "~ x ~@22", Q: "~@3 x ~@2 x ~", R: "~@11 x ~@12", S: "~@9 x ~@9 x ~ x ~ x",
  T: "~@2 x!3 ~@7", U: "x ~@22 x", V: "~@11 x", W: "~@7 x", X: "~@5 x", Y: "~@3 x", Z: "~@17 x ~@6",
})).gain(0.64)

// drums · hihat
const hihat = s("hh").struct("<~@8 A B@15 A B@7 ~@4 A B@7 ~@38 C@15 D C@7 D C@7 D ~@42 E F G H ~@4>".pickRestart({
  A: "~ x!3", B: "x!4", C: "~ x ~ x ~ x ~ x", D: "~ x ~ x ~ x ~@2", E: "~@23 x",
  F: "~ x ~@2 x ~ x ~ x ~@2 x ~ x ~ x ~ x ~@2 x ~ x ~", G: "x ~@2 x ~ x ~ x ~@2 x ~ x ~ x ~@2 x ~ x ~ x ~ x",
  H: "~@2 x ~ x ~ x ~@2 x ~@3 x ~@10",
})).gain(0.64)

// drums · low tom
const low_tom = s("lt").struct("<~@156 [~@7 x!2 ~@3] ~@7>").gain(0.64)

// drums · mid tom
const mid_tom = s("mt").struct("<~@156 [~@5 x ~ x ~ x ~ x ~@12] ~@7>").gain(0.64)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@64 A B C D E F G H I J K L M N O ~@55 D E F G H I J K L M N P Q R S T U V W X Y Z AA ~@2 AB E AC AD AE
>`.pickRestart({
  A: "~@3 x ~ x ~ x ~@2 x ~ x ~@3 x ~@4 x ~@2", B: "~@2 x ~ x ~ x ~@2 x ~ x ~@4 x ~@3 x ~@3",
  C: "~ x ~ x ~ x ~@2 x ~ x ~@4 x ~@3 x ~@4", D: "x ~ x ~ x ~@2 x ~ x ~@4 x ~@3 x ~@4 x",
  E: "~ x ~ x ~@2 x ~ x ~@4 x ~@3 x ~@4 x ~", F: "x ~@2 x ~ x ~ x ~@4 x ~@3 x ~@4 x ~ x",
  G: "~@2 x ~ x ~ x ~@4 x ~@3 x ~@4 x ~ x ~", H: "~ x ~ x ~ x ~@4 x ~@4 x ~@3 x ~ x ~@2",
  I: "x ~ x ~ x ~@4 x ~@4 x ~@3 x ~@2 x ~ x", J: "~ x ~ x ~@4 x ~@4 x ~@3 x ~@2 x ~ x ~",
  K: "x ~ x ~@4 x ~@4 x ~@3 x ~@2 x ~ x ~ x", L: "~@2 x ~@3 x ~@4 x ~@3 x ~@2 x ~ x ~ x ~",
  M: "~ x ~@3 x ~@4 x ~@3 x ~@2 x ~ x ~ x ~@2", N: "x ~@3 x ~@4 x ~@4 x ~ x ~ x ~ x ~@2 x", O: "~@3 x ~@4 x ~@15",
  P: "~@3 x ~@4 x ~@4 x ~ x ~ x ~ x ~@2 x ~", Q: "~@2 x ~@4 x ~@4 x ~ x ~ x ~ x ~@2 x ~@2",
  R: "~ x ~@4 x ~@4 x ~ x ~ x ~@2 x ~ x ~@3", S: "x ~@4 x ~@4 x ~ x ~ x ~@2 x ~ x ~@4",
  T: "x ~@3 x ~@4 x ~ x ~ x ~@2 x ~ x ~@4 x", U: "~@3 x ~@4 x ~ x ~ x ~@2 x ~ x ~@4 x ~",
  V: "~@2 x ~@4 x ~ x ~@2 x ~ x ~ x ~@4 x ~@2", W: "~ x ~@4 x ~ x ~@2 x ~ x ~ x ~@4 x ~@3",
  X: "x ~@4 x ~ x ~@2 x ~ x ~ x ~@4 x ~@3 x", Y: "~@4 x ~ x ~@2 x ~ x ~ x ~@4 x ~@4 x",
  Z: "~@3 x ~ x ~@2 x ~ x ~ x ~@4 x ~@4 x ~", AA: "~@7 x", AB: "~@18 x ~@4 x",
  AC: "x ~ x ~@2 x ~ x ~@4 x ~@3 x ~@4 x ~ x", AD: "~ x ~@2 x ~ x ~@3 x ~@4 x ~@4 x ~ x ~",
  AE: "x ~@2 x ~ x ~@4 x ~@13",
})).gain(0.64)

// drums · high tom
const high_tom = s("ht").struct("<~@156 [x!2 ~@10] ~@7>").gain(0.64)

// drums · crash
const crash = s("cr").struct(`<
  ~@8 A ~@15 A ~@7 A ~@3 A ~@7 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ B@3 C D E F G H I J K L M N O P Q R ~@2 S ~@15 S ~@7 S
  ~@7 S ~ S ~ S ~ S ~ S ~ S ~ S ~ S ~ S T@2 U V G H I J K L M N O P Q W X Y Z AA AB AC AD AE AF AG AH ~@2 G AI I AJ AK
>`.pickRestart({
  A: "x", B: "x ~@6 x ~@11 x ~@4", C: "~ x ~@6 x ~@11 x ~@3", D: "x ~@13 x ~@4 x ~@3 x", E: "~@13 x ~@4 x ~@3 x ~",
  F: "~@12 x ~@4 x ~@3 x ~@2", G: "~@11 x ~@4 x ~@3 x ~@3", H: "~@10 x ~@4 x ~@4 x ~@3", I: "~@9 x ~@4 x ~@4 x ~@4",
  J: "~@9 x ~@3 x ~@4 x ~@5", K: "~@8 x ~@3 x ~@4 x ~@6", L: "~@7 x ~@3 x ~@4 x ~@7", M: "~@6 x ~@3 x ~@4 x ~@8",
  N: "~@5 x ~@3 x ~@4 x ~@9", O: "~@4 x ~@3 x ~@4 x ~@10", P: "~@3 x ~@4 x ~@3 x ~@11", Q: "~@2 x ~@4 x ~@3 x ~@12",
  R: "~ x ~@4 x ~@4 x ~@12", S: "~@7 x", T: "~@4 x ~@11 x ~@4 x ~@2", U: "~@2 x ~@5 x ~@2 x",
  V: "~@5 x ~@11 x ~@3 x ~@2", W: "~ x ~@4 x ~@3 x ~@13", X: "x ~@4 x ~@3 x ~@13 x", Y: "~@2 x ~ x ~@6 x",
  Z: "~@3 x ~@3 x ~@13 x ~@2", AA: "~ x ~ x ~@6 x ~", AB: "~ x ~@4 x ~@12 x ~@4", AC: "x ~@4 x ~@12 x ~@4 x",
  AD: "~@4 x ~@12 x ~@4 x ~", AE: "~@3 x ~@13 x ~@3 x ~@2", AF: "~ x ~@6 x ~ x ~", AG: "~ x ~@13 x ~@3 x ~@4",
  AH: "~@7 x ~ x ~@2", AI: "~@10 x ~@4 x ~@3 x ~@4", AJ: "~@8 x ~@4 x ~@4 x ~@5", AK: "~@7 x ~@4 x ~@11",
})).gain(0.64)

// drums · ride
const ride = s("rd").struct(`<
  ~@44 A B A B A B A B A B A B A B A B ~@54 C D C D C D C D C D C D C D C D ~@34
>`.pickRestart({
  A: "~ x!3", B: "x!4", C: "~ x ~ x ~ x ~ x", D: "~ x ~ x ~ x ~@2",
})).gain(0.64)

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

More by Rage Against the Machine