Strudelify
School cover art

1989 · Bleach

School

Nirvana

KeyE minorTempo120 bpm
0:00/0:00
// School — Nirvana
// 120 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 59 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/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 · distortion guitar · "dist"
const distortion_guitar = note(`<
  A B C D E F@5 G@4 H@2 I@2 J K@2 L M N@2 O P Q R@2 S T@4 U V ~@13 W@2 X Y Z@2 AA@2 AB
>`.pickRestart({
  A: "~@11 e2@4 ~@2 e2 ~@2 e2@2 g2@2 ~ b2 ~ e2@2 ~ e2@2, ~@24 a2@3 ~@5",
  B: "g2@2 ~ b2@2 ~ e2@2 e2@2 ~ e2@2 ~ e2@2 ~ e2@2 g2@2 ~ b2@3 e2@4 ~@3, ~@2 a2@2 ~@17 a2@3 ~@8",
  C: "e2@2 ~ e2@2 ~@2 b2@2 e2@2 ~ e2@2 [g2,a2]@2 b2@2 e2 ~@2 e2@2 ~ e2@2 ~ e2@2 ~ e2 ~, ~@5 g2@2 ~@25, ~@3 a2 ~@12", // Gsus2
  D: "~ e2@2 ~@2 b2@3 ~@2 e2@2 ~@3 e2@2 ~ e2@2 g2@2 b2@2 ~ e2@2 e2@2 ~ g2@2, ~@3 g2@2 ~@27, ~@4 a2@3 ~@25",
  E: "~ [a2,b2] ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~@2 g2@2 ~ b2@2 ~@2 e2@2 ~@4 e2 ~@2, ~@15 e2@2 ~ a2@3 ~@11", // Asus2
  F: "[e2@2 [g2,a2]@2 b2 e2 ~@2 e2@2 ~@2 b2@2 ~ e2@2 ~ e2@2 e2@2 ~ e2@2 ~ e2@2 ~ e2@2 g2@2 ~ b2@3 ~ e2@2 ~@3 e2@2 ~ e2@2 g2@2 [a2,b2]@2 ~ e2 ~@2 e2@2 [g2,a2]@2 b2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2 ~@2 e2@2 g2@2 ~ [a2,b2]@3 ~ e2@2 ~@4 e2 ~ e2@2 ~ g2@2 [a2,b2] ~ e2 ~ e2@2 ~ [a2,b2]@2 ~@2 e2@2 ~ e2@2 e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~@2 b2@4 ~ e2@2 ~@3 e2@2 ~ e2@2 ~@2 b2 ~ e2 ~@2 e2@2 ~@2 b2@2 e2@2 ~ e2@2 ~, ~@10 g2@2 ~@112 g2@2 ~@15 g2@2 ~@7 g2@2 ~@8, ~@11 a2@2 ~@20 a2@3 ~@89 a2@4 ~@13 a2@2 ~@7 a2@2 ~@7]/5", // Gsus2 Asus2 Gsus2 Asus2
  G: "[e2@2 e2@2 ~ e2@2 ~ e2@2 ~@2 b2@4 ~ e2@3 ~@2 e2@2 ~ e2@2 ~ g2 b2 ~ e2@2 ~ e2@2 ~@2 b2@2 g2 e2@4 ~ e2@4 ~@2 e2@2 e2@5 ~@5 f3@5 ~ [c3,g3]@5 ~ [c3,g3]@5 ~ [c3,g3]@2 ~ [c3,g3]@2 ~ a2@2 ~ a2@2 ~ [a2,e3]@5 ~ e3@2 ~@4 [a2,e3]@2 [a2,e3] ~@3 [e3,b3]@11 ~ [e3,b3]@4, ~@10 g2@2 ~@24 g2@2 ~@61 a2@3 ~@26, ~@11 a2@4 ~@13 a2@3 ~@6 a2@2 ~@24 b2@5 ~@20 e3@5 ~@35]/4", // C5 A5 E5
  H: "[~@2 [e3,b3] ~@2 [e3,b3]@2 ~ [d3,a3]@2 ~ [d3,a3]@2 ~ [d3,a3]@5 ~ a3@4 ~ [d3,a3]@2 ~ [d3,a3]@2 ~ [c3,g3]@7 ~ [c3,g3]@2 ~ [c3,g3]@4 ~@2 [c3,g3]@2 ~ g3@2 ~ [a2,e3]@2 ~ a2@2 ~ e3@4, ~@19 d3@4 ~@27 c3@2 ~@4 e3@2 ~@2 a2@2 ~@2]/2", // E5 D5 C5 A5
  I: "[~ [a2,e3]@4 ~@2 [a2,e3]@2 ~@5 d2 ~@4 e2@2 ~ [e2,g2]@3 a2@3 e2@2 ~ e2@2 ~ a2@2 b2 ~ e2@2 ~ e2@2 ~ e2 ~@2 e2@2 ~ e2@2 ~@2 b2@4 ~ e2@2 ~@3, ~@13 e2@3 ~@17 g2@2 ~@17 g2@3 ~@9, ~@53 a2@4 ~@7]/2", // A5 Em
  J: "~ e2 ~ e2@2 g2@2 [a2,b2]@2 ~ e2@2 e2@2 ~@2 b2@2 e2@2 ~ e2@2 ~ e2@2 e2@2 ~ e2 ~@2, ~@15 [g2,a2]@2 ~@15", // Asus2 Gsus2
  K: "[~@2 g2@3 [a2,b2]@4 ~ e2@2 ~@4 e2@2 e2@2 g2@2 [a2,b2]@2 e2@2 ~ e2@2 ~@2 b2@2 e2@2 ~ e2@2 ~ e2@2 e2@2 ~ e2 ~@2 e2@2 g2@3 [a2,b2]@3 ~ e2@3 ~@2 e2@2 ~, ~ e2@2 ~@26 g2@2 ~@33, ~@15 a2@2 ~@15]/2", // Asus2
  L: "~ e2 ~ a2@2 b2 ~ e2@2 ~ e2@2 [g2,a2]@2 ~@2 e2@2 ~ e2@2 e2@2 ~ e2@2 ~ e2 ~@2 e2@2, ~ g2 ~@14", // Gsus2
  M: "g2@2 ~ b2@3 ~ e2@3 ~@2 e2@2 ~ e2@3 [g2,a2]@2 b2 e2@2 ~ e2@2 g2@2 ~ [a2,b2] e2@2, ~ a2@2 ~@13", // Gsus2 Asus2
  N: "[~ e2@2 ~ e2@2 ~ e2@2 ~ e2@5 g2@2 ~ b2@3 ~ e2@4 ~@2 e2@2 ~ e2@2 ~@2 b2 ~ e2@2 ~ e2@2 ~@2 b2@2 e2@2 ~ e2@2 ~ e2 ~@2 e2@2 ~ e2@2 e2@2 g2@2, ~@17 a2@4 ~@12 g2@2 ~@7 g2@2 ~@20, ~@34 a2@3 ~@6 a2@2 ~@19]/2",
  O: "~ [a2,b2]@3 ~@2 e2@3 ~@2 e2@2 ~ e2@2 ~@2 b2@2 e2@2 ~ e2@3 [g2,a2]@2 b2@2 e2@2, ~@17 a2@2 ~@13", // Asus2 Gsus2
  P: "~ e2 ~@2 e2@2 ~ e2@2 ~ e2@2 e2@3 ~@2 b2@3 ~ e2@4 ~@2 e2@2 ~ e2@2, ~@15 g2@2 ~@15, ~@16 a2@3 ~@13",
  Q: "~@2 b2@2 e2@2 ~ e2@2 g2@2 a2@3 g2 e2@3 ~ a2@2 e2@2 ~@2 e2@2 e2@2 ~ [e2,b2]@2, g2 ~@15, ~ a2@2 ~@8 b2 ~@6 b2@3 ~@3 b2@2 ~@6", // E5
  R: "[~@6 f3@4 ~@2 g3@2 ~ [c3,g3]@2 ~ [c3,g3]@5 ~@2 g3@2 ~ g3 ~@2 f3@2 [b2,f3]@2 ~ [b2,f3]@4 ~@2 [a2,e3]@4 ~@3 [a2,e3]@2 ~@5 b3@4 ~@4, ~@4 b2@6 ~ c3@3 ~@10 c3@2 ~ c3@2 ~ b2@3 ~@22 e3@4 ~@5]/2", // C5 Bdim A5
  S: "~@3 [e3,b3]@5 ~ [e3,b3]@2 ~ [e3,b3]@2 ~ [d3,a3]@2 ~ [d3,a3]@2 ~ [d3,a3]@4 ~@3 d3@4, ~@27 a3@4 ~", // E5 D5
  T: "[~@3 a3@2 ~ d3@2 ~ [c3,g3]@10 ~@3 [c3,g3]@5 ~ [c3,g3]@2 ~ [c3,g3]@2 ~ [a2,e3]@2 ~ [a2,e3]@2 ~ [a2,e3]@5 ~ [a2,e3]@4 ~@2 [a2,e3]@3 ~@3 e2@4 ~ e2@2 ~ e2@2 g2@2 a2@3 e2@2 ~ e2@2 ~ a2@2 b2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~@4 a2@3 b2@3 ~ e2@3 ~@2 e2@2 ~ e2@3 ~ a2@2 ~ e2@2 e2@2 ~ [e2,g2]@2 ~, ~@2 d3@2 ~ a3@2 ~@71 g2@3 ~@14 g2@5 ~@16 g2@2 ~@10]/4", // C5 A5 Em
  U: "[a2,b2] ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@3 ~@2 b2@3 ~ e2@3 ~@3 e2@2 ~, ~@17 g2@2 ~@13, ~@18 a2@3 ~@11", // Asus2
  V: "e2 ~@15",
  W: "[~@25 c3@10 ~@2 [c3,g3]@5 ~@2 [c3,g3]@2 ~ c3@2 ~ a2@2 a2@2 ~ [a2,e3]@5 ~ [a2,e3]@3, ~@24 g3@10 ~@12 g3@2 ~@2 e3@5 ~@9]/2", // C5 A5
  X: "~@4 [a2,e3]@2 ~@3 [e3,b3]@10 ~@2 [e3,b3]@5 ~ [e3,b3]@2 ~ [e3,b3]@2", // A5 E5
  Y: "~ [d3,a3] ~ [d3,a3]@2 ~ [d3,a3]@5 ~ [d3,a3]@3 ~@4 [d3,a3] ~ [d3,a3]@2 ~@2 [c3,g3]@7", // D5 C5
  Z: "[~@2 [c3,g3]@2 ~ [c3,g3]@5 ~ [c3,g3]@2 ~ [c3,g3]@2 ~@2 [a2,e3]@2 ~ a2@2 ~ [a2,e3]@4 ~@2 [a2,e3]@5 ~ [a2,e3]@2 ~ [a2,e3] ~@3 b3@11 ~ [e3,b3]@6 [e3,b3]@2 ~, ~@10 e3 ~@10 e3@5 ~@6]/2", // C5 A5 E5
  AA: "[~ [e3,b3] ~@2 [d3,a3]@2 ~ [d3,a3]@2 ~ [d3,a3]@5 ~@2 [d3,a3]@3 ~@4 [d3,a3]@2 [d3,a3]@2 ~@2 [c3,g3]@7 ~@2 g3@2 ~ [c3,g3]@6 ~@2 [c3,g3]@2 [c3,g3]@2 ~@2 a2@2 ~ a2@2 ~ a2@2, ~@19 c3 ~@12]/2", // E5 D5 C5
  AB: "~@4 a2@3 ~@2 a2@4 ~@19",
})).s("gm_distortion_guitar").gain(0.26)

// bass · slap bass 1 · "slap"
const bass = note(`<
  ~@2 A@2 B C@2 D E@2 F@2 G H I@2 J@2 K L M N O P Q@2 R@5 S T U V W X Y Z AA@2 AB@2 AC AD@2 AE AF AG@3 AH AI AJ AK AL
  AM@2 AN
>`.pickRestart({
  A: "[~@31 e1@2 [f1,g1] [a1,c2] [b1,d2,e2] ~@3 e1@4 ~@3 e1@2 ~ e1@3 ~ b1@3 ~ e1@2 ~ e1@2 b1@2]/2", // Fsus2 Am E7
  B: "~@2 e1@2 ~ e1@2 e1@2 ~@2 e1 ~ e1@2 ~@2 e1@2 b1@5 ~ e1@3 ~@2 e1@2",
  C: "[~ e1@2 b1@2 ~ e1@2 ~ e1 ~ b1@2 e1@2 ~ e1@2 ~ e1 ~@2 e1@2 ~ e1@2 ~ e1@2 ~ b1@5 ~ e1@4 ~@3 e1 ~@2 e1@2 b1@2 ~@2 e1 ~@2 e1 ~ b1@2 ~@2 e1@2]/2",
  D: "~@2 b1@2 ~@2 e1@2 ~ e1 ~@2 e1@2 ~ b1@5 ~ e1@3 ~@3 e1 ~@2 e1@2",
  E: "[~ b1 ~ e1 ~@2 e1 ~ b1@2 ~ e1@2 ~ e1 ~@2 e1 ~@2 e1@2 ~ e1 ~@2 e1@2 ~ b1@6 e1@3 ~@3 e1@2 ~ e1@2 b1@2 ~ e1@2 ~ e1@2 ~ b1@2 e1@2 ~@2 e1@2 ~]/2",
  F: "[e1@2 ~ e1@2 ~ e1 ~@2 e1@2 ~ b1@5 ~ e1@2 ~@3 e1 ~@2 e1@2 ~ b1@2 e1@2 ~ e1 ~@2 b1@2 ~ e1@2 b1@2 ~@2 b1@5 ~ b1@2 ~@2 b1 ~ b1@4 ~@2]/2",
  G: "c2@6 ~@2 b1@2 ~@2 c2@5 ~ c2@2 ~ c2@3 g1@5 ~@3", H: "a1@4 a1@3 ~@2 a1@5 ~ e2@4 ~ e2@6 ~@2 e2@4",
  I: "[~@3 e2@2 ~ e2@2 d2@2 ~ d2@2 ~ d2@5 ~ d2@4 ~ d2@5 ~ c2@7 ~ c2@2 ~ c2@12 a1@3 a1@2 ~ a1@4]/2",
  J: "[~ a1@3 ~@3 a1@3 ~@2 e1@4 ~@2 e1@2 ~ e1@2 ~ b1@2 ~@2 e1@2 ~ e1@2 b1@2 ~ e1@2 ~ e1@2 ~ e1@2 ~ e1@2 ~ e1@2 ~ e1@2 b1@4 ~ e1@3 ~@3]/2",
  K: "~ e1 ~ e1@2 ~ b1@3 e1 ~@2 e1@2 b1@3 ~ e1@2 ~ e1@2 ~ e1 ~@2 e1 ~@2 e1 ~",
  L: "~ e1 ~ b1@6 ~ e1@3 ~@3 e1 ~ e1@2 ~ b1@2 ~ e1@2 ~ e1 ~ b1@2 ~",
  M: "~ e1 ~@2 e1@2 ~ e1@2 ~ e1 ~@2 e1 ~@2 e1@2 ~ b1@5 ~ e1@3 ~@2 e1@2",
  N: "~ e1@2 ~ b1@2 e1@2 ~ e1@2 ~ b1@2 ~ e1@2 ~ e1@2 ~ e1@2 ~ e1@2 ~ e1 ~@2 e1@2",
  O: "~ b1@5 ~ e1@3 ~@2 e1@2 ~ e1@2 b1@2 ~@2 e1 ~ e1@2 ~ b1@2 ~ e1@2 ~",
  P: "~ b1@2 ~ e1@2 ~ e1 ~@2 e1@2 ~ b1@6 ~ e1@3 ~@4 e1@2 ~ e1@2",
  Q: "[~ b1@3 e1@2 ~ e1@2 ~ b1@3 e1@2 ~ b1@2 ~@2 e1@2 ~ e1@2 ~ e1@2 ~ b1@5 ~ e1@3 ~@4 e1@2 ~@2 e1@3 ~ b1@3 e1@2 ~ e1@2 b1@2 ~@2 e1@2]/2",
  R: "[~ b1@3 e1@2 ~@2 e1@2 ~ e1@2 ~@2 e1@2 ~ b1@3 ~@2 e1@2 ~@3 e1@2 ~ e1@2 ~ b1@2 e1 ~@2 e1@2 ~ b1@2 ~ e1@2 ~ e1@2 ~ b1@5 ~ b1@2 ~ b1@2 ~ b1@2 ~@3 c2@10 ~@3 c2@6 ~ c2@2 ~ c2@4 a1@4 ~ a1@5 ~@2 a1@4 ~@2 a1@2 a1@2 ~@2 e2@12 ~@2 e2@7 ~ e2@2 ~ d2@2 ~ d2@2 ~ d2@3 ~@2 d2@3 ~@2]/5",
  S: "~@5 d2 ~@2 c2@8 ~ c2@2 ~@2 c2@5 ~ c2@2 ~ c2@2", T: "~@2 a1@5 ~ a1@4 ~@2 a1@2 ~@4 a1@2 ~ a1@2 ~@2 e1@3 ~@2",
  U: "e1@2 ~ e1@3 b1@2 ~ e1@2 e1@2 ~ b1@2 ~ e1@2 ~ e1@2 ~ e1@2 ~ e1 ~@2 e1 ~@2",
  V: "e1@2 b1@5 ~ e1@3 ~@3 e1@2 ~ e1@2 ~ b1@2 ~ e1@2 ~ e1@2 ~ b1@2 ~",
  W: "~ e1 ~ e1@2 ~ e1 ~@2 e1 ~@2 e1 ~@2 e1@2 ~ b1@5 ~ e1@2 ~@4 e1 ~",
  X: "~ e1 ~ b1@3 e1@2 ~ e1@2 ~ b1@3 e1@2 ~ e1@2 ~ e1 ~@2 e1 ~@2 e1@2 ~ e1@2",
  Y: "~ b1@4 ~@2 e1@4 ~@3 e1@2 ~ e1@2 ~ b1@2 ~ e1@2 ~ e1@2 ~ b1@2 ~",
  Z: "e1@2 ~ e1@2 ~ e1 ~@2 e1 ~@2 e1@2 ~ e1@2 ~ b1@5 ~@2 e1@2 ~@4 e1",
  AA: "[~@2 e1@2 ~ b1@2 ~ e1 ~@2 e1@2 b1@2 ~@2 e1@2 ~ e1 ~@2 e1 ~@2 e1 ~@2 e1 ~ e1@2 ~@2 b1@5 ~@2 e1@3 ~ e1@2 ~ e1@2 ~@2 b1@3 e1 ~@2 e1@2 e1 ~@2]/2",
  AB: "[b1@2 e1 ~@2 e1 ~@3 e1@2 ~ e1@2 ~ e1@4 b1@5 ~ e1@2 ~@4 e1@2 ~ e1@2 ~ b1@2 ~ e1 ~@2 e1@2 ~ b1@2 ~ e1@2 ~ e1 ~@2 e1 ~@2 e1 ~@2 e1@2 ~]/2",
  AC: "~ e1 ~ b1@5 ~ e1@3 ~@2 e1@2 ~@2 e1@2 ~ b1@3 e1 ~@2 e1 ~@2 b1@2",
  AD: "[~@2 e1@2 ~ e1@2 ~ e1 ~@2 e1 ~ e1@2 ~ e1@2 ~@2 b1@5 ~ e1@2 ~@3 e1@2 ~ e1@2 ~ b1@3 e1@2 ~ e1@2 ~ b1@3 e1@2 ~ e1@2 ~ e1 ~@2 e1 ~@2 e1 ~@2]/2",
  AE: "e1@3 ~ b1@6 e1@2 ~@3 e1@2 ~ e1@2 ~ b1@3 e1 ~@2 e1@2 b1@2 ~",
  AF: "~ e1@2 e1@2 ~ e1@2 ~ e1 ~@2 e1 ~@2 e1@2 ~@2 b1@5 ~ e1@2 ~@3 e1@2",
  AG: "[~ e1@2 ~ b1@2 ~ e1@2 ~ e1@2 ~ b1@2 ~ e1 ~@2 e1 ~@2 e1@2 ~ e1 ~@2 e1 ~@2 e1@3 b1@5 ~ e1@2 ~@4 e1 ~@2 e1@2 ~ b1@2 e1 ~@2 e1 ~@2 b1@2 ~ b1@5 ~ b1@5 ~ b1@2 ~@2 b1@2 ~ b1@2 ~@4 c2@8]/3",
  AH: "~@5 c2@5 c2@3 ~ c2@3 a1@2 a1@2 ~@2 a1@4 ~ a1@4", AI: "~@2 a1@6 e2@8 e2@2 ~@2 e2@5 ~ e2@2 ~ e2@2 ~",
  AJ: "d2@2 ~ d2@2 ~ d2@5 ~ d2@4 ~@2 d2@2 ~@2 d2@3 c2@7",
  AK: "~@3 c2@2 ~ c2@5 ~ c2@2 ~ c2@3 a1@2 ~ a1@2 ~ a1@4 ~@2 a1@2", AL: "~@4 a1@7 ~ f2@6 ~ e2@3 e2@2 ~ e2@5 ~@2",
  AM: "[e2@2 e2@2 ~@2 d2@2 ~ d2@2 ~ d2@4 ~@2 d2@4 ~@2 d2@2 ~ d2@3 ~ c2@7 ~@2 c2@2 ~ c2@4 ~@3 c2@2 c2@3 a1@2 ~ a1@2 ~ a1@3]/2",
  AN: "~@3 a1@3 ~@2 a1@5 ~@19",
})).s("gm_slap_bass_1").gain(0.26)

// drums · snare
const snare = s("sd").struct(`<
  ~@2 A B C D ~ E F ~ G H I J K L M N O ~ P Q ~ R S ~ R ~ T U V W X Y ~ Z AA ~ AB AC B C AD B AE AF ~ AG AH AI AJ AK AL
  AM AN ~ AO AP AQ
>`.pickRestart({
  A: "~@25 x ~@2 x ~@3", B: "x", C: "~@3 x ~@4", D: "~@12 x!2 ~@2", E: "~@6 x ~@2 x ~@22", F: "~@23 x ~@8",
  G: "~@4 x ~@4 x ~@22", H: "~@19 x ~@3 x ~@8", I: "~@21 x ~@4 x ~@5", J: "~ x ~@9 x ~@20",
  K: "~@4 x ~@2 x ~@3 x ~ x ~@2", L: "~@13 x ~@2", M: "~ x ~@5 x ~@24", N: "~@15 x ~@3 x ~@12", O: "~@15 x",
  P: "~@11 x ~@20", Q: "~@13 x ~ x", R: "~@9 x ~@22", S: "~@25 x ~@6", T: "~@31 x", U: "~@5 x ~@4 x ~@6 x ~@14",
  V: "~@18 x ~@3 x ~@6 x ~@2", W: "~@5 x ~@26", X: "~ x ~@5 x ~@2 x ~@4 x ~@16", Y: "~@27 x ~@3 x",
  Z: "~@11 x ~@3 x ~@16", AA: "~@25 x ~@4 x ~", AB: "~@13 x ~@18", AC: "~@27 x ~@4", AD: "~@7 x",
  AE: "~@12 x ~@4 x ~@14", AF: "~@25 x ~@3 x ~@2", AG: "~@11 x ~@3 x ~@2 x ~@13", AH: "~@10 x ~@2 x ~@2",
  AI: "~@29 x ~@2", AJ: "~@3 x ~@28", AK: "~@19 x ~@2 x ~@9", AL: "~ x ~@14", AM: "~ x ~@2 x ~@3 x ~@9 x ~@13",
  AN: "~@17 x ~@4 x ~@8 x", AO: "~@3 x ~@6 x ~@16 x ~@4", AP: "~@23 x ~@2 x ~@3 x ~", AQ: "~@3 x ~@5 x ~@22",
})).gain(0.05)

// drums · low tom
const low_tom = s("lt").struct("<~@14 [~@19 x ~@12] ~@44>").gain(0.05)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@2 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS AT AU
  AV AW AX AY AZ BA BB BC BD BE
>`.pickRestart({
  A: "~@22 x ~@3 x ~@2 x ~@2", B: "x ~@2 x ~@3 x ~@6 x ~@2 x ~@6 x ~@2 x ~@4",
  C: "~ x ~@2 x ~@5 x ~@3 x ~@2 x ~@8 x ~@4 x", D: "~@5 x ~@3 x ~@5 x ~@2 x ~@2 x ~@2 x ~@4 x ~@2",
  E: "~@6 x ~@5 x ~@2 x ~@4 x ~@2 x ~@5 x ~@2", F: "~ x ~ x ~@3 x ~@3 x ~@9 x ~@4 x ~@2 x ~@2",
  G: "~@3 x ~@2 x ~@5 x ~@2 x ~@2 x ~@2 x ~@4 x ~@5", H: "~@3 x ~@5 x ~@2 x ~@4 x ~@2 x ~@4 x ~@2 x ~@3",
  I: "~@2 x ~@2 x ~@6 x ~@5 x ~@4 x ~@2 x ~@5", J: "x ~ x ~@5 x ~@2 x ~@2 x ~@2 x ~@2 x ~@4 x ~@6",
  K: "~@9 x ~@2 x ~@2 x", L: "~@4 x ~@17 x ~@2 x ~@6", M: "~@3 x ~@2 x ~@4 x ~@7 x ~ x ~@3 x ~@5 x",
  N: "~@6 x ~@2 x ~@8 x ~@5 x ~@3 x ~@3", O: "~@2 x ~@5 x ~@4 x ~@9 x ~@5 x ~@2",
  P: "~@5 x ~@2 x ~@5 x ~ x ~@3 x ~@6 x ~@4", Q: "~ x ~ x ~@5 x ~@2 x ~@4 x ~@2 x ~@2 x ~@3 x ~@3 x",
  R: "~ x ~@8 x ~@5 x ~@2 x ~@4 x ~@2 x ~@4", S: "~ x ~ x ~@2 x ~@3 x ~ x ~@3 x ~@8 x ~@4 x ~",
  T: "~ x ~@4 x ~@2 x ~@5 x ~@2 x ~@5 x ~@2 x ~@4", U: "x ~@7 x ~@4 x ~@2 x ~@5 x ~ x ~@5 x ~",
  V: "~ x ~@2 x ~@3 x ~@2 x ~@3 x ~@7 x ~@5 x ~@2", W: "x ~@4 x ~@2 x ~@4 x ~@2 x ~@2 x ~@3 x ~@3 x ~@2 x ~",
  X: "~@6 x ~@5 x ~@10 x ~@5 x ~@2", Y: "~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@8 x ~@5 x ~@2 x",
  Z: "~@5 x ~ x ~@6 x ~@2 x ~@7 x ~@2 x ~@2 x", AA: "~@11 x ~@2 x ~@10 x ~ x ~@4", AB: "~@2 x ~@5 x ~@4 x ~@9 x ~@8",
  AC: "x ~@8 x ~@6 x ~@3 x ~@5 x ~@4 x", AD: "~@9 x ~@8 x ~@9 x ~@2 x", AE: "~@5 x ~ x ~@5 x ~@5 x ~@12",
  AF: "~ x ~@2 x ~@4 x ~@2 x ~@5 x ~@6 x ~ x ~@4", AG: "~ x ~@7 x ~@5 x ~@5 x ~@2 x ~@7",
  AH: "~ x ~ x ~@5 x ~@2 x ~@5 x ~@4 x ~@6 x ~", AI: "~@5 x ~@3 x ~@4 x ~@2 x ~@5 x ~@2 x ~@3 x ~",
  AJ: "~@8 x ~@4 x ~@2 x ~@5 x ~@2 x ~@6", AK: "x ~ x ~@5 x ~@2 x ~@3 x ~@8 x ~@5 x ~",
  AL: "~ x ~@5 x ~@2 x ~@5 x ~@2 x ~@5 x ~@2 x ~@3", AM: "~ x ~@7 x ~@5 x ~@2 x ~@5 x ~@2 x ~@4",
  AN: "~ x ~@5 x ~@3 x ~@2 x ~@11 x ~@5", AO: "x ~ x ~@5 x ~@2 x ~@5 x ~@2 x ~@5 x ~@2 x ~@2",
  AP: "~@2 x ~@6 x ~@5 x ~@2 x ~@5 x ~@2 x ~@4", AQ: "~ x ~ x ~@6 x ~@3 x ~@3 x ~@7 x ~@5",
  AR: "~ x ~ x ~@4 x ~@2 x ~@5 x ~@2 x ~@2 x ~@4 x ~ x ~", AS: "~ x ~@8 x ~@5 x ~ x ~@5 x ~@2 x ~@4",
  AT: "~ x ~@2 x ~@6 x ~ x ~@4 x ~@13", AU: "~ x ~@2 x ~@12 x ~@5 x ~@4 x ~@3", AV: "x ~@26 x ~@4",
  AW: "x ~@10 x ~@2 x ~@2 x ~@12 x ~", AX: "~ x ~@9 x ~@2 x ~@4 x ~@2 x ~ x ~@5 x ~",
  AY: "~@5 x ~@10 x ~@2 x ~@7 x ~ x ~@2", AZ: "~@7 x ~@5 x ~@7 x ~@9 x", BA: "~@2 x ~@8 x ~@2 x ~@5 x ~@5 x ~@5",
  BB: "~@5 x ~@11 x ~@2 x ~@8 x ~@2", BC: "~ x ~@5 x ~@8 x ~@7 x ~@7", BD: "~@5 x ~ x ~@8 x ~@2 x ~@3 x ~@2 x ~@3 x ~",
  BE: "~@4 x ~@4 x ~@22",
})).gain(0.05)

// drums · splash
const splash = s("cr").struct(`<
  ~@3 A B C D E F G H I J K ~ L M N O P Q R S T U V W X Y Z AA AB Z AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AO AR
  AS AT AU AV AW AX AY AZ ~
>`.pickRestart({
  A: "~@20 x ~@8 x ~@2", B: "~@7 x ~@12 x ~@11", C: "~@2 x ~@8 x ~@20", D: "~ x ~@15 x ~@8 x ~@5", E: "~@15 x ~@16",
  F: "x ~@8 x ~@19 x ~@2", G: "~@14 x ~@7 x ~@8 x", H: "~@3 x ~@3 x", I: "~@5 x ~@21 x ~@4", J: "~@2 x ~@10 x ~@18",
  K: "~@16 x ~@12 x ~@2", L: "~@11 x ~@9 x ~@10", M: "~@19 x ~@6 x ~@5", N: "~ x ~@3 x ~@5 x ~@4", O: "~@3 x ~@3 x ~@8",
  P: "~@5 x ~@15 x ~@8 x ~", Q: "~@19 x ~@12", R: "~@3 x ~@8 x ~@7 x ~@11", S: "~@2 x ~@16 x ~@7 x ~@4", T: "~@9 x ~@6",
  U: "~ x ~@3 x ~@10", V: "~ x ~@13 x ~@10 x ~@5", W: "~@17 x ~@14", X: "~ x ~@8 x ~@8 x ~@12", Y: "~@3 x ~@13 x ~@14",
  Z: "~@27 x ~@4", AA: "~@3 x ~@9 x ~@18", AB: "~@6 x ~@4 x ~@4", AC: "~@6 x ~@7 x ~@6 x ~@10", AD: "~ x ~@7 x ~@5 x",
  AE: "~@6 x ~@12 x ~@12", AF: "~ x ~@9 x ~@8 x ~@11", AG: "~ x ~@17 x ~@8 x ~@3", AH: "~@5 x ~@13 x ~@12",
  AI: "~@4 x ~@8 x ~@8 x ~@9", AJ: "~@3 x ~@17 x ~@8 x ~", AK: "~@2 x ~@6 x ~@6", AL: "~@5 x ~@8 x ~@8 x ~@8",
  AM: "~@4 x ~@15 x ~@8 x ~@2", AN: "~@6 x ~@14 x ~@10", AO: "~@5 x ~@8 x ~@17", AP: "~@4 x ~@16 x ~@8 x ~",
  AQ: "~@7 x ~@17 x ~@6", AR: "~@3 x ~@6 x ~@9 x ~@11", AS: "~@3 x ~@8 x ~@3", AT: "~ x ~@6", AU: "~@9 x ~@12 x ~@9",
  AV: "~@3 x", AW: "~@5 x ~@26", AX: "~@10 x ~@12 x ~@8", AY: "~@31 x", AZ: "~@5 x ~@10",
})).gain(0.05)

stack(distortion_guitar, bass, snare, low_tom, mid_tom, splash)

More by Nirvana