Strudelify

A Kind of Hush

Herman's Hermits

KeyB♭ majorTempo115 bpm
0:00/0:00
// A Kind of Hush — Herman's Hermits
// 115 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 8 "Horns" named as a brass, played on brass section (its string ensemble 2 patch is not one)
// note: duplicate parts dropped: ch 8 "Horns" brass section (copy of ch 7 "Horns" french horn)
// note: Full arrangement: all 85 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(115/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"
const bass = 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 H AG K AH E Z AI AJ AK AL B AM AN AO Z AP H AQ
  AR AS AT AU Z AV AW AX AY AB AZ BA BB BC BD BE BF S@2 AB BG BH BI H BJ BK BL BM N AI BN BO BP@2 ~
>`.pickRestart({
  A: "bb1@3 bb1!2 g1 f1 g1", B: "bb1@3 bb1 bb1@2 bb1 f1", C: "bb1@3 bb1 f2@2 bb1@2", D: "d2@3 a2!2 c2@2 a1",
  E: "g1@3 g1 d2@3 g1", F: "bb1@3 bb1 bb1@3 d2", G: "eb2@3 bb2 bb2@2 g1@2", H: "f1@3 c2 c2@2 a1@2",
  I: "bb1@3 f2!2 c2 bb1 g1", J: "f1@3 f1 c2 a1 f1 a1", K: "bb1@3 bb1!2 f1@2 bb1", L: "d2@3 d2 a2@3 a1",
  M: "g1@3 g1 d2@2 g1@2", N: "bb1@3 bb1 f2@2 d2@2", O: "eb2@3 eb2!2 bb1@2 g1", P: "f1@3 f1 c2@2 a1@2",
  Q: "bb1@3 bb1!2 bb1@2 f1", R: "bb1@3 bb1!2 bb1@2 d2", S: "eb2@3 eb2 eb2@2 c2@2", T: "eb2@3 eb2 bb2@3 c2",
  U: "eb2@3 eb2 bb2@2 d2@2", V: "eb2@3 eb2 bb2@2 g1@2", W: "bb1@3 f2 f2@2 g1@2", X: "bb1@3 f2!2 f1 g1@2",
  Y: "bb1@3 bb1 f2 g1 f1 g1", Z: "bb1@3 f2 f2@2 d2@2", AA: "eb2@3 bb2 bb2@3 c2", AB: "eb2@3 bb2 bb2@2 c2@2",
  AC: "eb2@3 eb2 eb2@3 c2", AD: "eb2@3 eb2 bb2 bb1@2 g1", AE: "f1@3 f1 c2@2 a1 g1", AF: "f1@3 f1!2 c2@2 a1",
  AG: "f1@2 ~@4 c2@3 ~@3 f1@4", AH: "d2@3 d2 a2@2 a1@2", AI: "eb2@3 eb2 bb2@3 g1", AJ: "f1@3 c2!2 f1 g1 a1",
  AK: "bb1@3 f2 f2@2 f1@2", AL: "bb1@3 bb1!2 f1@2 g1", AM: "bb1@3 bb1 bb1@2 f1 bb1", AN: "d2@3 d2!2 e1@2 gb1",
  AO: "g1@3 g1 d2 d2@2 c2", AP: "eb2@3 eb2 eb2@3 g1", AQ: "bb1@3 bb1 bb1@2 g1@2", AR: "f1@3 c2 c2@2 g1 a1",
  AS: "bb1@3 bb1 bb1@2 c2@2", AT: "d2@3 d2 a2@2 b1 a1", AU: "g1@3 g1!2 c2 d2 c2", AV: "eb2@3 bb2!2 bb1 g1@2",
  AW: "f1@3 f1!2 c2 d2 c2", AX: "bb1@3 bb1!3 f1@2", AY: "bb1@3 f2 f2@2 c2 d2", AZ: "eb2@3 eb2 bb2 bb1@2 c2",
  BA: "eb2@3 bb2!2 bb1@2 d2", BB: "eb2@3 bb2 bb2@3 g1", BC: "bb1@3 f2!2 f1@2 g1", BD: "bb1@3 bb1 f2@3 g1",
  BE: "bb1@3 f2 f2@2 c2@2", BF: "bb1@3 bb1 f2 c2 d2@2", BG: "eb2@3 eb2 bb2 c2 bb1 g1", BH: "f1@3 f1 c2 c2@2 a1",
  BI: "f1@3 f1 c2 a1@2 g1", BJ: "f1@3 c2 c2@3 a1", BK: "bb1@3 f2 f2@2 f1 bb1", BL: "d2@3 a2 a2@2 e1 gb1",
  BM: "g1@3 d2 d2@2 g1@2", BN: "f1@3 f1!2 d2@2 c2", BO: "bb1@3 bb1 f2 d2@2 c2", BP: "bb1",
})).s("gm_electric_bass_finger").gain(0.25)

// chords · acoustic guitar steel · "Guitar1"
const acoustic_guitar_steel = note(`<
  A B C D E F G H I J K L M N O P Q F R S T U A V W X R Y T Y Z@2 AA AB W D AC AD AE AF AG V@2 AH AI AJ F O AK I AL AM
  AN E F AO H AM F AE S T AP A V C AQ AE Y AR S P Z P H AH AS AT X AU Z A AV AW ~
>`.pickRestart({
  A: "bb3 bb3@5 d4@6 d4@4, [bb2,f3], [d4,f4]@3 [bb3,f4]@5", // Bb5 Dm Bb5
  B: "bb3 bb3@5 d4@4 ~@4 d4@2, [bb2,f3], [d4,f4]@3 bb3@5, ~@3 f4@3 f4@2, ~@5 d4@2 ~", // Bb5 Dm
  C: "bb3 bb3@11 bb3@4, [bb2,f3,d4,f4]", D: "~@3 a3@3 ~ gb3, d3, [a3,c4,gb4]@3 [c4,gb4]@5, ~ d4@15, ~@3 a3",
  E: "g3 g3@5 g3@6 ~@2 bb3@2, [g2,d3], [bb3,d4]@3 d4@5, ~@3 bb3@4 ~, ~@3 g3", // G5 Bb
  F: "~@3 ab3@3 ab3@2, [bb2,f3], [ab3,d4,f4]@3 [d4,f4]@5, ~ bb3@15", // Bb5 Ddim Dm
  G: "eb4 eb4@5 eb4@4 ~@4 g3@2, eb3, [g3,bb3]@3 g3@4 ~, ~@3 bb3@3 bb3@2, ~@5 eb4@3", // Gm
  H: "~@3 eb4@2 ~@2 a3, f3, [a3,c4,eb4]@3 a3@3 c4@2, ~ f4@15, ~@3 c4@2 eb4@3", // Adim
  I: "bb3 bb3@5 bb3@6 bb3@4, [bb2,f3], [d4,f4]@3 [d4,f4]@5", // Bb5 Dm
  J: "~@3 c4@2 ~ a3@2, f3, [a3,c4,eb4]@3 eb4@5, ~ f4@15, ~@3 a3@2 c4@3", // Adim
  K: "bb3 ~@13 bb3@2, [bb2,f3,f4], d4@3 d4, ~ bb3@13 ~@2", // Bb5
  L: "~@3 a3@2 ~ gb3@2, d3, [a3,c4,gb4]@3 [c4,gb4]@5, ~ d4@15, ~@5 a3@3", // Gbdim Cdim
  M: "g3 g3@5 g3@6 g3@4, [g2,d3], [bb3,d4]@3 [bb3,d4]@5", // G5 Bb
  N: "~@3 ab3@2 ~@2 ab3, [bb2,f3], [ab3,d4,f4]@3 [d4,f4]@5, ~ bb3@11 bb3@4, ~@5 ab3@2 ~", // Bb5 Ddim Dm
  O: "eb4 eb4@5 g3@6 g3@4, eb3, [g3,bb3]@3 [bb3,eb4]@5", // Gm Eb5
  P: "~@3 eb4@3 ~ c4, f3, [a3,c4,eb4]@3 a3@5, ~ f4@15, ~@3 c4@3 eb4@2", // Adim
  Q: "bb3 ~@7 d4@4 bb3@4, [bb2,f3], f4@3 ~, d4 ~, ~ bb3@11 ~@4", R: "eb4 eb4@5 bb3@6 bb3@4, eb3, [g3,bb3]@3 [g3,eb4]@5",
  S: "eb4 eb4@5 bb3@6 bb3@4, eb3, [g3,bb3,c4]@3 [g3,c4,eb4]@5", // C7 Cm
  T: "~@3 bb3@3 bb3@2, eb3, [g3,bb3,d4]@3 [g3,d4]@5, ~ eb4@15", // Gm G5
  U: "eb4 eb4@5 c4@4 ~@4 c4@2, eb3, [g3,bb3,c4]@3 [g3,bb3]@5, ~@3 eb4@3 eb4@2, ~@5 c4@2 ~", // C7 Gm
  V: "bb3 bb3@5 f4@6 ~@2 d4@2, [bb2,f3], [d4,f4]@3 bb3@5, ~@3 d4@4 ~, ~@3 f4", // Bb5 Dm
  W: "bb3 bb3@5 d4@6 ~@2 bb3@2, [bb2,f3], [d4,f4]@3 f4@5, ~@3 bb3@4 ~, ~@3 d4", // Bb5 Dm
  X: "~@3 d4@2 ~@2 ab3, [bb2,f3], [ab3,d4,f4]@3 f4@5, ~ bb3@9 d4@6, ~@3 ab3@3 bb3@2", // Bb5 Ddim
  Y: "eb4 eb4@5 c4@6 ~@2 bb3@2, eb3, [g3,bb3,c4]@3 [g3,eb4]@5, ~@3 bb3@4 ~, ~@3 c4", // C7 Cm
  Z: "~@3 c4@3 c4@2, f3, [a3,c4,eb4]@3 [a3,eb4]@5, ~ f4@15", // Adim
  AA: "~@3 eb4@2 ~@2 eb4, f3, [a3,c4,eb4]@3 a3@5, ~ f4@15, ~@3 c4@2 eb4 c4@2", // Adim
  AB: "[f2,f3,a3,c4,eb4]@2 ~@4 [c3,c4]@3 ~@3 [f2,f3]@4", AC: "g3 g3@5 bb3@6 bb3@4, [g2,d3], [bb3,d4]@3 [g3,d4]@5",
  AD: "~@7 ab3, [bb2,f3,f4], ab3@7 ~, d4@5 d4@3, ~ bb3@11 bb3@4", // Bb5
  AE: "eb4 eb4@5 bb3@4 ~@4 bb3@2, eb3, [g3,bb3]@3 g3@5, ~@3 eb4@3 eb4@2, ~@5 bb3@2 ~", // Gm
  AF: "~@7 a3, [f3,eb4], a3@7 ~, c4@3 c4, ~ f4@15", // F7
  AG: "bb3 bb3@5 f4@4 ~@2 d4@4, [bb2,f3], [d4,f4]@3 bb3@5, ~@3 d4@3 ~@2, ~@5 f4@3", // Bb5 Dm
  AH: "bb3 bb3@5 f4@4 ~@4 bb3@2, [bb2,f3], [d4,f4]@3 bb3@4 ~, ~@3 d4@3 d4@2, ~@5 f4@3", // Bb5 Dm
  AI: "~@3 a3@3 a3@2, d3, [gb3,a3,c4]@3 [gb3,c4]@5, ~ d4@15", // Gbdim
  AJ: "g3 g3@5 bb3@6 ~@2 g3@2, [g2,d3], [bb3,d4]@3 d4@5, ~@3 g3@4 ~, ~@3 bb3", // G5 Bb
  AK: "~@3 a3@3 a3@2, f3, [a3,c4,eb4]@3 [c4,eb4]@5, ~ f4@15", // Adim Cm
  AL: "~@3 c4@2 ~@2 c4, f3, [a3,c4,eb4]@3 a3@5, ~ f4@15, ~@3 eb4@2 c4 eb4@2", // Adim
  AM: "bb3 bb3@5 d4@4 ~@2 bb3@4, [bb2,f3], [d4,f4]@3 f4@5, ~@3 bb3@3 ~@2, ~@5 d4@3", // Bb5 Dm
  AN: "~@6 gb3 a3, d3, [a3,c4,gb4]@3 [c4,gb4]@5, ~ d4@15, ~@3 a3@4 ~", // Gbdim Cdim
  AO: "eb4 eb4@5 eb4@6 ~@2 bb3@2, eb3, [g3,bb3]@3 g3@5, ~@3 bb3@4 ~, ~@3 eb4", // Gm
  AP: "eb4 eb4@5 c4@6 c4@4, eb3, [g3,bb3,c4]@3 [g3,bb3,eb4]@5", // C7 Eb
  AQ: "~@7 ab3, [bb2,f3], [ab3,d4,f4]@3 [d4,f4]@5, ~ bb3@11 bb3@4, ~@3 ab3@4 ~", // Bb5 Ddim Dm
  AR: "~@3 bb3, [eb3,g3,d4], bb3@3 ~, ~ eb4@15", AS: "~@3 a3@3 a3@2, d3, [a3,c4,gb4]@3 [c4,gb4]@5, ~ d4@15",
  AT: "g3 g3@5 d4@6 ~@2 bb3@2, [g2,d3], [bb3,d4]@3 g3@5, ~@3 bb3@4 ~, ~@3 d4", // G5 Bb
  AU: "eb4 eb4@7 ~@2 bb3@2 bb3@4, eb3, g3@3 ~, bb3@5 ~@3, ~ eb4", AV: "[bb3,d4,f4]@3 [bb3,d4,f4]",
  AW: "d4@3 d4, [bb3,f4,bb4]", // Bb5
})).s("gm_acoustic_guitar_steel").gain(0.22)

// chords · piano
const piano = note(`<
  A@2 B C D E F G B H I J D K L H I M N O P Q A@2 I K N R S T U@2 V W I J D K N U A@3 B J X M Y H B U I C D K Z H I M AA
  AB P Q A AC I M N T AD Q U@2 AE AF I AG AH K AI U AC AJ AK ~
>`.pickRestart({
  A: "[bb3,d4,f4]@3 d4", B: "[bb3,d4,f4]@2 d4 bb3", C: "[a3,c4,gb4]@2 c4 a3", D: "[g3,bb3,d4]@3 g3",
  E: "[ab3,d4,f4]@3 d4", F: "[bb3,eb4,g4]@3 bb3", G: "[a3,c4,eb4]@2 c4 a3", H: "[a3,c4,eb4]@2 eb4 c4",
  I: "[bb3,d4,f4]@3 bb3", J: "[a3,c4,gb4]@3 a3", K: "[ab3,d4,f4]@3 ab3", L: "[bb3,eb4,g4]@2 eb4 bb3",
  M: "[ab3,d4,f4]@2 bb3 ab3", N: "[g3,bb3,eb4]@3 bb3", O: "[g3,bb3,c4,eb4]@3 c4", P: "[bb3,d4,g4]@3 bb3",
  Q: "[g3,bb3,c4,eb4]@3 g3", R: "[g3,bb3,c4,eb4]@3 bb3", S: "[g3,bb3,d4]@3 bb3", T: "[g3,bb3,c4,eb4]@2 bb3 g3",
  U: "[a3,c4,eb4]@3 c4", V: "[a3,c4,eb4]@3 eb4", W: "[d4,f4]@2 ~@4 [a4,c5]@3 ~@3 [d4,f4]@4", X: "[g3,bb3,d4]@2 bb3 g3",
  Y: "[g3,bb3,eb4]@2 bb3 g3", Z: "[bb3,eb4,g4]@2 bb3 g3", AA: "[g3,bb3,eb4]@3 eb4", AB: "[bb3,c4,eb4,g4]@2 bb3 g3",
  AC: "[bb3,d4,f4]@2 f4 d4", AD: "[bb3,d4,g4]@2 d4 bb3", AE: "[a3,c4,eb4]@2 a3 c4", AF: "[a3,c4,eb4]@3 a3",
  AG: "[a3,c4,gb4]@3 c4", AH: "[bb3,d4,g4]@2 g3 bb3", AI: "[g3,bb3,eb4]@2 eb4 bb3", AJ: "bb5@3 f5@2 eb5 d5@2", AK: "f4",
})).s("gm_piano").gain(0.36)

// other · acoustic guitar steel · "Harmony1"
const acoustic_guitar_steel_2 = note(`<
  ~@8 A B@2 C@5 D E F@2 G@3 H@2 I J K L M@2 N O P@2 Q@4 R D ~ S T U@6 V T W@6 E F@2 G@3 H@2 X Y K Z AA@2 AB@2 AC AD AE@4
  AF D AG ~@2
>`.pickRestart({
  A: "~@7 d4", B: "[c5 a4 c5 a4@3 a3 c4@2 d4@2 d4 d4@2 ~@2]/2",
  C: "[~@3 c5 a4 g4 gb4 g4@5 ~@2 d4 eb4@3 ~ bb4 ab4 f4 eb4 eb4@3 eb4 bb3 eb4 g4@2 f4@4 ~ f4 g4 a4@2]/5", D: "f4",
  E: "~@3 d4", F: "[eb4@2 bb3@2 eb4@2 g4 g4@3 eb4 eb4@3 ~@2]/2",
  G: "[bb4@2 eb4 eb4@3 bb4 g4@3 eb4 eb4@2 d4 c4 d4@5 ~@4]/3", H: "[~@3 d4 eb4 d4 bb3 d4@3 ~@6]/2", I: "~@3 eb4",
  J: "g4 eb4!2 g4", K: "g4 eb4@2 eb4@3 ~ g4", L: "bb4@2 bb4@2 eb4@2 eb4 g4", M: "[g4 eb4@2 eb4@2 d4 c4 d4@5 ~@4]/2",
  N: "~@2 c4@2 bb4 a4 c5 a4", O: "f4 ~", P: "[~@6 bb3 c4@2 d4@2 d4 d4@2 ~@2]/2",
  Q: "[~@3 d5 a4 g4 gb4 d4@5 ~@2 bb3 d4@3 ~ bb4 ab4 f4 eb4 eb4@3 eb4 bb3 eb4 g4@2 f4]/4", R: "~@2 f4@2 f4 g4 a4!2",
  S: "~@6 bb3 c4", T: "d4@3 d4 d4@2 ~@2",
  U: "[~@3 c5 a4 g4 gb4 d4@5 ~@2 bb3 d4@3 ~ bb4 ab4 f4 eb4 eb4@3 eb4 bb3 eb4 g4@2 f4@3 ~ f4!2 g4 a4 c4@3 ~@5 d4]/6",
  V: "c5 a4 c5 a4@3 a3 c4",
  W: "[~@3 c5 a4 g4 gb4 g4@5 ~@2 bb3 d4@3 ~ bb4 ab4 g4 f4 eb4@3 eb4 bb3 eb4 g4@2 f4@3 f4 ~ f4 g4 a4 f4@8 ~]/6",
  X: "~@4 f4 ~ f4 ~", Y: "eb4 ~ eb4 ~ eb4 g4@3", Z: "bb4@2 eb4@2 eb4@2 eb4 g4",
  AA: "[g4 eb4@2 eb4@2 d4 bb3 c4@6 ~@3]/2", AB: "[~@3 c4 bb4 c4 c5 bb4@2 a4@3 ~@4]/2", AC: "~@6 a3 c4",
  AD: "d4@2 ~ d4 d4@2 ~@2", AE: "[~@3 c5 a4 gb4 eb4 d4@5 ~@2 d4 d4@3 ~ bb4 ab4 f4 eb4 eb4@3 eb4 bb3 eb4 g4@2 eb4]/4",
  AF: "~@2 f4@2 f4@2 f4 a4", AG: "bb4@3 ~@5",
})).s("gm_acoustic_guitar_steel").gain(0.24).pan(0.3)

// chords · french horn · "Horns"
const french_horn = note("<~@18 A B C D E F@3 G H I J@3 K B ~@25 A B C D E F@3 G H I J@3 K B ~@10>".pickRestart({
  A: "[eb4,bb4]", B: "[f4,c5]", C: "[g4,d5]", D: "[bb4,c5]", E: "[f4,bb4]",
  F: "[[f4,bb4]@3 f4 g4 f4 eb4 f4@7 bb4 eb5 d5@2 bb4@2 [f4,bb4]@4, ~@7 f4@3 ~@2]/3", G: "[g4,bb4]!2", H: "[g4,c5]!2",
  I: "[g4,d5]!2", J: "[c5@5 g4 f4 f4@5 [f4,f5]@6 f4@2 eb5 d5 eb5 d5, g4 ~@5]/3", K: "c5!2",
})).s("gm_french_horn").gain(0.39).pan(0.3)

// chords · string ensemble 2 · "Strings"
const string_ensemble_2 = note(`<
  ~@2 A B C D E F G H I J C K L M N O P Q R S T U V W X Y Z P AA AB AC ~ AD B C K AE AF AG AH AI AD J C K AJ AK AL H I
  AM AN AO L AP AQ AR AS AT W X W AU AV V AW AX AY AZ AB AC AA BA AD B BB BC BD BE@4 ~
>`.pickRestart({
  A: "[bb3,d4]@3 d4, f4", B: "d4@3 d4, gb4", C: "d4@3 d4, g4", D: "f4@2 f4!2, [d4,ab4]", E: "[eb4,g4]@3 eb4, bb4",
  F: "~@2 c4 f4, a4, f4@3 ~", G: "d4@2 f3 bb3, [f4,bb4]", H: "[f4,c5]@2 ~ a3, a3@3 ~, ~ [f4,a4]", I: "f3@3 f3, [d4,f4]",
  J: "[a3,d4]@3 d4, gb4", K: "f4@3 f4, [d4,ab4]", L: "~@3 g4, [eb4,bb4]", M: "f4@3 f4, a4", N: "f4@2 ~ d4, bb4, ~ f4",
  O: "f4@3 f4, [d4,bb4]", P: "eb4@3 eb4", Q: "g4@3 c4", R: "eb4@2 g4 eb4", S: "c4@2 eb4!2", T: "d4@2 f4!2",
  U: "f4@3 bb3", V: "d4@3 d4", W: "bb3@3 bb3", X: "g3@3 g3", Y: "g3@2 g3!2", Z: "bb3@3 d4", AA: "f4@3 c4",
  AB: "a3@3 c4", AC: "c4@3 eb4", AD: "d4@3 d4, f4", AE: "eb4@3 eb4, bb4", AF: "[c4,f4]@3 f4, a4",
  AG: "~@3 bb3, [f4,bb4]", AH: "[f4,bb4]@2 ~ f3, d4, ~ [f4,bb4]", AI: "[bb3,d4]@3 d4, [f4,bb4]",
  AJ: "~@3 bb3, [eb4,bb4]", AK: "c4@3 a3, [f4,a4]", AL: "bb3@3 bb3, [f4,bb4]", AM: "a3@3 c4, [d4,gb4]",
  AN: "[bb3,d4]@3 d4, g4", AO: "~@3 f4, [d4,ab4]", AP: "~@3 c4, [f4,a4]", AQ: "d4@3 d4, [f4,bb4]", AR: "f4@3 f4, bb4",
  AS: "g4@2 eb4 g4", AT: "eb4@3 c4", AU: "d4@3 f4", AV: "f4@2 bb3!2", AW: "bb3@3 g4", AX: "eb4@3 g3", AY: "g3@3 d4",
  AZ: "c4@3 g3", BA: "c4@3 f4", BB: "g4@3 g4, d4", BC: "f4@2 f4 d4, ab4, d4@3 ~", BD: "[bb3,eb4]@3 eb4, bb4",
  BE: "[[c4,f4]@12 f4@3 ~@17 [f4,bb4]@32, a4@15 bb3@13 bb3@36, ~ [f4,bb4] ~@2]/4", // F5 Bb5
})).s("gm_string_ensemble_2").gain(0.18).pan(0.4)

// drums · kick
const kick = s("bd").struct("<A@17 B A@7 C A@7 D A@7 E A@8 F A@7 G A@25 ~>".pickRestart({
  A: "x", B: "x!2", C: "x ~@3 x ~@2 x", D: "x ~@2 x!2 ~@2 x", E: "~@5 x ~@2", F: "x ~@6 x", G: "x ~@4 x ~@2",
})).gain(0.22)

// drums · rim
const rim = s("rim").struct(`<
  A@2 B A@6 C A@7 ~ A@7 ~ B A B A@4 ~ A B A B A@3 ~ A@8 C A@7 ~ B A B A@4 ~ A@15 ~@3
>`.pickRestart({
  A: "~ x ~ x", B: "~@2 x ~@2 x!2 ~", C: "~ x ~@2",
})).gain(0.22)

// drums · rim · soft notes
const rim_soft = s("rim").struct(`<
  ~@10 A ~ A ~ A ~@9 A ~@18 A ~ A ~ A ~ A ~@5 A ~@7 A ~@11 A ~@3 A ~ A ~@3
>`.pickRestart({
  A: "~@5 x ~@2",
})).gain(0.15)

// drums · snare
const snare = s("sd").struct(`<
  A@5 B C B A D E B E A@3 E ~ A@2 C A@3 E ~ A@2 E A@7 C A@4 F E A@7 G B A@6 H A B A E A@3 ~ B@2 A C A@2 B E B A@2 B A C
  A I@2 ~
>`.pickRestart({
  A: "~ x ~ x", B: "~@2 x ~@2 x ~@2", C: "~@3 x ~@2 x ~", D: "~@6 x ~@3 x ~@3 x!2", E: "~@2 x ~@4 x", F: "x ~@2 x",
  G: "~ x ~@2", H: "~@3 x", I: "x",
})).gain(0.22)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@9 A ~@7 B ~@7 C ~@15 D ~@8 E ~@7 F ~@7 G ~@18>".pickRestart({
  A: "~@8 x!2 ~@2 x!2 ~@2", B: "~@4 x ~@8 x ~@2", C: "~ x ~@2", D: "~@5 x ~@10", E: "~@5 x ~@2", F: "~@2 x!2 ~@12",
  G: "x!2 ~@5 x ~@5 x ~@2",
})).gain(0.1)

// drums · hihat
const hihat = s("hh").struct(`<
  A@9 B A@7 ~ A@7 ~ A@2 C A C A C D B@2 A B A B A ~ A B A B A B A B@3 A B A B A@2 ~ A@7 ~ A@15 ~@3
>`.pickRestart({
  A: "~ x ~ x", B: "~ x ~@2", C: "~@3 x", D: "x!8",
})).gain(0.22)

// drums · low tom
const low_tom = s("lt").struct("<~@66 [~@5 x ~ x] ~@18>").gain(0.17)

// drums · open hat
const open_hat = s("oh").struct("<~@28 A ~ A ~ A ~ B@2 ~ B ~ B ~@3 B ~ B ~ B ~ B ~ B ~ B ~ B ~@29>".pickRestart({
  A: "~ x ~@2", B: "~@3 x",
})).gain(0.22)

// drums · mid tom
// … 21 more lines

More by Herman's Hermits