Strudelify

Going Up the Country

Canned Heat

KeyB♭ majorTempo160 bpm
0:00/0:00
// Going Up the Country — Canned Heat
// 160 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 7 "Melody" vibraphone (copy of ch 5 synth choir)
// note: Full arrangement: all 114 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(160/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 · "Bass"
const bass = note(`<
  ~@14 A B@2 C@2 D A E F G A H A B@2 C@2 D A E F G A H A B@2 C@2 D A E F G A H A B@2 C@2 D A E F G A H A B@2 C@2 D A E F
  G A H A B@2 C@2 D A E F G A H I D A J@2 G A C@2 D A E F G K ~@13
>`.pickRestart({
  A: "bb1@6 ~@2 f1@3 bb1@2 ~@2 bb1@2 ~@3 f1@4, ~@6 g1@4 ~@7 g1@5 ~@2",
  B: "[bb1@6 ~@3 f1@3 bb1@2 ~ bb1@3 ~@6 bb1@6 ~@2 f1@3 bb1@2 ~@2 bb1@2 ~@3 f1@4, ~@6 g1@5 ~@9 g1@5 ~@5 g1@4 ~@7 g1@5 ~@2, ~@23 f1@5 ~@20]/2",
  C: "[bb1@6 ~@3 f1@3 bb1@2 ~ bb1@3 ~@6 eb2@4 ~@2 eb2 ~@2 eb2 ~@2 eb2@2 ~ eb2@7 ~@2, ~@6 g1@5 ~@9 g1@5 ~@23, ~@23 f1@5 ~@20]/2",
  D: "eb2@4 ~@2 eb2 ~@2 eb2 ~@2 eb2@3 ~ eb2@5 ~@3", E: "bb1@5 ~ d1@5 ~ eb1@5 ~ e1@3 f1@3",
  F: "f2@5 d2@4 c2@2 f2@2 ~@2 f2 ~ d2@4 c2@2 ~, ~@17 f2@2 ~@5", G: "eb2@6 c2@3 bb1@3 ~@2 eb2@2 ~ eb2@2 c2@4 ~",
  H: "bb1@3 ~ bb1@2 g1@3 f1@6 ~ f1@2 g1@3 f1@2 ~", I: "eb2@4 ~@2 eb2 ~@2 eb2 ~@2 eb2@2 ~ eb2@7 ~@2",
  J: "[bb1@6 ~@3 f1@3 bb1@2 ~ bb1@3 ~@6 f2@5 d2@4 c2@2 f2@2 ~@2 f2 ~ d2@4 c2@2 ~, ~@6 g1@5 ~@9 g1@5 ~@16 f2@2 ~@5, ~@23 f1@5 ~@20]/2",
  K: "bb1",
})).s("gm_acoustic_bass").gain(0.45)

// other · flute
const flute = note(`<
  ~@2 A B@7 C@2 D@2 ~@23 E@2 F@3 G H@3 I J K@2 ~@23 E@2 F@3 G H@3 I J K@2 ~@7 L@3 M@3 N O ~ A B@7 C@2 D@2
>`.pickRestart({
  A: "~@5 c5@3 ~@3 f5@3 ~@10, ~@8 d5@5 ~@11",
  B: "[~@3 c5@3 d5@5 c5@4 ~@3 g4@5 bb4@7 ~@6 d5@27 ~@2 c5@3 d5@3 c5@4 ~@3 f4@3 ~@3 bb4@15 ~@3 d5@5 c5@4 ~@3 g4@5 bb4@41 ~ c5@3 d5@4, ~@17 f4@3 ~@61 g4@6 ~@14 c5@3 ~@9 f4@3 ~@52]/7",
  C: "[~@6 f5@3 ~@3 f5@14 ~@4 d5@3 c5@5 ~@3 f4@3 g4@4, ~@29 c5@2 ~@17]/2", D: "[bb4@11 ~]/2",
  E: "[~@15 bb5@2 ~@4 bb5@6 f5@2 ~ g5@3 f5@5 ~ c5@2 d5@3 ~@4]/2",
  F: "[~@3 c5@2 ~ d5@3 c5@3 ~@3 f4@2 ~@3 f4 ~@2 bb4@3 ~@10 d5@26 ~ c5@2 ~ d5@3 c5@3, ~@17 g4@5 ~@50]/3",
  G: "~@3 f4@2 ~ g4@3 bb4@15", H: "[~@6 c5 ~ d5@3 c5@4 ~@3 g4@4 ~ bb4@39 ~ c5@2 d5@2 ~@5, ~@17 f4@2 ~@53]/3",
  I: "~@3 f5@2 ~@4 f5@13 ~@2", J: "~@8 d5@3 c5@5 ~ f4@3 g4@4, ~@5 c5@5 ~@14", K: "[bb4@7 ~]/2",
  L: "[~@6 c5@3 d5@3 ~@3 bb4@2 c5@3 ~@3 bb4@2 g4@27 ~@2 bb4@3 c5@3 ~@3 bb4@2 c5@2 ~@5]/3",
  M: "[d5@30 c5@3 d5@5 ~ c5@3 d5@3 ~@2 f5@11 ~ c5@13]/3", N: "~@4 d5@2 ~@3 c5@5 ~@2 bb4@2 c5@4 ~@2", O: "bb4@5 ~@3",
})).s("gm_flute").gain(0.35).pan(0.9)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  A B@2 C D@2 E@3 F@6 C D@2 E@3 F@6 C D@2 E@3 F@6 C D@2 E@3 F@6 C G@2 H I@2 J K L@2 M N O P@2 Q@3 R@2 S T U V W X@2 Y@3
  Z@2 AA@3 AB AC@2 AD AE AF AG@3 AH AI AJ AK AL@3 AM AN AO@2 H AP@2 AQ AR AS AT@2
>`.pickRestart({
  A: "~ [f4,d5] ~@3 bb4@2 f4@3 c5 c5@2 d5 ~@2 d5@3 ~ d5@2 [eb4,bb4,c5]@2, ~ bb3@6 [bb3,bb4]@6 [bb3,f4]@6 bb3@5, ~ bb4@2 f4@4 ~@3 eb4@3 ~@2 bb4@4 [f4,bb4]@3 ~@2, ~ d5 d5@3 ~@2 [bb4,d5] ~@4", // Dm Cm7 Bb Bb5 Bb
  B: "[~ [bb4,d5]@3 [bb4,d5]@2 ~ [f4,bb4,d5]@3 [eb4,bb4,c5]@2 [f4,d5] [bb4,d5]@3 [bb4,d5]@3 ~ d5@2 [eb4,bb4,c5]@2 ~ [f4,d5] ~@3 bb4@2 f4@3 c5 c5@2 d5 ~@2 d5@3 ~ d5@2 [eb4,bb4,c5]@2, ~ [bb3,f4]@6 ~@3 d5 ~@2 bb3@12 bb3@6 [bb3,bb4]@6 [bb3,f4]@6 bb3@5, ~ eb4 ~@4 bb3@6 ~ f3@19 ~@16, ~@13 f4@6 [f4,bb4]@3 ~@3 bb4@2 f4@4 ~@3 eb4@3 ~@2 bb4@4 [f4,bb4]@3 ~@2, ~@13 d5 d5@3 ~@2 [bb4,d5] ~@4]/2", // Bb Cm7 Dm Bb Cm7 Dm Cm7 Bb5 …
  C: "~ [bb4,d5]@3 [bb4,d5]@3 [f4,bb4,d5]@3 d5 ~ e4 d5 d5@2 ~@3 f4@3 [eb4,c5]@2, ~ f3@19 ~@4, ~ [bb3,f4]@6 bb3@6 [bb3,f4,bb4]@6 [bb3,bb4]@5, ~@10 [bb4,c5]@3 ~@3 d5@6 d5 ~, ~@11 eb4@2 ~@11", // Bb Cm Bb5 Bb Bbsus2
  D: "[~ [bb4,d5]@3 [bb4,d5]@2 ~ [f4,bb4,d5]@3 [eb4,bb4,c5]@2 [f4,d5] [bb4,d5]@3 [bb4,d5]@3 ~ d5@2 [eb4,bb4,c5]@2 d5 [bb4,d5]@3 [bb4,d5]@3 [f4,bb4,d5]@3 [eb4,bb4,c5]@2 d5 [f4,bb4,d5]@2 ~ f4@2 [f4,bb4,d5]@2 g4 [eb4,c5] eb4@2, ~ [bb3,f4]@6 ~@3 d5 ~@2 bb3@12 [bb3,f4]@6 bb3@5 bb3@6 bb3@6, ~ eb4 ~@4 bb3@6 ~ f3@19 ~@16, ~@13 f4@6 [f4,bb4]@3 ~@15 eb4 ~ [bb4,d5]@3 ~@3 [g4,eb5]@3]/2", // Bb Cm7 Dm Bb Cm7 Bb Cm7 Bb …
  E: "[~ [eb4,g4,eb5]@2 ~ [eb4,g4]@3 [g3,bb3,eb4,g4,eb5]@3 ~ c3 ~@2 eb5@2 [eb4,g4,eb5]@3 [g3,eb4,g4,eb5]@3 [c3,f3]@2 g3 ~ eb5@2 [eb4,g4,eb5]@3 ~@5 g3 [bb3,eb4,g4]@3 [bb3,eb4,g4,eb5]@2 ~@4 [g4,c5]@2 [f4,bb4] [bb4,d5]@3 [bb4,d5]@2 ~ [bb4,d5]@3 [eb4,bb4,c5]@2 [f4,d5] d5@3 d5@2 ~ [f4,bb4,d5]@3 [eb4,bb4,c5]@2, eb3@10 f3@2 eb3@10 ~@2 eb3@10 [c3,bb3,eb4,g4]@3 ~@5 [bb3,eb4]@6 bb3@6 ~@6 bb3@6 bb3@6, [g3,bb3]@6 ~@4 [bb3,eb4,g4,eb5]@3 bb3@6 bb3@6 bb3@6 [bb3,eb4,g4]@3 ~ eb3@9 c3@19 ~@9, ~@3 eb5@4 ~@5 g3@6 ~@7 g3@8 f3@3 ~ g3@6 f3@11 [f3,bb3]@6 f3@12, ~@13 [eb4,g4]@3 ~@6 [eb4,g4,eb5]@3 [eb4,g4]@3 ~@4 eb5@2 eb5@6 ~@3 [g4,eb5]@3 ~@3 f4@5 f4@4 d5 ~@2 [f4,bb4]@6 ~@5]/3", // Eb Cm F5 Eb C5 Bb5 Bb Cm7 …
  F: "[[f4,d5] d5@3 d5@2 ~ [f4,bb4,d5]@2 c5 [eb4,bb4,c5]@3 [f4,bb4,d5]@3 [f4,bb4,d5]@3 bb4!2 a4 [eb4,g4]@2 [c4,f4,a4] ~ [a4,c5]@2 [f4,a4,c5]@3 [c4,f4,a4]@3 f4 ~ [c4,f4,a4] [f4,a4]@3 [f4,a4,c5]@3 [c4,f4,a4,c5]@2 g4 c5 ~ g3 [g4,eb5]@3 [g4,eb5]@3 [g3,bb3,eb4,g4,eb5]@3 ~@2 g3 [g4,eb5]@3 ~ g4@2 [g4,eb5]@2 ~ [g4,c5]@2 f4 [bb4,d5]@3 [bb4,d5]@3 [f4,bb4,d5]@3 d5 [eb4,c5]@2 d5 d5@2 ~@3 [bb3,f4,bb4]@3 eb4 ~ [f4,d5] ~ d5@2 ~ bb4@2 bb4 ~ bb4 d5 eb4@2 [bb4,d5]@3 [bb4,d5]@3 [f4,bb4,d5]@3 ~ bb4@2 [f4,d5] ~@3 bb4@2 f4@3 c5 c5@2 d5 ~@2 d5@3 ~ d5@2 [eb4,bb4,c5]@2, ~ f3@12 f3@12 [f3,c4]@6 f3@6 f3@11 ~ [g3,bb3,eb4]@6 ~@3 [f3,eb4,g4,eb5]@3 g3@8 f3@19 ~@9 [f3,bb3]@12 f3@12 ~@2 f4@4 ~@3 eb4@3 ~@6 [f4,bb4]@3 ~@2, ~ [bb3,f4,bb4]@5 bb3@6 ~ bb3@6 bb3@6 f4@3 ~@6 g4@2 ~@10 [bb3,g4]@3 ~@10 bb3@2 [bb3,eb4]@6 [bb3,eb4]@6 [bb3,f4]@6 bb3@6 [bb3,f4,bb4]@6 ~@4 [bb3,eb4]@2 ~@12 [bb3,f4]@6 bb3@6 bb3@6 [bb3,bb4]@6 [bb3,f4]@6 bb3@5, ~@19 [f4,d5]@3 c5@4 ~@5 c5@2 ~ c5@6 ~@7 eb5@2 ~@15 eb5@3 ~@3 eb5 ~@11 bb4@3 ~@3 d5@6 [bb4,c5]@3 bb4@3 d5@3 ~@3 [bb4,c5]@3 ~@12 bb4@3 ~@10 [bb4,d5]@2 ~@8, ~@35 [bb3,eb4]@2 c4@6 ~@2 eb4@4 ~@48 f4@6 [f4,d5]@4 ~@11 [eb4,c5,d5]@2 ~@2 d5@2 d5@6 ~@5 bb4@4 ~@5]/6", // Dm Bb Cm7 Bb Eb F Am F …
  G: "[~ [bb4,d5]@3 [bb4,d5]@2 ~ [f4,bb4,d5]@3 [eb4,bb4,c5]@2 [f4,d5] [bb4,d5]@3 [bb4,d5]@3 ~ d5@2 [eb4,bb4,c5]@2 [f4,d5] [bb4,d5]@3 [bb4,d5]@2 ~ [f4,bb4,d5]@2 c5 [eb4,bb4,c5]@2 [eb4,d5] d5@2 [f4,bb4,d5]@2 ~ [f4,bb4,d5]@2 [g4,c5] [eb4,g4,eb5]@3, ~ [bb3,f4]@6 ~@3 d5 ~@2 bb3@11 bb3@6 bb3@6 bb3@5 ~ bb3@6, ~ eb4 ~@4 bb3@6 ~ f3@18 ~@17, ~@13 f4@6 [f4,bb4]@3 ~@3 f4@6 ~@5 [f4,bb4]@3 ~@9]/2", // Bb Cm7 Dm Bb Cm7 Dm Bb Cm7 …
  H: "~ eb5@2 [eb4,g4,eb5]@3 ~ [eb4,g4,eb5]@3 c3 eb3 ~@2 eb5@2 [eb4,g4,eb5]@2 ~ [eb4,g4,eb5]@2 ~ [c3,eb4,g4,eb5]@2, eb3@10 [f3,bb3]@2 eb3@9 f3@2 ~, [g3,bb3]@3 [g3,bb3]@2 ~ [g3,bb3]@3 bb3@3, [eb4,g4]@3 ~@7 [eb4,g4,eb5]@3 [eb4,g4]@3 ~@2 g3@3 ~@3", // Eb Cm Bb5 Gm Eb
  I: "[g3 [eb4,g4,eb5]@3 [eb4,g4,eb5]@2 ~@7 [bb3,eb4,g4]@2 ~ [bb3,eb4,g4]@2 ~@4 g4@2 [bb4,d5]@3 ~ bb4@2 ~ d5@3 [eb4,bb4,c5]@2 d5 d5@2 d5@3 ~ d5@2 c5 [eb4,bb4,c5]@2, eb3@9 [c3,f3]@3 g3@6 ~ f3@11 [f3,bb3]@6 f3@12, ~ g3@7 eb5@2 eb5@5 eb5@3 g4@2 c3@19 ~@9, ~ bb3@5 bb3@4 [bb3,eb4,g4]@3 ~@5 [bb3,eb4]@6 [bb3,f4]@6 [f4,bb4]@4 ~@2 [bb3,f4,bb4]@6 bb3@6, ~@7 [eb4,g4]@3 ~ eb3@8 eb5@2 c5@3 ~@3 d5@3 ~@4 d5 ~@7 [f4,bb4]@3 ~@3]/2", // Eb Bb Cm7 F5 Bb5 Eb Eb5 Bb5 …
  J: "[f4,d5] d5@3 d5@2 ~ d5@2 [eb4,c5] [eb4,bb4,c5]@2 [f4,d5] [f4,bb4,d5]@3 [f4,bb4,d5]@2 ~@2 bb4 [g4,a4,c5] [eb4,g4,c5]@2, f3!2, bb3@6 bb3@6 ~ bb3@5 bb3@6, ~ [f4,bb4]@5 [f4,bb4]@3 ~@9 f4@3 ~@3, ~@19 [bb4,d5]@2 ~@3", // Dm Cm Cm7 Dm Bb Am7 Cm Bb5 …
  K: "[c4,f4,a4] [f4,a4,c5]@3 [f4,a4,c5]@2 ~ [c4,f4,a4]@3 [bb3,eb4,g4]@2 [c4,f4,a4] [f4,a4]@3 [f4,a4,c5]@2 ~ [f4,a4,c5]@2 g4 [bb3,g4,eb5]@2, ~ [f3,c4]@5 f3@6 ~ f3@11, ~@7 c5@2 ~ c5@6 ~@6 c5 ~, ~@10 f4 ~@2 c4@5 c4@3 eb4@3", // F Eb F Eb F5
  L: "[~ [g4,eb5]@2 ~ g4@2 ~ [bb3,eb4,g4,eb5]@3 [f3,bb3,eb4,g4,eb5]@2 ~ [g4,eb5]@3 [g4,eb5]@2 ~@4 [g4,c5]@2 f4 [bb4,d5]@3 [bb4,d5]@2 ~ [f4,bb4,d5]@3 d5 eb4@2 d5@3 ~@3 [bb3,f4,bb4]@3 [bb3,eb4,bb4,c5]@2, [g3,bb3]@6 g3@4 ~@2 g3@7 [g4,eb5]@3 eb5 ~@11 [bb4,c5]@3 ~@3 d5@6 ~@2, ~ eb4@6 ~@6 [bb3,eb4]@6 eb4@5 ~@6 bb3@6 ~ [bb3,f4,bb4]@6 ~@5, ~@3 eb5@4 ~@11 bb3@6 ~ [bb3,f4]@6 ~@17, ~@20 f3@19 ~@9]/2", // Cm Eb Cm C5 Bb Bb5 Cm7 Gm …
  M: "[f4,d5] [bb4,d5]@3 [bb4,d5]@3 bb4 bb4@2 [eb4,bb4,c5]@2 [f4,d5] [bb4,d5]@3 [bb4,d5]@2 ~ [f4,bb4,d5]@3 [eb4,bb4,c5]@2, f3!2, ~ bb3@12 [bb3,f4]@6 ~@3 d5 ~, ~ f4@6 [f4,d5]@3 d5 ~@7 bb3@6", // Dm Bb Cm7 Dm Bb Cm7 Bb5 Dm
  N: "[f4,d5] [bb4,d5]@3 [bb4,d5]@3 [f4,bb4,d5]@2 c5 [bb4,c5]@2 [f4,d5] bb4 ~@2 d5@3 [bb4,d5]@3 [eb4,bb4,c5]@2, ~ f3@19 ~@4, ~ [bb3,f4]@6 bb3@6 bb3@11, ~@9 eb4@3 ~ f4@9 ~@2, ~@13 d5 bb4@4 ~@4 d5 ~", // Dm Bb Bbsus2 Dm Bb Cm7 Bb5
  O: "[e4,f4] [bb4,d5]@3 [bb4,d5]@2 ~ [bb4,d5]@2 ~ [bb3,eb4]@2 [f4,d5] [bb4,d5]@3 [bb4,d5]@2 ~ [bb4,d5]@2 ~ [eb4,bb4]@2, f3@2 f3 [f3,bb3], bb3@6 [bb3,f4]@4 f4 ~@2 [bb3,f4]@5 ~@6, ~ f4@5 ~@3 [bb4,c5]@3 ~@6 f4@3 c5@3", // Fmaj7 Bb Eb5 Dm Bb Eb5 Bb5 Bbsus2
  P: "[[e4,f4,d5] d5@3 d5@2 ~ [bb4,d5]@2 d5 [eb4,bb4,c5]@2 [e4,f4,d5] [bb4,d5]@3 [bb4,d5]@2 ~ d5@2 d5 [eb4,bb4,c5]@2 ~ [bb4,d5]@3 [bb4,d5]@2 ~ [bb4,d5]@2 d5 [eb4,bb4,c5]@2 [e4,f4,d5] [bb4,d5]@3 [bb4,d5]@2 ~@2 g4 c5 [eb4,eb5]@2, f3@18 f3@19 ~@5 [f3,bb3]@6, ~ [bb3,f4,bb4]@5 bb3@6 bb3@6 bb3@6 bb3@6 bb3@6 bb3@6 ~ [bb4,d5]@2 g4@3, ~@6 f4@3 ~@4 f4@5 [f4,bb4]@4 ~@3 f4@5 f4@3 ~@4 f4@5 f4@4 ~@2]/2", // Dm Bb Cm7 Dm Bb Cm7 Bb Cm7 …
  Q: "[~ f3 eb5@2 [bb3,eb4,g4,eb5]@2 ~ [g4,eb5]@2 c5 [eb4,g4,eb5]@2 ~ [g4,eb5]@2 g4@3 [g3,eb4,g4]@3 eb5 ~@3 eb5@3 eb5@2 ~ [eb4,g4,eb5]@2 ~ [c3,bb3,eb4,g4,eb5]@2 g3 ~ ab3 ~ [g4,eb5]@2 ~ [eb4,g4,eb5]@2 ~ [eb4,g4,c5]@2 [f4,bb4,d5] [f4,bb4,d5]@3 [f4,bb4,d5]@2 ~ [bb4,d5]@3 [eb4,bb4,c5]@2 ~ d5@3 d5@2 ~ d5@3 [eb4,bb4,c5]@2, eb3@9 [c3,f3]@3 eb3@9 ~ [c3,f3,c5]@2 eb3@10 ~@2 eb3@9 [c3,f3]@19 ~@8, ~ g3@5 [g3,eb4]@3 ~@3 g3@5 ~@4 [eb4,g4]@3 g3@8 ~ f3@3 ~@3 g3@3 bb3@6 ~ bb3@5 bb3@6 bb3@6 bb3@6, ~ [bb3,eb4,g4]@3 ~@2 bb3@6 ~ [bb3,eb4]@5 bb3@7 [bb3,eb4,g4]@6 ~@6 [bb3,eb4]@6 ~@11 f4@4 d5 ~@2 [f4,bb4]@5 [f4,bb4]@4 [f4,d5] ~, ~@15 eb5@6 ~@2 eb5@2 ~@5 bb3@4 ~@3 [g4,eb5]@3 ~@2 g3@2 ~@28]/3", // Eb Cm Eb Cm Eb Cm7 Cm Eb …
  R: "[~ [bb4,d5]@3 [bb4,d5]@2 [f4,bb4,d5]@3 d5 [eb4,bb4,c5]@2 [e4,d5] d5@3 d5@2 ~ [bb4,d5]@2 a4 [eb4,g4]@2 [c4,f4,a4] ~ c5@2 [c4,f4,a4,c5]@2 ~ [c4,f4,a4,c5]@3 [f4,a4] ~ [c4,f4,a4] [f4,a4]@2 d5!2 ~@2 [f4,a4,c5]@2 [eb4,c5] [eb4,eb5]@2, bb3@6 bb3@6 f3@12 ~ f3@5 f3@6 f3@11 ~, ~ f4@5 ~@7 [f4,bb4]@5 f4@3 ~ c5@4 ~@8 c5@5 ~@2 c5@2 ~@5, ~ eb4 ~@10 bb3@6 bb3@6 ~ [c4,f4,a4]@3 ~@7 [bb3,eb4]@2 c4@5 c4@3 [bb3,g4]@3, ~@22 e4 ~@11 g4@2 ~@4 [f4,a4]@3 ~@5]/2", // Bb Cm7 E7 Bb Eb F Cm Eb …
  S: "~ [g4,eb5]@2 [g4,eb5]@3 ~ [g4,eb5]@3 [g4,eb5]@3 [g4,eb5]@3 [g4,eb5]@3 ~@3 [g4,c5]@2, eb3@19 [g4,eb5]@3 eb5 ~, [g3,bb3]@6 g3@6 ~ [g3,bb3,eb4]@7 f3@4, ~ eb4@6 [bb3,eb4]@6 ~@6 [bb3,eb4]@5", // Cm C5 Cm Gm Eb Eb5
  T: "f4 [bb4,eb5]@2 d5 [bb4,d5]@2 ~ d5@3 d5 ~ eb4 [bb4,d5]@3 [bb4,d5]@3 [f4,bb4,d5]@3 [eb4,bb4,c5]@2, [f3,bb3]@6 f3@12 ~ [f3,bb3]@5, ~ f4@5 bb3@5 c5@2 eb4 ~@10, ~@7 [f4,bb4]@6 [bb3,f4]@6 ~@5", // Eb5 Bb Cm7 Bb5
  U: "[f4,d5] ~ d5@2 [bb4,d5]@3 [f4,bb4,d5]@3 d5 ~ f4 [bb4,d5]@3 ~ d5@2 [f4,bb4,d5]@2 c5 [eb4,bb4,c5]@2, ~ f3@19 ~@4, ~ [bb3,f4]@6 bb3@6 bb3@11, ~ bb4@3 ~@6 [bb4,c5]@3 ~@3 [bb4,d5]@2 ~@6, ~@11 eb4@2 f4@6 ~@5", // Dm Bb Cm7 Bb5 Bbsus2 Bb
  V: "[e4,f4,d5] d5@3 d5@2 ~ [f4,d5]@3 [eb4,c5]@2 ~ d5@3 ~@4 d5@2 [eb4,c5]@2, ~ f3@11 f3@12, ~ [bb3,f4,bb4]@5 [bb3,bb4]@6 bb3@6 bb3@6, ~@10 d5 ~@2 [f4,bb4]@6 [f4,bb4]@5, ~@16 d5@4 ~@2 d5 ~", // Dm Cm Bb5 Bb Bb5
  W: "[f4,d5] [bb4,d5]@3 d5 ~@2 [bb4,d5]@3 [eb4,bb4,c5]@2 d5 d5@2 d5@3 ~ d5@2 ~ eb4@2, [f3,bb3]@5 d5@2 ~@3 d5 ~@2 bb4@6 bb4@5, ~ f4@5 [f3,bb3]@6 [f3,bb3,f4]@6 [f3,bb3]@6, ~@4 bb4@2 f4@4 ~@8 f4@3 c5@3", // Dm Bb Cm7 Bb5
  X: "[d5 d5@2 d5@3 [f4,bb4,d5]@3 ~ bb4@2 [bb3,f4,bb4,d5]@6 [f4,d5]@3 [eb4,c5]@3 [f4,bb4,d5]@3 [f4,bb4,d5]@3 [f4,bb4,d5]@3 [eb4,bb4,c5]@3 d5 d5@2 [f4,bb4,d5]@3 [f4,bb4,d5]@3 bb4 [eb4,g4]@2, f3@12 f3@19 ~@17, [bb3,f4]@5 ~ bb3@6 ~@6 [bb3,bb4]@6 bb3@6 bb3@6 bb3@6 bb3@6, ~ bb4@5 ~@3 [eb4,c5]@3 eb4 ~@23 [f4,bb4]@3 ~@6 c5@3]/2", // Bb Dm Cm Bb Cm7 Bb Eb Bb5 …
  Y: "[[f3,eb5] ~@3 [g3,bb3]@2 ~ eb5 ~@2 eb5@2 ~ [eb4,g4,eb5]@3 [eb4,g4]@2 ~ [eb4,g4]@2 ~@4 eb5@3 ~@3 [g3,bb3,eb4,g4]@3 c3 g3 ~ eb4 eb4@2 [eb4,g4,eb5]@2 g3 ~@3 [g4,c5]@2 [f4,bb4] d5@3 d5@2 ~ [f4,d5]@3 [eb4,c5]@2 [f4,d5] d5@3 d5@2 ~ [f4,bb4,d5]@3 [eb4,bb4,c5]@2, ~ [bb3,eb4,g4,eb5]@2 [eb4,g4,eb5]@4 eb4@6 bb3@5 bb3@6 eb3@10 [f3,bb3,eb4,g4,eb5]@3 [g3,bb3]@6 [f3,bb3]@6 [bb3,f4,bb4]@6 bb4@6 [f4,bb4]@6 ~@5, ~@2 g3@2 ~@2 [g3,bb3]@6 eb3@9 [c3,f3]@2 [eb3,g3]@2 [g3,bb3,eb4,g4]@6 ~@4 eb3@8 ~ c3@19 ~@9, ~@7 g4@2 g4@3 g3@6 g3@3 ~ [eb4,g4,eb5]@3 ~@12 [g4,eb5]@3 ~@3 [eb4,g4,eb5]@3 eb4 ~ f3@19 ~@5, ~@8 c5@2 c5 ~@5 eb5@5 ~@7 eb5@6 ~@20 bb3@6 bb3@6 bb3@6]/3", // F7 Gm Eb C5 Bb5 Dm Cm Dm …
  Z: "[[f4,d5] [bb4,d5]@3 [bb4,d5]@3 d5!2 ~ [eb4,c5]@2 [f4,d5] d5@2 ~ d5@2 ~ [f4,bb4,d5]@3 [e4,d5] ~@2 [bb3,eb4,g4] c4@2 [c4,f4,a4,c5]@2 ~ [f4,a4,c5]@3 bb3!2 [c4,f4,a4] [c4,f4,a4]@3 [c4,f4,a4,c5]@2 ~ a4 ~ eb5 ~ d3, f3@19 ~@4 eb4@2 [f4,a4,c5]@3 ~@2 c4@4 [eb4,g4]@2 ~@6 [c4,f4]@2 [eb4,g4]@2 [eb4,g4,eb5]@2, bb3@6 ~ [bb3,bb4]@6 [bb3,f4,bb4]@6 ~@3 [g4,c5]@3 ~@9 c5@6 ~@3 c5@2 bb3@3, ~ f4@6 f4@3 ~@8 bb3@6 f3@6 f3@6 [c3,f3]@11 ~]/2", // Dm Bb Cm Dm Bb E7 Eb F …
  AA: "[~ [g4,eb5]@3 [g4,eb5]@2 ~ [eb4,g4,eb5]@2 ~ c3 g3 ~ [g3,ab3] ~@2 [g4,eb5]@2 ~@4 [eb4,g4,c5]@2 [f4,bb4,d5] d5 d5@2 [bb4,d5]@3 [f4,bb4,d5]@3 [eb4,bb4,c5]@2 [f4,d5] d5@3 d5@3 [f4,bb4,d5]@2 ~ eb4 e4 [f4,d5] d5@3 d5@2 ~ [bb4,d5]@2 ~ [eb4,bb4]@2 d5 d5@3 bb4@2 [f4,bb4]@3 g4 [eb4,g4]@2, eb3@9 f3@2 eb3@9 c3@19 ~@7 bb4@3 [f4,bb4]@6 ~@2 [e4,c5]@2 ~ bb4@3 ~ d5@5 c5@3, [g3,bb3]@6 bb3@6 ~ [bb3,eb4]@6 [eb4,g4,eb5]@3 ~@3 [f4,bb4]@6 ~@6 [f4,bb4]@6 ~@2 c5@2 ~@7 f4@3 ~@3 f4@6 ~@4 f4 ~, ~ eb4@5 g3@3 ~ [eb4,g4,eb5]@3 [g4,eb5]@3 ~@2 bb3@6 ~ bb3@11 bb3@12 bb3@18 bb3@6, ~@14 g3@5 ~ f3@16 f3@19 ~@17]/3", // Cm Eb Abmaj7 Cm Bb Cm7 Dm Bb …
  AB: "~ bb4@3 bb4@2 bb4@6 [bb4,eb5]@3 ~ bb4@2 ~ bb4@3 [bb4,eb5]@2, ~ bb3@19 ~@4, ~ g3@17 [g3,eb4]@6, ~ eb4@11 eb4@6 ~@6, ~@2 eb5@4 ~@2 eb5@3 ~", // Eb5 Cm
  AC: "[~ eb5@3 ~@2 bb4@3 ~ bb4@3 [bb4,eb5]@3 eb5 [bb4,c5,eb5]@2 [bb4,eb5]@3 c5 ~ [f4,c5] d5@3 d5@3 [bb4,d5]@3 ~@2 [f4,d5] d5@3 d5@2 ~ d5@3 [eb4,c5,d5]@2, ~ g3@19 ~@28, ~ bb3@12 [bb3,eb4]@6 [bb3,eb4]@6 [bb3,f4,bb4]@6 [bb3,f4]@5 bb3@6 bb3@6, ~ [eb4,bb4]@5 eb4@6 ~@23 [eb4,bb4]@2 [f4,bb4]@6 bb4@5, ~@4 eb5@5 eb5@4 ~@10 [bb4,eb5]@2 ~@9 [c5,d5]@2 ~@6 f4@4 ~@2]/2", // Eb5 Cm7 Eb5 F5 Bb Dm Cm Eb5 …
  AD: "d5@4 d5@2 [f4,d5]@3 [eb4,c5]@2 [f4,d5] [bb3,f4,bb4,d5]@4 [f4,bb4,d5]@2 [f4,bb4,d5]@2 a4 [eb4,g4,c5]@3, [bb3,f4,bb4] f3@3, ~@3 [bb3,bb4]@3 ~@2 bb3@4", // Dm Cm Dm Bb Cm Bb5 Bb
  AE: "[c4,f4,a4] [a4,c5]@3 a4@2 [c4,f4,a4]@4 [c4,f4,a4,c5]@2 ~ c5@3 [c4,f4,a4]@2 ~ [bb3,eb4,g4]@3 [g3,bb3,eb4,g4,eb5]@2, ~ [f3,c4,f4]@5 f3@12 f3@4 ~@2, ~@2 c5@3 ~ [c4,f4,a4]@2 c5@3 ~, ~@19 [c4,f4,a4] ~@4", // F Am F Eb F5 F
  AF: "[bb3,g4,eb5]@3 ~ [bb3,g4]@2 [g4,eb5]@3 [g4,eb5]@3 ~ eb5@3 [g4,eb5]@2 c5 [g4,c5]@3 ~ [f4,bb4,d5], [g3,eb4] [g3,bb3,eb4]!2 [f3,bb3], ~@3 eb5@3 ~@6 g4@4 ~@2 eb4@4 g4@2", // Eb Cm C5 Bb Cm Eb Bb5
  AG: "[[bb3,bb4,d5]@3 ~ [bb3,bb4]@2 [f4,bb4,d5]@3 d5 [eb4,bb4,c5]@2 ~ [bb4,d5]@3 [bb4,d5]@2 [f4,bb4,d5]@3 c5 [eb4,bb4,c5]@2 d5@3 d5@3 [f4,d5]@3 [eb4,c5]@2 [f4,d5] [bb3,f4,bb4,d5]@4 [bb3,f4,bb4,d5]@2 ~ d5 ~ [e4,g4] c5 ~@2 [eb4,g4,eb5]@3 ~ [g3,bb3]@2 [g3,bb3,eb4]@3 [g3,bb3,eb4]@2 ~ [g4,eb5]@3 [g4,eb5]@2 ~ [eb4,g4]@3 [g3,bb3,eb4,g4]@2, [f3,f4]@6 f3@12 f3@12 f3@18 eb3@19 ~@5, ~@3 d5@3 bb3@6 [bb3,f4]@6 bb3@6 [bb3,f4,bb4]@6 [bb3,bb4]@6 ~@6 bb3@4 [bb3,eb4,g4]@3 ~@3 [eb4,g4,eb5]@3 [g4,eb5]@6 eb4@6 ~@5, ~@43 [f4,bb4]@3 ~@2 [g3,bb3]@4 ~@8 [g3,bb3]@6 [g3,bb3]@4 ~@2, ~@44 c5@2 ~ eb5@2 ~@18 eb5@5]/3", // Bb Cm7 Bb Cm7 Dm Cm Dm Bb …
  AH: "[bb3,eb4,g4,eb5]@4 [bb3,eb4,g4,eb5]@3 [eb4,g4,eb5]@3 [eb4,g4,eb5]@2 ~ [g4,eb5]@3 ~ bb3 ~ eb5@2 c5 [g4,c5]@2, g3@7 g3@14 f3@3, ~@7 bb3@5 [bb3,eb4]@4 [eb4,g4,eb5]@2 bb3@6, ~@18 [eb4,g4]@4 eb4 ~", // Eb Cm C5 Eb5 Eb
  AI: "g4 [bb4,c5,eb5] [bb4,d5]@2 [bb3,f4,bb4,d5]@2 ~@2 bb4@2 ~@3 d5@3 [bb4,d5]@2 bb4@2 ~@3 [f4,d5], f3@19 ~@2 c5@2 ~, f4@4 ~@2 f4@4 ~ eb4@2 ~@5 [f4,d5]@4 [eb4,f4,bb4]@2, ~ bb3@3 ~@2 bb3@6 [bb3,f4]@6 bb3@6, ~@6 bb4 d5@3 [bb4,c5,d5]@2 bb4@3 ~@5 bb4@2 ~@2", // Cm7 Bb Dm Ebsus2 Bb5 Bb
  AJ: "[bb4,d5]@3 ~ bb4@2 [bb3,f4,bb4,d5]@3 d5 [eb4,bb4,c5]@2 bb4@2 d5 [bb4,d5]@3 [bb4,d5]@2 ~@3 [f4,a4], [bb3,f4] f3@2 [f3,bb3], ~@3 d5@3 ~@4 bb3@8 ~@3 [eb4,g4]@3, ~@6 f4@3 f4@2 ~, ~@12 d5 ~@7 [a4,c5]@2 c5@2", // Bb Cm7 Bb F Bb5 Eb Am
  AK: "d5 d5@2 ~ [a4,d5]@2 ~ d5@2 d5 [a4,c5]@2 [f4,a4,c5]@4 ~ c4@2 ~@4 [g3,bb3], [f3,c4,f4]@6 [f3,c4]@11 f3@7, a4@4 ~@2 f4@6 ~@4 [f4,a4,c5]@3 [c4,f4,a4,c5]@2 [bb3,eb4]@3, ~@6 a4@3 ~@11 g4@2 [g4,eb5]@2", // D5 Am F Gm F5 F Eb5 Cm
  AL: "[~ [eb4,g4]@3 [bb3,eb4,g4]@2 ~ [g4,eb5]@3 [g4,eb5]@3 [eb4,g4]@3 ~ [bb3,eb4]@2 ~@5 f4 d5 eb5 d5@14 ~@2 [bb4,c5]@6 [f4,d5] [f4,d5]@11 [eb4,c5]@2 [bb3,eb4,bb4,c5]@9, [g3,bb3]@4 g3@15 eb5@3 ~ c5@2 bb4@18 ~@29, ~ eb5@5 eb4@6 ~ eb5@6 [eb4,g4]@6 f4@16 [eb4,c5]@2 ~@7 [bb3,bb4]@13 ~@9, ~@6 bb3@4 bb3@6 g4@3 bb3@19 ~@4 eb4@7 ~@23, ~@20 f3@19 ~@11 f3@19 ~@3]/3", // Eb Cm Eb Eb5 Bbsus2 Dm Cm Cm7 …
  AM: "~ [bb4,d5]@2 ~@2 bb4@2 f4@3 [eb4,c5]@2 d5 bb4 ~@2 d5@3 ~ d5@2 [eb4,bb4,c5]@2, ~ bb3@6 [bb3,bb4]@6 [bb3,f4]@6 bb3@5, ~ f4 ~ f4@4 ~@8 bb4@4 [f4,bb4]@3 ~@2, ~@2 d5@3 ~@2 d5 ~@4", // Bb Cm Cm7 Bb Bb5
  AN: "~ [bb4,d5]@3 [bb4,d5]@2 ~ [f4,bb4,d5]@3 [eb4,bb4,c5]@2 [e4,d5] d5@3 ~@6 [eb4,c5]@2, ~ f3@18 bb4@5, ~ [bb3,f4]@5 bb3@6 ~ [bb3,f4,bb4]@5 bb3@6, ~@10 d5 ~@5 d5@6 d5 ~, ~@9 f4@2 ~", // Bb Cm7 E7 Cm Bb5
  AO: "[d5 [bb4,d5]@3 [bb4,d5]@2 ~ d5@2 d5 [eb4,bb4,c5]@2 [f4,d5] [bb4,d5]@3 [bb4,d5]@3 ~ d5@2 [eb4,bb4,c5]@2 [f4,d5] [bb4,d5]@3 [bb4,d5]@2 ~ [f4,bb4,d5]@2 c5 [eb4,bb4,c5]@2 [eb4,d5] d5@2 [f4,bb4,d5]@2 ~ [f4,bb4,d5]@2 [g4,c5] [eb4,g4,eb5]@3, ~ [bb3,f4]@5 bb3@6 f3@19 ~@17, ~ eb4 ~@4 [f4,bb4]@4 ~@3 bb3@11 bb3@6 bb3@6 bb3@5 ~ bb3@6, ~@13 f4@6 [f4,bb4]@3 ~@3 f4@6 ~@5 [f4,bb4]@3 ~@9]/2", // Bb Cm7 Dm Bb Cm7 Dm Bb Cm7 …
  AP: "[~ [eb4,g4,eb5]@2 ~ [eb4,g4]@2 ~ [g4,eb5]@2 ~@2 g3 ~ g4@2 ~ bb3@2 ~@3 [g4,c5]@2 f4 [bb4,d5]@3 [bb4,d5]@3 [f4,bb4,d5]@3 d5 [eb4,bb4]@2 d5@3 d5@3 [f4,bb4,d5]@3 [eb4,bb4,c5]@2 ~, [eb3,g3]@9 [c3,f3,g4]@2 eb3@9 c3@19 ~@9, bb3@3 [bb3,eb4]@2 [bb3,eb4] g3@3 [bb3,eb4]@3 [bb3,f4]@3 ~@3 [bb3,f4,bb4]@3 bb3@3, ~@3 eb5@4 ~@2 eb5@6 ~@4 f3@11 [f3,bb3]@6 f3@12, ~@4 [bb3,eb4] [eb4,g4,eb5] [g4,eb5] ~@4 c5 ~@4]/2", // Eb Cm C5 Bb Eb5 Bb Cm7 Eb …
  AQ: "d5 d5@2 d5@3 [f4,bb4,d5]@3 eb4 [eb4,bb4]@2 [f4,d5] [f4,bb4,d5]@3 [f4,bb4,d5]@2 bb4 ~ bb4 [g4,a4] [eb4,g4]@2, f3!2, [bb3,f4] bb3!3, ~ bb4@5 ~@3 c5@3 ~@6 f4@3 ~@3, ~@19 d5@2 c5@3", // Bb Eb5 Dm Bb Gsus2 Eb Bb5
  AR: "[f4,a4] [f4,a4,c5]@3 [f4,a4,c5]@2 ~ [a4,c5]@2 ~ [bb3,eb4,f4]@2 [f4,a4] [f4,a4]@2 ~ [f4,a4]@2 [c4,f4,a4,c5]@3 c5 eb5@2, [f3,c4]@6 f3@6 f3@11 ~, ~@2 [c4,f4] c5@2 c5 ~@2, ~@3 g4 c4@2 ~ [bb3,eb4,g4]", // F Am Bbsus4 F F5 Eb
  AS: "~ [g4,eb5]@2 [g4,eb5]@3 ~ [g4,eb5]@2 ~ [f3,bb3,eb4,g4]@2 ~ [g4,eb5]@3 [g4,eb5]@2 ~@4 [g4,c5]@2, [g3,bb3,eb4]@6 [g3,bb3,eb4]@3 eb5@3 g3@7 [g4,eb5]@3 eb5 ~, ~@2 [bb3,eb4]!2, ~@5 f3", // Cm Eb Cm C5 Eb Cm Eb5
  AT: "[d5!2 d5@13 ~ eb4@2 ~ bb4 bb4@6 f4 ~ bb4 bb4@19, [bb3,bb4]@18 bb3@9 [bb3,f4]@19 ~@2, f4@15 c5@4 [eb4,c5]@7 d5@2 d5@19 ~, f3@2 f3@19 ~@5 f3@19 ~@3]/2", // Bb Bb5 Cm
})).s("gm_acoustic_guitar_steel").gain(0.25).pan(0.4)

// drums · kick
const kick = s("bd").struct(`<
  ~@13 A B@2 A B@3 A B@3 A B@3 A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C D A@2 B@3 A B@3 A B@2 A B C A@3 C B@2 A C B A B C
  A@2 B C A@2 B C D A@2 B@3 A B@4 C A@2 B C E ~@13
>`.pickRestart({
  A: "x ~@4 x!2 ~ x ~@3", B: "x ~@4 x!2 ~ x ~@2 x", C: "x ~@4 x!2 ~@4 x", D: "x ~@4 x ~@2 x ~@2 x", E: "x",
})).gain(0.35)

// drums · kick · soft notes
const kick_soft = s("bd").struct(`<
  A ~@12 A@4 ~ A@3 ~ A@3 ~ A@5 B A@3 B A@3 B A@3 B A@3 B A@5 ~ A@3 ~ A@5 B A@3 B A@3 B A@3 B A@3 B A@3 B A@5 ~ A@5 B A@3
  B ~@14
>`.pickRestart({
  A: "~@11 x", B: "~@2 x",
})).gain(0.2)

// drums · snare
const snare = s("sd").struct("<~@13 [~@3 x ~@2 x ~ x!2 ~@2] [~ x ~ x]!86 ~@14>").gain(0.35)

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  A ~@12 B C@14 ~@2 D E ~@2 D E ~@2 D E ~@2 D E ~@2 D E ~@2 C@12 D E ~@2 D E ~@2 D E ~@2 D E ~@2 D E ~@2 D E ~@2 C@7 ~ D
  E ~@2 D E ~@14
>`.pickRestart({
  A: "~@11 x", B: "x ~ x ~ x!2 ~ x ~@3 x", C: "x ~ x ~@2 x!2 ~ x ~@2 x", D: "~@2 x", E: "~ x ~@4",
})).gain(0.1)

// drums · hihat
const hihat = s("hh").struct("<~@13 [~ x ~ x]!35 [~ x!3] [~ x ~ x]!35 [~ x!3] [~ x ~ x]!15 ~@14>").gain(0.35)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@62 [~ x ~@2 x ~@2 x ~@2 x ~]!4 ~@28 [~ x ~@2 x ~@2 x ~@2 x ~]!6 x ~@13>")
  .gain(0.15)

// drums · open hat
const open_hat = s("oh").struct("<~@48 x ~@35 x ~@29>").gain(0.4)

// drums · crash
const crash = s("cr").struct("<~@13 A ~@14 B@21 C ~@12 B@23 C ~@7 B@7 D ~@13>".pickRestart({
  A: "~@11 x", B: "~ x ~ x", C: "x!2 ~ x", D: "x",
})).gain(0.25)

// drums · ride
const ride = s("rd").struct(`<
  ~@13 A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B C A@2 B D C A@2 B C A@2 B C A@2 B C B@2 E C@2 A@2 B
  C A@4 B C A@2 B C A@2 B D C A@2 B C A@2 B@4 E C B@2 F ~@13
>`.pickRestart({
  A: "x ~@2 x ~ x!2 ~@2 x ~ x", B: "x ~@2 x ~@2 x ~ x!2 ~ x", C: "x ~@2 x ~@2 x ~@2 x ~ x", D: "x!2",
  E: "x ~ x!2 ~@2 x ~@2 x ~ x", F: "x",
})).gain(0.35)

// drums · tambourine
const tambourine = s("tb").struct(`<
  A ~@12 B C D B E C D B E C D B E C D F G@3 F G@3 F G@3 F G@3 F G@3 F G C D B E C D B E C D B@2 G@2 F G@3 F G@3 F G@3 F
  G@3 F G@3 F G C D B E C D B G@3 F G@3 ~@14
>`.pickRestart({
  A: "x!4", B: "x ~ x!2 ~@2 x ~ x!2 ~@2", C: "~@2 x!2 ~@4 x!2 ~@2", D: "~@2 x!2 ~@2 x ~ x!2 ~@2",
  E: "x ~ x!2 ~@4 x!2 ~@2", F: "~@2 x!2 ~ x!2 ~ x!2 ~ x", G: "x ~ x!2 ~ x!2 ~ x!2 ~ x",
})).gain(0.25)

// drums · tambourine · soft notes
const tambourine_soft = s("tb").struct(`<
  A ~@12 A B C A D B C A D B C A D B C E ~@3 E ~@3 E ~@3 E ~@3 E ~@3 E ~ B C A D B C A D B C A@2 ~@2 E ~@3 E ~@3 E ~@3 E
  ~@3 E ~@3 E ~ B C A D B C A ~@3 E ~@3 E ~@13
>`.pickRestart({
  A: "~@5 x ~@5 x", B: "x ~@4 x!2 ~@4 x", C: "x ~@4 x ~@5 x", D: "~@5 x!2 ~@4 x", E: "x",
})).gain(0.15)

// drums · congas
const congas = s("conga:13").struct(`<
  ~@62
  [~ x ~@2]!3
  [~@3 x ~@4 x ~@3]
  ~@28
  [~ x ~@2]!3
  [~@3 x ~@4 x ~@3]
  [~ x ~@2]!2
  ~@14
>`).gain(0.95)

// drums · congas
const congas_2 = s("conga:18").struct("<~@62 A ~ A ~@29 A ~ A ~ A ~@15>".pickRestart({
  A: "~@9 x ~ x",
})).gain(0.95)

// drums · congas
const congas_3 = s("conga:33").struct("<~@63 A ~ A ~@29 A ~ A ~ A ~@14>".pickRestart({
  A: "~@9 x ~ x",
})).gain(0.95)

// drums · cabasa
const cabasa = s("cabasa:4").struct(`<
  ~@13
  [~@2 x ~@2 x ~@2 x ~@2 x]!35
  ~
  [~@2 x ~@2 x ~@2 x ~@2 x]!35
  ~
  [~@2 x ~@2 x ~@2 x ~@2 x]!15
  ~@14
>`).gain(1.26)

// drums · triangle
const triangle = s("triangles:35").struct("<~@100 x ~@13>").gain(2.59)

// drums · shaker
const shaker = s("sh").struct(`<
  ~@13
// … 12 more lines

More by Canned Heat