Strudelify
Prison Sex cover art

Undertow

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

// drums · low tom
const low_tom = s("lt").struct(`<
// … 99 more lines

More by Tool