Strudelify

The Iron Man of Rap

Attila

KeyB♭ minorTempo85 bpm
0:00/0:00
// The Iron Man of Rap — Attila
// 85 bpm, 4/4, key A# 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 120 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(85/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 · overdriven guitar
const overdriven_guitar = note(`<
  ~@2 A B A B A B C D C D C D C D C D C D C D E F E F E G C D C D C D C D H I J@2 H I J@2 C D C D C D C D H I J@2 H I
  J@2 K L M N O P Q R S@3 T@8 U@8 V@2 ~@2 W@8 X@8 Y@8 Z@4 AA
>`.pickRestart({
  A: "[e3,b3,e4]@3 ~", B: "~ [e3,b3,e4]!3",
  C: "[bb2,f3,bb3]@2 [db3,ab3,db4]@2 [db3,ab3,db4] [eb3,bb3,eb4] [eb3,bb3,eb4]@2", // Bb5 Db5 Eb5
  D: "[gb3,db4,gb4] [f3,c4,f4] [gb3,db4,gb4] [f3,c4,f4] [gb3,db4,gb4] [f3,c4,f4] [db3,ab3,db4]@2 [db3,ab3,db4]@2 [eb3,bb3,eb4]@2 [eb3,bb3,eb4]@4", // Gb5 F5 Gb5 F5 Gb5 F5 Db5 Eb5
  E: "[bb2,f3,bb3]@4 [bb2,f3,bb3]@4 [bb1,eb2] ~ [bb1,eb2] ~ [db3,ab3,db4]@4 [bb1,eb2] ~ [bb1,eb2] ~ [bb2,f3,bb3]@4 [bb2,f3,bb3]@4 [a2,e3,a3]@4", // Bb5 Eb5 Db5 Eb5 Bb5 A5
  F: "[ab2,eb3,ab3]@4 [ab2,eb3,ab3]@4 [ab1,db2] ~ [ab1,db2] ~ [ab1,db2] ~ [g2,d3,g3]@2 [g2,d3,g3]@2 [ab2,eb3,ab3]@2 [ab2,eb3,ab3]@4 [ab2,eb3,ab3]@4 [a2,e3,a3]@4", // Ab5 Db5 G5 Ab5 A5
  G: "[ab2,eb3,ab3]!3 ~@5", H: "[eb3,bb3,eb4]", I: "[db3,ab3,db4]",
  J: "[bb2,f3,bb3]@2 [bb2,f3,bb3]@2 [db3,ab3,db4] [d3,a3,d4] [eb3,bb3,eb4]@2 [eb3,bb3,eb4] [e3,b3,e4] [f3,c4,f4]@2 [ab3,eb4,ab4] [a3,e4,a4] [bb3,f4,bb4]@2", // Bb5 Db5 D5 Eb5 E5 F5 Ab5 A5 …
  K: "[c4,g4,c5]@2 [bb3,f4,bb4]@2 ~@2 [g3,d4,g4]@2 ~ [f3,c4,f4]@2 ~@2 [eb3,bb3,eb4]@2 ~@2 [c3,g3,c4]@2 ~@2 [bb2,f3,bb3]@2 [bb2,f3,bb3]@2 [c3,g3,c4] [c3,g3,c4]@2 ~@2 [c4,g4,c5]@2", // C5 Bb5 G5 F5 Eb5 C5 Bb5 C5
  L: "[bb3,f4,bb4]@2 ~@2 [g3,d4,g4]@2 ~@2 [f3,c4,f4]@2 ~ [eb3,bb3,eb4]@2 ~@2 [c3,g3,c4]@2 ~@2 [bb2,f3,bb3]@2 [bb2,f3,bb3]@2 [c3,g3,c4]@2 [c3,g3,c4]@2 ~ [bb2,f3,bb3]@2 [c3,g3,c4]@2", // Bb5 G5 F5 Eb5 C5 Bb5 C5 Bb5 …
  M: "[c3,g3,c4]@2 [c2,g2] ~ [c2,g2] ~ [c2,g2] ~ [c2,g2] ~ [c2,g2] ~@2 [c3,g3,c4]@4 [db3,ab3,db4]@4 [c3,g3,c4]@4 [bb2,f3,bb3]@2 [bb2,f3,bb3]@2 [c3,g3,c4] [c3,g3,c4]@2, ~@6 [bb2,f3,bb3] ~@9", // C5 Db5 C5 Bb5 C5 Bb5
  N: "[c2,g2] ~ [c2,g2] ~ [c2,g2] ~ [c2,g2] ~ [c2,g2] ~ [bb2,f3,bb3]@2 [c3,g3,c4]@3 [db3,ab3,db4]@4 [c3,g3,c4]@4 [bb2,f3,bb3]@2 [bb2,f3,bb3]@2 [c3,g3,c4]@2 [c3,g3,c4]@2 [c2,g2]", // C5 Bb5 C5 Db5 C5 Bb5 C5
  O: "[c2,g2] ~ [c2,g2] ~ [c2,g2] ~ [c2,g2] ~ [bb2,f3,bb3]@2 [c3,g3,c4]@4 [db3,ab3,db4]@3 [c3,g3,c4]@4 [bb2,f3,bb3]@2 [bb2,f3,bb3]@2 [c3,g3,c4]@2 [c3,g3,c4]@2 [c2,g2] ~ [c2,g2]", // C5 Bb5 C5 Db5 C5 Bb5 C5
  P: "~ [c2,g2]!2 ~ [c2,g2] ~ [bb2,f3,bb3]@2 [c3,g3,c4]@4 [db3,ab3,db4]@4 [c3,g3,c4]@3 [bb2,f3,bb3]@2 [bb2,f3,bb3]@2 [c3,g3,c4]@2 [c3,g3,c4]@2 [c2,g2] ~ [c2,g2] ~ [c2,g2]", // C5 Bb5 C5 Db5 C5 Bb5 C5
  Q: "~ [c2,g2] ~ [c2,g2] [bb2,f3,bb3]@2 [c3,g3,c4]@4 [db3,ab3,db4]@4 [c3,g3,c4]@4 [bb2,f3,bb3]@2 ~ [c3,g3,c4]@2 [c3,g3,c4]@2 [c2,g2] ~ [c2,g2] ~ [c2,g2] ~ [c2,g2], ~@10 [bb2,f3,bb3] ~@5", // C5 Bb5 C5 Db5 C5 Bb5 C5 Bb5
  R: "~ [c2,g2] ~ [bb2,f3,bb3]@2 [c3,g3,c4]@3 [db3,ab3,db4]@4 [c3,g3,c4]@4 [bb2,f3,bb3]@2 [bb2,f3,bb3]@2 [c3,g3,c4]@2 ~ [c2,g2] ~ [c2,g2] ~ [c2,g2] ~ [c2,g2] ~ [c2,g2], ~@11 [c3,g3,c4] ~@4", // C5 Bb5 C5 Db5 C5 Bb5 C5
  S: "[~ [bb2,f3,bb3]@2 [c3,g3,c4]@4 [db3,ab3,db4]@3 [c3,g3,c4]@4 [bb2,f3,bb3]@2 [bb2,f3,bb3]@2 [c3,g3,c4]@2 [c3,g3,c4]@2 [c2,g2] ~ [c2,g2]!2 ~ [c2,g2] ~ [c2,g2] ~ [bb2,f3,bb3]@2 [c3,g3,c4]@4 [db3,ab3,db4]@4 [c3,g3,c4]@3 [bb2,f3,bb3]@2 [c4,g4,c5]@2 [bb3,f4,bb4]@2 ~@2 [g3,d4,g4]@2 ~@2 [f3,c4,f4]@2 ~ [eb3,bb3,eb4]@2 ~@2 [c3,g3,c4]@2 ~@2 [bb2,f3,bb3]@2 [bb2,f3,bb3]@2 [c3,g3,c4]@2 [c3,g3,c4]@2 ~ [c4,g4,c5]@2 [bb3,f4,bb4]@2 ~@2 [g3,d4,g4]@2 ~@2 [f3,c4,f4]@2 ~@2 [eb3,bb3,eb4]@2 ~ [c3,g3,c4]@2 ~]/3", // Bb5 C5 Db5 C5 Bb5 C5 Bb5 C5 …
  T: "[~ [bb2,f3,bb3]@2 [bb2,f3,bb3]@2 [c3,g3,c4]@2 [c3,g3,c4]@2 ~@2 [bb2,f3,bb3]@4 [bb2,f3,bb3]@4 [db3,ab3,db4]@2 [d3,a3,d4]@2 [eb3,bb3,eb4]@4 [eb3,bb3,eb4]@2 [e3,b3,e4]@2 [f3,c4,f4]@4 [ab3,eb4,ab4]@2 [a3,e4,a4]@2 [bb3,f4,bb4]@4 [bb2,f3,bb3]@4 [bb2,f3,bb3]@4 [db3,ab3,db4]@2 [d3,a3,d4]@2 [eb3,bb3,eb4]@4 [eb3,bb3,eb4]@2 [e3,b3,e4]@2 [f3,c4,f4]@4 [ab3,eb4,ab4]@2 [a3,e4,a4]@2 [bb3,f4,bb4]@4 [bb2,f3,bb3]@4 [bb2,f3,bb3]@4 [db3,ab3,db4]@2 [d3,a3,d4]@2 [eb3,bb3,eb4]@4 [eb3,bb3,eb4]@2 [e3,b3,e4]@2 [f3,c4,f4]@4 [ab3,eb4,ab4]@2 [a3,e4,a4]@2 [bb3,f4,bb4]@4 [bb2,f3,bb3]@4 [bb2,f3,bb3]@4 [db3,ab3,db4]@2 [d3,a3,d4]@2 [eb3,bb3,eb4]@4 [eb3,bb3,eb4]@2 [e3,b3,e4]@2 [f3,c4,f4]@4 [bb2,f3] ~ [bb2,f3] ~ [bb2,f3] ~@3 [bb2,f3,bb3]@8 [db3,ab3,db4]@8 [db3,ab3,db4]@4 [eb3,bb3,eb4]@4 [eb3,bb3,eb4]@8 [gb3,db4,gb4]@2 [f3,c4,f4]@2 [gb3,db4,gb4]@2 [f3,c4,f4]@2 [gb3,db4,gb4]@2 [f3,c4,f4]@2 [db3,ab3,db4]@4 [db3,ab3,db4]@4 [eb3,bb3,eb4]@4 [eb3,bb3,eb4]@8 [bb2,f3,bb3]@8 [db3,ab3,db4]@8 [db3,ab3,db4]@4 [eb3,bb3,eb4]@4 [eb3,bb3,eb4]@8 [gb3,db4,gb4]@2 [f3,c4,f4]@2 [gb3,db4,gb4]@2 [f3,c4,f4]@2 [gb3,db4,gb4]@2 [f3,c4,f4]@2 [db3,ab3,db4]@4 [db3,ab3,db4]@4 [eb3,bb3,eb4]]/8", // Bb5 C5 Bb5 Db5 D5 Eb5 E5 F5 …
  U: "[~@3 [eb3,bb3,eb4]@8 [bb2,f3,bb3]@8 [db3,ab3,db4]@8 [db3,ab3,db4]@4 [eb3,bb3,eb4]@4 [eb3,bb3,eb4]@8 [gb3,db4,gb4]@2 [f3,c4,f4]@2 [gb3,db4,gb4]@2 [f3,c4,f4]@2 [gb3,db4,gb4]@2 [f3,c4,f4]@2 [db3,ab3,db4]@4 [db3,ab3,db4]@4 [eb3,bb3,eb4]@4 [eb3,bb3,eb4]@8 [bb2,f3,bb3]@8 [db3,ab3,db4]@8 [db3,ab3,db4]@4 [eb3,bb3,eb4]@4 [eb3,bb3,eb4]@8 [gb3,db4,gb4]@2 [f3,c4,f4]@2 [gb3,db4,gb4]@2 [f3,c4,f4]@2 [gb3,db4,gb4]@2 [f3,c4,f4]@2 [db3,ab3,db4]@4 [db3,ab3,db4]@4 [eb3,bb3,eb4]@4 [eb3,bb3,eb4]@8 [bb2,f3,bb3]@4 [bb2,f3,bb3]@4 [bb1,eb2] ~ [bb1,eb2] ~ [db3,ab3,db4]@4 [bb1,eb2] ~ [bb1,eb2] ~ [bb2,f3,bb3]@4 [bb2,f3,bb3]@4 [a2,e3,a3]@4 [ab2,eb3,ab3]@4 [ab2,eb3,ab3]@4 [ab1,db2] ~ [ab1,db2] ~ [ab1,db2] ~ [g2,d3,g3]@2 [g2,d3,g3]@2 [ab2,eb3,ab3]@2 [ab2,eb3,ab3]@4 [ab2,eb3,ab3]@4 [a2,e3,a3]@4 [bb2,f3,bb3]@4 [bb2,f3,bb3]@4 [bb1,eb2] ~ [bb1,eb2] ~ [db3,ab3,db4]@4 [bb1,eb2] ~ [bb1,eb2] ~ [bb2,f3,bb3]@4 [bb2,f3,bb3]@4 [a2,e3,a3]@4 [ab2,eb3,ab3]@4 [ab2,eb3,ab3]@4 [ab1,db2] ~ [ab1,db2] ~ [ab1,db2] ~ [g2,d3,g3]@2 [g2,d3,g3]@2 [ab2,eb3,ab3]@2 [ab2,eb3,ab3]]/8", // Eb5 Bb5 Db5 Eb5 Gb5 F5 Gb5 F5 …
  V: "[~@3 [ab2,eb3,ab3]@4 [a2,e3,a3]@4 [bb2,f3,bb3]@4 [bb2,f3,bb3]@4 [bb1,eb2] ~ [bb1,eb2] ~ [db3,ab3,db4]@4 [bb1,eb2] ~ [bb1,eb2] ~ [bb2,f3,bb3]@4 [bb2,f3,bb3]@4 [a2,e3,a3]@4 [ab2,eb3,ab3]@4 [ab2,eb3,ab3]@4 [ab2,eb3,ab3]@4 ~@9]/2", // Ab5 A5 Bb5 Eb5 Db5 Eb5 Bb5 A5 …
  W: "[~@11 [eb3,bb3,eb4]@64 [eb3,bb3,eb4]@64 [eb3,bb3,eb4]@16 [db3,ab3,db4]@16 [c3,g3,c4]@16 [b2,gb3,b3]@16 [eb3,bb3,eb4]@16 [db3,ab3,db4]@16 [c3,g3,c4]@16 [b2,gb3,b3]@5]/8", // Eb5 Db5 C5 B5 Eb5 Db5 C5 B5
  X: "[~@11 [eb3,bb3,eb4]@16 [db3,ab3,db4]@16 [c3,g3,c4]@16 [b2,gb3,b3]@16 [eb3,bb3,eb4]@16 [db3,ab3,db4]@16 [c3,g3,c4]@16 [b2,gb3,b3]@16 [eb3,bb3,eb4]@16 [db3,ab3,db4]@16 [c3,g3,c4]@16 [b2,gb3,b3]@16 [eb3,bb3,eb4]@16 [db3,ab3,db4]@16 [c3,g3,c4]@16 [b2,gb3,b3]@5]/8", // Eb5 Db5 C5 B5 Eb5 Db5 C5 B5 …
  Y: "[~@11 [eb3,bb3,eb4]@16 [db3,ab3,db4]@16 [c3,g3,c4]@16 [b2,gb3,b3]@16 [eb3,bb3,eb4]@16 [db3,ab3,db4]@16 [c3,g3,c4]@16 [b2,gb3,b3]@16 [eb3,bb3,eb4]@16 [db3,ab3,db4]@16 [c3,g3,c4]@16 [b2,gb3,b3]@16 [eb3,bb3,eb4]@16 [db3,ab3,db4]@16 [c3,g3,c4]@16 [f3,c4,f4]@2 [gb3,db4,gb4]@3]/8", // Eb5 Db5 C5 B5 Eb5 Db5 C5 B5 …
  Z: "[[f3,c4,f4]@3 [gb3,db4,gb4]@2 [f3,c4,f4]@3 [db3,ab3,db4]@3 [eb3,bb3,eb4]@16 [db3,ab3,db4]@16 [c3,g3,c4]@16 [f3,c4,f4]@2 [gb3,db4,gb4]@3]/2", // F5 Gb5 F5 Db5 Eb5 Db5 C5 F5 …
  AA: "[f3,c4,f4]@3 [gb3,db4,gb4]@2 [f3,c4,f4]@3 [db3,ab3,db4]@3 [eb3,bb3,eb4]@4 ~@17", // F5 Gb5 F5 Db5 Eb5
})).s("gm_overdriven_guitar").gain(0.64)

// bass · electric bass finger
const bass = note(`<
  ~@2 A@6 B@2 C D C D C D C D C D C D E F E F E G C D C D C D C D H I J@2 H I J@2 C D C D C D C D H I J@2 H I J@2 K L M
  N O P Q R S@3 T@8 U@8 V@2 ~@2 W@8 X@8 Y@8 Z@4 AA
>`.pickRestart({
  A: "f0/2", B: "[~@15 eb2, f0]/2", C: "bb1@2 db2@2 db2 eb2 eb2@2", D: "gb2 f2 gb2 f2 gb2 f2 db2@2 db2@2 eb2@2 eb2@4",
  E: "bb1 bb1@2 db2@2 bb1!2 a1", F: "ab1@4 ab1@4 ab1 ~ ab1 ~ ab1 ~ g1@2 g1@2 ab1@2 ab1@4 ab1@4 a1@4", G: "ab1!3 ~@5",
  H: "eb2@2 eb2@2 eb3@2 eb3!3 eb3@2 eb3@2 db3 bb2@2", I: "db2", J: "bb1@2 bb1@2 db2 d2 eb2@2 eb2 e2 f2@2 ab2 a2 bb2@2",
  K: "c3@2 bb2@2 ~@2 g2@2 ~ f2@2 ~@2 eb2@2 ~@2 c2@2 ~@2 bb1@2 bb1@2 c2 c2@2 ~@2 c3@2",
  L: "bb2@2 ~@2 g2@2 ~@2 f2@2 ~ eb2@2 ~@2 c2@2 ~@2 bb1@2 bb1@2 c2@2 c2@2 ~ bb1@2 c2@2",
  M: "c2@2 c2 ~ c2 ~ c2 ~ c2 ~ c2 ~@2 c2@4 db2@4 c2@4 bb1@2 bb1@2 c2 c2@2, ~@6 bb1 ~@9",
  N: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ bb1@2 c2@3 db2@4 c2@4 bb1@2 bb1@2 c2@2 c2@2 c2",
  O: "c2 ~ c2 ~ c2 ~ c2 ~ bb1@2 c2@4 db2@3 c2@4 bb1@2 bb1@2 c2@2 c2@2 c2 ~ c2",
  P: "~ c2!2 ~ c2 ~ bb1@2 c2@4 db2@4 c2@3 bb1@2 bb1@2 c2@2 c2@2 c2 ~ c2 ~ c2",
  Q: "~ c2 ~ c2 bb1@2 c2@4 db2@4 c2@4 bb1@2 ~ c2@2 c2@2 c2 ~ c2 ~ c2 ~ c2, ~@10 bb1 ~@5",
  R: "~ c2 ~ bb1@2 c2@3 db2@4 c2@4 bb1@2 bb1@2 c2@2 c2!2 ~ c2 ~ c2 ~ c2 ~ c2",
  S: "[~ bb1@2 c2@4 db2@3 c2@4 bb1@2 bb1@2 c2@2 c2@2 c2 ~ c2!2 ~ c2 ~ c2 ~ bb1@2 c2@4 db2@4 c2@3 bb1@2 c3@2 bb2@2 ~@2 g2@2 ~@2 f2@2 ~ eb2@2 ~@2 c2@2 ~@2 bb1@2 bb1@2 c2@2 c2@2 ~ c3@2 bb2@2 ~@2 g2@2 ~@2 f2@2 ~@2 eb2@2 ~ c2@2 ~]/3",
  T: "[~ bb1@2 bb1@2 c2@2 c2@2 ~@2 bb1@4 bb1@4 db2@2 d2@2 eb2@4 eb2@2 e2@2 f2@4 ab2@2 a2@2 bb2@4 bb1@4 bb1@4 db2@2 d2@2 eb2@4 eb2@2 e2@2 f2@4 ab2@2 a2@2 bb2@4 bb1@4 bb1@4 db2@2 d2@2 eb2@4 eb2@2 e2@2 f2@4 ab2@2 a2@2 bb2@4 bb1@4 bb1@4 db2@2 d2@2 eb2@4 eb2@2 e2@2 f2@4 ~@8 bb1@8 db2@8 db2@4 eb2@4 eb2@8 gb2@2 f2@2 gb2@2 f2@2 gb2@2 f2@2 db2@4 db2@4 eb2@4 eb2@8 bb1@8 db2@8 db2@4 eb2@4 eb2@8 gb2@2 f2@2 gb2@2 f2@2 gb2@2 f2@2 db2@4 db2@4 eb2]/8",
  U: "[~@3 eb2@8 bb1@8 db2@8 db2@4 eb2@4 eb2@8 gb2@2 f2@2 gb2@2 f2@2 gb2@2 f2@2 db2@4 db2@4 eb2@4 eb2@8 bb1@8 db2@8 db2@4 eb2@4 eb2@8 gb2@2 f2@2 gb2@2 f2@2 gb2@2 f2@2 db2@4 db2@4 eb2@4 eb2@8 bb1@4 bb1@8 db2@8 bb1@4 bb1@4 a1@4 ab1@4 ab1@4 ab1 ~ ab1 ~ ab1 ~ g1@2 g1@2 ab1@2 ab1@4 ab1@4 a1@4 bb1@4 bb1@8 db2@8 bb1@4 bb1@4 a1@4 ab1@4 ab1@4 ab1 ~ ab1 ~ ab1 ~ g1@2 g1@2 ab1@2 ab1]/8",
  V: "[~@3 ab1@4 a1@4 bb1@4 bb1@8 db2@8 bb1@4 bb1@4 a1@4 ab1@4 ab1@4 ab1@4 ~@9]/2",
  W: "[~@11 f0@64 f0@64 eb1@16 db1@16 c1@16 b0@16 eb1@16 db1@16 c1@16 b0@5]/8",
  X: "[~@11 eb1@16 db1@16 c1@16 b0@16 eb1@16 db1@16 c1@16 b0@16 eb1@16 db1@16 c1@16 b0@16 eb1@16 db1@16 c1@16 b0@5]/8",
  Y: "[~@11 eb1@16 db1@16 c1@16 b0@16 eb1@16 db1@16 c1@16 b0@16 eb1@16 db1@16 c1@16 b0@16 eb1@16 db1@16 b0@16 f1@2 gb1@3]/8",
  Z: "[f1@3 gb1@2 f1@3 db1@3 eb1@16 db1@16 b0@16 f1@2 gb1@3]/2", AA: "f1@3 gb1@2 f1@3 db1@3 eb1@4 ~@17",
})).s("gm_electric_bass_finger").gain(0.64)

// chords · overdriven guitar
const overdriven_guitar_2 = note("<~@65 A B@2 C@2 ~@35 D@8 E ~@6>".pickRestart({
  A: "~@14 g4@7 g4@6 g4@5",
  B: "[~ g4@3 g4@6 g4@6 g4@4 [g4,c5]@5 [g4,c5]@6 [g4,c5]@4 [g4,c5]@5 [g4,c5]@6 [g4,c5]@4 [g4,c5,g5]@5 [g4,c5,g5]@6 [g4,c5,g5]@3]/2", // C5
  C: "[~ [g4,c5,g5]@6 [g4,c5,g5]@5 [g4,c5,g5]@4 [g4,c5,g5]@6 [g4,c5,g5]@5 [g4,c5,g5]@4 [g4,c5,g5]@6 [g4,c5,g5]@5 [g4,c5,g5]@4 ~@18]/2", // C5
  D: "[~@11 eb4@16 f4@16 gb4@16 ab4@8 gb4@8 eb4@16 f4@16 gb4@16 ab4@8 gb4@8 eb4@16 f4@16 gb4@16 ab4@8 gb4@8 eb4@16 f4@16 gb4@16 ab4@5]/8",
  E: "~@3 gb4@8 ~@21",
})).s("gm_overdriven_guitar").gain(0.64)

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

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

// drums · low tom
const low_tom = s("lt").struct("<A@9 B ~@50 C D ~@8 E F ~@48>".pickRestart({
  A: "x!4", B: "x ~ x ~ x!4", C: "~@21 x ~ x ~@8", D: "~@19 x ~ x ~@10", E: "~@3 x ~ x ~@26", F: "~ x ~ x ~@28",
})).gain(0.64)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@9 A ~@50 B C ~@8 D E ~@48>".pickRestart({
  A: "~@7 x", B: "~@21 x ~ x ~ x!2 ~@5", C: "~@19 x ~ x ~ x ~ x ~@6", D: "~@3 x ~ x ~ x ~ x ~@22",
  E: "~ x ~ x ~ x ~ x ~@24",
})).gain(0.64)

// drums · open hat
const open_hat = s("oh").struct("<~@19 A ~ A ~@11 A ~ A ~@13 A ~ A ~@29 B ~ B ~@10 C D E@8 ~@16>".pickRestart({
  A: "~@7 x", B: "~@7 x ~@24", C: "~@5 x ~@3 x ~@17 x!5", D: "x!11 ~@21", E: "~@5 x ~@3 x ~@22",
})).gain(0.64)

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

stack(overdriven_guitar, bass, overdriven_guitar_2, kick, snare, low_tom, hihat, mid_tom, open_hat, crash)

More by Attila