Strudelify

Itsy Bitsy Teenie Weenie

Brian Hyland

KeyG majorTempo136 bpm
0:00/0:00
// Itsy Bitsy Teenie Weenie — Brian Hyland
// 136 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 1 "BASS S-330" named as a bass, played on electric bass finger (its piano patch is not one); ch 5 "BRASS D-50" named as a brass, played on brass section (its ocarina patch is not one); ch 3 "PIANO MKS-20" named as a piano, played on piano (its brass section patch is not one)
// note: Full arrangement: all 96 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(136/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 · electric bass finger · "BASS S-330"
const bass = note(`<
  A B C D E F G H I J ~ K L M N O P Q R S A B T D E F G U I J ~ K V M N W P X R S A Y C D E F G H I J ~ K L M N W P Q Z
  K AA AB AC AD AE N ~ L M N W P Q R S ~ L M N W P X R S ~ V M N AF P Q R S A B AG
>`.pickRestart({
  A: "c3@2 ~@2 e3@2 ~@2 g3@3 ~ c4 ~@2 c4", B: "d4 ~ c4 ~ b3 ~ a3 ~ g3 ~@7", C: "c3@4 ~@2 g2@4 ~@2 c3@3 ~",
  D: "d3@4 ~@2 g2@6 ~@2 g2 ~", E: "d3@4 ~@2 g2@5 ~ d3@2 ~@2", F: "c3@4 ~@2 g2@5 ~ g2@2 ~@2",
  G: "c3@4 ~@2 c3 ~ a#2@4 ~@2 a#2 ~", H: "f2@4 ~@2 f3@5 ~ f2@2 ~@2", I: "c3@4 ~@2 c3 ~ g2@4 ~@2 g2 ~", J: "c3 ~@15",
  K: "c3 ~@7", L: "g2@4 ~@2 g3@5 ~ d3@2 ~@2", M: "c3@2 ~ e3@3 g3 ~", N: "g2@4 ~@2 d3@5 ~ g2@3 ~",
  O: "c3@4 ~@2 c3 ~ e3@3 ~ f3@2 f#3 ~", P: "g3@4 ~@2 d3@5 ~ g2@3 ~", Q: "c3@4 ~@2 c3@5 ~ c3@2 ~@2",
  R: "g2@4 ~@2 g3@5 ~ g3@3 ~", S: "g2@4 ~@2 g2 ~ c3@2 ~@6", T: "c3@4 ~@2 g2@5 ~ c3@3 ~", U: "f2@4 ~@2 f3@5 ~ f2@3 ~",
  V: "g2@4 ~@2 g3@5 ~ d3@3 ~", W: "c3@4 ~@2 c3 ~ e3@3 ~ f3 ~ f#3 ~", X: "c3@4 ~@2 c3@5 ~ c3@3 ~",
  Y: "d4 ~ c4 ~ b3 ~ a3 ~ g3@2 ~@6", Z: "g2@4 ~@2 g2@2 ~@2 g2 ~ a2 ~ b2 ~", AA: "g2@2 ~ d3 ~@2 g3 ~",
  AB: "g2@2 ~ g3@2 ~ g2 ~", AC: "c3@4 ~@2 e3@5 ~ g3@3 ~", AD: "c3@4 ~@2 c3@4 ~@2 b2 ~ a2 ~",
  AE: "g2@4 ~@2 d3@5 ~ g3@3 ~", AF: "c3@4 ~@2 c3 ~ e3@4 f3 ~ f#3 ~", AG: "c3",
})).s("gm_electric_bass_finger").gain(0.32).pan(0.4)

// other · soprano sax · "FANTASY D-110"
const soprano_sax = note(`<
  A B ~@10 C D E F G H I J A B ~@10 C K E F G H I J A B ~@10 L M E F G H N O P Q R S T U V C D E F G H I J ~ C D E F C H
  I J ~ C D E F C H I J A B W
>`.pickRestart({
  A: "c5 ~@3 e5 ~@3 g5 ~@3 c6 ~@2 c6", B: "d6 ~ c6 ~ b5 ~ a5 ~ g5 ~@7", C: "~@2 g4 ~ b4 ~ d5 ~@3 d5 ~@3 d5 ~",
  D: "~@2 c5 ~ e5 ~ g5 ~@9", E: "~@2 g4 ~@3 b4 ~ d5@3 ~@5", F: "e5 ~ d5 ~ c5 ~ b4@3 ~ a4 ~@3 [g4,a4] ~",
  G: "~@2 g4 ~ b4@2 d5 ~@3 d5 ~@3 d5 ~", H: "~@2 c5 ~ e5 ~ g5 ~@3 g5 ~@5", I: "~@2 g4 ~ b4 ~ d5@4 d5 ~@5",
  J: "~@2 d5@2 c5 ~ b4 ~ c5 ~@7", K: "~@2 c5 ~ e5@2 g5 ~@9", L: "~@2 g4 ~ g5 ~ f5 ~@7 c5 ~",
  M: "~@2 c5 ~ a5@2 g5 ~@9, ~@4 g5 ~@11", N: "~@2 g4 ~ b4 ~ d5@2 ~@2 d5@2 c5@2 b4 ~",
  O: "c5 ~@3 c6 ~ c6 ~ c6 ~ c6 ~ c6 ~ c6 ~", P: "b4@3 ~ d5 ~@11", Q: "~@4 g5 ~ g5 ~ g5 ~ g5@2 a5 ~ g5 ~", R: "e5 ~@15",
  S: "~@4 c5@2 c5 ~ c5 ~ c5 ~ c5 ~ c5 ~", T: "b4@4 d5 ~@11", U: "~@4 g5 ~ g5 ~ g5 ~ g5@2 f5 ~ d5 ~", V: "c5 ~@7",
  W: "[c4,c5]", // C
})).s("gm_soprano_sax").gain(0.25).pan(0.3)

// chords · brass section · "BRASS D-50"
const brass_section = note(`<
  A B C D E F@2 G H@2 ~ I J K L@3 M N O P B C D Q R@2 G H@2 ~ S T K L@3 U N O P B C D V W@2 G H@2 ~ S X Y Z AA AB AC AD
  AE AF AG AH@2 AI@2 S AJ K L@3 M N O S AJ K AK@3 M N O S AJ K AK@3 M N O P B AL
>`.pickRestart({
  A: "c5@2 ~@2 e5 ~@3 g5 ~@3 c6 ~@2 c6", B: "d6@2 c6 ~ b5 ~ a5 ~ g5 ~@7",
  C: "[e4,g4,c5]@4 ~@2 [e4,g4,c5] ~@3 e4@2 [g4,c5]@2 e4 ~", D: "f4@2 [a4,d5] ~@3 [g4,b4]@4 [d5,g5] ~@5, ~@6 d5@3 ~@7",
  E: "f4@2 [a4,d5,f5] ~@3 f4 ~ d5@2 d5@4 g4 ~, ~@4 g4@3 ~, ~@10 g5@3 ~@3", // Dm
  F: "[~@2 [e4,g4,c5,e5] ~@5 e5@2 b4 ~ g4@2 ~@2 [g4,c5,e5]@2 ~@4 [c5,e5] ~@7 g4 ~, ~@6 e4@5 ~@3 e4@4 e4@7 ~ e4@5 ~, ~@4 c5@3 ~@7 [a#4,e5]@2, ~@8 g4 ~@13 g4@2 ~@8]/2", // C A#dim
  G: "f4@2 [a4,c5,f5] ~@5 c5 ~@3 a4@2 ~@2, ~@6 f4@7 ~@3, ~@4 f5@3 ~, ~@5 c5@2 ~", // F
  H: "[~@2 e5 ~ e5@2 c5 ~ b4 ~@3 g4@2 g4 ~ c5@3 ~@13, g4@10 b4@4 ~ g4@4 ~@13, ~ g5@2 ~ d5@3 ~@9]/2",
  I: "~@4 [e4,g4]@3 ~ [f4,a4]@3 ~ [f#4,a#4]@3 ~", J: "[b4,d5]@2 g5 ~@5 [d5,f5]@3 ~ g5@3 ~, ~@6 g4@9 ~",
  K: "g4 ~ [g4,c5,e5,g5] ~@9 [e5,g5]@2 c5 ~, ~@10 g4@5 ~", // C Em
  L: "[g4 ~ [g4,d5] ~@3 g4 ~ [g4,d5,g5]@2 ~ b4 ~@4 [e5,g5]@6 ~ c5 g5@2 d5@2 c5@2 g4@4 [d5,g5] ~@9 g4@4, ~@8 b4 ~@2 d5@4 ~@9 e5@4 ~@12 [d5,g5]@6 ~@2, ~@13 g4@9 ~@16 g4@5 ~@5]/3", // G5 Em G5
  M: "~@2 [g4,d5,e5] ~@5 c5 ~ [g4,c5,d5,e5] ~ d5@2 c5 ~, ~@5 g5 ~@2", N: "~@2 d5 ~@3 g4 ~ [g4,d5,g5]@6 ~@2",
  O: "~@2 d5@2 b4@2 g4@2 [c5,e5] ~@7, [g4,g5]@5 ~@11", P: "c5@3 ~ e5 ~@3 g5 ~@3 c6 ~@2 c6",
  Q: "f4@2 [a4,d5,f5] ~@3 f4 ~ d5@2 d5@4 g4 ~, ~@8 g4@5 ~@3, ~@10 g5@3 ~@3", // Dm
  R: "[~@2 [e4,g4,c5,e5] ~@5 [g4,e5] ~ b4 ~ g4@2 ~@2 [g4,c5,e5]@2 ~@4 [c5,e5] ~@7 g4 ~, ~@6 e4@5 ~@3 e4@4 e4@7 ~ e4@5 ~, ~@4 c5@3 ~@4 g4 ~@2 [a#4,e5]@2]/2", // C A#dim
  S: "~@4 [e4,g4]@3 ~ [f4,a4]@3 ~ [f#4,a#4]@2 ~@2", T: "[b4,d5]@2 g5 ~@5 [d5,f5]@4 g5@2 ~@2, ~@6 g4@9 ~",
  U: "~@2 [g4,d5,e5] ~@5 c5@2 [g4,c5,d5,e5] ~ d5@2 c5 ~, ~@5 g5 ~@2", // Em7 C
  V: "f4@2 [a4,d5,f5] ~@3 f4 ~ d5@2 d5@4 g4 ~, ~@8 g4@5 ~@3, ~@5 g5 ~@2", // Dm
  W: "[~@2 [e4,g4,c5,e5] ~@5 [g4,e5] ~ b4 ~ g4@2 ~@2 [g4,c5,e5]@2 ~@4 [c5,e5] ~@7 g4 ~, ~@6 e4@5 ~@3 e4@4 e4@6 ~@2 e4@5 ~, ~@4 c5@3 ~@4 g4 ~@2 [a#4,e5]@2]/2", // C A#dim
  X: "~@2 [g4,b4,d5] ~@11 g4@2, ~@6 g4@7 ~@3, ~ [d5,g5]", // G G5
  Y: "~@8 [e5,g5]@2 c5@2 e5!2 c5 ~, ~@6 g4@9 ~, ~@8 [c5,d5] ~@3 g5@2 ~@2", // Em Csus2
  Z: "~@2 [d5,g5] ~@9 g4@4, ~@6 g4@5 ~@5, ~@8 [d5,g5]@7 ~", // G5
  AA: "~@2 c5 ~ d5@2 c5 ~@3 e5 ~ d5 ~ e5 ~, ~@2 [g4,e5,g5]@5 ~@3 [g4,c5]@6", // C C5
  AB: "~@2 [g4,d5,g5] ~@3 g4 ~ g4@3 ~ g4@4, ~@4 [d5,g5]@3 ~", // G5
  AC: "~@2 [c5,e5,g5] ~ c5@2 e5 ~ [g4,e5,g5]@4 c5@2 g4 ~, ~ g4@3 ~@4", // C
  AD: "~@2 g4@2 b4 ~ [d5,g5]@3 ~@3 b4@2 g4 ~, ~@6 g4@7 ~@3, ~@10 [d5,g5]@5 ~", // G5
  AE: "[c5,e5] ~@3 c6 ~ c6 ~ c6 ~ c6 ~ c6 ~ c6 ~", AF: "[d5,g5]@4 ~@2 [b4,d5,f5] ~@5 [b4,d5,g5] ~@3",
  AG: "b4@3 ~ b4 ~ [b4,f5,b5] ~@3 [b4,f5,b5]@3 d5 b4 ~", // Bdim
  AH: "[[c5,g5]@3 ~@3 [e5,g5,a5] ~@3 [c5,e5,a5] ~@5 c5@5 ~@2 e5 [g5,c6]@2 g5@2 ~ e5 ~@2, ~@14 [g5,c6]@6 ~@6 c6 ~@5]/2", // C5 A7 Am C5
  AI: "[[g5,b5]@4 ~@2 [b4,f5,b5] ~@3 b4 ~@7 b4@2 ~@2 [b4,g5,b5]@3 ~ [b4,g5]@2 f5 ~ e5 ~, ~@7 [d5,g5,b5]@3 ~@6]/2", // G Bdim Em G
  AJ: "[b4,d5]@2 g5 ~@5 [d5,f5]@3 ~ g5@2 ~@2, ~@6 g4@9 ~", // Bm Dm
  AK: "[g4 ~ [g4,d5] ~@3 g4 ~ [g4,d5,g5]@2 ~ b4 ~@4 [e5,g5]@6 ~ c5 g5@2 d5@2 c5@2 g4@4 [d5,g5] ~@9 g4@4, ~@8 b4 ~@2 d5@4 ~@9 e5@4 ~@12 [d5,g5]@6 ~@2, ~@13 g4@8 ~@17 g4@5 ~@5]/3", // G5 Em G5
  AL: "c5",
})).s("gm_brass_section").gain(0.19).pan(0.6)

// chords · brass section · "BRASS D-50" · soft notes
const brass_section_soft = note(`<
  ~@3 A B ~ C D E@2 ~@2 F G H I J K L M ~@3 A B ~ C D N@2 ~@2 F G H O J K L M ~@3 A P ~ Q D N@2 ~@2 R S T U V W X ~ Y Z
  AA AB@2 AC ~ F G H I J K L M ~ F G H O J K L M ~ F G H O J K L M ~@3
>`.pickRestart({
  A: "~@4 f4 ~@7 [g4,d5]@2 b4 ~", B: "~@8 b4@2 ~@2 b4@3 ~", C: "~@4 g4@2 ~@2 e5 ~ e5 ~@5", D: "~@14 f4 ~",
  E: "[~@2 c5 ~@5 c5 ~@6 e4@4 ~@13]/2", F: "g4@3 ~@7 b4@2 d5@2 ~@2", G: "~@6 g4@3 ~ [e5,g5] ~@5, ~@5 c5 ~@2",
  H: "~@2 g5 ~@8 g5 ~@3 c5", I: "~@6 g4 g4@4 ~@5", J: "b4 ~@15", K: "c5 ~ g5 ~@3 g4@3 ~@4 g4!2 ~, ~@6 e5 ~",
  L: "g4@2 g5 ~@9 b4 ~ g4 ~", M: "~@5 d5 ~@10", N: "[~@2 c5 ~@5 c5 ~@6 e4@5 ~@12]/2", O: "~@6 g4 g4@5 ~@4",
  P: "~@4 b4 ~ b4 ~", Q: "~@4 g4 ~@3 e5 ~ e5 ~@5", R: "~@12 b4@3 ~", S: "~@2 g4@2 g4 ~@11",
  T: "g4@2 ~@2 g4 ~@6 b4 ~@2 b4 ~, d5 ~@15", U: "~@10 d5 ~@5", V: "~ b4 ~@6 f5 ~ b4@3 ~ b4 ~", W: "c5 ~@9 d5 ~@3 g5@2",
  X: "g4 ~@15", Y: "b4@5 ~@5 b4 ~@5", Z: "~ d5 ~@6, [f5,b5] ~@3", AA: "~@4 c5 ~@7 g5 ~@3, ~@11 c5@4 ~",
  AB: "[~@6 c5@7 g5 ~ [b4,d5]@4 ~ b4 ~@11]/2", AC: "~@4 d5 ~@5 b5 ~@5",
})).s("gm_brass_section").gain(0.1).pan(0.6)

// chords · piano · "PIANO MKS-20"
const piano = note(`<
  A B C D E F@2 G@2 H ~ I J K L M N M N O P B Q D R S@2 T@2 H ~ I J K L M N M N O P B Q U E S@2 V@2 H ~ W J K L M N M N
  X Y Z AA AB AC AD AE J K L M N M N O AF J K L M N M N O W J K L M N M N O P B ~
>`.pickRestart({
  A: "c5@3 ~ e5 ~@3 g5 ~@3 c6 ~@2 c6", B: "d6 ~ c6 ~ b5 ~ a5 ~ g5 ~@7", C: "~@4 d5@2 c5@9 ~, e4@15 ~, ~@2 g4@13 ~",
  D: "~@2 e5 d5@4 ~, f4@15 ~, ~@2 a4@4 c5 ~@9", E: "~@4 e5@2 d5@7 ~@3, f4@13 ~@3, ~@2 a4@11 ~@3",
  F: "[~@2 d5 ~@8 c5 a#4@4, e4@17 ~ e4@13 ~, ~@2 g4@17 ~ g4@12, ~@4 c5 ~ c5@15 ~@11]/2",
  G: "[~@4 f5@2 ~@4 f4@3 ~@9 e5 ~@5 b4@2 d5@2, f4@10 ~@6 g4@9 ~ g4@6, ~@2 a4@11 ~@7 c5@4 d5@5 ~@3, ~@3 f5@7 ~@6]/2",
  H: "[e4,c5] ~", I: "~@4 [g4,g5]@3 ~ [a4,a5]@3 ~ [a#4,a#5]@3 ~",
  J: "[g5,b5,d6] ~ [g5,b5,d6] ~ [g5,b5,d6] ~ [g5,b5,d6] ~ [g5,b5,d6] ~ [g5,b5,d6] ~ [g5,b5,c6,d6] ~ [g5,b5,d6] ~", // G
  K: "[g5,c6,e6] ~ [g5,c6,e6] ~ [g5,c6,e6] ~ [g5,c6,e6] ~ [g5,c6,e6] ~ [g5,c6,e6] ~ [g5,c6,d6,e6] ~ [g5,c6,e6] ~", // C
  L: "[g5,b5,d6] ~ [g5,b5,d6] ~ [g5,b5,d6] ~ [g5,b5,c6,d6] ~ [g5,b5,d6] ~ [g5,b5,d6] ~ [g5,b5,d6] ~ [g5,b5,d6] ~", // G
  M: "[g5,c6,e6] ~ [g5,c6,e6] ~ [g5,c6,e6] ~ [g5,c6,e6] ~ [g5,c6,e6] ~ [g5,c6,e6] ~ [g5,c6,e6] ~ [g5,c6,e6] ~", // C
  N: "[g5,b5,d6] ~ [g5,b5,d6] ~ [g5,b5,d6] ~ [g5,b5,d6] ~ [g5,b5,d6] ~ [g5,b5,d6] ~ [g5,b5,d6] ~ [g5,b5,d6] ~", // G
  O: "[g5,b5,d6] ~ [g5,b5,d6] ~ [g5,b5,d6] ~ [g5,b5,d6] ~ [g5,c6,e6] ~@7", P: "c5@2 ~@2 e5@2 ~@2 g5@2 ~@2 c6 ~@2 c6",
  Q: "~@4 d5 ~ c5@9 ~, e4@15 ~, ~@2 g4@13 ~", R: "~@4 e5@2 d5@7 ~@3, f4@7 ~, ~@2 a4@11 ~@3",
  S: "[~@4 [c5,d5] ~@17 c5@2 a#4@8, e4@17 ~ e4@13 ~, ~@2 g4@17 ~ g4@12, ~@6 c5@15 ~@11]/2", // Csus2
  T: "[~@4 f5 ~@5 f4@3 ~@9 e5 ~@5 b4@2 d5@2, f4@10 ~@6 g4@9 ~ g4@5 ~, ~@2 a4@11 ~@7 c5@4 d5@5 ~@3, ~@3 f5@7 ~@6]/2",
  U: "~ a4 e5 d5@4 ~, f4@15 ~, ~@6 c5 ~@9",
  V: "[~@4 f5@2 ~@4 f4@3 ~@9 e5 ~@5 b4@2 d5@2, f4@10 ~@6 g4@9 ~ g4@5 ~, ~@2 a4@11 ~@7 c5@4 d5@5 ~@3, ~@3 f5@7 ~@6]/2",
  W: "~@4 [g4,g5]@4 [a4,a5]@3 ~ [a#4,a#5]@3 ~", X: "[g5,c6,e6] ~@15",
  Y: "[g5,b5,d6] ~ [g5,b5,d6] ~ [g5,b5,d6] ~ [g5,b5,d6] ~ [g5,b5,d6] ~ [g5,b5,d6] ~ [g5,b5,g6]!4", // G
  Z: "[g5,b5,f6,g6] ~ [g5,f6] ~ [g5,b5,f6] ~ [g5,b5,f6] ~ [g5,f6] ~ [g5,b5,f6] ~ [g5,f6] ~ g5 ~", // G7
  AA: "[g5,c6,e6] ~ [g5,c6,e6] ~ [g5,c6,e6] ~ [g5,c6,e6] ~ [g5,c6,e6] ~ [g5,c6,e6] ~ [g5,c6]!4, ~@12 a6@3 ~", // C C5
  AB: "[g5,c6,g6] ~ [g5,c6,g6] ~ [g5,c6,g6] ~ [g5,c6,e6,g6] ~ [g5,c6,e6,g6] ~ [g5,e6,g6] ~ [g5,c6,d6,e6,g6] ~ g5 ~", // C5 C
  AC: "[g5,b5,c6,d6] ~ [g5,b5,d6] ~ [g5,b5,c6,d6] ~ [g5,b5,d6] ~ [g5,b5] ~ [g5,b5] ~ [g5,b5,g6] [f5,g5,b5,g6] [g5,b5,g6]!2", // G G7 G
  AD: "[g5,b5,f6] ~ [g5,b5,f6] ~ [g5,b5,f6] ~ [g5,b5,f6] ~ [g5,b5,f6] ~ [g5,b5,f6] ~ [g5,b5,f6] ~ [g5,b5,f6] ~", // G7
  AE: "~@4 [g4,g5]@3 ~ [a4,a5]@3 ~ [a#4,a#5]@2 ~@2", AF: "~@4 [g4,g5]@4 [a4,a5]@4 [a#4,a#5]@3 ~",
})).s("gm_piano").gain(0.17)

// other · piano · "Mel"
const piano_2 = note("<~@9 A B ~@8 C D E ~@7 A B ~@8 C D E ~@7 A B ~@8 C D E ~@34>".pickRestart({
  A: "~ f4 b3 f4", B: "b3 f4 b3 f4 b3 f4 b3@2", C: "~@3 f4", D: "b3@2 f4@2 b3 f4 b3 f4", E: "b3 f4 b3@2 ~@4",
})).s("gm_piano").gain(0.05)

// drums · kick
const kick = s("bd").struct(`<
  ~@2 A@7 B ~ B A@7 C ~@2 A@7 B ~ B A@7 C ~@2 A@7 B ~ B A@14 B A@7 C B A@7 C B A@7 C B ~ B
>`.pickRestart({
  A: "x ~@2 x ~@3 x", B: "x", C: "x ~@2 x ~@4",
})).gain(0.25)

// drums · snare
const snare = s("sd").struct(`<
  A B C@7 ~@3 C@7 D A B C@7 ~@3 C@7 D A B C@7 ~@3 C@14 ~ C@7 D ~ C@7 D ~ C@7 D ~@3
>`.pickRestart({
  A: "x ~@3 x ~@3 x ~@3 x ~@2 x", B: "x!5 ~@3", C: "~ x ~ x", D: "~ x!2 ~",
})).gain(0.25)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@2 A@7 ~@3 A@7 B ~@2 A@7 ~@3 A@7 B ~@2 A@7 ~@3 A@14 ~ A@7 B ~ A@7 B ~ A@7 B ~@3
>`.pickRestart({
  A: "x ~ x ~ x!4", B: "x!2 ~@2",
})).gain(0.25)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@2 A@7 ~@2 B A@8 ~@2 A@7 ~@2 B A@8 ~@2 A@7 ~@2 B A@14 B A@8 ~ A@8 ~ A@8 ~@2 B
>`.pickRestart({
  A: "x!2", B: "x",
})).gain(0.16)

// drums · crash
const crash = s("cr").struct("<~@11 A ~@19 A ~@19 A ~@14 A ~@28 A>".pickRestart({
  A: "x",
})).gain(0.25)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@2 A@7 ~@3 A@7 B ~@2 A@7 ~@3 A@7 B ~@2 A@7 ~@3 A@14 ~ A@7 B ~ A@7 B ~ A@7 B ~@3
>`.pickRestart({
  A: "x!4", B: "x!2 ~@2",
})).gain(0.29)

// drums · tambourine · soft notes
const tambourine_soft = s("tb").struct(`<
  ~@2 A@7 ~@3 A@7 B ~@2 A@7 ~@3 A@7 B ~@2 A@7 ~@3 A@14 ~ A@7 B ~ A@7 B ~ A@7 B ~@3
>`.pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~ x ~ x ~@4",
})).gain(0.13)

// drums · ride
const ride = s("rd").struct("<~@9 A B ~@9 C D ~@7 A B ~@9 C D ~@7 A B ~@9 C D ~@34>".pickRestart({
  A: "~ x", B: "x!4", C: "x ~ x!2", D: "x!2 ~@2",
})).gain(0.29)

// drums · bongos
const bongos = s("bongo:18").struct(`<
  ~@2 A@3 B A@3 ~@3 A@3 C A@3 ~@3 A@3 D A@3 ~@3 A@4 B A@2 ~@3 A@3 C B A@2 ~@3 A@3 D A@3 C A@2 B A@3 ~ C A@6 ~@2 C A@6
  ~@2 D A@6 ~@4
>`.pickRestart({
  A: "~@6 x!2", B: "~@2 x ~@2 x!2 ~@5 x ~ x ~", C: "~ x!2 ~@3 x ~@2 x!2 ~ x!3 ~", D: "~@12 x!4",
})).gain(0.5)

// drums · bongos · soft notes
const bongos_soft = s("bongo:18").struct(`<
  ~@5 A ~@9 B ~@9 C ~@10 A ~@8 B A ~@8 C ~@3 B ~@2 A ~@4 B ~@8 B ~@8 C ~@10
>`.pickRestart({
  A: "x!2 ~@2 x ~@2 x ~@3 x ~@3 x", B: "x ~@6 x ~@8", C: "x!12 ~@4",
})).gain(0.33)

// drums · congas
const congas = s("conga:13").struct(`<
// … 40 more lines