Strudelify

Neighbor

Ugly Kid Joe

KeyF♯ minorTempo154 bpm
0:00/0:00
// Neighbor — Ugly Kid Joe
// 153.8 bpm, 4/4, key F# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Full arrangement: all 165 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(153.8/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@16 B@4 A@3 C D@2 E ~ A@12 B@4 A@3 C D@2 F@2 D@2 E G@7 H@8 I@8 J@8 K@5 L@7 ~@6 M@8 N@8 O@6 P@6 Q@5 R@15 S@8 T R@3 U
>`.pickRestart({
  A: "[f#2,c#3,f#3]!2 [e2,b2,e3] [a2,e3,a3] ~ [e2,b2,e3] [f#2,c#3,f#3] [e2,b2,e3]", // F#5 E5 A5 E5 F#5 E5
  B: "[b2,f#3,b3]!2 [a2,e3,a3] [d3,a3,d4] ~ [a2,e3,a3] [b2,f#3,b3] [a2,e3,a3]", // B5 A5 D5 A5 B5 A5
  C: "[f#3,c#4,f#4] [e3,b3,e4]@2 [c#3,g#3,c#4]@2 [c3,g3,c4] [b2,f#3,b3] [a2,e3,a3]", // F#5 E5 C#5 C5 B5 A5
  D: "[[c#3,g#3,c#4]@7 [g#3,d#4,g#4]@2 [f3,c4,f4]@2 [c#3,g#3,c#4]@5]/2", E: "[b2,f#3,b3]",
  F: "[[b2,f#3,b3]@7 [b2,f#3,b3]@2 [d#3,a#3,d#4]@2 [f#3,c#4,f#4]@5]/2", // B5 D#5 F#5
  G: "[~@7 [f#2,c#3,f#3]@2 [f#2,c#3,f#3] [e2,b2,e3] [f2,c3,f3]!2 [f#2,c#3,f#3]@2 [f#3,c#4,f#4]@8 [f#2,c#3,f#3]@2 [f#2,c#3,f#3] [e2,b2,e3] [f2,c3,f3]!2 [f#2,c#3,f#3]@2 [f#3,c#4,f#4]@8 [f#2,c#3,f#3]@2 [f#2,c#3,f#3] [e2,b2,e3] [f2,c3,f3]!2 [f#2,c#3,f#3]@2 [f#3,c#4,f#4]@8 [f#2,c#3,f#3]]/7", // F#5 E5 F5 F#5 E5 F5 F#5 E5 …
  H: "[~@3 [f#2,c#3,f#3]@3 [e2,b2,e3]@3 [f2,c3,f3]@3 [f2,c3,f3]@3 [f#2,c#3,f#3]@6 [f#3,c#4,f#4]@24 [f#2,c#3,f#3]@6 [f#2,c#3,f#3]@3 [e2,b2,e3]@3 [f2,c3,f3]@3 [f2,c3,f3]@3 [f#2,c#3,f#3]@6 [a2,e3,a3]@24 [f#2,c#3,f#3]@6 [f#2,c#3,f#3]@3 [e2,b2,e3]@3 [f2,c3,f3]@3 [f2,c3,f3]@3 [f#2,c#3,f#3]@6 [a2,e3,a3]@24 [f#2,c#3,f#3]@6 [f#2,c#3,f#3]@3 [e2,b2,e3]@3 [f2,c3,f3]@3 [f2,c3,f3]@3 [f#2,c#3,f#3]@6 [a2,e3,a3]@23 [f#2,c#3,f#3]@4]/8", // F#5 E5 F5 F#5 E5 F5 F#5 A5 …
  I: "[~@2 [f#2,c#3,f#3]@3 [e2,b2,e3]@3 [f2,c3,f3]@3 [f2,c3,f3]@3 [f#2,c#3,f#3]@6 [a2,e3,a3]@24 [f#2,c#3,f#3]@6 [f#2,c#3,f#3]@3 [e2,b2,e3]@3 [f2,c3,f3]@3 [f2,c3,f3]@3 [f#2,c#3,f#3]@6 [a2,e3,a3]@24 [f#2,c#3,f#3]@6 [f#2,c#3,f#3]@3 [e2,b2,e3]@3 [f2,c3,f3]@3 [f2,c3,f3]@3 [f#2,c#3,f#3]@6 [a2,e3,a3]@24 [f#2,c#3,f#3]@3 [c#3,g#3,c#4]@21 [g#3,d#4,g#4]@6 [f3,c4,f4]@6 [c#3,g#3,c#4]@15 [b2,f#3,b3]]/8", // F#5 E5 F5 F#5 A5 F#5 E5 F5 …
  J: "[~@23 [f#2,c#3,f#3]@3 ~@3 [f#2,c#3,f#3]@3 ~@3 [f#2,c#3,f#3]@3 ~@3 [f#2,c#3,f#3]@3 ~@3 [f#2,c#3,f#3]@3 [f#2,c#3,f#3]@3 [e2,b2,e3]@3 [a2,e3,a3]@3 ~@3 [e2,b2,e3]@3 [f#2,c#3,f#3]@3 [e2,b2,e3]@3 [f#2,c#3,f#3]@3 [f#2,c#3,f#3]@3 [e2,b2,e3]@3 [a2,e3,a3]@3 ~@3 [e2,b2,e3]@3 [f#2,c#3,f#3]@3 [e2,b2,e3]@3 [f#2,c#3,f#3]@3 [f#2,c#3,f#3]@3 [e2,b2,e3]@3 [a2,e3,a3]@3 ~@3 [e2,b2,e3]@3 [f#2,c#3,f#3]@3 [e2,b2,e3]@3 [f#2,c#3,f#3]@3 [f#2,c#3,f#3]@3 [e2,b2,e3]@3 [a2,e3,a3]@3 ~@3 [e2,b2,e3]@3 [f#2,c#3,f#3]@3 [e2,b2,e3]@3 [f#2,c#3,f#3]@3 [f#2,c#3,f#3]@3 [e2,b2,e3]@3 [a2,e3,a3]@3 ~@3 [e2,b2,e3]@3 [f#2,c#3,f#3]@3 [e2,b2,e3]@3 [f#2,c#3,f#3]@3 [f#2,c#3,f#3]@3 [e2,b2,e3]@3 [a2,e3,a3]@3 ~@3 [e2,b2,e3]@3 [f#2,c#3,f#3]@3 [e2,b2,e3]@3 [f#2,c#3,f#3]]/8", // F#5 E5 A5 E5 F#5 E5 F#5 E5 …
  K: "[~@2 [f#2,c#3,f#3]@3 [e2,b2,e3]@3 [a2,e3,a3]@3 ~@3 [e2,b2,e3]@3 [f#2,c#3,f#3]@3 [e2,b2,e3]@3 [f#2,c#3,f#3]@3 [f#2,c#3,f#3]@3 [e2,b2,e3]@3 [a2,e3,a3]@3 ~@3 [e2,b2,e3]@3 [f#2,c#3,f#3]@3 [e2,b2,e3]@3 [c#3,g#3,c#4]@21 [g#3,d#4,g#4]@6 [f3,c4,f4]@6 [c#3,g#3,c#4]@15 [b2,f#3,b3]@24 ~]/5", // F#5 E5 A5 E5 F#5 E5 F#5 E5 …
  L: "[~@23 [f#2,c#3,f#3]@3 [f#2,c#3,f#3]@3 [e2,b2,e3]@3 [a2,e3,a3]@3 ~@3 [e2,b2,e3]@3 [f#2,c#3,f#3]@3 [e2,b2,e3]@3 [f#2,c#3,f#3]@3 [f#2,c#3,f#3]@3 [e2,b2,e3]@3 [a2,e3,a3]@3 ~@3 [e2,b2,e3]@3 [f#2,c#3,f#3]@3 [e2,b2,e3]@3 [f#2,c#3,f#3]@3 [f#2,c#3,f#3]@3 [e2,b2,e3]@3 [a2,e3,a3]@3 ~@3 [e2,b2,e3]@3 [f#2,c#3,f#3]@3 [e2,b2,e3]@3 [f#2,c#3,f#3]@3 [f#2,c#3,f#3]@3 [e2,b2,e3]@3 [a2,e3,a3]@3 ~@3 [e2,b2,e3]@3 [f#2,c#3,f#3]@3 [e2,b2,e3]@3 [f#3,c#4,f#4]@48 ~]/7", // F#5 E5 A5 E5 F#5 E5 F#5 E5 …
  M: "[~@9 [f#2,c#3,f#3]@5 [f#2,c#3,f#3]@4 [e2,b2,e3]@5 [a2,e3,a3]@10 [e2,b2,e3]@5 [f#2,c#3,f#3]@4 [e2,b2,e3]@5 [f#2,c#3,f#3]@5 [f#2,c#3,f#3]@5 [e2,b2,e3]@5 [a2,e3,a3]@9 [e2,b2,e3]@5 [f#2,c#3,f#3]@5 [e2,b2,e3]@5 [b2,f#3,b3]@4 [b2,f#3,b3]@5 [a2,e3,a3]@5 [b2,f#3,b3]@10 [a2,e3,a3]@4 [b2,f#3,b3]@5 [a2,e3,a3]@5 [b2,f#3,b3]@5 [b2,f#3,b3]@5 [a2,e3,a3]@4 [b2,f#3,b3]@10 [a2,e3,a3]@5 [b2,f#3,b3]@5 [a2,e3,a3]@4 [f#2,c#3,f#3]@5 [f#2,c#3,f#3]@5 [e2,b2,e3]@5 [a2,e3,a3]@9 [e2,b2,e3]@5 [f#2,c#3,f#3]]/8", // F#5 E5 A5 E5 F#5 E5 F#5 E5 …
  N: "[~@4 [e2,b2,e3]@5 [f#2,c#3,f#3]@5 [f#2,c#3,f#3]@4 [e2,b2,e3]@5 [a2,e3,a3]@10 [e2,b2,e3]@5 [f#2,c#3,f#3]@4 [e2,b2,e3]@5 [b2,f#3,b3]@5 [b2,f#3,b3]@5 [a2,e3,a3]@5 [b2,f#3,b3]@9 [a2,e3,a3]@5 [b2,f#3,b3]@5 [a2,e3,a3]@5 [b2,f#3,b3]@4 [b2,f#3,b3]@5 [a2,e3,a3]@5 [b2,f#3,b3]@10 [a2,e3,a3]@4 [b2,f#3,b3]@5 [a2,e3,a3]@5 [f#2,c#3,f#3]@5 [f#2,c#3,f#3]@5 [e2,b2,e3]@4 [a2,e3,a3]@10 [e2,b2,e3]@5 [f#2,c#3,f#3]@5 [e2,b2,e3]@4 [f#2,c#3,f#3]@5 [f#2,c#3,f#3]@5 [e2,b2,e3]@5 [a2,e3,a3]@9 [e2,b2,e3]@5 [f#2,c#3,f#3]]/8", // E5 F#5 E5 A5 E5 F#5 E5 B5 …
  O: "[~@4 [e2,b2,e3]@5 [b2,f#3,b3]@5 [b2,f#3,b3]@4 [a2,e3,a3]@5 [b2,f#3,b3]@10 [a2,e3,a3]@5 [b2,f#3,b3]@4 [a2,e3,a3]@5 [b2,f#3,b3]@5 [b2,f#3,b3]@5 [a2,e3,a3]@5 [b2,f#3,b3]@9 [a2,e3,a3]@5 [b2,f#3,b3]@5 [a2,e3,a3]@9 [f#2,c#3,f#3]@4 [e2,b2,e3]@4 [f2,c3,f3]@4 [f2,c3,f3]@4 ~ [f#2,c#3,f#3]@8 [f#3,c#4,f#4]@29]/6", // E5 B5 A5 B5 A5 B5 A5 B5 …
  P: "[[f#2,c#3,f#3]@7 [f#2,c#3,f#3]@4 [e2,b2,e3]@4 [f2,c3,f3]@3 [f2,c3,f3]@3 [f#2,c#3,f#3]@6 [f#3,c#4,f#4]@24 [f#2,c#3,f#3]@6 [f#2,c#3,f#3]@3 [e2,b2,e3]@3 [f2,c3,f3]@3 [f2,c3,f3]@3 [f#2,c#3,f#3]@6 [f#3,c#4,f#4]@24 [f#2,c#3,f#3]@6 [f#2,c#3,f#3]@3 [e2,b2,e3]@3 [f2,c3,f3]@3 [f2,c3,f3]@3 [f#2,c#3,f#3]@6 [f#3,c#4,f#4]@3 [f#2,c#3,f#3]@3 [f#2,c#3,f#3]@3 [f#2,c#3,f#3]@3 [f#2,c#3,f#3]@3 [f#2,c#3,f#3]@3 [f#2,c#3,f#3]@3]/6", // F#5 E5 F5 F#5 E5 F5 F#5 E5 …
  Q: "[[f#2,c#3,f#3]!2 [c#3,g#3,c#4]@7 [g#3,d#4,g#4]@2 [f3,c4,f4]@2 [c#3,g#3,c#4]@5 [b2,f#3,b3]@16 [f#2,c#3,f#3]!2 [e2,b2,e3] [a2,e3,a3] ~ [e2,b2,e3]]/5", // F#5 C#5 G#5 F5 C#5 B5 F#5 E5 …
  R: "[f#2,c#3,f#3] [e2,b2,e3] [f#2,c#3,f#3]!2 [e2,b2,e3] [a2,e3,a3] ~ [e2,b2,e3]", // F#5 E5 F#5 E5 A5 E5
  S: "[[f#2,c#3,f#3] [e2,b2,e3] [c#3,g#3,c#4]@7 [g#3,d#4,g#4]@2 [f3,c4,f4]@2 [c#3,g#3,c#4]@5 [b2,f#3,b3]@7 [b2,f#3,b3]@2 [d#3,a#3,d#4]@2 [f#3,c#4,f#4]@5 [c#3,g#3,c#4]@7 [g#3,d#4,g#4]@2 [f3,c4,f4]@2 [c#3,g#3,c#4]@5 [b2,f#3,b3]@8 ~@6]/8", // F#5 E5 C#5 G#5 F5 C#5 B5 D#5 …
  T: "~@2 [f#2,c#3,f#3]!2 [e2,b2,e3] [a2,e3,a3] ~ [e2,b2,e3]", U: "[f#2,c#3,f#3] [e2,b2,e3] [f#2,c#3,f#3] ~@5",
})).s("gm_overdriven_guitar").gain(0.36)

// bass · electric bass finger
const bass = note(`<
  ~@4 A@12 B@4 A@3 C D@2 E ~ A@12 B@4 A@3 C D@2 F@2 D@2 E G@7 H@8 I@8 J@8 K@5 L@4 M@8 N@8 O@8 P@7 Q@6 R@5 S@15 T@8 U S@3
  V
>`.pickRestart({
  A: "f#1!2 e1 a1 ~ e1 f#1 e1", B: "b1!2 a1 d2 ~ a1 b1 a1", C: "f#2 e2@2 c#2@2 c2 b1 a1",
  D: "[c#2@7 g#2@2 f2@2 c#2@5]/2", E: "b1", F: "[b1@7 b1@2 d#2@2 f#2@5]/2",
  G: "[~@7 f#1@2 f#1 e1 f1!2 f#1@2 f#2@8 f#1@2 f#1 e1 f1!2 f#1@2 f#2@8 f#1@2 f#1 e1 f1!2 f#1@2 f#2@8 f#1]/7",
  H: "[~@3 f#1@3 e1@3 f1@3 f1@3 f#1@6 f#2@24 f#1@6 f#1@3 e1@3 f1@3 f1@3 f#1@6 a1@24 f#1@6 f#1@3 e1@3 f1@3 f1@3 f#1@6 a1@24 f#1@6 f#1@3 e1@3 f1@3 f1@3 f#1@6 a1@23 f#1@4]/8",
  I: "[~@2 f#1@3 e1@3 f1@3 f1@3 f#1@6 a1@24 f#1@6 f#1@3 e1@3 f1@3 f1@3 f#1@6 a1@24 f#1@6 f#1@3 e1@3 f1@3 f1@3 f#1@6 a1@24 f#1@3 c#2@21 g#2@6 f2@6 c#2@15 b1]/8",
  J: "[~@23 f#1@3 ~@3 f#1@3 ~@3 f#1@3 ~@3 f#1@3 ~@3 f#1@3 f#1@3 e1@3 a1@3 ~@3 e1@3 f#1@3 e1@3 f#1@3 f#1@3 e1@3 a1@3 ~@3 e1@3 f#1@3 e1@3 f#1@3 f#1@3 e1@3 a1@3 ~@3 e1@3 f#1@3 e1@3 f#1@3 f#1@3 e1@3 a1@3 ~@3 e1@3 f#1@3 e1@3 f#1@3 f#1@3 e1@3 a1@3 ~@3 e1@3 f#1@3 e1@3 f#1@3 f#1@3 e1@3 a1@3 ~@3 e1@3 f#1@3 e1@3 f#1]/8",
  K: "[~@2 f#1@3 e1@3 a1@3 ~@3 e1@3 f#1@3 e1@3 f#1@3 f#1@3 e1@3 a1@3 ~@3 e1@3 f#1@3 e1@3 c#2@21 g#2@6 f2@6 c#2@15 b1@24 ~]/5",
  L: "[~@23 f#1@3 f#1@3 e1@3 a1@3 ~@3 e1@3 f#1@3 e1@3 f#1@3 f#1@3 e1@3 a1@3 ~@3 e1@3 f#1@3 e1@3 f#1@3 f#1@3 e1@3 a1@3 ~@3 e1@3 f#1@3 e1@3 f#1]/4",
  M: "[~@2 f#1@3 e1@3 a1@3 ~@3 e1@3 f#1@3 e1@3 f#2@48 f#1@5 f#1@5 e1@5 a1@9 e1@5 f#1@5 e1@5 f#1@4 f#1@5 e1@5 a1@10 e1@4 f#1@5 e1@5 f#1@5 f#1@5 e1@4 a1@10 e1@5 f#1@5 e1@4 f#1@5 f#1]/8",
  N: "[~@4 e1@5 a1@9 e1@5 f#1@5 e1@5 f#1@5 f#1@4 e1@5 a1@10 e1@5 f#1@4 e1@5 f#1@5 f#1@5 e1@5 a1@9 e1@5 f#1@5 e1@5 b1@4 b1@5 a1@5 b1@10 a1@4 b1@5 a1@5 b1@5 b1@5 a1@4 b1@10 a1@5 b1@5 a1@4 f#1@5 f#1]/8",
  O: "[~@4 e1@5 a1@9 e1@5 f#1@5 e1@5 f#1@5 f#1@4 e1@5 a1@10 e1@5 f#1@4 e1@5 b1@5 b1@5 a1@5 b1@9 a1@5 b1@5 a1@5 b1@4 b1@5 a1@5 b1@10 a1@4 b1@5 a1@5 f#1@5 f#1@5 e1@4 a1@10 e1@5 f#1@5 e1@4 f#1@5 f#1]/8",
  P: "[~@4 e1@5 a1@9 e1@5 f#1@5 e1@5 b1@5 b1@4 a1@5 b1@10 a1@5 b1@4 a1@5 b1@5 b1@5 a1@5 b1@9 a1@5 b1@5 a1@9 f#1@4 e1@4 f1@4 f1@4 ~ f#1@8 f#2@29]/7",
  Q: "[f#1@7 f#1@4 e1@4 f1@3 f1@3 f#1@6 f#2@24 f#1@6 f#1@3 e1@3 f1@3 f1@3 f#1@6 f#2@24 f#1@6 f#1@3 e1@3 f1@3 f1@3 f#1@6 f#2@3 f#1@3 f#1@3 f#1@3 f#1@3 f#1@3 f#1@3]/6",
  R: "[f#1!2 c#2@7 g#2@2 f2@2 c#2@5 b1@16 f#1!2 e1 a1 ~ e1]/5", S: "f#1 e1 f#1!2 e1 a1 ~ e1",
  T: "[f#1 e1 c#2@7 g#2@2 f2@2 c#2@5 b1@7 b1@2 d#2@2 f#2@5 c#2@7 g#2@2 f2@2 c#2@5 b1@8 ~@6]/8",
  U: "~@2 f#1!2 e1 a1 ~ e1", V: "f#1 e1 f#1 ~@5",
})).s("gm_electric_bass_finger").gain(0.36)

// other · distortion guitar
const distortion_guitar = note("<~@80 A@8 B@7 C@8 ~@33 D E F G H I J K@2 L@2 M N L@2 M O ~@12>".pickRestart({
  A: "[~@5 a3@6 f#3@3 e3@3 f#3@3 b3@3 c4@3 b3@3 a3@3 f#3@6 e3@3 f#3@3 a3@3 c4@3 b3@3 a3@3 f#3@3 c4@3 b3@3 a3@3 b3@3 f#4@6 f#4@6 f#4@6 f#4@6 b3@6 b3@6 b3@3 a3 ~ f#3 a3 ~ f#3 e3 ~ c#3 b3@6 b4@3 c#4@3 f#3@3 a3@3 b3@3 c4@3 b3@3 a3@3 f#3@3 b3@3 a3@3 f#3@3 e3@3 c#3@3 e3@3 c#3@3 g#3@6 f#3@12 c#4]/8",
  B: "[~@2 c#4@3 c#4@3 c#4@6 c#4@3 c#4@3 f4@6 f#4@6 g#4@15 b3@6 b3@3 b3@3 b3@3 b3@3 b3@3 b3@3 b3@3 a3@3 f#3@3 e3@3 f#3@3 e3@3 c#3@3 b2@3 c#3@6 c#3@6 c#3@6 c#3@6 f#3@6 a3@3 f#3@6 c#3@3 e3@3 c#3@3 f#3@9 a3@9 b3@7]/7",
  C: "[~@2 c4@9 b3@3 a3@3 f#3@6 a4@169]/8", D: "~@4 a3@2 f#3 e3", E: "f#3 b3 c4 b3 a3 f#3@2 e3",
  F: "f#3 a3 c4 b3 a3 f#3 c4 b3", G: "a3 b3 f#4@2 f#4@2 f#4@2", H: "f#4@6 b3@6 b3@6 b3@3 a3 ~ f#3",
  I: "a3 ~ f#3 e3 ~ c#3 b3@6 b4@3 c#4@3 f#3@3 a3@3", J: "b3 c4 b3 a3 f#3 b3 a3 f#3",
  K: "[e3 c#3 e3 c#3 g#3@2 f#3@4 b3@3 c#4@3]/2", L: "[d#4@9 e4@9 f#4@12 f#4@12 f#4 ~ e4 c4 ~ e4]/2",
  M: "f#4 ~ e4 c4 ~ e4 f#4 ~ e4 c4 ~ e4 f#4 ~ e4 c4 ~ e4 f#4 ~ e4 c4 ~ e4", N: "f#4 ~ e4 c4 ~ e4 b3@9 c#4@9",
  O: "f#4 ~ e4 c4 ~ e4 ~@18",
})).s("gm_distortion_guitar").gain(0.47)

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

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

// drums · low tom
const low_tom = s("lt").struct(`<
  ~@3 A ~@3 B ~@7 B ~@7 B ~@2 C ~@4 B ~@7 B ~@7 B ~@6 C ~@28 D ~@3 D ~@2 E ~@4 D ~@44 F ~@3 F ~@3 F ~@3 F ~@6 G ~@5
>`.pickRestart({
  A: "~@6 x!2", B: "~@7 x", C: "~@3 x", D: "~@5 x", E: "~@17 x ~@6", F: "~ x ~@6", G: "x",
})).gain(0.64)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@8 A B@6 C ~@11 D ~@4 A B@6 C ~@15 D ~@15 E ~@3 E ~@14 F ~@11 G H ~@55 I ~@5
>`.pickRestart({
  A: "~ x!3", B: "x!4", C: "x!2 ~@2", D: "x", E: "~ x ~@2 x ~@2 x ~@2 x ~", F: "~@23 x", G: "~@3 x",
  H: "~@4 x ~@9 x ~@8 x", I: "~ x ~@2",
})).gain(0.64)

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

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@4 A B@3 ~@8 A B@2 C A B@3 ~ C ~@2 A B@3 ~@8 A B@2 C A B@3 ~ C ~ C ~ C ~@10 A B@3 A D E F E@3 F G H ~@2 E@3 F E@3 F G
  H ~@2 E@3 F ~@27 I J K L B M B@2 N ~ A ~@2 O B@3 M B@3 N ~ A B N ~ A B N A ~ A ~ A ~@7
>`.pickRestart({
  A: "~ x!3", B: "x!4", C: "x!3 ~", D: "x ~@5 x ~@4 x ~@5 x ~@5 x", E: "~@5 x ~@5 x ~@5 x ~@5 x",
  F: "~@5 x ~@5 x ~@5 x ~@6", G: "~@23 x", H: "~@5 x ~@5 x ~@12", I: "~@11 x", J: "~@6 x ~@8 x ~@7 x",
  K: "~@6 x ~@6 x ~@7 x ~@2", L: "~@4 x ~@6 x ~@6 x ~@5", M: "x ~ x!2", N: "x", O: "~@2 x!2",
})).gain(0.64)

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

// drums · crash
const crash = s("cr").struct(`<
  ~@4 A ~@3 A ~@6 B A ~@2 C A ~@3 A D A ~ A ~@3 A ~@6 B A ~@2 C A ~@3 A D A D A D A ~ A ~@3 A ~@3 A ~@3 A ~@2 E ~@3 E ~
  F E G ~@3 E ~@3 E ~ F ~ E ~@3 E ~@27 H ~@4 I ~@2 J K ~ L ~ I ~@3 I ~@3 M N A ~ M N A ~ I ~ L ~ L ~ L ~ M N@3 K
>`.pickRestart({
  A: "x", B: "~ x", C: "~@5 x!3", D: "~@7 x", E: "~@23 x", F: "~@20 x ~@2 x", G: "~@5 x ~@5 x ~@11 x", H: "~@7 x ~@4",
  I: "~ x ~@2", J: "~ x!3", K: "x!2 ~@2", L: "~ x!2 ~@5", M: "~@2 x ~@2 x ~@2", N: "x ~ x ~@2 x ~@2",
})).gain(0.64)

// drums · ride
const ride = s("rd").struct(`<
  ~@24 A ~ B ~@21 A ~ A ~ A ~ B ~ A C@3 A C@3 ~@12 D ~@11 D ~ E ~@5 F G ~@6 H I H I H I H I H I H I H I H I H I H J ~@8
  K L ~@18 K L K L K L M L ~@5
>`.pickRestart({
  A: "~ x!3", B: "~ x ~ x", C: "x!4", D: "~@5 x ~@5 x ~@5 x ~@6", E: "~@5 x ~@11 x ~@6", F: "~@11 x ~@11 x",
  G: "~@11 x ~@12", H: "~@3 x ~@2 x ~", I: "~@4 x ~@9 x ~@8 x", J: "~ x ~@4", K: "~@2 x!2", L: "x", M: "~ x",
})).gain(0.64)

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

More by Ugly Kid Joe