Strudelify

Prison Sex

Tool

KeyD majorTempo113 bpm
0:00/0:00
// Prison Sex — Tool
// 113 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (4/4 at bar 1, 3/4 at bar 33, 4/4 at bar 33, 3/4 at bar 56, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 128 bars on a 32-step grid, each part at one level. Source detail keeps the original performance.
setcpm(113/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.

// other · distortion guitar · "Guitar1"
const distortion_guitar = note(`<
  A B C D E F@3 G ~@8 H I@3 J ~@7 K@6 L M L N O P Q@2 R S ~@8 T U@5 V@2 W@2 X Y Z@5 AA@2 AB@4 AC@8 AD@8 AE AF@3 AG@4
  AH@2 AI AJ AK@2 AL@2 AM AN@2 AO AP AQ AR AS AT AU AV AW AX@8
>`.pickRestart({
  A: "~@7 b1", B: "~@2 b1@2 ~ b1@2 b1@6 b1@2 [b1,a2] ~ [b1,a2] ~ d3@2 e3@6 b1@5",
  C: "~ b1@2 ~@2 b1@2 b1@4 [b1,a2] ~ [b1,a2] ~ [b1,a2] ~ [b1,a2] ~ d3@2 e3@6 b1@4 ~", // B7
  D: "~ b1@2 ~@2 b1@2 b1@6 b1@2 [b1,a2] ~ [b1,a2] ~ d3@2 e3@6 ~ e3@4", E: "~ e3 d3@3 d3 b2@3 b2 a2 b2 d3@2 d3@2",
  F: "d2@4 a2 ~@3 [a2,e3]@8 d2@4 a2@2 b2@6 d3@4", G: "~ d2@4 a2 ~@3 [a2,e3]@8 d2@4 a2@2 b2@6 ~@3",
  H: "~ d2@4 d3@4 a2 ~@3 g3@12 ~ a2@2 b2@4", I: "b2@2 d2@4 d3@4 a2 ~@3 g3@12 a2@2 b2@4", J: "b2 ~@15",
  K: "[~@7 d2@4 d3@4 a2 ~@3 g3@12 a2@2 b2@4 b2@2 d2@4 d3@4 a2 ~@3 g3@12 a2@2 b2@4 b2@2 d2@4 d3@4 a2 ~@3 g3@12 a2@2 b2@4 b2@2 d2@4 d3@4 a2 ~@3 g3@12 b1@8 b1@4 a2@8 b1@4 d2@8 b1@4 e2@8 ~ b1@4 e2@4 b1@4 d2@4 b1@4]/6",
  L: "b1@2 b1 a2@2 b1 d2@2", M: "b1 e2@2 b1 e2 b1 d2 b1", N: "~ b1@4 e2@8 b1@4 e2@4 b1@4 d2@4 b1@3",
  O: "~ [b2,f#3]@4 [b2,f#3]@4 [b2,f#3]@4 [e3,b3]@4 [e3,b3]@4 [e3,b3]@4 [d3,a3]@4 [d3,a3]@3", // B5 E5 D5
  P: "~ [d3,a3]@4 [a3,e4]@4 [a3,e4]@4 [a3,e4]@4 [e3,b3]@4 [e3,b3]@4 [d3,a3]@4 [d3,a3]@3", // D5 A5 E5 D5
  Q: "~ d3@4 d2@4 a2 ~@3 [a2,e3]@8 d2@4 a2@2 b2@5", R: "~ d3@4 d2@3 a2 ~@3 [a2,e3]@8 d2@4 a2@2 b2@6",
  S: "d3@4 d2@4 a2 ~@3 [e3,b3]@8 d3@2 e3@2 d3@2 b2@2 a2@4", T: "d2@4 d3@4 a2 ~@3 g3@12 a2@2 b2@4 b2@2",
  U: "[d2@4 d3@4 a2 ~@3 g3@12 ~ b2@4 b2@2 d2@4 d3@4 a2 ~@3 g3@12 a2@2 b2@4 b2@2 d2@4 d3@4 a2 ~@3 g3@12 b1@8 b1@4 a2@8 b1@4 d2@8 b1@4 e2@8 b1@4 e2@4 b1@4 d2@4 b1@4 ~ b1@8, ~@12 a2 ~@67]/5",
  V: "[b1 a2@2 b1 d2@2 b1 e2@2 b1 e2 b1 d2 b1 b1@2]/2", W: "[b1 a2@2 b1 d2@2 b1 e2@2 b1 e2 b1 d2 b1 [b2,f#3]!2]/2",
  X: "[b2,f#3] [e3,b3]!3 [d3,a3]!3 [a3,e4]", Y: "[a3,e4]!2 [e3,b3]!2 [d3,a3]!2 [b2,f#3]!2",
  Z: "[[b2,f#3]@4 [e3,b3]@4 [e3,b3]@3 [e3,b3]@4 [d3,a3]@4 [d3,a3]@4 [d3,a3]@4 [a3,e4]@4 [a3,e4]@4 [a3,e4]@4 [e3,b3]@4 [e3,b3]@4 [d3,a3]@4 [d3,a3]@4 [b2,f#3]@4 [b2,f#3]@3 [b2,f#3]@4 [e3,b3]@4 [e3,b3]@4 [e3,b3]@4 [d3,a3]@4 [d3,a3]@4 [d3,a3]@4 [a3,e4]@4 [a3,e4]@4 [a3,e4]@3 [e3,b3]@4 [e3,b3]@4 [d3,a3]@4 [d3,a3]@4 b1@4 ~@2 b1@2 ~@2 b1@2 b1@6 b1@2 [b1,a2]!2 ~ d3@2 e3@2 g3@2 a3@2 b1@4 ~@2 b1@2 ~@2 b1@2]/5", // B5 E5 D5 A5 E5 D5 B5 E5 …
  AA: "[b1@6 b1@2 [b1,a2] ~ [b1,a2] ~ d3@2 ~ g3@2 a3@2 b1@4 ~@2 b1@2 ~@2 b1@2 b1@6 b1@2 [b1,a2] ~ [b1,a2] ~ d3@2 e3@2 g3@2 a3@2 a3@5 a3@2 g3@6, ~@7 e3 ~@24]/2", // B7
  AB: "[g3@2 e3@6 e3@2 d3@2 e3@2 g3@4 d2@4 d3@4 a2 ~@3 g3@12 a2@2 b2@3 b2@2 d2@4 d3@4 a2 ~@3 g3@12 a2@2 b2@4 b2@2 d2@4 d3@4 a2 ~@3 g3@12 a2@2 b2@4 b2@2 d2@4 d3@4 a2 ~@3 g3@3]/4",
  AC: "[~@9 [b1,b2,f#3]@166 ~@71 e4@10, ~@175 b3@64 ~@17, ~@95 e4@28 ~@5, ~@205 f#4@25 ~ f#4@25, ~@215 b4@40 ~]/8", // B5
  AD: "[~@40 b3@35 e3@2 ~@38 e3@3 ~@37 e3@3 ~@2 a3@35 f#3@3 ~@3 c#3@30 [f#4,b4]@5 e4@2 f#4@3 [f#4,b4]@7 [f#4,b4]@3 [f#4,b4]@5, d4@35 d4@45 b3@40 a#3@40 ~@38 g#3@33 ~@25, ~@15 a3@25 ~@37 f#3@38 ~@3 f#3@38 ~@2 f#3@37 ~@61]/8", // B5
  AE: "[f#4,b4]@2 [f#4,b4]@5 [f#4,b4]@3 [f#4,b4]@5 [f#4,b4]@5 e4@2 f#4@3 [f#4,a#4]@7", // B5 F#
  AF: "[[f#4,a#4]@3 [f#4,a#4]@5 [f#4,a#4]@2 [f#4,a#4]@5 [f#4,a#4]@3 [f#4,a#4]@5 [f#4,a#4]@3 [f#4,a#4]@2 e4@3 f#4@2 [f#4,a4]@10 [f#4,a4]@5 [f#4,a4]@3 [f#4,a4]@5 [f#4,a4]@2 [f#4,a4]@5 [f#4,a4]@5 e4@3 f#4@2 b3@3 b3@5 b3@2 b3@3 b3@5 b3@2 b3@3]/3", // F# F#m
  AG: "[b3@5 b3@2 a3@10 ~@15 f#3@15 ~ e3@5 d3@5 ~@15 f#3@15 e3@5 f#3@5 g3@15 f#3@15, ~@17 b2@40 ~ b2@40 ~@30]/4",
  AH: "[e3@5 d3@5 ~@15 f#3@15 g3@10 ~@14, ~@5 b2@20 ~@7]/2", AI: "~@8 g3@5 ~@3", AJ: "~@23 g3@9",
  AK: "[~@15 g3@5 ~@12]/2",
  AL: "[~@4 g3@10 ~@2 b3@2 ~ b3@2 e4@2 ~ b3@2 b3@2 d4@2 ~ b3@2 b3@2 a4@2 ~ b3@2 b3@2 ~ b4@2 b3@2 a4@2 ~ b3@2 d4@2 b3@2 ~ b3@2 e4@2 ~ b3@2]/2",
  AM: "b3@2 d4@2 ~ b3@2 b3@2 a4@2 ~ b3@2 b3@2 b4@2 ~ b3@2 a4@2 b3@2 ~ d4@2 b3@2 b3@2",
  AN: "[~ e4@2 b3@2 b3@2 ~ d4@2 b3@2 b3@2 ~ a4@2 b3@2 b3@2 ~ b4@2 b3@2 a4@2 ~ b3@2 d4@2 b3@2 ~ b3@2 e4@2 b3@2 ~ b3@2 d4@2 b3@2 ~ b3@2 a4@2 b3@2 ~ b3@2 b4@2 b3@2 ~]/2",
  AO: "a4@2 b3@2 e5 ~ e5!6 ~ e5!6 ~ e5!7 ~ e5!4", AP: "e5!2 ~ e5!6 ~ e5!6 ~ e5!6 ~ e5!6 ~ e5",
  AQ: "e5!5 ~ e5!6 ~ e5!6 ~ e5!6 ~ e5!5", AR: "e5 ~ e5!6 ~ e5!6 ~ e5!4 [d5,e5]@2 ~ e5@2 e5@2 [c#5,e5]@2 ~ e5@2",
  AS: "e5@2 [b4,e5]@2 ~ e5@2 [d5,d#5]@2 d5@2 ~ d5@2 d5@2 d5@2 ~ e5@2 d5@2 e5@2 ~ d5@2 e5@2 d5@2, ~@13 [b2,g3]@3", // E5 D#maj7 Em
  AT: "~ e5@2 d5@2 ~ e5@2 d5@2 e5@2 ~ d5@2 e5@2 ~ d5@2 e5@2 d5@2 ~@8", AU: "[b2,g3] ~@3", AV: "~@9 [b2,g3]@8 ~@15",
  AW: "~@19 [b2,g3]@8 ~@5", AX: "[~@31 [b2,g3]@46 [c2,b2,g3]@49 [c2,b2,b3]@53 [b1,b2,f#3]@63 ~@14]/8",
})).s("gm_distortion_guitar").gain(0.64)

// bass · electric guitar muted · "Guitar2(Mute)"
const bass = note(`<
  ~@8 A B C@4 D E@3 ~@3 F@2 G H@3 I J@2 ~@15 D@8 ~@48 K L M N O P@2 Q R@2 S T@3 U V W@2 X Y ~@7
>`.pickRestart({
  A: "~@29 d2@3", B: "~ b1@4 b1@4 e2@8 b1@4 a1@2 [b1,b2]@2 [b1,b2]@2 [b1,b2]@2 d2@3",
  C: "[~ b1@4 b1@4 ~ e2@8 b1@4 a1@2 [b1,b2]@2 [b1,b2]@2 [b1,b2]@2 d2@4 b1@4 b1@4 e2@8 b1@4 a1@2 [b1,b2]@2 [b1,b2]@2 [b1,b2]@2 d2@4 ~ b1@4 b1@4 e2@8 b1@4 a1@2 [b1,b2]@2 [b1,b2]@2 [b1,b2]@2 d2@4 b1@4 b1@4 e2@8 b1@4 a1@2 ~ [b1,b2]@2 [b1,b2]@2 [b1,b2]@2]/4", // B
  D: "d2@2 b1@2 b1@2 e2@4 b1@2 a1 [b1,b2]!3", // B
  E: "[d2@4 b1@4 b1@4 e2@8 ~ b1@4 a1@2 [b1,b2]@2 [b1,b2]@2 [b1,b2]@2 d2@4 b1@4 b1@4 e2@8 b1@4 a1@2 [b1,b2]@2 [b1,b2]@2 [b1,b2]@2 ~@31]/3", // B
  F: "[~@3 d2@4 b1@4 b1@4 e2@8 b1@4 a1@2 [b1,b2]@2 [b1,b2]@2 [b1,b2]@2 d2@4 b1@4 b1@4 e2@8 b1@4 ~ a1@2 [b1,b2]@2]/2", // B
  G: "[b1,b2]!2 d2@2 b1@2 b1@2 e2@4 b1@2 a1 [b1,b2]", // B
  H: "[[b1,b2]@2 [b1,b2]@2 d2@4 b1@4 b1@4 e2@8 ~ b1@4 a1@2 [b1,b2]@2 [b1,b2]@2 [b1,b2]@2 d2@4 b1@4 b1@4 e2@8 b1@4 a1@2 [b1,b2]@2 [b1,b2]@2 [b1,b2]@2 d2@4 b1@4 ~ b1@4 e2@8 b1@4 a1@2]/3", // B
  I: "[b1,b2]!3 d2@2 b1@2 b1@2 e2@4 b1@2 a1", // B
  J: "[[b1,b2]@2 [b1,b2]@2 ~ [b1,b2]@2 d2@4 b1@4 b1@4 e2@8 b1@4 a1@2 [b1,b2]@2 [b1,b2]@2 [b1,b2]@2 ~@25]/2", // B
  K: "~@18 b1@7 b1@5 b1@2", L: "~ b1@7 b1@2 ~ b1@2 b1@2 ~@10 b1@7", M: "~ b1@5 b1@2 b1@7 ~ b1@2 b1@2 b1@2 ~@10",
  N: "~ b1@7 b1@5 b1@2 b1@7 ~ b1@2 b1@2 b1@2 ~@3", O: "~@8 b1@7 b1@5 b1@2 b1@7 b1@2 ~",
  P: "[b1@2 b1@2 ~@10 d2@2 b1@2 ~ b1@2 e2@2 ~ b1@2 b1@2 d2@2 ~ b1@2 b1@2 a2@2 ~ b1@2 b1@2 ~ b2@2 b1@2 a2@2 ~ b1@2 d2@2 b1@2 ~ b1@2 e2@2 ~ b1@2]/2",
  Q: "b1@2 d2@2 ~ b1@2 b1@2 a2@2 ~ b1@2 b1@2 b2@2 ~ b1@2 a2@2 b1@2 ~ d2@2 b1@2 b1@2",
  R: "[~ e2@2 b1@2 b1@2 ~ d2@2 b1@2 b1@2 ~ a2@2 b1@2 b1@2 ~ b2@2 b1@2 a2@2 ~ b1@2 d2@2 b1@2 ~ b1@2 e2@2 b1@2 ~ b1@2 d2@2 b1@2 ~ b1@2 a2@2 b1@2 ~ b1@2 b2@2 b1@2 ~]/2",
  S: "a2@2 b1@2 d2@5 d2@2 e2@5 e2@2 d2@5 d2@2 a2@5 a2@2",
  T: "[b2@2 ~ b1@2 a2@2 b1@2 ~ d2@4 d2@2 ~ e2@4 e2@2 ~ d2@4 d2@2 ~ a2@4 a2@2 ~ b2@2 b1@2 a2@2 ~ b1@2 d2@5 d2@2 e2@5 e2@2 d2@5 d2@2 a2@5 a2@2 b2@2 b1@2 ~ a2@2 b1@2 d2@5 d2@2 e2@5]/3",
  U: "e2@2 d2@5 d2@2 a2@5 a2@2 b2@2 ~ b1@2 a2@2 b1@2 ~ b1@6",
  V: "~ b1@5 b1@2 b1@5 ~@2 b1@5 b1@2 b1@2 ~ b1@2 b1@2 ~ b1@2",
  W: "[~@8 b1@5 b1@2 b1@5 ~@3 b1@5 b1@3 b1@2 b1@3 b1@2 b1@3 ~@8 b1@5 b1@3 b1@5 ~@2]/2",
  X: "~ b1@5 b1@3 b1@2 b1@3 b1@3 b1@3 ~@7 b1@5", Y: "~ b1@3 b1@6 ~@2 b1@5 b1@3 b1@3 b1@3 b1@3 b1@3",
})).s("gm_electric_guitar_muted").gain(0.64)

// bass · electric bass finger · "Bass"
const bass_2 = note(`<
  ~@4 A B@3 C D E@4 F G@3 H@3 I@2 J K@3 L M@7 N O N P Q R S@2 T U F@8 V W@5 X@2 Y@2 Z AA AB@5 AC@2 AD@5 AE@3 AF@2 AG@2
  AH AI AJ@2 AK AL AM@2 AN AO@3 AP AQ@3 AR@2 AS AT AU@2 AV@2 AW AX@2 AY AZ@3 BA@2 BB@3 BC@8
>`.pickRestart({
  A: "~@7 d2", B: "d1@4 a1 ~@3 a1@8 d1@4 a1@2 b1@6 d2@4", C: "~ d1@4 a1 ~@3 a1@8 d1@4 a1@2 b1@6 d2@3",
  D: "~ b1@4 b1@4 e2@8 b1@4 a1@2 b1@2 b1@2 b1@2 d2@3",
  E: "[~ b1@4 b1@4 ~ e2@8 b1@4 a1@2 b1@2 b1@2 b1@2 d2@4 b1@4 b1@4 e2@8 b1@4 a1@2 b1@2 b1@2 b1@2 d2@4 ~ b1@4 b1@4 e2@8 b1@4 a1@2 b1@2 b1@2 b1@2 d2@4 b1@4 b1@4 e2@8 b1@4 a1@2 ~ b1@2 b1@2 b1@2]/4",
  F: "d2@2 b1@2 b1@2 e2@4 b1@2 a1 b1!3",
  G: "[d2@4 b1@4 b1@4 e2@8 ~ b1@4 a1@2 b1@2 b1@2 b1@2 d2@4 b1@4 b1@4 e2@8 b1@4 a1@2 b1@2 b1@2 b1@2 d1@4 d2@4 b1 ~@3 g2@12 ~ a1@2 b1@4]/3",
  H: "b1@2 d1@4 d2@4 b1 ~@3 g2@12 a1@2 b1@4",
  I: "[b1@2 ~ d2@4 b1@4 b1@4 e2@8 b1@4 a1@2 b1@2 b1@2 b1@2 d2@4 b1@4 b1@4 e2@8 b1@4 ~ a1@2 b1@2]/2",
  J: "b1!2 d2@2 b1@2 b1@2 e2@4 b1@2 a1 b1",
  K: "[b1@2 b1@2 d2@4 b1@4 b1@4 e2@8 ~ b1@4 a1@2 b1@2 b1@2 b1@2 d2@4 b1@4 b1@4 e2@8 b1@4 a1@2 b1@2 b1@2 b1@2 d2@4 b1@4 ~ b1@4 e2@8 b1@4 a1@2]/3",
  L: "b1!3 d2@2 b1@2 b1@2 e2@4 b1@2 a1",
  M: "[b1@2 b1@2 ~ b1@2 d2@4 b1@4 b1@4 e2@8 b1@4 a1@2 b1@2 b1@2 b1@2 d1@4 d2@4 b1 ~@3 g2@12 a1@2 b1@4 b1@2 d1@4 d2@4 b1 ~@3 g2@12 a1@2 b1@4 b1@2 d1@4 d2@4 b1 ~@3 g2@12 a1@2 b1@4 b1@2 d1@4 d2@4 b1 ~@3 g2@12 b1@8 b1@4 a2@8 b1@4 d2@8 b1@4 e2@8 ~ b1@4 e2@4 b1@4 d2@4 b1@4]/7",
  N: "b1@2 b1 a2@2 b1 d2@2", O: "b1 e2@2 b1 e2 b1 d2 b1", P: "~ b1@4 e2@8 b1@4 e2@4 b1@4 d2@4 b1@3",
  Q: "~ b1@4 b1@4 b1@4 e2@4 e2@4 e2@4 d2@4 d2@3", R: "~ d2@4 a2@4 a2@4 a2@4 e2@4 e2@4 d2@4 d2@3",
  S: "~ d2@4 d1@4 a1 ~@3 a1@8 d1@4 a1@2 b1@5", T: "~ d2@4 d1@3 a1 ~@3 a1@8 d1@4 a1@2 b1@6",
  U: "d2@4 d1@4 a1 ~@3 [a1,a2,e3]@8 d2@2 e2@2 d2@2 b1@2 a1@4", V: "d1@4 d2@4 b1 ~@3 g2@12 a1@2 b1@4 b1@2",
  W: "[d1@4 d2@4 b1 ~@3 g2@12 ~ b1@4 b1@2 d1@4 d2@4 b1 ~@3 g2@12 a1@2 b1@4 b1@2 d1@4 d2@4 b1 ~@3 g2@12 b1@8 b1@4 a2@8 b1@4 d2@8 b1@4 e2@8 b1@4 e2@4 b1@4 d2@4 b1@4 ~ b1@8, ~@12 a1 ~@67]/5",
  X: "[b1 a2@2 b1 d2@2 b1 e2@2 b1 e2 b1 d2 b1 b1@2]/2", Y: "[b1 a2@2 b1 d2@2 b1 e2@2 b1 e2 b1 d2 b1!3]/2",
  Z: "b1 e2!3 d2!3 a2", AA: "a2!2 e2!2 d2!2 b1!2",
  AB: "[b1@4 e2@4 e2@3 e2@4 d2@4 d2@4 d2@4 a2@4 a2@4 a2@4 e2@4 e2@4 d2@4 d2@4 b1@4 b1@3 b1@4 e2@4 e2@4 e2@4 d2@4 d2@4 d2@4 a2@4 a2@4 a2@3 e2@4 e2@4 d2@4 d2@4 b1@4 ~@2 b1@2 ~@2 b1@2 b1@6 b1@2 b1!2 ~ d2@2 e2@2 g2@2 a2@2 b1@4 ~@2 b1@2 ~@2 b1@2]/5",
  AC: "[b1@6 b1@2 b1 ~ b1 ~ d2@2 ~ g2@2 a2@2 b1@4 ~@2 b1@2 ~@2 b1@2 b1@6 b1@2 b1 ~ b1 ~ d2@2 e2@2 g2@2 a2@2 e2@5 e2@2 d2@6, ~@7 e2 ~@24]/2",
  AD: "[d2@2 b1@6 b1@2 a1@2 b1@2 d2@4 d1@4 d2@4 b1 ~@3 g2@12 a1@2 b1@3 b1@2 d1@4 d2@4 b1 ~@3 g2@12 a1@2 b1@4 b1@2 d1@4 d2@4 b1 ~@3 g2@12 a1@2 b1@4 b1@2 d1@4 d2@4 b1 ~@3 g2@12 a1@2 b1@5 a1@3 b1@5 a1@3 b1@5]/5",
  AE: "[a1@3 b1@5 a1@2 b1@3 b1@3 b1@2 a1@3 b1@5 a1@3 b1@5 a1@2 b1@5 ~ a1@2 b1@5 a1@3 b1@3 b1@2 b1@3 a1@2 b1@5 ~ a1@2 b1@5 a1@3 b1@5 a1@3 b1@5 a1@3 b1@2]/3",
  AF: "[b1@3 b1@2 a1@3 b1@5 a1@3 b1@5 a1@3 b1@5 a1@2 b1@5 ~ a1@2 b1@3 b1@2 b1@3 a1@2 b1@5 a1@3 b1@5 a1@2]/2",
  AG: "[~ b1@5 a1@2 b1@5 a1@3 b1@2 b1@3 b1@2 a1@3 b1@5 a1@2 b1@5 ~ a1@2 b1@5 a1@3 b1@5 a1@2 b1@3 b1@2 b1@3]/2",
  AH: "a1@2 b1@5 a1@3 b1@5 a1@2 b1@5 a1@3 b1@5 a1@2", AI: "b1@3 b1@2 b1@3 a1@2 b1@5 a1@3 b1@5 a1@2 b1@5 a1@2",
  AJ: "[~ b1@5 a1@2 b1@3 b1@2 b1@3 a1@2 b1@5 ~ a1@2 b1@5 a1@3 b1@5 a1@2 b1@5 a1@3 b1@2 b1@3 b1@2 a1@3 b1@5]/2",
  AK: "a1@2 b1@5 a1@3 b1@5 a1@2 b1@5 a1@3 b1@2 b1@3 b1@2", AL: "a1@3 b1@5 a1@2 b1@5 a1@3 b1@5 a1@2 b1@5 a1@2",
  AM: "[~ b1@2 b1@3 b1@3 a1@2 b1@5 a1@3 b1@5 a1@2 b1@5 a1@3 b1@5 a1@2 b1@3 b1@2 b1@3 a1@2 b1@5 a1@3 b1@5]/2",
  AN: "a1@2 b1@5 a1@3 b1@5 a1@2 b1@3 b1@2 b1@3 a1@2 b1@5",
  AO: "[a1@3 b1@5 a1@2 b1@5 a1@3 b1@5 a1@3 b1@2 b1@3 b1@2 a1@3 b1@5 a1@2 b1@5 a1@3 b1@5 a1@2 b1@5 a1@3 b1@2 b1@3 b1@2 a1@3 b1@5 a1@2 b1@5 a1@3 b1@5]/3",
  AP: "a1@2 b1@5 a1@3 b1@2 b1@3 b1@2 b1@15",
  AQ: "[f#2@15 ~ b1@5 a1@5 a1@5 a1@5 a1@5 a1@5 a1@5 a1@5 b1@5 a1@5 g1@2 g1@5 g1@3 g1@5 g1@2 g1@5 g1@3 g1@5]/3",
  AR: "[g1@2 g1@5 ~@3 a1@5 a1@5 a1@5 a1@5 a1@5 a1@5 a1@5 a1@5 b1@7 b1@5 b1@2]/2",
  AS: "~ b1@7 b1@2 ~ b1@2 b1@2 ~ g2@9 b1@7", AT: "~ b1@5 b1@2 b1@7 ~ b1@2 b1@2 b1@2 ~ g2@9",
  AU: "[~ b1@7 b1@5 b1@2 b1@7 ~ b1@2 b1@2 b1@2 ~ g2@10 b1@7 b1@5 b1@2 b1@7 b1@2 ~]/2",
  AV: "[b1@2 b1@2 g2@10 d2@2 b1@2 ~ b1@2 e2@2 ~ b1@2 b1@2 d2@2 ~ b1@2 b1@2 a2@2 ~ b1@2 b1@2 ~ b2@2 b1@2 a2@2 ~ b1@2 d2@2 b1@2 ~ b1@2 e2@2 ~ b1@2]/2",
  AW: "b1@2 d2@2 ~ b1@2 b1@2 a2@2 ~ b1@2 b1@2 b2@2 ~ b1@2 a2@2 b1@2 ~ d2@2 b1@2 b1@2",
  AX: "[~ e2@2 b1@2 b1@2 ~ d2@2 b1@2 b1@2 ~ a2@2 b1@2 b1@2 ~ b2@2 b1@2 a2@2 ~ b1@2 d2@2 b1@2 ~ b1@2 e2@2 b1@2 ~ b1@2 d2@2 b1@2 ~ b1@2 a2@2 b1@2 ~ b1@2 b2@2 b1@2 ~]/2",
  AY: "a2@2 b1@2 d2@5 d2@2 e2@5 e2@2 d2@5 d2@2 a2@5 a2@2",
  AZ: "[b2@2 ~ b1@2 a2@2 b1@2 ~ d2@4 d2@2 ~ e2@4 e2@2 ~ d2@4 d2@2 ~ a2@4 a2@2 ~ b2@2 b1@2 a2@2 ~ b1@2 d2@5 d2@2 e2@5 e2@2 d2@5 d2@2 a2@5 a2@2 b2@2 b1@2 ~ a2@2 b1@2 d2@5 d2@2 e2@5]/3",
  BA: "[e2@2 d2@5 d2@2 a2@5 a2@2 b2@2 ~ b1@2 a2@2 b1@2 ~ [b1,b2]@14 [b1,b2]@14 [b1,g2]@10]/2", // B Em
  BB: "[[b1,b2]@15 [b1,b2]@15 ~ [b1,g2]@10 [b1,b2]@16 [b1,b2]@16 [b1,g2]@10 [b1,b2]@13]/3", // B Em B Em B
  BC: "[~@4 [b1,b2]@16 [b1,g2]@11 [b1,g2]@46 [c2,b2]@49 [c2,b2]@53 [b1,b2]@63 ~@14]/8", // B Em Cmaj7 B
})).s("gm_electric_bass_finger").gain(0.64)

// drums · kick
const kick = s("bd").struct(`<
  ~@4 A B@3 C D E F G H I J K L M@2 N O P Q R S T U V W X@2 Y Z AA AB AC AD AE AF AG AH@2 AI AJ I@7 AK AL AM AN AO AP AQ
  AR AS AT AU@2 AV AW AX AY AZ BA BB BC BD BE BF@2 BG BH BI ~ BJ BK BL ~ BM BN BO BP AJ BQ BR BS BT AJ BU BV BW BX BY BZ
  CA CB CC CD CE CF CG CH CI CJ CK CL CM CN CO CP CQ CR CS CT CU CV CW CX CY CZ DA ~
>`.pickRestart({
  A: "~@5 x ~@2 x ~ x ~ x ~ x ~", B: "~ x ~@2 x ~@2 x ~ x ~@4 x ~", C: "~@29 x ~@2",
  D: "~@3 x ~@7 x ~@3 x ~@9 x ~@3 x ~@2", E: "~@3 x ~@8 x ~@3 x ~@9 x ~@3 x ~", F: "~@2 x ~@3 x ~ x ~@4 x ~ x",
  G: "~@5 x ~@7 x ~@3 x ~@9 x ~@3 x", H: "~@5 x ~@7 x ~@3 x ~@10 x ~@3", I: "x ~@2 x ~@3 x ~ x ~@4 x ~",
  J: "x ~@5 x ~@7 x ~@4 x ~@9 x ~@2", K: "~ x ~@5 x ~@7 x ~@3 x ~@12", L: "~ x ~@5 x ~@5 x ~@6 x ~@3 x ~@7",
  M: "~ x ~@2 x ~@2 x ~@2 x ~ x ~@3", N: "~ x ~@14", O: "~@3 x ~@5 x ~@7 x ~@3 x ~@9 x",
  P: "~@3 x ~@5 x ~@7 x ~@3 x ~@10", Q: "x ~ x ~@2 x ~@3 x ~ x ~@4", R: "x ~@3 x ~@5 x ~@7 x ~@4 x ~@8",
  S: "~ x ~@3 x ~@5 x ~@7 x ~@3 x ~@8", T: "~ x ~@3 x ~@6 x ~@7 x ~@3 x ~@7", U: "~ x ~ x ~@2 x ~@3 x ~ x ~@3",
  V: "~@2 x ~@4 x ~@5 x ~@7 x ~@3 x ~@6", W: "~@5 x ~ x ~@5 x ~@5 x ~@5 x ~@3 x ~@2",
  X: "~@7 x ~@5 x ~@5 x ~@5 x ~@3 x ~@2", Y: "~@7 x ~@5 x ~@5 x ~@11 x", Z: "~@7 x ~@11 x ~@3 x ~@7 x",
  AA: "~@3 x ~ x ~ x", AB: "x ~@2 x ~ x ~@2", AC: "x ~@2 x ~ x ~ x", AD: "x ~ x!2 ~ x ~@2",
  AE: "~ x ~@11 x ~@7 x ~@7 x ~@2", AF: "~@5 x ~@7 x ~@7 x ~@7 x ~@2", AG: "~@5 x ~@7 x ~@5 x ~ x ~ x ~@8",
  AH: "~ x ~@11 x ~@3 x ~@9 x ~@4", AI: "~ x ~@10 x ~@3 x ~@9 x ~@5", AJ: "x", AK: "x ~@2 x ~@3 x ~ x ~@5 x",
  AL: "x ~@2 x ~@2 x ~@2 x ~ x ~@4", AM: "x ~@5 x ~@5 x ~@5 x ~@3 x ~@8 x", AN: "~@5 x ~@5 x ~@5 x ~@3 x ~@9 x",
  AO: "~@5 x ~@5 x ~@11 x ~@7 x", AP: "~@11 x ~@3 x ~@7 x ~@8", AQ: "~@3 x ~@7 x ~@7 x ~@4 x ~@7",
  AR: "~ x ~ x ~@2 x ~", AS: "~ x ~ x ~ x!2 ~", AT: "x!2 ~ x ~@2 x ~", AU: "~ x ~ x ~ x ~ x",
  AV: "~@2 x ~@2 x!3 ~ x!3 ~@2 x ~", AW: "~@4 x ~@6 x ~@7 x ~@7 x ~@4",
  AX: "~@3 x ~@5 x ~ x ~ x ~@3 x ~@3 x ~ x ~ x ~ x ~ x ~@2", AY: "x ~ x!2 ~ x!2 ~ x!5 ~ x!2",
  AZ: "~@2 x ~ x ~@2 x ~ x ~ x ~@9 x ~@5 x ~@4", BA: "~ x ~@7 x ~@6 x ~@3 x ~@5 x ~@5",
  BB: "x ~@7 x ~@6 x ~@3 x ~@5 x ~@5 x", BC: "~@7 x ~@7 x ~@8 x!2 ~@6", BD: "x!3 ~@15 x ~@11 x ~",
  BE: "~@2 x ~@9 x ~@4 x ~@11 x ~@2", BF: "~ x ~@9 x ~@5 x ~@11 x ~@2", BG: "~ x ~@7 x ~@22", BH: "~@9 x ~@6",
  BI: "~@7 x", BJ: "~@5 x ~@26", BK: "~@15 x ~ x ~@4 x ~@9", BL: "~@23 x ~@2 x ~@4 x", BM: "x ~ x ~@4 x ~@24",
  BN: "~@8 x ~ x ~@4 x ~@16", BO: "~@8 x!2 ~@2 x ~@3", BP: "~@24 x ~@2 x ~@4", BQ: "x ~@2 x ~@4 x ~@23",
  BR: "~@9 x ~ x ~@4 x ~@15", BS: "~@17 x ~ x ~@4 x ~@7", BT: "~@25 x ~ x ~@4", BU: "~ x ~@2 x ~@4 x ~@22",
  BV: "~@9 x ~@9 x ~@9 x ~@2", BW: "~@17 x ~@7 x ~@6", BX: "~@4 x ~@8 x ~@2", BY: "~ x ~@14 x ~@9 x!2 ~@4",
  BZ: "~@2 x ~@6 x ~@14 x ~@7", CA: "~@10 x ~@6 x ~@7 x ~@6", CB: "~@13 x ~@4 x ~@6 x ~@2 x ~@3",
  CC: "~@6 x ~@4 x ~@9 x ~@3 x ~@6", CD: "~ x ~ x ~@9 x ~@4 x ~@9 x ~@3", CE: "~ x ~@6 x ~ x ~@9 x ~@4 x ~@6",
  CF: "~@3 x ~@4 x ~@6 x ~ x ~@9 x ~@4", CG: "x ~@8 x ~@4 x ~@13 x ~@3", CH: "~@11 x ~@8 x ~@11",
  CI: "~ x ~@6 x ~@4 x ~@2", CJ: "~@8 x ~@13 x ~@8 x", CK: "~@13 x ~@13 x ~@4", CL: "~@9 x ~@6 x ~@6 x ~@6 x ~",
  CM: "~@3 x ~@10 x ~@6 x ~@6 x ~@3", CN: "~@3 x ~@4 x ~@11 x ~@6 x ~@4", CO: "~@2 x ~@6 x ~@3 x ~@11 x ~@6",
  CP: "x ~@6 x ~@6 x ~@4 x ~@6 x ~@5", CQ: "~@3 x ~@2 x ~ x ~@9 x ~@13", CR: "x ~@9 x ~@2 x ~ x ~@10 x ~@5",
  CS: "~@9 x ~@9 x ~@2 x ~@2 x ~@6", CT: "~@3 x ~@15 x ~@10 x ~", CU: "~ x ~@2 x ~@10 x ~@15 x",
  CV: "~@11 x ~ x ~@2 x ~@11 x ~@3", CW: "~@13 x ~@11 x ~@2 x ~@2 x", CX: "~@6 x ~@8 x",
  CY: "~@11 x ~@3 x ~@2 x ~@12 x", CZ: "~@19 x ~@12", DA: "~@2 x ~@2 x ~@3 x ~@14 x ~@7",
})).gain(0.8)

// drums · snare
const snare = s("sd").struct(`<
  ~@4 A B@2 C D E F G H@2 I J K L M@2 N O P Q R S T@2 U@4 V W X I Y Z AA AB@2 K@2 I AC I@10 H AD AE AD AF AG AH AI AJ@2
  AK AL AM AN AO AP AQ AR AS K@2 AT AU AV ~ AW AX AY AZ BA BB BC BD BE BA BF BG BH BI BJ ~ BK BL BM BN BO BP BQ BR BS BT
  BU BV BW BX BY BZ CA CB CC CD CE CF CG CH CI CJ CK CL CM CN CO CP
>`.pickRestart({
  A: "~@6 x ~@4 x ~@4", B: "~ x ~@3 x ~@2", C: "~@2 x ~@7 x ~@3 x!2", D: "~@5 x ~@3 x ~@7 x ~@3 x ~@10",
  E: "~@5 x ~@15 x ~@10", F: "~@5 x ~@16 x ~@9", G: "~@3 x ~@7 x ~@4", H: "~@7 x ~@15 x ~@8", I: "~ x ~ x",
  J: "~@8 x ~@16 x ~@6", K: "~@9 x ~@15 x ~@6", L: "~@9 x ~@16 x ~@5", M: "~@5 x ~@7 x ~@2",
  N: "~ x!2 ~@2 x ~ x ~@3 x ~ x ~@2", O: "~@11 x ~@15 x ~@4", P: "~@11 x ~@16 x ~@3", Q: "~@3 x ~@3 x",
  R: "~@12 x ~@16 x ~@2", S: "~@13 x ~@15 x ~@2", T: "~@7 x ~@7 x", U: "~@15 x ~@15 x", V: "~@15 x ~@7 x ~@8",
  W: "~@11 x ~@20", X: "~@3 x ~@12 x ~@7 x ~@7", Y: "~ x ~@2 x ~ x ~", Z: "~ x ~@4 x ~", AA: "~@5 x ~@11 x ~@7 x ~@6",
  AB: "~ x ~@7 x ~@7 x ~@7 x ~@6", AC: "x!2 ~@2 x ~ x ~@3 x ~ x ~@3", AD: "~@7 x ~@7 x ~@16", AE: "~@3 x ~@23 x ~@4",
  AF: "x ~@3 x ~@2 x", AG: "~@2 x ~ x ~@2 x", AH: "~@4 x ~@2 x", AI: "~ x!3", AJ: "x!4",
  AK: "x ~@7 x ~@6 x ~@7 x ~@7 x", AL: "~@7 x ~@7 x ~@3 x ~@10 x ~", AM: "~ x ~@2 x ~@2 x ~@5 x ~@2",
  AN: "x ~@4 x ~@7 x ~ x ~ x ~ x ~@9 x ~@2", AO: "~@7 x ~@4 x ~@15 x ~@3", AP: "~@6 x ~@5 x ~@14 x ~@4",
  AQ: "~@5 x ~@5 x ~@7 x ~@6 x ~@5", AR: "~@6 x ~@3 x!2 ~@14 x ~@5", AS: "~@10 x ~@14 x ~@6", AT: "~ x ~@9 x ~@20",
  AU: "~@21 x ~@10", AV: "~@15 x", AW: "~ x ~@2", AX: "~@25 x ~@6", AY: "~@13 x ~@18", AZ: "~ x ~@20 x ~@9",
  BA: "~@5 x ~@9 x", BB: "~@9 x ~@6", BC: "~@3 x ~@9 x ~@2", BD: "~@7 x ~@8", BE: "~ x ~@9 x ~@4", BF: "~@19 x ~@12",
  BG: "~@6 x!2 ~@19 x ~@4", BH: "~@15 x ~@16", BI: "~@3 x ~@19 x ~@8", BJ: "~@11 x ~@19 x", BK: "~@7 x ~ x!3 ~@20",
  BL: "x ~@15 x!2 ~ x ~@12", BM: "~@9 x ~@14 x ~@4 x ~ x", BN: "~@17 x ~@14", BO: "x ~ x!2 ~@11 x ~@6 x ~@7 x ~",
  BP: "~@4 x ~@10 x", BQ: "~@16 x ~ x ~@4 x ~@8", BR: "~@6 x ~@16 x ~ x ~@4 x ~", BS: "~@13 x ~@16 x ~",
  BT: "x ~@4 x ~@14 x ~@11", BU: "~@4 x ~@2 x ~@4 x ~@8 x ~@10", BV: "~@3 x ~@11 x ~@11 x ~@4", BW: "~@9 x ~@11 x ~@10",
  BX: "~ x ~@13 x ~@10 x ~@5", BY: "~@3 x ~@6 x ~@5", BZ: "x ~@3 x ~@6 x ~@6 x ~@6 x ~@6",
  CA: "x ~@4 x ~ x ~@2 x ~@6 x ~@6 x ~@6 x", CB: "~@6 x ~@3 x ~@2 x ~ x ~@6 x ~@6 x ~@2",
  CC: "~@4 x ~@6 x ~@4 x ~ x ~ x ~@6 x ~@4", CD: "~@2 x ~@6 x ~@6 x ~@4 x ~ x ~@8", CE: "~ x ~@6 x ~@4 x ~@8 x ~@9",
  CF: "~@8 x ~@6 x ~@4 x ~@9 x!2", CG: "~@17 x ~@7 x ~@4 x ~", CH: "~@8 x!2 ~@17 x ~@4", CI: "~@4 x ~@4 x ~@10 x ~@11",
  CJ: "~@4 x ~@3 x ~@2 x ~@4", CK: "~ x!2 ~@19 x ~@8 x", CL: "~@5 x ~@12 x ~@13", CM: "~@4 x ~@4 x ~@2 x ~@3",
  CN: "~@5 x!2 ~@23 x ~", CO: "~@9 x ~@6 x ~@15", CP: "x",
})).gain(0.8)

// … 106 more lines

More by Tool