Strudelify

I Get a Kick Out of You

Powell Bud

KeyE♭ majorTempo120 bpm
0:00/0:00
// I Get a Kick Out of You — Powell Bud
// 120 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 53 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@2 C D@2 E@2 F G@4 H I@2 J@3 K@2 L@2 M N@2 O@3 P@2 Q@3 R@2 S@3 T@2 U@2 V W@4 X Y@2 ~@2
>`.pickRestart({
  A: "~@3 ab1@4 ~ g1@5 bb1@5 db2@5 b1@5 c2@4",
  B: "[~ e2@5 g2 ~@2 g2@2 gb2@5 f2@2 ~ f2@2 c2@5 bb1@5 f1@5 bb1@5 d2@5 f2@4 ~ e2@5 eb2@5 g2@3]/2",
  C: "~@2 ab2@4 ~ gb2@5 g2@5 db2@3 c2@5 ~@2 e2@4 ~",
  D: "[f2@4 ~ eb2@5 d2@5 c2@5 bb1@5 d2@4 ~ f2@5 e2@4 ~ eb2@3 ~@2 eb2@5 ab2@4 ~ ab2@4 ~ g2@4]/2",
  E: "[~ g2@4 ~ c2@4 ~ e2@4 ~ f2@4 ~ g2@4 ~ ab2@4 ~ a2@4 ~ bb2@4 ~ bb2@5 b2@5 e2@5 g2@5 g1@3]/2",
  F: "~@2 db2@4 ~ b1@5 c2@4 ~ e2@5 g2@4 ~ gb2@5",
  G: "[f2@4 ~ eb2@5 d2@5 ab1@5 bb1@4 ~ d2@4 ~ f2@5 e2@4 ~ g2@4 ~ g1@4 ~ bb1@5 db2@5 c2 ~@2 c2@2 e2@5 g2@5 gb2@5 f2@2 ~ eb2@6 ~ d2@4 ~ c2@5 ~@3 bb1 ~@6 bb1@11 ~@2 db2@5, ~@83 f2@2 ~@43]/4",
  H: "~@2 d2@8 eb2@2 ~@3 eb2@2 db2@5 c2@5 e2@5",
  I: "[f2@4 ~ c2@5 f2@4 ~ b1@5 bb1@5 d2@5 f2@5 e2@5 eb2@5 g2@4 ~ ab2@5 gb2@5 g2@4]/2",
  J: "[~ db2@5 g1@5 c2@5 f1@5 ab1@5 c2@5 a1@4 ~ bb1@5 ab1@5 g1@5 f1@5 g1@5 ab1@5 bb1@4 ~ b1@4 ~ c2@4 ~ db2@4 ~ eb2@4 ~ e2@5]/3",
  K: "[f2@4 ~ eb2@4 ~ c2@4 ~ ab1@4 ~ bb1@4 ~ d2@4 ~ f2@4 ~ gb2@4 ~ g2@5 g1@4 ~ bb1@5 db2@5 c2@4]/2",
  L: "[~ e2@4 ~ g2@4 ~ gb2@4 ~ f2@4 ~ eb2@4 ~ c2@4 ~ b1@3 ~@5 bb1 ~@6 bb1@10 ~@3 db2@5]/2",
  M: "~@2 d2@7 ~ eb2@6 ~ eb2@5 c2@4 ~ b1@5",
  N: "[bb1@4 ~ bb2@4 ~ a2@5 bb1@5 ab2@5 bb1@5 g2@4 ~ gb2@5 f2@5 bb1@5 db2@5 f2@5 eb2@4]/2",
  O: "[~ g2@4 ~ bb2@5 c3@5 db3 ~@2 db3 ~ c3@5 b2@4 ~ a2@5 bb2@5 e2@5 eb2@4 ~ gb2@5 g2@5 g1@5 db2@5 b1@5 c2@5 e2@5 g2@5 gb2@5, ~@23 d2 ~@24]/3",
  P: "[f2@4 ~ ab2@4 ~ c3@4 ~ eb3@5 f3@2 ~ f3@2 e3@5 d3@5 c3@5 db3@4 ~ b2@4 ~ ab2@5 db2@4 ~ c2@4]/2",
  Q: "[~ e2@5 g2@5 gb2@5 f2@5 f1@5 eb2@5 c2@5 d2@4 ~ c2@5 a1@5 f1@5 b1@4 ~ eb2@5 gb2@5 b1@5 bb1@5 f2@5 c2@5 gb2@5]/3",
  R: "[f2@5 f1@5 eb2@4 ~ d2@5 bb1@5 d2@5 f2@5 e2@5 eb2@5 g2@5 ab2@5 gb2@5 g2@4]/2",
  S: "[~ db2@4 ~ c2@5 e2@5 f2@7 ~ f2@2 c2@4 ~ c2@5 bb1@4 ~ bb1@5 d2@4 ~ d2@5 g2@5 db2@5 g1@5 b1@5 c2@4 ~ e2@5 g2@4 ~ gb2@5]/3",
  T: "[f2@7 ~ f2@2 c2@7 ~ c2@2 bb1@9 ~ ab1@10 ~@3 g1@7 bb1@4 ~ b1@5 c2@4]/2",
  U: "[~ d2@5 eb2@4 ~ e2@3 ~@2 f2@9 ~ c2@10 ~@3 bb1 ~@6 bb1@10 gb2@8]/2", V: "~@2 db2@10 ~@3 b1@2 ~@5 b1@9 ~",
  W: "[f2@10 c2@11 ~@2 bb1 ~@6 bb1@9 ~ eb2@8 ~@2 eb2@8 ~@2 db2@7 ~ ab2 ~ ab2@5 db2@3 ~@2 eb2@8 bb2@7 eb2@2 ~@3 db2@7 ~ ab2 ~ ab2@5 db2@3 ~@2 eb2@8]/4",
  X: "bb2@7 eb2@2 ~@3 db2@7 ~ ab2 ~ ab2@4 ~ db2@2 ~@3", Y: "[eb2@2 ~@6 eb2@2 ~@5 eb2@42 ~@7]/2",
})).s("gm_acoustic_bass").gain(0.44).pan(0.3)

// chords · piano · "A.PIANO 1"
const piano = note("<A@3 B C@3 D@2 E F@2 G H I@3 J K L@3 M N@3 O@3 P@5 Q@3 R@2 S@3 T@2 U@3 V W X@4>".pickRestart({
  A: "[~@4 d6@2 ~ [g3,c4,db4,f4,eb5,bb5,eb6]@6 ~ [g3,c4,db4,f4,c6]@2 ~@8 c6@3 ~@2 [e3,bb3,eb4,eb5,bb5,eb6]@5 c6@2 ~ [e3,bb3,eb4,eb5,bb5,eb6]@5 ~ [eb4,eb5,bb5,eb6]@4 ~@2 c6@2 eb5 eb6@2 ~@4 [ab3,c4,eb4,g4,bb5,eb6]@5 [ab3,c4,eb4,g4,c6]@3 ~@2 [ab3,d4,g4,eb5,bb5,eb6]@6 c6@3 [ab3,d4,g4,eb5,bb5,eb6]@5 ~@2 [eb5,bb5,eb6]@4 ~ c6@2 ~ [g3,bb3,c4,f4,eb5,bb5,eb6]@4, ~@3 c6@3 ~@13 [g3,c4,db4,f4,eb5,bb5,eb6]@9 ~@14 c6@2 ~@13 c6@2 ~@24 c6@2 ~@11, ~@43 [e3,bb3]@2 ~@6 [ab3,c4,eb4,g4,bb5]@2 ~@5 eb5@3 ~@22 [ab3,d4,g4]@4 ~@9]/3", // Gm7b5 Csus4 Eb Eb5 Abmaj7 Ebmaj7 Eb5 Cm7 …
  B: "~@7 c6@3 ~ [g3,db4,f4] ~ [a5,eb6]@3 ab5 ~ gb5 ~@2 eb4@2 db5@3 ab4 ~ bb4@3 ~, ~ c6@2 [bb5,eb6]@8 ~@10 eb5 ~@10, ~@2 [gb3,bb3,c4,f4,eb5]@8 ~@11 [e3,bb3]@4 ~@7", // Gm7b5 Adim Eb5 Cm7b5 Edim
  C: "[~ [g3,ab3] ~@2 c4@7 [g3,ab3,d4]@2 ~@3 [g3,ab3] ~@4 [ab3,d4,f4]@13 g4@2 ab4@3 ~@5 [g3,c4] ~@6 gb3@9 ~ [g3,db4]@7 ~ [e3,bb3]@13 ~@2 [f3,ab3,c4]@7 [e3,d4]@2 ~@3, ~@3 [g3,ab3]@7 ~@6 eb4@3 ~@20 bb4@43 ~@14, ~@39 f4@32 ~@25, ~@50 c4@9 ~@32 bb3 ~@4]/3", // Abmaj7 G Abmaj7 Ddim C5 Gdim Edim Fm …
  D: "[[c4,eb4]@2 ~@3 [d3,c4,f4]@13 g4@2 ~ ab4@2 ~@11 [gb3,c4] ~@3 ab4 ~@4 gb4 ~@4 [g3,db4] ~@5 [e3,bb3]@5 f4@4 [g3,ab3,c4], eb3 ~@3 ab3@14 ~@7 [f4,bb4]@12 ~@8 g4@11 ~@8]/2", // Cm Dm7 Gbdim Gdim Edim Abmaj7 Bb5
  E: "~ ab4@2 ~ ab4 ~@5 [g3,ab3,c4]@2 ~@4 g4@3 [ab3,d4] ~ f4@3 f4 ~@5 [ab3,d4]@2", // Abmaj7 Abdim
  F: "[~@3 f4@3 ~ gb4 ~@4 [f3,b3] ~@6 f3@2 ~@8 [e3,bb3]@8 [e3,bb3,db4]@12 ~@3 [c4,f4]@7 [g3,ab3,g4]@2 ~@3, ~@2 e4@2 ~@3 g4@31 ~@26, ~@19 bb3 ~@31 [g3,ab3]@7 ~ c4 ~@4]/2", // Fdim Edim Bbdim F5 Abmaj7
  G: "[g3,ab3,c4,ab4]@2 ~@6 [ab3,d4,gb4,bb4] ~@18 [f3,b3,eb4,db5,ab5,db6] ~@4", // Abmaj7 Daug Fm7b5
  H: "~@2 [gb3,c4,d5,a5,d6] ~@7 [g3,db4,f4,eb5,bb5,eb6]@22, ~ e4 ~@14", // D7 Gm7b5
  I: "[~@4 [ab3,c4,f4,g4,c5,c6]@7 [ab3,e4,d5,d6] ~@4 [c4,eb4,g4,eb6]@2 ~@5 c6@8 [ab3,gb4] ~@4 [ab3,d4,gb4,ab5,eb6,ab6]@4 ~ [g3,bb3,d4,f4,bb5,bb6]@12 ~ [gb3,c4] c5 ~@5 eb5@7 ~ [e3,eb4,ab4,db5,gb5]@14 ~ [ab3,c4,f4,g4,c5,ab5,c6]@7 [ab3,e4,d5,d6] ~@4, ~@3 ab5@7 ~ [c4,g4]@2 ~@3 [ab3,eb5] ~@4 [ab3,d4,g4,f5,b5,f6]@10 [g5,d6,g6]@9 ~@20 [db4,f4,bb4,ab5]@8 bb3@15 ~@8 [c4,g4]@2 ~@3, ~@31 d4@5 ~@18 [bb3,f4,f5,bb5]@2 ~@3 g3@9 ~@28]/3", // Fm E7 Cm Ab7 Gm7 Gbdim Dbm Fm …
  J: "[ab3,eb4,g4,eb5,eb6]@2 ~@3 [ab3,f5,f6]@7 [g3,db4,gb4,g5,g6]@7 [c4,f4,ab5,ab6] ~@4 [f3,b3,e4,bb5,bb6]@7 ~, c4 ~@3 [d4,g4]@7 ~@8 gb3@2 ~@11", // Abmaj7 Db Gb Fm G5
  K: "[f3,b3,eb4,ab5,eb6,ab6]@6 ~ [f3,b3,eb4,g5,g6]@2 ~@3 db6 ~ d6@12 g5@6, ~@12 [e3,bb3,eb4,g5,g6]@15 ~@5", // Fm7b5 Ebaug Eb
  L: "[~@9 [ab3,c4,eb4,g4] ~@6 g5@4 ~@4 [ab3,d4,g4] ~@5 [ab3,d4,gb4] ~@8 gb5 ~@3 [f3,b3,e4] ~@6 [b3,eb4]@2 ~@8 [e3,bb3,d4] ~@7 [e3,bb3,db4] ~@20 c4 [eb3,g3,ab3] ~@3 g5@2, ~ ab5@15 ~@4 f5@19 ~ g5@50 f5@4 ~@2, ~@50 f3 ~@38 c5@2 ~@5]/3", // Abmaj7 G Abm7b5 E B Em7b5 Bbdim Abmaj7
  M: "ab5@3 ~@5 [ab3,d4,bb5]@2 ~@17 [f3,b3,eb4,db5,ab5,db6] ~@4, ~@8 [gb4,d5,e5] ~@23", // Bb7 Fm7b5 D
  N: "[~@3 [gb3,d5,a5,d6] ~@7 [g3,f4,eb5,bb5,eb6]@25 ~ eb6@2 eb5@2 ~@3 f5@2 ~@3 g5@2 ~ ab6@2 ab5@2 ~ bb6@2 bb5@2 ~@3 c6@2 ~ db7@2 db6@2 ~ c7@2 c6@2 ~ a6@2 a5 ~@4 bb5 ~@2 ab6@2 ab5@2 ~ g6@2 g5@2, ~@3 [c4,e4]@2 ~@5 db4@25 ~@6 f4@6 ~ g6@3 ~@5 bb4@5 c5@6 ~@5 c5@6 ~@5 bb6@2 ~@6 g4@5, ~@43 f6@3 g4@5 ~ ab4@5 ~@6 c7@2 ~ db5@5 ~@6 a4@5 bb4@5 ab4@5 ~@4]/3", // D Eb C
  O: "[~@2 f6@2 f5@2 eb6@2 eb5@2 ~ db6@2 db5@2 ~@3 c5@2 ~@3 db5@2 ~@3 c5@2 ~ bb5@2 bb4@2 ~ ab5@2 ab4@2 ~ g5@2 g4@2 ~ f5@2 f4@2 ~ eb5@2 eb4@2 ~@2 db4@9 ~@6 bb4@2 ~ d4@4 ~@7 [d5,e5,ab5,c6]@8 c3 ~, ~ f4@5 eb4@4 db4@5 ~ c4@5 ~ db6@3 ~@2 c6@3 ~@16 f3@5 ~@5 db5@18 ~@22, ~@17 c6@3 db4@5 ~ c4@5 bb3@5 ab3@5 g3@6 ~@3 eb3@24 ~@5 [c3,bb3]@16 ~, ~@33 [b3,db4]@4 ~@11, ~@70 f4@4 ~ [e4,ab4,c5]@20 ~]/3", // Caug C7 Bsus2 Eaug
  P: "[~@3 [ab3,c4]@6 ~ f3 [g3,bb3,d4]@3 ~@2 [bb3,c4,e4]@3 ~@17 ab4@3 ~@5 [gb3,bb3,b3] ~@11 ab4@3 ~@5 [e3,bb3] ~@6 e3@7 ~@3 eb6 g6@2 [c6,eb6] ~ bb5 ~ bb5 ~ f5 g5@2 eb5 ~ [bb4,b4] ~ bb4 ~ g4 [eb4,e4,f4] ~ eb4@2 c4 ~@9 f4@2 d4@3 ~@4 bb2 ~@10 b1@7 d4@3 [bb2,ab3]@7 [bb2,ab3]@9, f2@10 ~@5 f3@2 ~@3 c4@18 ~@3 [eb4,bb4]@18 d4@11 bb3@8 d4@15 ~@8 g4@2 ~@2 d4@8 ~@6 [b3,eb4]@7 ~@4 [eb4,ab4,b4,eb5]@10 ~ [g4,bb4,d5]@19, ~@21 [g3,bb3,d4,f4]@18 ~@12 [gb3,bb3,b3]@8 ~@19 [g3,bb3]@23 ~@59, ~@29 g4@10 ~@20 [g4,bb4]@20 eb3@24 ~@7 eb3@7 ~@6 b2@17 ~@20, ~@87 d6@2 ~@2 eb5 ~@4 d5@2 ~@62]/5", // Ab Gm C7 Bmaj7 Edim Cm Bmaj7 Bb7 …
  Q: "[~@4 [ab3,c4,eb4,g4,c5,f5,ab5,c6]@7 [c4,d4,g4]@2 ~@3 [c4,eb4,g4,eb5,eb6]@2 ~@5 c6@6 [g3,db4,gb4,g5,d6,g6]@6 [c4,f4,ab5,eb6,ab6] ~@5 d4@2 ~@8 [gb3,c4,f4,bb5,eb6,bb6]@3 ~@7 [b3,e4,bb5,eb6,bb6]@7 ~ [e3,bb3,eb4,db6,ab6,db7]@5 e3@2 [bb3,eb4,c6,gb6,ab6,c7]@2 ~@6 [ab3,c4,f4,g4,c5,ab5,c6]@7 [ab3,c4,e4,g4,d6]@2 ~@3, ~@11 [ab3,d5,d6] ~@4 ab3 ~@4 [ab3,c4,d4,g4,f5,b5,f6]@8 ~@6 gb3@2 ~@3 [g3,bb3,f4,bb5,bb6]@2 ~@17 f3@8 ~@24 [d5,a5] ~@4]/3", // Abmaj7 Csus2 Cm Gmaj7 Fm7 Cm7b5 Bmaj7 Bbm7b5 …
  R: "[[c4,eb4,g4,bb5,eb6]@2 ~@4 c6@6 ~ [g5,g6]@6 [ab3,d4,g4,ab5,eb6,ab6]@3 ~@2 [g3,bb3,d4,f4,bb5,bb6]@4 [g3,bb3,d4,f4,bb5,bb6]@3 [g3,bb3,d4,f4,bb5,bb6]@3 ~ bb3@3 [g3,bb3,d4,f4]@3 [g3,bb3,d4,f4,d6,d7]@2 ~@2 [g3,bb3,c4,eb6,eb7]@13 [f6,f7] ~@4 [ab3,c4,eb4,g4,d6,d7], [ab3,eb5] ~@3 [ab3,d4,g4]@8 [ab3,d4,g4]@7 ~@15 [g3,d4,f4]@4 [c6,c7]@6 ~@20, ~@5 [f5,b5,f6]@8 d6@2 ~@20 [bb5,bb6]@9 ~@20]/2", // Cm7 G Abmaj7 Gm7 Cm7 F Abmaj7 Ab5 …
  S: "[~ [c4,eb4,g4]@8 ~ [c4,eb4,g4,d6,g6,bb6,d7]@3 ~@2 [ab3,c4,eb4,g4,c6,g6,c7]@3 ~@3 c6 ~ a6@5 ~ c7@5 gb3@2 [bb3,c4,f4,bb5,bb6]@2 ~@6 [f3,b3,e4,g6]@2 d6 ~@6 d6@5 ~ [e3,g5,d6,g6]@11 [e3,bb3,db4]@10 ~@4 [ab3,c4,f4,g4,f6]@7 [ab3,c4,f4,g4]@3 ~@2, [ab3,eb6,eb7]@9 ab3@5 ~@6 [ab3,d4,g4,ab6]@7 ~ [gb3,bb3,c4,f4]@7 ~@16 [f3,b3,eb4,g5,db6,g6]@7 [bb3,d4]@12 ~@26, ~@21 [d6,d7]@7 ~ c6 ~@14 [g5,a5,db6] ~@14 db6 ~@24 f5 ~@6 [g5,g6] ~@4]/3", // Cm Cm7 Abmaj7 Bbsus2 Em Em7 Bbdim Fm …
  T: "[[ab3,c4,f4,g4,ab5,ab6]@3 ~@5 [ab3,gb4,bb5,bb6] ~@19 [db4,gb5,db6,gb6]@7 [a3,db4,e4,ab4,ab5,ab6]@3 ~ [a3,db4,e4,ab4,a5,a6]@3 ~@6 [db4,eb4,gb6]@3 ~@13, ~@8 d4@2 ~@17 [a3,e4,ab4]@7 ~@13 [a3,ab4,b6]@2 ~@15, ~@48 b5 ~@15]/2", // Fm Ebm Gb5 Amaj7 Ebm7 Amaj7 E
  U: "[~@4 [ab3,c4,f4,g4,f5,c6,f6]@7 [c4,e4,g4,g6]@2 ~@3 [ab3,c4,eb4,g4,ab5,ab6]@3 ~@2 [ab3,d4,g4,bb6]@2 ~@6 bb5 ~ db6@3 ~@2 d6@3 ~@2 [g3,c4,db4,f4,eb5,bb5,eb6] ~@8 [g3,c4,db4,f4,eb5,bb5,eb6] ~@7 [eb5,bb5,eb6]@10 bb5 ~@2 eb6@2 ~@2 d6@2 ~@3 [g3,c4,db4,f4,eb5,bb5,eb6] ~@9 [g3,c4,db4,f4,eb5,bb5,eb6] ~@5, ~@11 [ab3,g5,db6] ~@9 [c4,bb5] ~@36 [f3,b3,eb4]@16 bb5@2 ~@20, ~@73 db6@2 ~@21]/3", // Fm C Abmaj7 Gm Gm7b5 Eb5 Gm7b5 Db …
  V: "~@2 [eb5,bb5,eb6]@10 bb5@2 db6 eb6@2 ~ bb5@2 d6@2 ~@2 [db4,eb5,bb5,eb6] [g3,c4] ~@6, ~ [f3,b3,eb4]@9 ~@2 f4 ~@3, ~@17 db6@2 ~@13", // Eb5 Eb7 C5 Fm7b5
  W: "~@2 [g3,c4,db4,f4,eb5,bb5] ~@7 [eb5,bb5,eb6]@11 bb5 ~ db6@3 ~ d6@3 ~@2, ~ eb6 ~@3 [f3,b3,eb4]@8 bb5 ~@2", // Gm7b5 Eb5 Fm7b5
  X: "[[c4,a5,c6] [g3,db4,f4] ~@6 [g3,c4,db4,f4,a5,c6,f6] ~@6 [g3,c4,db4,f4,a5,c6,f6]@55 ~ ab1@49 ~@8, f6 ~@34 eb2@24 ~@5]/4", // F Gm7b5 F
})).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 J T L R S U V L W S J T L X Y O Z AA X S J F AA AB S AC F G AD I AE ~@3
>`.pickRestart({
  A: "~@17 x ~@10 x ~@3", B: "~@4 x ~@20 x ~@6", C: "~@4 x ~@8 x ~@10 x ~@7", D: "~ x ~@10 x ~@7 x ~@9 x ~",
  E: "~@4 x ~@4 x!2 ~@3 x ~", F: "~@4 x ~@2 x", G: "~@2 x ~@4 x ~@4 x ~@3", H: "~@17 x ~@4 x ~ x ~@7",
  I: "x ~@4 x!2 ~@3 x ~@5", J: "x ~@3 x ~@4 x ~@4 x ~", K: "~ x!2 ~", L: "~ x ~@2 x ~ x ~",
  M: "~@2 x ~@3 x ~@4 x!2 ~@3", N: "x ~@4 x ~@10", O: "x ~@3 x ~@4 x!2 ~@3 x ~", P: "~@3 x ~@4 x ~@5 x ~",
  Q: "~@4 x ~@9 x ~@4 x ~@9 x ~@2", R: "~ x ~@4 x ~@5 x ~@3", S: "x ~@2 x ~ x ~@2", T: "~@2 x ~ x ~@2 x",
  U: "x ~ x ~@2 x ~ x", V: "~@4 x ~@3 x ~@4 x!2 ~", W: "~ x!2 ~@3 x ~@9", X: "~@2 x ~@3 x ~@4 x ~@4", Y: "x ~@2 x ~@4",
  Z: "~@3 x!2 ~@3 x ~@4 x!2 ~", AA: "~ x ~@4 x ~", AB: "~ x ~ x ~@2 x ~", AC: "~@4 x ~@4 x!2 ~@5",
  AD: "~@7 x ~@9 x ~@4 x ~ x ~@7", AE: "x ~@7 x ~@6 x ~@16",
})).gain(0.2)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@9 A ~@3 B ~@2 C ~ B ~@2 D ~ B ~@5 E ~@3 F G ~ C ~@2 E ~@2 H ~@2 I ~@3 J ~@3
>`.pickRestart({
  A: "~@3 x ~@11 x ~ x ~@14", B: "~@15 x", C: "~@5 x ~@10", D: "~@14 x ~@14 x ~@2", E: "~@13 x ~@18",
  F: "~@22 x ~@4 x ~@4", G: "~@3 x ~ x ~@7 x ~ x ~@16", H: "~@19 x ~@12", I: "~ x ~@30", J: "~@15 x ~@16",
})).gain(0.13)

// drums · low tom
const low_tom = s("lt").struct("<~@34 [~@17 x ~@14] ~@18>").gain(0.2)

// drums · hihat
const hihat = s("hh").struct(`<
  A B C D E A B C D E A B C D E A B C D E A B C D E A B C D E A B C D E A B C D E A B C D E A B C D F ~@3
>`.pickRestart({
  A: "~@3 x ~@4 x ~@4 x ~@4 x ~@4 x ~@4 x ~@3", B: "~ x ~@4 x ~@4 x ~@4 x ~@4 x ~@4 x ~@4 x",
  C: "~@4 x ~@4 x ~@4 x ~@4 x ~@4 x ~@4 x ~@2", D: "~@2 x ~@4 x ~@4 x ~@4 x ~@4 x ~@4 x ~@4",
  E: "x ~@4 x ~@4 x ~@4 x ~@4 x ~@4 x ~@4 x ~", F: "x ~@14 x ~@16",
})).gain(0.4)

// drums · mid tom
const mid_tom = s("mt").struct("<~@13 A ~@4 A ~@2 B ~ A ~@4 A ~@9 A ~@2 B ~ A ~@4 A ~@4>".pickRestart({
  A: "~@25 x ~@6", B: "~@9 x ~@22",
})).gain(0.33)

// drums · mid tom · soft notes
const mid_tom_soft = s("mt").struct("<~@9 A ~@11 B ~@7 C ~@9 D ~@13>".pickRestart({
  A: "~@13 x ~@18", B: "~@31 x", C: "~@15 x ~@16", D: "~@9 x ~@6",
})).gain(0.2)

// drums · crash
const crash = s("cr").struct("<~@3 A ~@2 B ~@2 C D E ~@9 B ~@7 F ~@4 F ~ G ~@2 F ~@2 H I ~@5 J ~@3>".pickRestart({
  A: "~@15 x", B: "~ x", C: "x ~@2 x ~@24 x ~@3", D: "~@29 x ~@2", E: "~ x ~@6", F: "x", G: "~@19 x ~@12", H: "~@3 x",
  I: "~@31 x", J: "x ~@7 x ~@6 x ~@16",
})).gain(0.27)

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

stack(bass, piano, kick, snare, snare_soft, low_tom, hihat, mid_tom, mid_tom_soft, crash, ride)

More by Powell Bud