Strudelify

Guantanamera

Digno Garcia

KeyF majorTempo100 bpm
0:00/0:00
// Guantanamera — Digno Garcia
// 100 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 40 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(100/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.

// chords · synth strings 1
const synth_strings_1 = note(`<
  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 AB AC AD AE AF AG AH AI AJ AK AL AM ~
>`.pickRestart({
  A: "~@4 [g4,bb4,c5,d5] ~ [g4,bb4,d5] ~@4 [g4,e5] c5 [g4,c5,e5] ~@5 [g4,bb4,d5] ~ [g4,bb4,d5] ~@4 [g4,c5,e5] ~ [g4,bb4,d5] ~@3", // Gm C Gm C Gm
  B: "~@2 [f4,a4,c5] ~ [f4,a4,c5] ~@4 [f4,bb4,d5] ~ [f4,a4,c5] ~@5 [f4,a4,c5] ~ [f4,a4,c5] ~@4 [f4,bb4,d5] ~ [f4,a4,c5] ~@4 [g4,d5]", // F Bb F Bb F G5
  C: "bb4 [g4,bb4,d5] ~@5 [g4,c5,e5] ~ [g4,c5,e5] ~@4 [g4,bb4] d5 [g4,bb4,d5] ~@5 [g4,c5,e5] ~ [g4,bb4,d5] ~@4 [a4,c5] f4 [f4,a4,c5]", // Gm C Gm C Gm Am F
  D: "~@5 [f4,bb4,d5] d5 [f4,bb4] ~@4 [f4,a4,c5] ~ [f4,a4,c5] ~@3 [f4,bb4,d5] [f4,a4] c5 ~@6 [g4,bb4,d5] ~ [g4,bb4,d5] ~@2", // Bb Bb5 F Bb F Gm
  E: "~@2 [g4,c5] e5 [g4,c5,e5] ~@5 [g4,bb4,d5] ~ [g4,bb4,d5] ~@4 [g4,c5,e5] ~ [g4,bb4,d5] ~@5 [f4,a4,c5] ~ [f4,a4,c5] ~@4", // C5 C Gm C Gm F
  F: "[f4,bb4,d5] ~ [f4,a4,c5] ~@4 [f4,c5] a4 ~ [f4,a4,c5] ~@2 [f4,bb4,d5] ~ [f4,a4,c5] ~@6 d5 [g4,bb4] [g4,bb4,d5] ~@5 [g4,c5,e5] ~", // Bb F F5 F Bb F Gm C
  G: "[g4,c5,e5] ~@4 [g4,bb4,d5] ~ [g4,bb4,d5] ~@3 [g4,c5,e5] ~ [c5,e5] g4 c5 ~@4 [f4,a4,c5] ~ [f4,a4,c5] ~@4 d5 [f4,bb4] f4 [a4,c5] ~", // C Gm C F Bb5 Am
  H: "~@9 [c5,d5,f5]!2 ~ [c5,d5,f5] ~@5 [g4,bb4,d5] ~ [g4,bb4,d5] ~@4 [g4,bb4,d5] ~ [g4,bb4,d5] ~@4", // Dm7 Gm
  I: "~ [e4,bb4,c5] ~ [e4,bb4,c5] ~@4 [e4,bb4,c5] ~ [e4,bb4,c5] ~@5 [f4,a4,c5] c5 [f4,a4] ~@4 [f4,a4,c5] ~ [f4,a4,c5] ~@4 [f4,bb4,c5] ~", // C7 F Fsus4
  J: "[bb4,c5] f4 ~@4 [f4,a4,c5] ~ [f4,a4,c5] ~@4 [f4,a4,c5] ~ [f4,a4,c5] ~@5 [d4,f4,bb4] ~ [d4,f4,bb4] ~@4 [e4,g4,c5] ~ [e4,g4,c5] ~", // Bbsus2 F Bb C
  K: "~@4 [e4,g4] [e4,g4,c5] ~@5 [f4,a4,c5] ~ [f4,a4,c5] ~@4 [f4,bb4,d5] ~ [f4,bb4,d5] ~@5 [e4,g4,c5] ~ [e4,g4,c5] ~@3", // Em C F Bb C
  L: "~ [e4,g4,c5] ~ [e4,g4,c5] ~@5 [f4,bb4,d5] ~ [f4,bb4,d5] ~@4 [f4,bb4,d5] ~ [f4,bb4,d5] ~@4 e4 [bb4,d5] d5 [e4,bb4] ~@4 [e4,bb4,c5]", // C Bb Edim C7
  M: "~ [e4,bb4,c5] ~@5 [f4,a4,c5]!2 ~@5 [g4,bb4,d5] ~ [g4,bb4,d5] ~@4 [f4,bb4,d5] ~ [f4,bb4,d5] ~@5 [e4,bb4,c5] ~ [e4,bb4,c5]", // C7 F Gm Bb C7
  N: "~@4 [f4,bb4,d5] ~ [f4,bb4,d5] ~@5 [f4,bb4,d5]!2 ~@5 [g4,bb4,e5] ~ [g4,bb4,e5] ~@4 g4 [bb4,e5] g4 [bb4,e5] ~@2", // Bb Edim Bbdim
  O: "~@2 [f4,g4,bb4,d5] ~ [f4,g4,bb4,d5] ~@4 [f4,g4,bb4,d5] ~ [f4,g4,bb4,d5] ~@5 [e4,g4,bb4,c5] ~ [e4,g4,bb4,c5] ~@4 [e4,g4,bb4,c5] ~ [e4,g4,bb4,c5] ~@5", // Gm7 C7
  P: "[f4,a4,c5] ~ [f4,a4,c5] ~@4 [f4,bb4,d5] ~ [f4,bb4,d5] ~@4 [g4,e5] bb4 [g4,bb4,e5] ~@5 [g4,bb4,e5] ~ [g4,bb4,e5] ~@4 f4 [a4,c5] [f4,a4,c5]", // F Bb C Edim Am F
  Q: "~@5 [f4,bb4,d5] ~ [f4,bb4,d5] ~@4 [g4,bb4,e5] ~ [g4,bb4,e5] ~@5 [g4,bb4,e5] ~ [g4,bb4,e5] ~@4 [g4,bb4,d5] ~ [g4,bb4,d5] ~@2", // Bb Edim Gm
  R: "~@3 [g4,bb4,d5] ~ [g4,bb4,d5] ~@4 [e4,bb4,c5] ~ [e4,bb4,c5] ~@4 [e4,bb4,c5] ~ [e4,bb4,c5] ~@5 [f4,a4,c5] ~ [f4,a4,c5] ~@4", // Gm C7 F
  S: "[f4,a4,c5] ~ [f4,a4,c5] ~@5 [f4,bb4,c5] ~ [f4,bb4,c5] ~@4 [f4,a4,c5] ~ [f4,a4,c5] ~@5 [f4,a4,c5]!2 ~@5 [d4,f4,bb4] ~", // F Fsus4 F Bb
  T: "[d4,f4,bb4] ~@4 [e4,g4,c5] ~ [e4,g4,c5] ~@5 [e4,g4] ~ [e4,g4,c5] ~@4 [f4,c5] a4 [f4,a4,c5] ~@5 [f4,bb4,d5] d5 [f4,bb4] ~", // Bb C Em C F5 F Bb Bb5
  U: "~@3 [e4,g4,c5] ~ [e4,g4,c5] ~@5 [e4,g4,c5]!2 ~@5 [f4,bb4,d5] ~ [f4,bb4,d5] ~@4 [f4,d5] bb4 [f4,bb4,d5] ~@4", // C Bb Dm Bb
  V: "~ [e4,bb4,d5] ~ [e4,bb4,d5] ~@5 [e4,bb4,c5]!2 ~@5 [f4,a4,c5] ~ [f4,a4,c5] ~@4 [g4,bb4,d5] ~ [g4,bb4,d5] ~@5 [f4,bb4,d5]", // Em7b5 C7 F Gm Bb
  W: "f4 [bb4,d5] ~@4 [e4,bb4,c5] ~ [e4,bb4,c5] ~@4 [f4,bb4,d5] ~ [f4,bb4,d5] ~@5 [f4,bb4,d5] ~ [f4,bb4,d5] ~@4 [g4,bb4,e5] ~ [g4,bb4,e5] ~", // Bb C7 Bb Edim
  X: "~@4 [g4,bb4,e5] g4 [bb4,e5] ~@4 [f4,g4,bb4,d5] ~ [f4,g4,bb4,d5] ~@5 [f4,g4,bb4,d5] ~ [f4,g4,bb4,d5] ~@4 [e4,g4,bb4,c5] ~ [e4,g4,bb4,c5] ~@3", // Edim Bbdim Gm7 C7
  Y: "~ [g4,c5] [e4,bb4] [e4,g4,bb4,c5] ~@5 [f4,a4,c5] ~ [f4,a4,c5] ~@4 [f4,bb4,d5] ~ [f4,bb4,d5] ~@5 [g4,bb4,e5] ~ [g4,bb4,e5] ~@4 [g4,bb4,e5]", // C5 Edim C7 F Bb Edim
  Z: "~ [g4,bb4,e5] ~@5 [f4,a4,c5] [f4,c5] a4 ~@4 [f4,bb4,d5] ~ [f4,bb4,d5] ~@5 [g4,bb4,e5]!2 ~@5 [g4,bb4,e5] ~ [g4,bb4,e5]", // Edim F F5 Bb Edim
  AA: "~@4 g4 [bb4,d5] [g4,bb4,d5] ~@5 [g4,bb4,d5] g4 [bb4,d5] ~@4 [e4,bb4,c5] ~ [e4,bb4,c5] ~@5 [e4,bb4,c5] [e4,c5] bb4 ~@2", // Bb Gm Bb C7 C
  AB: "~@2 [f4,a4,c5] ~ [f4,a4,c5] ~@4 [f4,c5] a4 [f4,a4,c5] ~@5 [f4,bb4,c5] ~ [f4,bb4,c5] ~@4 [f4,a4,c5] ~ [f4,a4,c5] ~@5", // F F5 F Fsus4 F
  AC: "[f4,a4,c5] ~ [f4,a4,c5] ~@4 [d4,f4,bb4] ~ [d4,f4,bb4] ~@5 [e4,g4,c5] ~ [e4,g4,c5] ~@4 [e4,g4] ~ [e4,g4,c5] ~@5 [f4,a4,c5]!2", // F Bb C Em C F
  AD: "~@5 [f4,bb4,d5] ~ [f4,bb4,d5] ~@4 [e4,g4,c5] ~ [e4,g4,c5] ~@5 [e4,g4,c5] ~ [e4,g4,c5] ~@4 [f4,bb4,d5] ~ [f4,bb4,d5] ~@2", // Bb C Bb
  AE: "~@3 [f4,bb4,d5] ~ [f4,bb4,d5] ~@4 [e4,bb4,d5] ~ [e4,bb4,d5] ~@5 [e4,bb4,c5]!2 ~@5 [f4,a4,c5] ~ [f4,a4,c5] ~@4", // Bb Em7b5 C7 F
  AF: "[g4,d5] bb4 [g4,bb4,d5] ~@5 [f4,bb4,d5] ~ [f4,bb4,d5] ~@4 [e4,bb4,c5] ~ [e4,bb4,c5] ~@5 [f4,bb4,d5] ~ [f4,bb4,d5] ~@4 [f4,bb4,d5] ~", // G5 Gm Bb C7 Bb
  AG: "[f4,bb4,d5] ~@4 g4 [bb4,e5] [g4,e5] bb4 ~@4 [g4,bb4,e5] ~ [g4,bb4,e5] ~@4 [f4,g4,bb4,d5] ~ [f4,g4,bb4,d5] ~@5 [f4,g4,bb4,d5] ~ [f4,g4,bb4,d5] ~", // Bb Bbdim C Edim Gm7
  AH: "~@3 [e4,g4,bb4,c5] ~ [e4,g4,bb4,c5] ~@5 [e4,g4,bb4,c5] ~ [e4,g4,bb4,c5] ~@4 [f4,a4,c5] ~ [f4,a4,c5] ~@5 [f4,bb4,d5] f4 [bb4,d5] ~@3", // C7 F Bb
  AI: "~ [g4,bb4,e5] ~ [g4,bb4,e5] ~@4 [g4,bb4,e5] ~ [g4,bb4,e5] ~@5 [f4,a4,c5] ~ [f4,a4,c5] ~@4 [f4,bb4,d5] ~ [f4,bb4,d5] ~@5 [g4,bb4,e5]", // Edim F Bb Edim
  AJ: "~ [g4,bb4,e5] ~@4 [g4,bb4,e5] ~ [g4,bb4,e5] ~@5 [g4,bb4,d5] bb4 [g4,d5] ~@4 [g4,bb4,d5] ~ [g4,bb4,d5] ~@4 [e4,c5] bb4 [bb4,c5] e4", // Edim Gm G5 Gm C Bbsus2
  AK: "~@4 [e4,bb4,c5] ~ [e4,bb4,c5] ~@4 [f4,c5] a4 [f4,a4,c5] ~@5 [f4,a4,c5] ~ [f4,a4,c5] ~@4 [f4,bb4,c5] ~ [f4,bb4,c5] ~@3", // C7 F5 F Fsus4
  AL: "~@2 [f4,a4,c5]!2 ~@5 [f4,a4,c5] ~ [f4,a4,c5] ~@4 f4 [d4,bb4] [f4,bb4] d4 ~@4 [e4,g4,c5] ~ [e4,g4,c5] ~@4 [e4,g4]", // F Gm Bb5 C Em
  AM: "~ [e4,g4,c5] ~@5 [f4,a4,c5] ~ [f4,a4,c5] ~@4 [f4,bb4,d5] ~ [f4,bb4,d5] ~@5 [e4,g4,c5]!2 ~@5 [e4,g4,c5] ~ [e4,g4,c5]", // C F Bb C
})).s("gm_synth_strings_1").gain(0.36)

// chords · piano
const piano = note("<A B C D@2 E F G H I J K L M@2 N O P Q R S@3 T@2 U V W X Y@3 Z AA@2 AB AC AD AE AF>".pickRestart({
  A: "~@4 d5@2 bb4 ~ [c4,g4,e5]@4 c5 [g3,g4] d5 ~@2 [g3,g4,d5]@2 ~@2 bb4 ~ [c4,g4,c5,e5]@2 ~@2 [c4,g4,c5] ~@4, ~@2 g4@4 ~@2 c5 ~@23, ~@4 g3 ~@27", // C G G5 C C5
  B: "f4 ~ [f4,c5]@2 a4 ~ [bb3,f4,bb4,d5]@2 ~ [bb3,f4,bb4] ~ [f3,f4,a4,c5] ~@3 [f3,f4,c5]@3 ~ a4 ~ [bb3,f4,bb4,d5]!2 ~ [f3,f4,a4,c5] ~@4 g4 ~@2, ~@2 f3 ~@29", // F5 Bb Bb5 F F5 Bb F
  C: "~ bb4 ~ [c4,g4,c5,e5]@3 ~ [c4,g4,c5] ~ [g3,g4,bb4,d5] ~@3 [g3,g4,d5]@2 ~ [g4,bb4] ~ [c4,g4,c5,e5] ~@3 [g3,g4,bb4,d5] ~@4 f4 ~@2 [f3,f4,a4,c5] [f3,f4,a4], [g3,g4,d5]@3 b3 ~@9 bb4 ~@18", // C C5 Gm G5 Gm C Gm F …
  D: "[~ [bb3,f4,bb4,d5]@2 ~@2 [f3,f4,a4,c5] ~ [f3,f4,a4,c5] ~@2 [f3,a4,c5]@2 ~@2 f4 ~ [bb3,f4,bb4,d5] ~ [bb3,f4,bb4,d5] ~ [f3,f4,a4,c5] ~@4 g3@2 d5@2 bb4 ~ [c4,g4,c5,e5]@3 ~ c5 [g4,bb4,d5] g3 ~@2 [g3,bb4]@2 ~@2 bb4 ~ [c4,g4,c5,e5]!2 ~ [g3,g4,bb4,d5] ~@5 f4 ~ [f3,f4,c5]@2 a4 ~ [bb3,f4,bb4,d5]@2 ~, ~@10 f4 ~@14 g4@5 ~@10 [g4,d5] ~@23, ~@27 g3 ~@36]/2", // Bb F Bb F C Gm C Gm …
  E: "[f3,f4,a4,c5] ~ [f3,f4,a4,c5] ~@3 [f3,f4,a4,c5] ~@3 f4 [bb3,f4,bb4,d5] ~ [bb3,f4,bb4,d5] ~ [f3,f4,a4,c5] ~@4 g4 ~@2 [g3,g4,bb4,d5] ~@2 [c4,g4,c5,e5]@3 ~@3", // F Bb F Gm C
  F: "[g3,g4,bb4,d5] ~@3 [g4,bb4]@2 ~ g4 ~ [c4,g4,c5,e5] ~ [c4,g4,c5,e5] ~ [g3,g4,bb4,d5] ~@4 f3 ~ c5@2 a4 ~ [bb3,f4,bb4,d5]@3 ~@3 [f3,f4,a4,c5] ~, ~@3 d5@2 ~@13 f4@4 ~@10, ~@4 g3 ~@15 f3 ~@11", // Gm C Gm Bb F
  G: "~ [c4,f4,g4,c5] ~@3 [c4,g4,c5]@2 ~@2 [c4,g4,c5] ~ [c4,e4,g4,c5] ~@2 [g3,g4,bb4,d5] ~@3 [g3,g4,bb4,d5] ~ [g3,g4,bb4,d5] g3 [g4,bb4,d5] [bb4,d5] [g3,g4] ~@2 [g3,g4,bb4,d5] ~@3 [g3,g4,bb4,d5]", // Csus4 C5 C Gm Bb G Gm
  H: "~@3 [g3,bb4,d5] ~ [c4,e4,bb4,c5]!2 ~ [c4,e4,bb4,c5] ~ [c4,bb4,c5] ~ [f3,f4,a4,c5] ~@3 [f3,f4,a4,c5] ~ [f3,f4,a4,c5]!2 ~ [f3,f4,a4,c5] ~@3 [f3,f4,a4,c5] ~@3 [f3,f4,a4,c5] ~@2", // Gm C7 F
  I: "~ [f3,f4,a4,c5] [c4,e4,g4,c5] ~ [c4,e4,g4,c5] ~ [f3,f4,a4,c5] ~@3 [f3,f4,a4,c5] ~@2 f3 [f4,a4,c5] f3 ~ bb4@2 f4@2 d5 ~ [f4,c5] ~@2 [c4,e4,c5] ~@3 [c4,e4,c5] ~, ~@17 [bb3,d4]@4 ~@2 c4@2 ~@7", // F C F F5 C Bb
  J: "[c4,e4,c5] ~ c3 ~ d3 ~ e3 [f3,f4] [a4,c5] ~@2 [f3,f4] ~ a4 ~@2 f4 ~@2 [bb3,d5] c5 [c4,e4] ~@2 [c4,e4,c5] ~@3 [c4,e4,c5] ~ [c4,e4,c5] c3, ~@11 c5@2 ~@2 [bb3,d4,bb4]@3 ~@14", // C F Am F Bb C Bb
  K: "~@2 d3 e3 ~ [d4,bb4]@4 f4@2 d4 ~@2 f4@2 d4 ~ [e4,bb4] ~@3 [c3,e4,bb4]@4 g4 [bb3,e4]@2 g4@2 [c3,e4], ~@5 bb2@8 [bb3,d4,bb4]@4 ~ c3@2 ~@7 bb4@4 ~", // Gm Edim C7 Bbdim C Bb
  L: "~ g3 ~ [f3,c4,a4]@4 f4 c4 ~@3 d4@2 bb3 ~ [c3,g4]@2 ~ bb3@2 e4@2 bb3 ~ bb3@4 e4@2 bb3, ~@10 [bb2,g3,g4]@4 ~@2 e4 ~@2 [c3,g4]@4 ~@2 [c3,g4]@7", // F C5 Eb C5
  M: "[~ f4@3 [bb2,d4]@2 bb3 ~ [bb2,bb3,f4]@2 d4@2 bb3 ~ [c3,bb3] ~@2 [c3,bb3,g4]@2 e4@2 bb3 ~ [c3,bb3,g4]@2 e4@2 d4@3 [a2,bb3,g4]@4 d4 ~ bb3 ~@2 d4@2 bb3 ~ [bb3,g4] ~@3 [c3,bb3,g4]@4 ~@3 e4@2 bb3 ~ f3 ~ [f2,a3,f4]@4, ~ f3 ~@12 g4@2 ~@20 g4@6 ~@9 e4@2 c3@3 ~@8, ~@38 [g2,bb3]@3 ~@2 c3@2 ~@7 g4@5 ~@7, ~@26 bb3 ~@5]/2", // Bb Bb5 C7 Eb C7 F Gm
  N: "[c3,c4] ~ f3 ~@2 f4@2 [c5,d5] ~ [e4,c5] ~@3 [e4,c5]@2 ~@2 [e4,c5] [e4,c5]@3 ~ c3 ~ g3 ~ [f3,c4,a4]@4 ~ [c3,c4], ~@3 [bb2,d4]@4 ~@2 c3@2 ~@2 c3 ~@4 c3 ~@11 [f2,f4]@2, ~@2 bb4 ~@13", // C Csus2 C F C Bb F
  O: "~ [d4,bb4]@2 f4@2 d5 ~ [c3,e4,c5]@2 ~@2 c5@2 ~ [c3,e4,c5] ~ [c3,e4,c5]@3 ~@3 [e4,bb4] ~ [g3,g4,bb4,d5] ~@2 [g3,g4,bb4,d5] ~ [g3,g4,bb4,d5] ~ [g3,g4,bb4,d5], ~ bb2@5 ~@4 [c3,e4]@2 ~@20", // Gm C Edim Gm C
  P: "~ [g3,g4,bb4,d5] ~@3 [g3,g4,bb4,d5] ~@2 [g3,g4,bb4,d5] ~@3 [g3,bb4,d5] ~ [c4,e4,bb4,c5] [c4,e4,c5] bb4!2 [c4,e4,c5] [c4,bb4,c5] ~ [f3,f4,a4,c5] ~@3 [f3,f4,a4,c5] ~ [f3,f4,a4,c5] ~ [f3,f4,a4,c5]!2 ~", // Gm C7 C C7 F
  Q: "~@2 [f3,f4,a4,c5] ~@3 [f3,f4,a4,c5] ~@3 [f3,f4,a4,c5] ~ [c4,e4,g4,c5]!2 ~ [f3,f4,a4,c5] ~@3 [f3,f4,a4,c5] ~@3 [f3,f4,a4,c5] ~ f3 ~@2 f4@2 d5 ~, ~@13 [bb3,d4]@2 ~, ~@27 bb4@2 ~@3", // F C F Bb
  R: "[f4,c5] ~@2 e4 [c4,c5] ~@3 [c4,e4,c5]!2 ~ c3 ~ d3 ~ e3 ~ [f3,f4,a4,c5] ~@3 [f3,f4] a4 ~ [bb3,d4,bb4]@2 f4 ~ [bb3,d5] ~ [c4,e4,c5] ~, c4@2 ~@19 c5@2 ~@9", // F5 C F Bb C
  S: "[~ [c4,e4,c5] ~@3 [c4,e4,c5] ~ [c4,e4,c5] ~ c3 ~ d3 ~ e3 [d4,bb4]@4 f4@2 d4 ~@2 f4@3 d4 [e4,bb4] ~@3 [c3,e4,bb4]@4 g4 ~@2 g4@3 [c3,e4] g3 ~ [c4,a4]@4 f4 ~ c4 ~@2 d4@2 bb3 ~ [c3,g4]@2 ~@2 bb3@2 e4@2 bb3 bb3@3 ~ e4@2 bb3 ~ f4@4 ~ bb3 ~ [bb2,bb3,f4]@2 d4@2 bb3 ~ [c3,bb3,g4] ~@2 [c3,bb3,g4]@3 ~ bb3 ~, ~@14 bb2@8 [bb3,d4,bb4]@4 ~ c3@2 ~@8 [bb3,e4,bb4]@3 ~@4 f3@3 ~@4 [bb2,g3]@5 ~@5 [c3,g4]@4 ~ [c3,g4]@7 ~ f3 ~@3 [bb2,d4]@2 ~@16, ~@52 g4@3 ~@2 e4 ~@35 e4@2 ~]/3", // C Gm Edim C7 C F C5 Bb5 …
  T: "[[c3,bb3,g4]@2 e4@2 d4@3 ~ [bb3,g4]@3 d4 ~ bb3 ~ [g2,bb3]@2 d4@2 bb3 ~ [bb3,g4] ~@2 [c3,bb3,g4]@4 e4@2 [c3,bb3]@2 e4@2 bb3 f3 ~ [f2,f4]@4 [c3,c4] ~ f3 ~@2 f4@2 ~ [c5,d5] c5 e4 ~@2 [c3,e4,c5]@2 ~@2 [e4,c5] ~ [c3,e4,c5]@3 c3, ~@8 a2@2 ~@3 g4@5 ~@3 c3@2 ~@7 g4@5 ~@2 a3@3 ~@5 [bb2,d4]@4 ~ c3@2 ~@12, ~@45 bb4@2 ~@17]/2", // C7 Eb Gm Eb C7 F C Csus2 …
  U: "~ g3 ~ [f3,c4,a4]@4 [f2,f4]@2 [c3,c4] ~@2 f4@2 d5 ~ [c3,e4,c5]@2 ~@2 [e4,c5]@2 ~@2 [c3,e4,c5] [c3,e4,c5]@3 ~@3 [e4,bb4], ~@10 [bb2,d4]@4 ~@5 c3@2 ~@11, ~@11 bb4@2 ~@19", // F C Edim Bb
  V: "~ [g3,g4,bb4,d5] ~@3 [g3,g4,bb4,d5]!2 ~ [g3,g4,bb4,d5] ~ [g3,g4,bb4,d5] ~@3 [g3,g4,bb4,d5] ~@2 [g3,g4,bb4,d5] ~@3 [g3,bb4,d5] ~ [c4,e4,bb4,c5] ~ [c4,e4,bb4,c5] ~ [c4,e4,bb4,c5] ~ [c4,bb4,c5] ~ [f3,f4,a4,c5]", // Gm C7 F
  W: "~@2 [f3,f4,a4,c5] ~ [f3,f4,a4,c5] ~ [f3,f4,a4,c5] ~ [f3,f4,a4,c5] ~@3 [f3,f4,a4,c5] ~@2 [f3,f4,a4,c5] ~@3 [f3,f4,a4,c5] ~ [c4,e4,g4,c5]!2 ~ [a4,c5] [f3,f4] ~@2 [f3,f4,a4,c5] ~@3", // F C Am F
  X: "[f3,f4,a4,c5] ~ f3 ~@2 f4@2 d5 ~ [f4,c5] ~@3 [c4,e4,c5] ~@3 [c4,e4,c5] c5 [c4,e4] c3 ~ d3 ~ e3 ~ [f3,f4,a4,c5] ~@3 [f3,f4] ~, ~@3 [bb3,d4]@4 ~@2 c4@2 ~@21, ~@2 bb4 ~@12 c5", // F F5 C F Bb
  Y: "[a4 [bb3,d4,bb4]@2 f4 ~ [bb3,d5] ~ [c4,e4,c5] ~@3 [c4,e4,c5] ~@2 [c4,e4,c5] ~ [c4,e4,c5] ~ c3 ~ d3 ~ e3 ~@4 f4@2 d4 ~@3 f4@2 d4 ~ [e4,bb4] ~@2 [c3,e4,bb4]@4 g4 ~ e4@2 g4@2 [c3,e4] ~ g3 [f3,c4,a4]@4 f4 ~ c4 ~@3 d4@2 bb3 e4 g4@2 ~ bb3@2 e4@2 bb3 ~@4 e4@2 bb3 ~ f4@4 [bb2,d4]@2 bb3 ~@2 d4@2 bb3 ~, ~@24 bb2@10 ~@3 c3@2 ~@7 bb3 ~@14 [bb2,g3,g4]@4 ~ c3@2 ~@2 [c3,g4]@4 ~ bb3@4 ~@4 f3 ~@6 bb3@2 ~@4, ~@24 [d4,bb4]@6 ~ [bb3,d4,bb4]@4 ~@11 bb4@4 ~@25 g4@7 ~@9 f4@3 ~@2, ~@76 c3@5 ~@9 bb2@4 ~@2]/3", // Bb C Edim C7 C F Bb Eb …
  Z: "[c3,bb3] ~@3 [c3,g4]@2 e4@2 bb3 [c3,bb3]@2 e4@2 d4@3 ~ [a2,bb3,g4]@4 d4 ~ bb3 [g2,bb3]@2 d4@2 bb3 ~ [bb3,g4] ~, g4@2 ~ bb3@3 ~@3 g4@4 ~@10 g4@5 ~@2 c3@2", // C7 C5 C7 Eb Gm Eb
  AA: "[~@2 [c3,g4]@3 e4@2 [c3,bb3]@2 e4@2 bb3 ~ f3 ~@4 [c3,c4] ~ f3 ~ bb4@2 f4@2 [c5,d5] ~ [c3,e4]@2 ~ [c3,e4,c5]@2 ~@2 [e4,c5] ~ [c3,e4,c5]@3 ~ c3 ~ g3 [f3,c4,a4]@4 [f2,f4]@2 [c3,c4] ~@2 f4@2 d5 ~ [c3,e4,c5]@2 ~@2 [c3,e4,c5]@2 ~, ~ bb3@4 ~@2 g4@5 ~@2 f4@5 ~@9 c5 ~@35, ~@14 a3@3 ~@47, ~@15 f2@5 ~@2 [bb2,d4]@4 ~@26 [bb2,d4,bb4]@4 ~@8]/2", // C5 C7 C Csus2 C F C Bb
  AB: "~ [c3,e4,c5] ~ [c3,e4,c5]@3 ~@2 [e4,bb4] ~ [g3,g4,bb4,d5] ~@3 [g3,g4,bb4,d5] ~ [g3,g4,bb4,d5] ~ [g3,g4,bb4,d5]!2 ~@3 [g3,g4,bb4,d5] ~@3 [g3,g4,bb4,d5] ~@3 [g3,bb4,d5]", // C Edim Gm
  AC: "[c4,e4,c5] bb4 [c4,e4,bb4,c5] ~ [c4,e4,bb4,c5] ~ [c4,bb4,c5] ~ [f3,f4,a4,c5] ~@3 [f3,f4,a4,c5]!2 ~ [f3,f4,a4,c5] ~ [f3,f4,a4,c5] ~@3 [f3,f4,a4,c5] ~@2 [f3,f4,a4,c5] ~@3 [f3,f4,a4,c5] ~ [c4,e4,g4,c5] ~", // C C7 F C
  AD: "[c4,e4,g4,c5] ~ [f3,f4,a4,c5] ~@3 [f3,f4,a4,c5] ~@2 [f3,f4,a4,c5] ~ f3 ~ bb4@2 f4@2 d5 ~ [f4,c5] ~@2 [c4,e4,c5] ~@3 [c4,e4,c5] ~ [c4,e4,c5] c3 ~@2, ~@13 [bb3,d4]@4 ~@2 c4@2 ~@11", // C F F5 C Bb
  AE: "d3 e3 ~ [f3,f4,a4,c5] ~@3 [f3,f4] ~ a4 ~@2 f4 ~ [bb3,d5] ~ [c4,e4,c5] ~@3 [c4,e4,c5] ~@3 [c4,e4,c5]!2 ~ c3 ~ d3 ~ e3, ~@7 c5@2 ~ bb4@2 ~@20, ~@11 [bb3,d4]@3 ~@18", // F Bb C Bb
  AF: "~ [a3,f4] ~@2 a4@2 ~@2 [d4,bb4]@2 f4 ~ d5 ~ [c3,e4,c5]@2 ~@16, ~ [f2,f3]@5 ~@2 bb2@5 ~@19, ~@4 c4 ~@27", // Dm Gm C F
})).s("gm_piano").gain(0.36)

// other · trumpet
const trumpet = note("<A B C@3 D E F G H I@2 J K@2 L@3 M N@2 O P Q@3 R S T@3 U V W X Y Z AA@2 AB>".pickRestart({
  A: "g2@5 ~ d3@2 c3@3 ~@2 g2@2 ~@2 g2@2 ~@2 d3@2 c3 c3@2 d3@2 c3@2 f2@2",
  B: "~@5 c3@3 ~@3 f2@2 ~@2 f2@2 ~@3 c3 ~ c3@2 d3@2 c3 ~ g2@4, ~@4 d3@2 ~@13 d3@2 ~@11",
  C: "[~ d3@2 c3 ~@5 g2@2 ~ g2@2 ~@2 d3@2 c3 ~ c3@2 d3@2 c3@2 f2@3 ~@2 d3@2 c3@3 ~@3 f2@2 ~ f2@2 ~@2 d3@2 c3 ~ c3 ~ f3@3 g2@4 ~@2 d3@2 c3@4 ~ g2@2 ~@2 g2@2 ~@3 c3 ~ c3@2 d3@2 c3@2 f2@4 ~@3 c3@3 ~, ~@76 d3@2 ~@13 d3@2 ~@3]/3",
  D: "~@2 f2@2 ~@2 f2@2 ~@2 d3 c3 ~ c3@2 d3@2 c3@2 g2@3 ~@2 d3@2 c3@3 ~@3",
  E: "g2@2 ~ g2@2 ~@2 d3@2 c3 ~ c3@2 d3@2 ~ f2@4 ~@2 d3@2 c3@3 ~ d3 f2@2 ~, ~@15 c3@2 ~@15",
  F: "~ c2@3 ~ c2@2 ~@2 c2 e2 ~ e2@2 g2@4 ~@2 g2@2 d3@3 ~@2 d3@2 c3@3",
  G: "~@3 c3@2 c2@3 ~@2 c2 ~ f2@3 ~@2 f2@2 c3@3 ~@3 c3@2 c2@3 ~@2",
  H: "c2@2 c3@3 ~@3 c3@2 f2@3 ~@2 f2@2 bb2@3 ~@4 c3@3 ~@3 c3 ~, ~@23 bb2@2 ~@7",
  I: "[c3 ~ c2 d2 ~ e2 ~ f2@3 ~@3 f2@2 bb2@3 ~@2 bb2 ~ c3@2 ~@4 c3 ~ c3 c3@2 d3@2 e3@2 bb2@3 ~@4 f3@4 ~@2 f3 ~ c3@4 ~ c3@2 c2@4 ~, ~@43 bb2@2 ~@19]/2",
  J: "~@3 f2@4 ~ f2@2 bb2@4 ~@2 bb2@2 c3@3 ~@2 c3@2 c2@3 ~@4",
  K: "[~ bb2@3 ~@2 bb2 ~ bb2@4 ~ bb2@2 c3@3 ~@3 c3@2 c2@4 ~@3 g2@4 ~@2 g2 ~ g2@4 ~ g2@2 c3@3 ~@3 c3!2 ~ c2@2 d2@2 e2@2 f2@4]/2",
  L: "[~ f2@2 bb2@4 ~@2 bb2@2 c3@3 ~@2 c3 ~ c3@2 c2@2 d2@2 e2@2 f2@4 ~ f2@2 bb2@4 ~@3 c3@4 ~@2 c3 ~ c3@2 c2@2 ~ e2 ~@2 g2@4 ~ g2@2 d3@4 ~ d3@2 c3@3 ~@3 c3@2 c2@3 ~@2 c2 ~ f2@3 ~@3 f2@2 c3@3, ~@39 bb2@2 ~@11 d2@2 ~@42]/3",
  M: "~@2 c3@2 c2@3 ~@2 c2@2 ~ c3@3 ~@2 c3@2 f2@3 ~@4 bb2@3 ~@3, ~@25 f2@2 ~@5",
  N: "[bb2@2 c3@3 ~@2 c3 ~ c3 ~ c2 ~ d2 ~ e2 ~ f2@3 ~@2 f2@2 bb2@3 ~@2 bb2 ~ c3@2 ~@4 c3 ~ c3 ~@2 d3@2 e3@2 bb2@3 ~@3 bb2 ~ f3@3 ~@2 f3 ~ c3@3, ~@41 c3@2 ~@21]/2",
  O: "~@3 c3@2 c2@3 ~@4 f2@4 ~@2 f2@2 bb2@4 ~ bb2@2 c3@3 ~@2",
  P: "c3@2 c2@3 ~@5 bb2@3 ~@2 bb2 ~ bb2@4 ~@3 c3@4 ~@2 c3@2, ~@23 bb2@2 ~@7",
  Q: "[c2@4 ~@3 g2@4 ~@2 g2 ~ g2@4 ~ g2@2 c3@3 ~@3 c3 ~ c3 c2@2 d2@2 e2@2 f2@4 ~@2 f2@2 bb2@4 ~ bb2@2 c3@3 ~@2 c3 ~ c3@2 c2@2 d2@2 e2@2 f2@4 ~ f2@2 bb2@4 ~@2 bb2@2 c3@4 ~ c3 ~ c3@2 c2@2 d2@2 e2]/3",
  R: "~ g2@4 ~ g2@2 d3@3 ~@4 c3@3 ~@3 c3@2 c2@3 ~@3 c2 f2@2, ~@7 d3 ~@8",
  S: "~@4 f2@2 c3@3 ~@2 c3@2 c2@3 ~@3 c2@2 c3@3 ~@2 c3@2 f2@3 ~",
  T: "[~@2 f2@2 bb2@3 ~@2 bb2@2 c3@3 ~@3 c3!2 ~ c2 ~ d2 ~ e2 ~ f2@3 ~@2 f2@2 bb2@3 ~@3 bb2 ~ c3@2 ~@3 c3 ~ c3 ~ c3@2 d3@2 e3@2 bb2@3 ~@2 bb2@2 f3@4 ~@2 f3 c3@4 ~@2 c3@2 c2@3 ~@4 f2@4 ~@2 f2@2 bb2@3]/3",
  U: "~@2 bb2@2 c3@3 ~@4 c2@4 ~@4 bb2@3 ~@2 bb2 ~ bb2@4 ~@2, ~@5 c3 ~@10",
  V: "bb2@2 c3@4 ~ c3@2 c2@4 ~@4 g2@4 ~ g2 ~ g2@4 ~@2 g2@2",
  W: "c3@3 ~@2 c3 ~ c3 ~ c2@2 d2@2 ~ f2@5 ~ f2@2 bb2@4 ~ bb2@2 c3@3, ~@13 e2@2 ~@17",
  X: "~@3 c3 ~@2 c2@2 ~ d2@2 ~ f2@4 ~@3 bb2@4 ~@2 bb2@2 c3@4 ~, ~@5 c3@2 ~@4 e2@2 ~@5 f2@2 ~@12",
  Y: "~ c3 c3@2 c2@2 d2@2 e2 ~ g2@3 ~@2 g2 ~@2 d3@2 ~@3 d3@2 c3@3 ~@2 c3@2",
  Z: "c2@2 ~@4 g2@2 f2@4 ~ f2@2 c3@2 ~@5 c2@2 ~@4 c2@2 c3@2, ~@21 c3@2 ~@9",
  AA: "[~@3 g2@2 ~ f2@4 ~ f2@2 bb2@3 ~@2 bb2@2 c3@2 ~@4 c3@2 ~ c2@2 d2@2 e2@2 f2@2 ~@4 f2@2 bb2@3 ~@2 bb2@2 c3@2 ~@3 c3 ~ c3 ~ c2 ~ g2 ~ c3]/2",
  AB: "~ f2@3 ~@2 a2 ~ bb2 ~ b2@2 ~@2 c3@4 ~@3 f3@2 f2@4 ~@5",
})).s("gm_trumpet").gain(0.36)

// 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 F S T U V W X Y Z AA C AB AC AD AE AF AG AH AI AJ AK AL
>`.pickRestart({
  A: "x ~@10 x ~@3 x ~@14 x ~", B: "~@9 x ~@3 x ~@4 x ~@9 x ~@3", C: "~@7 x ~@3 x ~@14 x ~@5",
  D: "~@5 x ~@2 x ~@14 x ~@8", E: "~@2 x ~@3 x ~@14 x ~@10", F: "x ~@3 x ~@4 x ~@9 x ~@10 x ~",
  G: "~ x ~@11 x ~@2 x ~@10 x ~@3 x", H: "~@12 x ~ x ~@10 x ~@3 x ~@2", I: "~@12 x ~@10 x ~@3 x ~@4",
  J: "x ~@8 x ~@11 x ~@2 x ~@7", K: "~@7 x ~@10 x ~@3 x ~@9", L: "~@5 x ~@5 x!2 ~@7 x ~@4 x ~ x ~@4",
  M: "~@3 x ~@4 x ~ x ~@6 x ~@5 x ~ x ~@6", N: "x ~@5 x ~ x ~@6 x ~@5 x ~ x ~@6 x ~",
  O: "~@4 x!2 ~@7 x ~@5 x!2 ~@7 x ~@3", P: "~ x ~ x ~@5 x ~@3 x ~@2 x ~ x ~@7 x ~@4 x",
  Q: "~ x ~@5 x ~@2 x ~@3 x ~ x ~@6 x ~@8", R: "~@3 x ~@2 x ~@14 x ~@10", S: "~@2 x ~@13 x ~@11 x ~@2 x",
  T: "~@14 x ~@5 x ~ x ~@6 x ~@2", U: "~@3 x!2 ~@7 x ~@4 x ~ x ~@7 x ~@4", V: "x ~ x ~@7 x ~@4 x ~ x ~@6 x ~@5 x ~",
  W: "x ~@6 x ~@5 x ~ x ~@6 x ~@5 x ~ x ~", X: "~@5 x ~@5 x ~ x ~@4 x ~@3 x ~@2 x ~ x ~@4",
  Y: "~@3 x ~@4 x ~ x ~@5 x ~@2 x ~@3 x ~ x ~@6", Z: "~ x ~@10 x ~@2 x ~@14 x ~", AA: "~@9 x ~@3 x ~@5 x ~@8 x ~@3",
  AB: "~@5 x ~@3 x ~@13 x ~@5 x ~ x", AC: "~@6 x ~@5 x ~ x ~@6 x ~@5 x ~ x ~@2",
  AD: "~@4 x ~@5 x!2 ~@7 x ~@4 x ~ x ~@5", AE: "~@2 x ~@4 x ~ x ~@7 x ~@4 x ~ x ~@6 x",
  AF: "~@5 x ~ x ~@6 x ~@5 x ~ x ~@4 x ~@3 x", AG: "~@3 x ~ x ~@6 x ~@5 x!2 ~@5 x ~@3 x ~@2",
  AH: "x ~ x ~@7 x ~@10 x ~@3 x ~@6", AI: "~@7 x ~@11 x ~@2 x ~@5 x ~@3", AJ: "~@5 x ~@10 x ~@3 x ~@10 x",
  AK: "~@3 x ~@10 x ~@3 x ~@12 x", AL: "~ x ~@6 x ~ x ~@3 x ~@17",
})).gain(0.41)

// drums · rim
const rim = s("rim").struct("<A B C D E F G H I J K ~@5 L M N G O ~@5 P Q R S ~@5 T U V W ~>".pickRestart({
  A: "~@4 x ~@4 x ~@3 x ~@3 x ~@5 x ~@8", B: "~@2 x ~@4 x ~@3 x ~@3 x ~@4 x ~@10 x",
  C: "~@5 x ~@3 x ~@2 x ~@5 x ~@10 x ~@2", D: "~@3 x ~@2 x ~@3 x ~@5 x ~@10 x ~@4",
  E: "x ~@3 x ~@3 x ~@4 x ~@11 x ~@4 x ~", F: "~@2 x ~@3 x ~@4 x ~@10 x ~@5 x ~@3",
  G: "x ~@2 x ~@5 x ~@10 x ~@5 x ~@2 x ~@2", H: "~ x ~@5 x ~@10 x ~@4 x ~@3 x ~@3 x",
  I: "~@4 x ~@10 x ~@5 x ~@3 x ~@3 x ~@2", J: "~@2 x ~@10 x ~@5 x ~@3 x ~@2 x ~@5",
  K: "x ~@10 x ~@5 x ~@2 x ~@3 x ~@4 x ~@2", L: "~@27 x ~@4", M: "~ x ~@2 x ~@3 x ~@5 x ~@10 x ~@4 x ~",
  N: "~@2 x ~@3 x ~@4 x ~@10 x!2 ~@4 x ~@3", O: "~ x ~@5 x ~@24", P: "~@4 x ~@5 x ~@2 x ~@3 x ~@5 x ~@8",
  Q: "~@2 x ~@5 x ~@2 x ~@3 x ~@5 x ~@10", R: "x ~@4 x ~@3 x ~@3 x ~@4 x ~@10 x ~@2", S: "~@3 x ~@3 x ~@2 x ~@5 x ~@15",
  T: "~@13 x ~@5 x ~@3 x ~@3 x ~@4", U: "x ~@10 x ~@5 x ~@3 x ~@2 x ~@5 x ~", V: "~@9 x ~@4 x ~@3 x ~@3 x ~@4 x ~@4",
  W: "~@7 x ~@4 x ~@3 x ~@3 x ~@4 x ~@6",
})).gain(0.46)

// drums · snare
const snare = s("sd").struct("<~@11 A B C D E F ~@3 G H I J K L ~@3 M N O P Q R S ~@4>".pickRestart({
  A: "~@9 x ~@6 x ~@6 x ~@7 x", B: "~@6 x ~@7 x ~@6 x ~@7 x ~@2", C: "~@4 x ~@6 x ~@7 x ~@6 x ~@5",
  D: "~@2 x ~@6 x ~@7 x ~@6 x ~@7", E: "x ~@6 x ~@12 x ~ x ~ x ~@4 x ~@2", F: "~@5 x ~@12 x ~ x!2 ~@10",
  G: "~@18 x ~@6 x ~@6", H: "~ x ~@6 x ~@7 x ~@6 x ~@7 x", I: "~@6 x ~@6 x ~@7 x ~@6 x ~@3",
  J: "~@4 x ~@6 x ~@6 x ~@7 x ~@5", K: "~ x ~@7 x ~@6 x ~@12 x ~ x", L: "~ x ~@4 x ~@7 x ~@12 x ~ x!3", M: "~@27 x ~@4",
  N: "~@3 x ~@6 x ~@6 x ~@7 x ~@6", O: "x ~@7 x ~@6 x ~@7 x ~@6 x ~", P: "~@5 x ~@7 x ~@6 x ~@7 x ~@3",
  Q: "~@3 x ~@7 x ~@6 x ~@6 x ~@6", R: "~@7 x!2 ~ x ~@5 x ~@6 x ~@8", S: "~@4 x ~ x!3 ~@23",
})).gain(0.41)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@15 A B ~@7 C D ~@7 E F G ~@4>".pickRestart({
  A: "~@13 x!2 ~ x ~ x ~@13", B: "~@5 x!4 ~@7", C: "~@22 x ~ x!2 ~ x ~@4", D: "~@19 x ~ x ~ x ~ x ~@6", E: "~@31 x",
  F: "~ x ~ x ~ x ~@23 x ~ x", G: "~ x!2 ~@29",
})).gain(0.15)

// drums · clap
const clap = s("cp").struct("<~@11 A B C D E F ~@3 G H I J K L ~@3 M N O P Q H R ~@4>".pickRestart({
  A: "~@9 x ~@6 x ~ x ~@4 x ~@7 x", B: "~ x ~@4 x ~@7 x ~ x ~@4 x ~@7 x ~ x", C: "~@4 x ~@6 x ~ x ~@5 x ~@6 x ~ x ~@3",
  D: "~@2 x ~@6 x ~ x ~@5 x ~@6 x ~ x ~@5", E: "x ~@6 x ~ x ~@4 x ~@7 x ~ x ~@4 x ~@2",
  F: "~@5 x ~ x ~@4 x ~@7 x!2 ~@10", G: "~@18 x ~@6 x ~ x ~@4", H: "~ x ~@6 x ~ x ~@5 x ~@6 x ~ x ~@5 x",
  I: "~@6 x ~ x ~@5 x ~@6 x ~ x ~@4 x ~@3", J: "~@4 x!2 ~@5 x ~@7 x!2 ~@5 x ~@5",
  K: "~ x ~ x ~@5 x ~@6 x ~ x ~@5 x ~@6 x", L: "~ x ~@5 x ~@6 x ~ x ~@5 x ~@6 x ~ x", M: "~@27 x ~@4",
  N: "~@3 x!2 ~@5 x ~@6 x ~ x ~@5 x ~@6", O: "x ~ x ~@5 x ~@6 x ~ x ~@5 x ~@6 x ~",
  P: "x ~@4 x ~@7 x ~ x ~@4 x ~@7 x ~ x ~", Q: "~@3 x ~@7 x ~ x ~@4 x ~@6 x ~ x ~@4", R: "~@3 x!2 ~@11",
})).gain(0.46)

// drums · hihat
const hihat = s("hh").struct("<~@11 A B C D E F ~@3 G H I J K L ~@3 M N O P Q R S ~@2 T ~>".pickRestart({
  A: "~@5 x ~ x ~@3 x ~ x!2 ~@5 x ~ x ~@4 x ~ x ~@2", B: "~@3 x ~ x ~@2 x ~ x ~ x ~@4 x ~ x ~@3 x ~ x ~ x ~@4",
  C: "~ x!2 ~@3 x ~ x ~ x ~@4 x ~ x ~@3 x ~ x ~ x ~@4 x ~", D: "x ~@3 x ~ x!2 ~@5 x ~ x ~@3 x!2 ~ x ~@5 x ~ x ~",
  E: "~@2 x!2 ~ x ~@5 x ~ x ~@2 x ~ x ~ x ~@5 x!2 ~@3 x", F: "~ x ~ x ~@5 x ~@4 x ~ x ~ x ~@13",
  G: "~@14 x ~ x ~@3 x ~ x!2 ~@5 x ~ x", H: "~@4 x ~ x ~@5 x ~ x ~@3 x!2 ~ x ~@5 x ~ x ~@2",
  I: "x ~ x ~ x ~@5 x!2 ~@3 x ~ x ~ x ~@4 x ~ x ~@3 x ~", J: "x ~ x ~@4 x ~ x ~@3 x ~ x ~ x ~@4 x ~ x ~@3 x ~ x ~",
  K: "x ~@4 x ~ x ~@3 x ~ x!2 ~@5 x ~ x ~@2 x ~@2 x!2 ~@2", L: "~@3 x ~ x ~@2 x ~ x ~ x ~@5 x ~@4 x ~ x ~ x ~@4",
  M: "~@23 x ~ x ~@3 x ~ x", N: "~ x ~@4 x ~ x ~@5 x ~ x ~@4 x ~ x ~@3 x ~ x!2 ~",
  O: "~@4 x ~ x ~@3 x!2 ~ x ~@5 x ~ x ~@3 x!2 ~ x ~@3", P: "~@2 x ~ x ~@2 x ~ x ~ x ~@5 x!2 ~@3 x ~ x ~ x ~@5",
  Q: "x!2 ~@3 x ~ x ~ x ~@4 x ~ x ~@3 x ~ x ~ x ~@4 x ~ x", R: "~@3 x ~ x ~ x ~@4 x ~ x ~@3 x ~ x!2 ~@5 x ~@4",
  S: "~ x!2 ~ x ~@5 x ~@14 x ~@6", T: "~@20 x ~@6 x ~@3 x",
})).gain(0.36)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct("<~@11 A ~@4 B ~@4 C ~@3 D ~@4 E ~@3 F G H I J ~>".pickRestart({
// … 84 more lines