Strudelify

You'd Be So Nice to Come Home To

Tyner Mccoy

KeyC minorTempo120 bpm
0:00/0:00
// You'd Be So Nice to Come Home To — Tyner Mccoy
// 120 bpm, 4/4, key C minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 86 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. 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.

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  A B C@8 D@2 E@3 F@5 G@2 H@2 I J@4 K L@2 M@2 N@2 O P@2 Q@2 R S T U@2 V@2 W X@2 Y@2 Z@3 AA@2 AB@3 AC@2 AD@2 AE AF@2 AG@2
  AH AI@2 AJ@2 AK@2 AL AM@4 AN ~@3
>`.pickRestart({
  A: "~ c2@7 ~ c2@6 g1@10 ~ g1@6", B: "~@2 c2@6 ~@2 c2 ~@5 g1@16",
  C: "[~@4 c2@7 ~ c2@2 ~@4 g1@19 ~ c2@7 ~ c2@2 ~@4 g1@19 ~ c2@7 ~ c2 ~@5 g1@19 c2@6 ~@3 c2@2 ~@4 g1@18 ~ c2@7 ~ c2@2 ~@4 g1@19 c2@7 ~@2 c2@2 ~@4 g1@14 ~ b1@4 c2@8 ~ eb2@8 d2@9 g2@9 c2@8 eb2@7]/8",
  D: "[~ g2@4 gb2@4 f2@4 b1@4 bb1@4 c2@4 ~ db2@4 d2@4 eb2 ~@3 db2@4 c2@4 bb1@4 ~ ab1@8 c2@5, c2@2 ~@35 eb2@2 ~@25]/2",
  E: "[~@2 ab1@2 eb2@3 ~ eb2@4 c2@4 db2@4 ~ d2@7 ~ g1@8 ~ d2@7 ab1@2 g1@4 d2@7 ~ d2@4 g1@4 b1@4 ~ c2@4 eb2@4 g2@4 ab2@4 ~ a2@4 a1@3, ~@14 ab1 ~@33]/3",
  F: "[~ eb2@4 db2@4 d2@4 gb2@4 a2@4 g2@4 ~ ab2@4 f2@4 ~ d2@2 ~ db2@4 d2@9 g1@8 ~ c2@7 ~@2 c2@5 ~ d2@11 g1@8 c2@7 ~@2 c2@2 ~@4 c2@10 b1@7 ~ bb1@4 c2@4 db2@4 ~ d2@3 ~ eb2@4 g2@4 ~ bb2@4 a2@3, ~@17 eb2@2 ~@61]/5",
  G: "[~ ab2 ~@2 ab2 g2@5 f2@4 e2@4 eb2@4 c2@4 ab1@4 ~ e2@4 f2@4 c2@4 bb1@4 d2@4 ~ eb2@4 eb1@4 bb1@4]/2",
  H: "[eb2@3 ~@2 d2@4 ab1@4 g1@4 b1@3 ~ b1 c2 ~ c2@2 eb2@4 g2@4 eb2@5 b1@4 gb2@4 eb2@4 b1@5 bb1@4 f2@4]/2",
  I: "d2@4 bb1@4 eb2@3 ~@21",
  J: "[~@6 g2@4 c2@3 ~ eb2@4 g2@4 ~ db2@4 d2@3 ~ ab2@4 g2@4 b2@4 ~ c3 ~ c3 ~ g2@4 c2@4 gb2@4 ~ f2@4 f1@4 c2@4 b1@4 bb1@4 ~ f2@4 db2@4 d2@4 eb2@4 gb1@4 ~ bb1@4 g1@4 ab1@2 ~ ab1@2 bb1@4 c2@4 db2@4]/4",
  K: "d2@4 eb2@4 ~ f2@4 db2@4 d2@3 ~@2 d2@3 ab1@3 ~ ab1@3",
  L: "[~@2 g1@4 b1@4 c2@4 db2@4 ~ d2@3 ~ ab2@4 g2@3 ~ b2@4 ~ c3@4 g2@4 c2@4 bb2@4 a2@4 ~ g2@4 f2@3]/2",
  M: "[~ eb2@4 d2@3 ~ gb2@4 ~ a2@4 g2@3 ~ ab2@3 ~@2 d2@4 f2@3 ~ gb2@3 ~ g2@4 g1@4 d2@3 ~ db2@4 ~ c2@4 g2@4]/2",
  N: "[eb2@4 db2@4 ~ d2@4 ab1@4 g1@2 ~@2 b1@4 c2@4 ~ eb2@4 g2@4 gb2@4 f2@4 ~ eb2@4 db2@4 b1@4 bb1@4 ~, ~@10 g1 ~@21]/2",
  O: "c2@4 db2@4 d2@4 eb2@5 db2@4 c2@4 bb1@4 ab1@3",
  P: "[~ c2@4 bb1@4 ~ db2@4 c2@4 eb2@4 db2@4 f2@5 eb2@4 db2@4 bb1@4 ~ d2@4 eb2@3 ~ gb2@4 g2@4 gb2@4]/2",
  Q: "[~ f2@4 gb2@4 g2@4 db2@4 ~ c2@4 eb2@4 g2@2 ~@2 gb2@4 f2@4 ~ c2@4 f1@4 bb1@3 ~ a1@4 bb1@4 ~ b1@4, ~@29 g2@2 ~@33]/2",
  R: "bb1@4 eb2@4 bb1@4 ~ eb1@4 db2@4 d2@4 ab1@4 g1@3", S: "~@2 b1@4 c2@3 ~ eb2@4 g2@4 ~ gb2@4 g2@3 ~ b2@4 ~",
  T: "d3@3 ~ db3@4 c3@4 g2@4 c2@4 g2@4 ~ c3@4 g2@3, ~@3 d3@2 ~@27",
  U: "[~ b2@4 gb2@4 bb2 ~@3 ab2@4 ~ f2@4 e2@4 eb2@4 g2@4 bb2@4 ~ a2@4 ab2@4 g2@4 eb2@4 ~ c2@4 bb1@4, ~@6 bb2 ~@25]/2",
  V: "[ab1@4 c2@4 ~ eb2@4 f2@4 db2@4 d2@4 ab1@4 ~ g1@4 b1@4 d2@4 db2@4 ~ d2 ~ d2@2 f2@4 g2@4 f2@4 ~]/2",
  W: "g2@4 db2@4 c2@4 eb2@4 a2@4 a1@3 ~ c2@4 ~ db2@3",
  X: "[~ d2@3 ~ gb2@4 ~ a2@4 g2@3 ~ ab2@4 d2@4 ~ f2@4 gb2@4 g2@3 ~ b2@4 ~ d3 ~@2 db3@4 ~ c3@4 g2@4 c2@4, ~@46 d3@3 ~@15]/2",
  Y: "[~ c3@4 ab2@4 gb2@4 g2@4 db2@4 ~ c2@4 eb2@4 d2@4 f2@4 eb2@4 ~ g2@4 gb2@4 f2@4 bb1@4 ~ f2@4]/2",
  Z: "[db2@4 d2@4 eb2@4 g2@4 ~ bb2 ~ bb2@2 a2@4 ab2@4 g2@5 f2@4 eb2@4 d2@4 db2@4 ~ d2@4 eb2@4 f2@4 c2@4 bb1@4 d2@4 ~ eb2 ~ eb2@2 d2@4 c2@3 ~ db2@4 d2@4]/3",
  AA: "[ab1@4 ~ g1@4 b1@4 ~ c2@3 ~ eb2@4 g2@4 gb2@4 g2@5 g1@4 d2@4 g2@4 gb2@4 b1@4 ~ bb1@4 f2@4]/2",
  AB: "[eb2@4 g2@4 ~ bb2@4 g2@4 ab2@4 gb2@4 ~ g2@4 b2@4 c3@4 c2@4 ~ g2@4 gb2@4 ab2@4 gb2@4 g2@4 db2@4 c2 ~@3 d2@5 eb2@4 f2@4 gb2@4 b1@4 ~ eb2@3, ~@35 c2 ~@12]/3",
  AC: "[~ gb2@4 f2@5 bb1@4 f2@4 db2@4 d2@4 ~ eb2@4 eb1@4 bb1@4 ab1@3 ~ eb2@4 ~ bb1@4 db2@4 c2@4 eb2@4]/2",
  AD: "[~ db2@4 bb1@4 d2@4 ab1@4 f1@4 gb1@3 ~@2 g1@4 b1@4 a1@4 c2@4 ~ b1@4 d2@4 ab1@4 g1@5 b1@4]/2",
  AE: "c2@4 eb2@4 g2@3 ~@2 a2@3 a1@4 ~ c2@4 db2@4 d2@3",
  AF: "[~ gb2@4 ~ a2@4 db3@4 d3@4 c3@4 ~ bb2@4 ab2@4 g2@4 f2@4 ~ eb2@4 db2@4 c2@4 d2@4 eb2@4 db2@4]/2",
  AG: "[~ d2@4 gb2@4 g2@3 ~ b2@4 ~ c3@4 c2@4 g2@4 eb2@4 gb2@4 ~ f2@4 b1@4 f2@5 bb1@4 f2@4 c2@4]/2",
  AH: "db2@4 d2@3 ~ eb2@4 ~ db2@4 c2@4 ab1 ~@3 c2@4 bb1@3, ~@12 ab1 ~@3",
  AI: "[~ db2@4 ~ c2@4 eb2@4 db2@4 f2@4 ~ c2@4 f1@4 c2@4 bb1@4 ~ eb2@4 bb1@4 eb1@4 bb1@4 ab1@3 ~@2 ab1@3]/2",
  AJ: "[~ g1@4 b1@4 c2@4 eb2@5 g2@4 eb2@4 b1@9 eb2@8 bb1@9 d2@8 eb2@4]/2",
  AK: "[~@5 eb2@6 db2@10 ~ db2@8 eb2@7 ~@2 eb2@6 db2@10 ~ db2@8]/2", AL: "eb2@7 ~ eb2@5 ~ db2@10 ~ db2@7",
  AM: "[~ eb2@6 ~@3 eb2@6 db2@9 ~@2 db2@8 eb2@6 ~@3 eb2@5 ~ db2@10 ~ db2@8 eb2@6 ~@3 eb2@5 ~ db2@10 ~ db2@8 eb2@6 ~@3 eb2@5 ~ db2@10]/4",
  AN: "~ db2@7 ~ eb2@2 ~@6 eb2@2 ~@4 eb2@2 ~@7, ~@23 db2 ~@8",
})).s("gm_acoustic_bass").gain(0.4).pan(0.3)

// chords · piano · "A.PIANO 1"
const piano = note(`<
  A B@4 C@3 D@6 E F@4 G H@4 I J K L M@3 N O@4 P Q@2 R@2 S T U V@2 W@3 X Y Z@3 AA AB AC AD@2 AE@2 AF@6 AG AH@3 AI@6 AJ AK
  AL AM@2 AN@4
>`.pickRestart({
  A: "[c2,g2]@8 ~ [bb3,eb4,c6]@2 ~@4 [g3,c4,f4,d5,a5,d6]@17, ~@9 [f3,c5,f5] ~@22", // C5 Cm7 Dm7 F5
  B: "[~@2 [c2,g2]@8 ~ [f3,f5]@2 bb5 ~@3 [g3,c4,f4,g5,a5,d6] ~@3 g5@8 ~@2 f5@4 ~@3 [c2,g2] ~@5 [f3,bb3,eb4] ~@12 a4@6 [g4,a4,d5]@6 ~@9 [f3,bb3] ~@9 c5 ~@4 eb5 ~@3 g5@4 db5 ~ e5@2 ~ gb5@2 ab5 ~ a5@2 b5 ~ db6 ~ [ab3,db4,gb4] ~@2 db6 eb6@2 ~ [gb3,b3,e4,db6] ~ b5@2 ab5, ~@10 [bb3,eb4]@3 ~@8 [g3,c4,f4,a5,d6]@14 [d5,g5]@15 [g3,c4,f4]@19 f4@15 ~@44, ~@11 [c6,f6]@4 ~@14 [g5,c6]@6 c5@21 ~ [bb4,f5]@12 [g4,c5]@20 ~@5 f5@7 ~@15 e6@2 ~@10, ~@77 eb4@2 ~@5 [g3,c4,f4]@17 ~@2 [gb3,b3,e4]@8 ~@17]/4", // C5 F Dm7 C5 Ebsus2 Gsus2 Bb5 Dbsus4 …
  C: "[~ db6@2 [ab3,b5]@2 ab5@2 gb5 ~ [c2,g2] ~@3 d6@3 ~ [f3,bb3,eb4,c6]@3 bb5@2 g5@2 f5 ~ ab5@2 ~@2 gb5@3 ~@6 db5@3 g2@2 ~@2 c5@2 f5 ~@2 [f3,bb3,eb4] ~@2 d5 ~ g5@2 ~@2 eb5@2 ab5 ~ db6 ~ eb6@2 ~ gb6 ~ ab6 ~ db7 ~ eb7 ~ g7@2 [f3,bb3,eb4,d7] ~ f7@2 eb7 ~ d7@2 c7 ~ ab6@2 c7 ~ g6@3, ~@3 [db4,gb4] ~@5 bb5@7 g5@2 ~@8 [gb3,b3]@16 c2 ~@15 [ab3,db4,gb4]@13 ~@25, ~@26 e4@10 ~ ab5@5 ~@54, ~@29 b5@2 ~@3 b5@7 ~@9 bb5@2 ~@6 c6@5 ~@33]/3", // Abm C5 Fsus4 Ebsus2 Bb Gb5 B5 Dbsus4
  D: "[~@10 d5@3 ~ [c2,g2,f4,g4,bb4,eb5]@13 [f3,bb3,eb4]@2 ~@5 [c4,d4] ~@7 c5 ~@3 b4 ~@4 [eb3,a3,d4] ~@13 f4@3 g4 ~@5 ab4 ~@2 bb4@5 [ab3,c4,db4,f4,c5]@7 eb5 ~@3 [ab3,c4,db4] ~@4 [g3,c4,db4]@8 ~ [g3,c4,db4,f4,c5,ab5,c6]@8 [g3,bb3,c4,f4,g4,c5,g5]@7 [g3,bb3,c4,f4,c5,f5]@12 ~ [g3,bb3,c4,g4,c5,g5] ~@5 c5@4 [g4,c5,g5]@3 ~@12 f5@6 ~@3 g2 ~@5 [f3,b3,eb4]@10 ~ [ab3,c4,d4,d5,ab5,d6]@6, [g3,ab3,c4]@14 ~@26 [f3,b3,eb4]@9 ~@8 [eb3,a3,d4]@18 ~@66 [g3,bb3,c4,f4,f5]@7 ~ [ab3,c4,d4,ab4,c5,ab5]@17 ~@26, ~@8 c5@5 ~@17 [g4,ab4,c5,d5]@11 ~@7 [g4,c5]@17 ~@25 [f4,c5]@16 ~@60 [g4,b4,eb5,g5]@19 ~@7]/6", // Cm7 Ebsus2 Csus2 D Dbmaj7 C Dbmaj7 Gm7 …
  E: "[ab3,c4,d4,f5,c6,f6]@8 ~@13 [f5,c6,f6]@4 ~@5 g5@2, ~@4 [eb5,bb5,eb6]@8 ~@2 [gb5,gb6] ~, ~@11 [eb3,g3,a3,d4]@14 ~@3 [g3,c4,eb4,db6]@4, ~@29 g6@3", // Dm7b5 F5 Eb5 Gb Ebmaj7 Cm
  F: "[~@6 [g3,c4,eb4,eb6]@2 ~@2 [gb3,c4,f4,gb5,db6,gb6]@8 [gb3,c4,f4,eb5,bb5,eb6]@6 ~ [f3,ab3,c4,d4,d5,ab5,d6]@11 ~ [f3,ab3,c4,d4,ab4,eb5,ab5] ~@5 [f3,b3,eb4,g4,b4,eb5,g5]@11 c5@2 d5@2 ~@2 [c2,g2,f4,bb4,eb5]@8 [f3,bb3,eb4]@6 ~ [ab3,c4,d4,g4,ab4,c5,d5]@11 ~@2 c5 ~@4 b4 ~@3 c2@5 ~ [eb4,g4]@8 ~@3 f4 bb4@2 ~ c5@2 ~@2 [gb4,db5,e5]@6, ~@6 eb5 ~@79 [f3,b3,eb4]@4 ~@4 [g4,c5]@9 ~@25, ~@96 g2@6 [f3,bb3,f4]@9 [bb3,c4]@7 ~@4 [a3,db4,d4]@2 ~@4]/4", // Cm Gbmaj7 Cm7b5 Dm7b5 Fm7 Ebaug Cm7 Ebsus2 …
  G: "[f4,c5,eb5]@7 ~ c5@2 ~@3 eb5@2 ~@4 [g3,db4] ~@5 [g3,db4]@7, [ab3,c4,db4] f4, ~@7 f4@2 ~@6 c5@17", // F7 Gdim Dbmaj7
  H: "[g4 [ab2,eb3] ~@2 g4 ~@14 f4@2 ~ g4 ab4@2 ~ bb4@2 c5@2 d5 eb5@2 ~@5 [gb3,c4] ~@7 [gb3,c4]@4 gb5@2 ~@2 [eb3,a3,d4] ~@4 eb5 ~@3 [eb3,a3,d4]@7 ~ [gb3,c4,c5,ab5] ~@10 b5@3 ~@10 [eb5,bb5]@3 ~ [c6,f6]@2 ~@2 [a3,d4,eb4,g4,g5,db6,g6]@2 d6 ~@6 [gb5,db6,gb6]@6 b5@2 c6@7 ~, ~ bb4@2 ab4@2 ~ bb4@10 ~ ab4@2 ~@16 gb5@8 ~ eb5@7 ~ f5@7 ~@2 c5@9 ~@24 eb6@3 ~@2 f5 ~@28, ~@13 [g3,bb3,c4]@18 ~@46 [f3,b3,eb4,b4,eb5,g5]@8 ~ [eb3,a3,d4,c5,g5,c6]@12 ~@13 [a3,eb4,ab4]@7 [ab3,d4,g4,f5,f6]@10, ~@9 g4 ~@54]/4", // Ab5 Gbdim D Ab7 Eb5 F5 Gb5 C7 …
  I: "[ab3,d4,g4,eb5,bb5,eb6]@5 [bb5,d6]@2 ~@2 [g3,bb3,c4,f4,eb5,bb5,eb6]@3 ~@3 bb5 ~@2 d6 ~ bb5 ~ g5 ~ f5 ~ bb5 ~ ab5@2 eb5@2, ~@5 d5 ~@26", // Ebmaj7 Bb Cm7
  J: "b4 ~ bb4 ~@3 g4 ~@3 [c2,g2,eb4]@7 ~@2 [c3,f3,bb3,c4]@2 ~@2 bb4@2 ~ [eb3,ab3,db4] eb4@2 ~ ab4 ~, ~@5 ab4@2 ~@2 f4@2 ~@11 f4@2 ~@8", // Cm Fsus4 Dbsus2
  K: "db5@2 [gb3,b3,e4] ~ ab4@3 db5 gb5@3 ~ [c2,g2] ~@2 d5 ~ f5@2 [f3,bb3,eb4] ~ d5@2 c5 ~ db5@2 ~ f5 b4 ~@2, ~@12 g5@3 ~@4 eb5@2 ~@11", // Esus2 C5 Ebsus2
  L: "[a3,db4,d4,gb4] ~ db5@2 a4@2 gb4 ~ b4@2 ab4@3 e4 ab4@2 ~ [bb2,ab3,c4] ~ f4@2 ab4@2 bb4 ~ [gb3,b3,e4] ~ db5 ~ e5 ~ gb5, e5@2 ~@6 gb3 ~@16 b4@2 ~@5", // Dmaj7 Fm Esus2
  M: "[~ [g3,c4,f4] ~ a5@2 b5 ~ db6 ~@2 [ab3,db4,gb4,b5] ~ a5@2 f5 ~ ab5 ~ c6@2 g5 ~ [ab2,eb3] ~ ab5@2 ~@2 eb5@2 ~ [g3,bb3,c4,f4] ~ f5 ~ eb5@2 c5 ~ ab4@2 g4@3 f4 c5 ~@2 [d2,ab2] f4@2 ~ g4@2 ab4@2 ~@2 b4@3 db5 eb5@2 ~ f5@2 g5@2 ab5 ~ bb5@2 b5@2 db6@2 ~ [f3,b3] f6@2 g6 ~@2 f6 ~ d6@2 c6 ~ f6@2 d6 ~ c6 ~, ~ g5@2 ~@19 bb5@2 ~@3 f5@2 ~@2 g5@2 ~@14 c5@2 ~@7 bb4@2 ~@19 eb6@2 ~@17, ~@48 [g4,ab4]@2 ~@7 [f3,b3,eb4]@19 ~@2 eb4@2 ~@2 [ab3,c4,d4]@6 ~@2 [f3,b3,eb4]@6]/3", // Csus4 Abm7 Ab5 Gm7 Ddim Fdim Abmaj7 Fm7b5 …
  N: "g5@2 eb6 ~ d6 ~ bb5 ~ f5@2 d6 [a3,d4] bb5@3 ~ a5@2 ~ c6@2 bb5@3 ~ g5@2 ~@2 g5@2 ~, ~@2 [eb3,a3,d4]@8 ~ eb3@2 ~@8 a2 ~@10", // D5 D
  O: "[[g3,b3,c4,eb4] ~@5 g5@3 ~ bb5@2 ~ [g3,b3,c4,eb4] ~@3 g5 c5@2 ~ [gb3,c4] ~@2 gb5 eb5 c5 [gb3,c4] ~@2 gb5 ~ c5@2 [gb3,c4] ~ f5@2 ~ bb4 [ab3,c4,d4] ~ eb5@2 [ab4,b4]@2 [f3,b3,f5]@2 ~@3 ab4 eb5@3 [c2,g2] b4@2 ~ d5@3 ~ [eb4,c5,d5]@2 bb4@3 g4 eb4@3 [ab2,c4] d4@3 d2@6 f4@2 g4@2 ab4@2 ~ bb4 ~ b4 ~ [eb3,a3,d4,db5] ~ e5@2 gb5 ~ b5 ~ [ab3,db4,gb4,db6] ~ e6 ~ gb6@2 g6@2 ~ [ab3,c4,d4,d6] ~ gb6 ~ f6@2 e6 ~ [f3,b3,eb4] ~ d6@2 db6@2 c6@2 bb2 f3, ~@9 a5@2 ~@2 b5@2 ~@2 eb5@2 ~@2 c6@3 ~@3 bb5@2 ~@2 eb5@2 ~ ab5@2 ~@2 d5@2 [f3,g5]@2 ~@4 eb4 ~ eb5@2 b4@2 ~@66 eb6@2 ~@6 bb5@2, ~@49 bb4@3 ~@11 [f3,bb3]@6 ab3 ~@12 [f3,b3,eb4]@4 ~@42]/4", // Cm Gbdim Dm7b5 Abm Fdim C5 Cm Ab …
  P: "ab5 ~@2 eb6 ~@2 ab5 [bb3,eb4,f5] ~ eb5 ~ d5@2 db5@2 [ab3,db4,gb4]@6 [bb3,eb4,ab4]@3 c5 ~ f5@2 ab5 ~ a5@2, ~@5 bb5@2 ~@25", // Bbsus4 Dbsus4 Ebsus4
  Q: "[[g3,b3,db4,gb4]@2 e6@2 a6@2 e6 ~ db6 [g3,bb3,c4,f4] a5 ~@2 bb5 eb6@2 ~ [g3,bb3,c4,f4] ~ bb5@2 f5 ~ eb5@2 ~ [bb3,c4] d5@2 ~@4 [d2,ab2]@6 ~ [ab3,c4,d4,c5]@2 ~@2 ab5@2 ~ bb5@4 [g3,a3,bb3,d4] gb5@2 g5@2 ~ c5@2 bb3 [g3,a3,d4] ~@3, db6 ~@16 c6@2 ~@6 g5@2 ~@3 f5@2 ~@11 f5@2 ~@6 f5@2 ~@11, ~@26 ab3@2 ~@3 c5@8 ~@25]/2", // Gmaj7 Gm7 Bbsus2 Ddim Dm7b5 Gm Gsus2
  R: "[~ f5 g5@3 ab5@2 ~ [ab3,d4,g4] ~ f5@3 ~ ab5@2 ~@4 [c2,g2] ~@4 eb5 ~ d5 ~ [f3,bb3,eb4] ~ d5@2 eb5 ~@2 gb5 ~ ab5@2 b5@2 db6 ~ eb6@2 [a3,eb4,ab4] ~ e5@2 ~@2 g5@2 ~@2 db6@2 ~ [ab3,d4,g4] b4@2 ~ db5, ~@2 gb5 ~@5 g5@2 ~@7 g5@5 ~@7 c5@2 ~@20 f5@2 ~@2 bb5@2 ~@7]/2", // G C5 Ebsus2 Ab G
  S: "~ eb5@2 gb5 ~ [a5,b5] ~@2 db6 eb6@2 ~ [gb3,b3,e4,gb6] ~ g6 ~ gb6@2 db6@2 b5@2 c6@2 [d2,ab2] ~ d6@2 ~ [f5,g5] bb5@2, ~@2 [ab3,db4,gb4] ~@9 f6 ~@3", // Asus2 Esus2 Ddim Fsus2 Dbsus4
  T: "~ [f3,eb6]@2 db6@2 f5 ~ [c2,g2,c6,f6]@8 [f3,bb3,eb4,eb6,g6]@6 ~ [ab3,c4,d4,g5,c6,f6]@9 [f3,b3,eb4,bb5,eb6,bb6], ~ [b3,eb4] ~@30", // F7 Csus4 Eb Dm7b5 Ebsus2 B
  U: "~@3 [f3,b3,eb4,a5,eb6,a6]@5 ~ [a5,d6,f6]@8 [f3,bb3,eb4,g5,eb6,g6]@6 ~@3 d6@6, ~@9 [c2,g2]@2 ~@12 [g3,bb3,c4,f4,f5,db6,f6]@9", // F7 Dm Eb C5 Gm7b5
  V: "[[ab3,c4,db4,f4,eb5,bb5,eb6] ~@3 [ab3,c4,db4,f4,db5,db6]@6 ~@3 [ab2,eb3]@4 g5 ~@3 [ab3,c4,db4,f4]@4 ab5 ~ g5@2 f5 ~ eb5@2 c5 ~ ab4@3 ~ g4@2 ~ bb4 ~ g4@2 [ab2,eb3] ~@4 eb4@2 ~@2 [ab2,eb3] ~@5 d3@2 d4, ~@10 [c5,ab5,c6]@8 ~ bb5@5 ~@14 f4@2 ~@13 c4@10 ~]/2", // Dbmaj7 Ab5 Dbmaj7 Ab5 Fm
  W: "[~ eb4@2 f4@4 ~ g4 ab4@2 ~ [d3,g3,ab3] ~@3 c5@2 d5@2 eb5@4 [gb3,c4] ~ f5@2 ~ c5 ~ gb5@2 [f3,b3,e4] ~ ab4@2 g5@2 d5@2 a4 [gb3,c4] ab5@2 ~ eb5@2 bb4@2 [f3,b3,e4] ~ e5@2 b4 ~ gb5@2 ~ [ab3,db4,gb4] e5 ~@3 gb5@2 ~ [eb3,a3,d4,b4] ~ db5@2 e5 ~ gb5 ~ [ab3,db4,gb4] ~ b5 ~ db6 ~ eb6 ~@2 d6 ~ db6@2 [b3,c6] gb3 b5@2 e6@2 a5 ~, ~@12 [c4,bb4]@2 ~@19 db5@2 ~@15 a5@2 ~@6 b5@2 ~@3 b5@2 ~@10 a5@2 ~@19]/3", // G Gbdim E Gbdim E Dbsus4 B7 Dbsus4 …
  X: "[ab3,db4,gb4] ~ b5@2 e5 ~ ab5@2 [gb3,c4,bb5] ~@2 gb5 ~ bb5 ab5@2 ~ [eb3,a3,d4,eb5] ~ db5@2 gb5 ~ eb5@2 ~ [ab2,gb3] ~@3 e5 ~, e6 ~@12 b4@2 ~", // Dbsus4 Cm7b5 D Ab7
  Y: "d5@2 [ab2,gb3,a4] ~ bb4@2 ~ db5@2 ab4 ~ db5@2 bb4@2 [ab2,eb3,f4] ~ eb4 ~ [db4,eb4]@2 ~@2 [c2,g2]@6 f4@2 ~, ~@21 c4@8 ~@3", // D Fm7 Dbsus2 C5
  Z: "[[c3,f3,bb3] eb4 g4@2 bb4 ~ d5@2 [d3,g3,ab3,c4] ~ f5@2 d5 ~ eb5@2 [f3,eb4,c5]@2 d5@2 ~ eb5 f5@2 ~ [eb3,g3,a3,d4,g5] bb5@3 ~@4 [f3,bb3,eb4]@4 d6 ~ bb5 ~@2 [eb3,a3,d4,g5] ~ f5@2 c6@2 a5 ~ [eb3,a3,d4,g5] ~ f5@2 b5@2 a5 ~ [a3,gb4] [d4,gb5] ~ e5@2 ~ gb5@3 [ab3,db4,f4] ~ gb5@2 ab5@2 eb5@2 [gb3,b3,e4,gb5] ~@5 db5@2 a4@2 gb4 ~@2 b4@2 ab4@2 b4@2 e5@2, d4@2 ~@14 b3 ~@14 c6@8 ~@24 bb5@2 ~@2 c4@2 ~@27]/3", // Fsus4 Csus2 F7 Ebmaj7 Ebsus2 Ebmaj7 D Db …
  AA: "~@4 ab3 e3 ~@3 e5 ab4 ab5@2 [e3,ab3] ~ b4@3 ~ ab4@2 [e3,ab3] ~ g4@2 ~ eb5 [ab4,ab5]@3 [f2,c3] ~, ~@2 [ab4,ab5]@7 ~@4 e5@2 ~@10 c5@2 ~@5", // E Ab F5 Ab
  AB: "[gb4,gb5]@3 ~ g5@2 ~ [ab3,d4] ~@4 [g3,bb3,c4,bb4,f5]@9 [g3,bb3,c4,f4,f5]@3 ~ d6@2 ~ [gb3,c4,f5,db6] d6 ~@2, ~@4 g4 ~@2 g4@2 ~@15 bb5@2 ~@2 f6@2 ~@2", // Gb Abdim Gm7 Gbmaj7
  AC: "[gb3,c4,ab5,eb6,ab6]@4 f3@2 ~ d6 ~@2 [f3,b3,eb4,b5,b6]@3 ~ [c6,g6,c7]@3 ~@7 g6@2 ~ g6@5, ~@6 [b3,eb4,g5,db6,g6]@3 ~@5 [eb3,g3,a3,d4]@9 [eb3,g3,a3,d4]@9, ~@17 c6@2 c6@2 c6@2 c6@3 c6@6, ~@9 [g6,c7]!3 c7@4", // Ab7 Fm7b5 C5 Baug Ebmaj7 C5
  AD: "[~@2 [gb3,c4,eb6,bb6,eb7]@9 [gb3,c4,d6,a6,d7]@8 [a3,eb4,c6,gb6,c7]@8 ~ [ab3,d4,g4,bb5,gb6,bb6]@8 [g3,bb3,c4,f4,d6,g6,bb6,d7] ~@5 [g3,bb3,c4,bb5]@6 [f3,ab3,c4,d4,ab5,eb6,ab6]@8 ~ d5 ~@4 [b3,eb4,a5,d6]@2, ~@41 [f4,bb6]@6 ~@9 [f3,b3,eb4,c5,g5,c6]@5 f3@3, ~@62 d5 ~]/2", // Cm7b5 D7 Adim Gm Gm7 C7 Fm7 B7 …
  AE: "[~@2 [eb3,g3,bb3,d4,eb5,bb5,eb6]@9 [eb3,g3,bb3,d4,f5,g5,c6]@8 [f3,ab3,c4,d4,d5,ab5,d6]@7 ~@2 [c5,ab5,c6]@2 [f3,b3,eb4,b4,b5]@6 [eb3,g3,a3,d4,c5,f5,g5,c6]@6 ~ [g3,a3]@5 [eb3,g3,a3,d4,g4,c5,f5]@6 ~@3 eb5@4 [bb3,eb4,bb4,eb5,bb5]@3, ~@26 f3@4 ~@12 [eb3,d4,g4,c5]@6 ~@7 [f3,bb3,eb4,bb4,g5]@6 f3 ~@2, ~@27 [b3,eb4]@3 ~@34]/2", // Ebmaj7 Dm7b5 Fm Fm7b5 Dm7 Gsus2 Dm7 Eb5 …
  AF: "[~@2 [a4,d5]@4 [ab3,c4,db4,f4,ab4,db5,ab5]@7 ~@2 [bb5,eb6]@2 [ab5,eb6]@5 ~ [b4,gb5]@2 ~ b4@4 ~ b4@3 [b4,db5]@5 [g4,c5,eb5,g5]@9 ~@4 bb4@2 ~ c5 ~ eb5 ~ f5@2 ~@7 [g3,bb3,c4]@4 c6 ~@3 [d2,ab2]@6 [ab3,c4,d4]@7 ~@2 eb6 b5 ~@2 a5@2 ~ db6 ~@6 b5 ~@2 d6 ~@2 c6 b5 ~@2 ab5 g5 ~ gb5 f5 ~@2 db5 ~@4 [c2,g2]@6 ~@2 [f3,bb3,eb4]@4 g4@2 b4@2 ~ d5@2 eb5 ~ g5@2 b5 ~ d6@2 eb6 ~@2 f4@4 ~ db5@2 ~ eb5 f5@2 ~ bb5 ~ db6 ~ [ab3,c4,d4] ~ g4@2 ab4 ~ c5@2 [ab3,c4,d4] ~ f4@2 ~@2 f5@2 ~ [f3,eb4] ~, ~ a5@4 ~@8 [ab3,c4,db4,f4]@9 [g3,db4]@8 g3@9 eb2@2 ~@7 [g3,bb3,c4]@20 ~@21 [f3,b3,eb4]@18 ~@37 [g3,b3,c4]@10 ~@2 [gb3,c4]@14 ~@20 b3@2, ~@25 db5@5 [b3,db4]@2 ~@7 ab1 ~@23 c6@9 ~@22 d6@2 ~@11 c6@2 eb6@2 ~@81, ~@31 e5@8 ~@12 f4@2 ~@8 bb5@12 ~@24 bb5@2 ~@11 d6@2 ~@2 a5@2 ~@4 eb5@2 ~@2 bb4@8 ~ [g4,bb4,d5,f5]@7 ~@46 ab4@2 ~@4, ~@65 [f5,eb6]@8 ~ [g5,c6,f6]@9 ~@30 bb5@2 ~@6 d5@2 c5@2 ~@36 bb4@2 ~@29]/6", // D5 Dbmaj7 Eb5 Ab5 B5 Bsus2 Cm C7 …
  AG: "f4@2 ab4@2 f5@2 [f3,b3,eb4]@2 f4@3 ab4 f5@2 ~ [eb3,a3,d4] ~ g4@2 f5 ~ [eb3,a3,d4] ~ g4@2 f5@2 eb4 [f3,bb3] g4@2 ~", // Fm7b5 D Bb5
  AH: "[~ [eb3,a3] ~@2 g4@2 eb5@2 [ab3,c4,d4] ~ g4@2 d5@2 [f3,b3,eb4]@2 ~ g4 c5@3 [eb3,a3,d4] g4@2 ~ b4@2 [c2,g2] ~ g4 ~ c5@2 [f3,bb3,eb4] ~ g4@2 ~@3 [c2,g2] ~ g4 c5@3 [ab3,c4,db4,f4] ~ db5@3 ~ [ab3,c4,db4,f4,c5]@4 eb5@2 ~ [ab3,c4,db4]@9 ~ [g3,db4] ~@7 bb4@3 ~ g4@2 ~ f4@2 ~ g4 ~ g4@2 ~@3 bb3 g4, f5@2 ~@35 c5@5 ~@10 b4@2 ~@21 db4@4 ~@9 f4@2 ~ f4@2 f4@2 ~, ~ d4@2 ~@56 [f4,c5]@17 g3@4 [g3,db4]@2 ~@2 [g3,bb3,c4]@8 g4@2 [g3,c4]@2]/3", // Ebdim Dm7b5 Fm7b5 D C5 Ebsus2 C5 Dbmaj7 …
  AI: "[f4@2 g4 ~@2 [g3,bb3,c4]@8 [g3,bb3,c4] ~ ab4@3 ~ a4@2 ~@2 [f3,bb3,eb4,ab4]@8 ~ [ab3,d4,g4]@5 ~ [eb3,g3,c4,f4,bb4]@13 ~@2 d5@4 ~@3 [gb3,c4,f4,bb4] ~@5 [f3,b3,f4,bb4,eb5]@6 [eb3,a3,d4,g4,c5]@13 eb5@2 f5@3 ~ [a3,d4,eb4,g4,c5,eb5,g5]@8 [a3,eb4,ab4,b4,db5,gb5]@8 [ab3,d4,g4,c5]@17 ~ [eb2,bb2] ~@8 [gb3,b3,e4] ~@18 [eb5,eb6]@4 bb5 ~ [eb2,bb2] ~@7 [ab3,db4,gb4] ~@20 bb5@2 ab5 ~, ~@3 f4@11 ~@111 bb5@9 ~@6 [gb3,b3,e4]@18 ~@15 [gb3,b3,e4]@17 ~@2, ~@4 g4@2 ~@17 c5@14 ~@15 db5@2 ~@3 f5@15 ~@53 [eb5,eb6]@27 ~@7 eb5@16 ~@2 db6@8 ~ db6@4 ~@2, ~@148 bb5@9 ~@2 eb6@22 eb6@9 ~@2]/6", // C7 Fm7 G Cm7 Gbmaj7 Ebsus2 Am7b5 Abm7 …
  AJ: "[eb2,bb2] ~@2 eb6@2 db6@2 ab5 ~ gb5@2 [gb3,b3,e4] ~ ab5@2 ~ eb5 ~ db5@2 [gb3,gb5]@2 eb5 ~ bb4 ~@3 [gb3,b3]@2 ~@2, bb5@2 ~@9 bb5@2 ~@7 [b3,e4] ~@5 d5@6, ~@28 e4 ~@3", // Eb5 Esus2 Gb B5 E5
  AK: "g4@2 c5@2 ~ [eb2,bb2] ~ f5 ~ g5@2 c6@2 f6@2 [g3,c4,f4] ~@3 [a3,d4,g4]@7 gb6 ~@2 [d4,g4] gb6@2, ~@5 d5@2 ~@21 a6@2 a6 ~, ~@29 a3@2 ~", // Eb5 Csus4 Dsus4 G5
  AL: "e6@2 d6 ~ [eb2,a6] ~@2 b6@2 a6@2 d6 [g3,c4,f4] a6@2 d7@2 a6@2 ~ [ab3,db4,gb4] db7 ~@3 b6@2 ~ [b3,e4,a6] ~ bb6@2, ~@23 db7@2 ~@7, ~@12 c7 ~ gb3 ~", // Ebdim Csus4 Dbsus4 Esus4
  AM: "[~ ab6@2 ~@2 [eb2,bb2] a6@2 db7 ~ e7@2 [eb2,bb2] ~ a7@2 ~ eb7 ~ db7@2 a6 [db2,ab2] bb6@2 eb7@2 db7@2 ab6 [gb3,e4] bb6@2 eb7@2 db7@2 ab6 ~@2 f7@2 d7@2 g6 ~ g6 [g3,bb3,c4,f4] g6@2 ~@2 g6 f6 ~ [ab3,db4,gb4] db6 [b5,c6] ~ db6 e6 ~ e6@2, gb6@2 ~@2 bb6@2 b6 ~@7 a6 ~ e7@2 ~@12 b3@2 ~@7 [eb2,bb2,c7]@4 ~@3 c7@3 ~ c7@3 ~@11, ~@51 a6@2 ~@2 eb6@2 ~@4 gb6@3]/2", // Eb5 Db5 Gb7 Gm7 Dbsus4 Cmaj7 Cm7
  AN: "[~@6 d5@2 gb5 [eb2,bb2] ~@2 [bb2,gb5,ab5] ~@5 [eb2,bb2,gb5,ab5] ~@5 bb2@10 ~@20 [c7,ab7,bb7]@64 ~@10, [gb3,b3,e4,db6]@5 gb5@3 ~@16 [gb5,ab5,bb5]@14 gb4@5 gb5@5 gb6@64 ~@16, ~ b5@8 ~@26 bb2@5 bb4@5 bb5@6 db7@64 ~@13, ~@2 bb5@6 ~@4 bb5@2 ~@4 bb5@2 ~@4 eb2 ~@9 eb2@5 ab4@5 ab5@5 ab6@64 ~@15, ~@4 ab5@5 ~@15 c5@12 [gb3,c4]@5 c5@5 c6@5 c7 gb7@64 ~@12]/4", // Eb5 Ebm Fm Gbsus4 Gb Gbdim
})).s("gm_piano").gain(0.56).pan(0.6)

// drums · kick
const kick = s("bd").struct(`<
  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 I AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR AS R AB
  AT AU AV AW AX AY AZ BA BB BC BD BE BF BG BH BI BJ BK BL BM BN BO BP BQ BR BS BT BU BV BW U BX AF BY ~@3
>`.pickRestart({
  A: "x ~@8 x ~@6 x ~@15", B: "~@2 x ~@8 x ~@20", C: "~@13 x ~@18", D: "~@7 x ~@6 x ~@8 x ~@7 x", E: "~@9 x ~@6 x ~@15",
  F: "~ x ~@9 x ~@6 x ~@8 x ~@4", G: "~@3 x ~@7 x!2 ~@7 x ~@7 x!2 ~@2", H: "~@4 x ~@9 x ~@6 x ~@8 x!2",
  I: "~@6 x ~@16 x ~@8", J: "~ x ~@6 x ~@7 x ~@8 x ~@6", K: "~@5 x ~@8 x ~@3 x!2 ~@7 x ~@4",
  L: "~@3 x!2 ~@6 x ~@9 x ~@6 x ~@3", M: "~@5 x ~@7 x ~@9 x ~@6 x ~", N: "~@15 x ~@9 x ~@6",
  O: "x ~@8 x ~@7 x ~@7 x!2 ~@5", P: "~@9 x ~@4 x ~", Q: "~@3 x ~@8 x!2 ~@6 x ~@8 x ~@2",
  R: "~@5 x ~@9 x ~@6 x ~@7 x ~", S: "~@3 x ~@7 x ~@3 x ~@8 x ~@7", T: "~ x ~@7 x ~@8 x ~@6 x ~@6",
  U: "~@3 x ~@6 x ~@8 x ~@7 x ~@4", V: "~@5 x ~@6 x ~@7 x ~ x ~@6 x ~@2", W: "~@7 x ~@6 x ~@7 x ~@8 x", X: "~ x ~@2",
  Y: "~@10 x ~@16 x ~@4", Z: "~@2 x ~@9 x ~@6 x ~@7 x ~ x ~@2", AA: "~@21 x ~@7 x!2 ~", AB: "x ~@6 x ~@9 x ~@6 x ~@7",
  AC: "~ x ~@7 x ~@9 x ~@6 x ~@5", AD: "~@4 x ~@6 x ~@9 x ~@6 x ~@3", AE: "~@5 x ~@7 x ~@7 x ~@8 x ~",
  AF: "~@7 x ~@6 x ~@9 x ~@6 x", AG: "~@8 x!2 ~@6 x ~@8 x!2 ~@5", AH: "~ x ~@7 x ~ x ~@6 x ~@13",
  AI: "~@3 x ~@8 x ~@7 x ~@7 x ~@3", AJ: "~@5 x ~@8 x ~@6 x ~@9 x", AK: "~@6 x ~@8 x ~@7 x ~@8",
  AL: "~@8 x ~@9 x ~@6 x ~@6", AM: "~@10 x ~@8 x ~@7 x ~@4", AN: "~@4 x ~@7 x ~@8 x ~@6 x ~@3",
  AO: "~@6 x ~@6 x ~@8 x!2 ~@6 x ~", AP: "~@7 x!2 ~@6 x ~@12 x ~@3", AQ: "~@4 x ~@3 x ~ x ~@6 x ~@11 x ~@2",
  AR: "~@6 x ~@3 x!2 ~@7 x ~@7 x!2 ~@3", AS: "~@3 x ~@9 x ~@6 x ~@8 x!2 ~", AT: "~ x ~@7 x ~@7 x!2 ~@7 x ~@5",
  AU: "~@2 x!2 ~@6 x ~@9 x ~@6 x ~@4", AV: "~@4 x!2 ~@6 x ~@8 x ~@3 x ~@6", AW: "~ x ~@3 x ~ x ~@6 x ~@9 x ~@6 x",
  AX: "~@8 x ~@7 x ~@7 x!2 ~@6", AY: "~ x ~@7 x!2 ~@6 x ~@9 x ~@4", AZ: "~@2 x ~@9 x ~@6 x ~@12",
  BA: "~@4 x ~@9 x ~@6 x ~@9 x", BB: "~@6 x ~@7 x!2 ~@7 x ~@8", BC: "x ~@6 x ~@8 x!2 ~@6 x ~@7",
  BD: "~@2 x ~@6 x ~@8 x!2 ~@6 x ~@5", BE: "~@11 x ~@9 x ~@6 x ~@3", BF: "~@4 x ~@8 x ~@11 x ~@6",
  BG: "~@2 x ~@3 x!2 ~@7 x ~@7 x!2 ~@6 x", BH: "~@9 x ~@6 x ~@8 x ~@6", BI: "~ x ~@9 x ~@6 x ~@13",
  BJ: "~@3 x ~@9 x ~@6 x ~@8 x ~@2", BK: "~@5 x ~@7 x!2 ~@7 x ~@7 x!2", BL: "~@6 x ~@9 x ~@6 x ~@8",
  BM: "x!2 ~@6 x ~@8 x ~@7 x ~@6", BN: "~@3 x ~@6 x ~@7 x ~@4 x ~@7 x", BO: "~@3 x ~@8 x ~@8 x ~@7 x ~@2",
  BP: "~@6 x ~@6 x ~@9 x ~@6 x ~", BQ: "~@7 x ~@7 x ~@9 x ~@6", BR: "x ~@7 x ~ x ~@6 x ~@9 x ~@4",
  BS: "~@2 x ~@7 x ~@8 x ~@8 x ~@3", BT: "~@5 x ~@6 x ~@7 x ~@11", BU: "~@14 x ~@7 x ~@8 x",
  BV: "~@7 x ~@12 x ~@7 x ~@3", BW: "x ~ x ~@6 x ~@7 x!2 ~@7 x ~@5", BX: "~@5 x ~@6 x ~@16 x ~@2",
  BY: "~@7 x ~ x ~@7 x ~@6 x ~@7",
})).gain(0.16)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@4 A ~@8 B ~@2 C ~@6 D ~ E ~@3 F ~@4 G ~@3 H ~@7 I ~@16 J ~@10 E ~@4 K ~@6
>`.pickRestart({
  A: "~@20 x!2 ~@10", B: "~@2 x!2 ~@28", C: "~@11 x ~@20", D: "~@9 x ~@6", E: "~@3 x ~@12", F: "~@7 x",
  G: "~@3 x ~ x ~@26", H: "~@5 x ~@10", I: "~@26 x!2 ~@4", J: "~@22 x!2 ~@8", K: "~@16 x!2 ~@14",
})).gain(0.11)

// drums · low tom
const low_tom = s("lt").struct("<~@34 [~@3 x ~@12] ~@23 [~@7 x ~@8] ~@27>").gain(0.16)

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

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@4 A ~@3 B ~@3 C ~@3 D ~@3 E ~@2 A ~ F ~@3 G ~@3 H ~@3 I ~ E ~@2 J ~@3 K ~@3 L ~@3 M ~ I N O ~@4 P ~@3 Q ~@3 R ~ M
  ~@4 S ~@7
>`.pickRestart({
  A: "~ x ~@30", B: "~ x ~@2", C: "~@15 x ~@16", D: "~@11 x ~@4", E: "~@29 x ~@2", F: "~ x ~@6", G: "~@11 x ~@20",
  H: "~@9 x ~@6", I: "~@25 x ~@6", J: "x", K: "~@7 x ~@24", L: "~@7 x ~@8", M: "~@21 x ~@10", N: "~@27 x ~@4",
  O: "~@7 x", P: "~@3 x ~@28", Q: "~@5 x ~@10", R: "~@17 x ~@14", S: "~@15 x",
})).gain(0.27)

// … 91 more lines

More by Tyner Mccoy