Strudelify

Chuck 'E's in Love

Rickie Lee Jones

KeyF♯ minorTempo77 bpm
0:00/0:00
// Chuck 'E's in Love — Rickie Lee Jones
// 77 bpm, 4/4, key F# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: sustain pedal (CC 64) lengthens the held notes
// note: duplicate parts dropped: ch 16 "T 1 MC16" piano (copy of ch 12 epiano2)
// note: Full arrangement: all 61 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(77/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 · fretless bass
const bass = note(`<
  ~@2 A B@4 C D@2 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@2 AG AH AI AJ AK AL AM AN AO AP AQ AR@8
  AS@3
>`.pickRestart({
  A: "~ a1@5 ~@7 c2@2 c#2@5 e2@3 f#2@4 a2@3 ~@12 [c#3,g3]@2 [c3,f#3]@4", // C#dim Cdim
  B: "[~ [c#3,g3]@3 [c3,f#3]@4 g3@3 a1@4 ~@8 c2@2 ~@5 e2@3 f#2@4 ~ a2@3 ~@4 a2@4 ~@3 c#3@7 a2@3 b2@5 f#2@2 a2@3 ~@12 c#2@4 e2@3 f#2@4 ~ a2@4 ~@10 [c#3,g3]@3 [c3,f#3]@4 [c#3,g3]@3 [c3,f#3]@5 g3@2 a1@4 ~@11 c#2@2 ~@2 e2@3 f#2@3 ~@2 a2@3 ~@4 c2@19 ~@5 a1@3 ~@4, ~@8 c#3 ~@16 c2@56 c2@58 c2@22 ~@24 c2 ~@6, ~@52 b2@2 ~@71 c#3 ~@66]/4", // C#dim Cdim C#dim Cdim C#dim Cdim
  C: "~@5 a1 ~@2 b1@4 ~@8 e1@2 a1@2 ~@10 a1 ~@2 b1@11",
  D: "[~@3 a1@3 ~@9 a1 ~@2 b1@6 ~@8 a1@2 ~@11 a1 ~ b1@3 ~@2 e1@6 ~ g1@2 ~ a1@3 ~@9 a1 ~ b1@8 ~@7 a1@3 ~@2]/2",
  E: "~@7 a1 ~ b1@3 ~@12 a1@2 ~@10 a1 ~ b1@10", F: "~@5 a1@3 ~@11 b1@4 ~ e1@9 ~ a1@2 ~@10 d2@2",
  G: "~@15 a1@3 ~@9 a1 ~ d2@8 ~@7 b1@4", H: "~@4 f#2 b2 ~@18", I: "~@6 a1@3 ~@9 b1@6 ~@11 a1@3 ~@9 a1",
  J: "~@2 b1@12 e1 ~ a1@2 ~@10 a1 ~@2 b1@5 ~@9 a1@2 ~",
  K: "~@9 a1 ~@2 b1@3 ~@2 e1 ~ e1@3 ~@2 g1@2 a1@3 ~@9 a1 ~@2 b1@7", L: "~@7 a1@3 ~@9 a1 ~@2 b1@2 ~@10 e1 ~ a1@2 ~@10",
  M: "a1 ~@2 b1@9 ~@5 a1@2 ~@11 a1 ~ b1@4 ~@8 e1 ~ a1@2", N: "~@11 a1 ~ b1@14 ~ a1@2 ~@10 a1 ~ b1@6",
  O: "~@9 a1@2 ~@10 d2@3 ~@11 a1 ~@2 a1@3 ~@7", P: "~@2 a1 ~ d2@8 ~@7 b1@5 ~@21 f#2@3", Q: "b2@24 ~@5 e2@7 ~@12",
  R: "~@10 a1@2 ~@10 a1@2 b1@12 ~@3 b1@3 ~@4 b1@2", S: "~ c#2@3 ~ e2@5 ~@3 e2@2 c#2@3 b1@2 a1@3 ~@9 a1@2 ~ b1 ~@12",
  T: "~ b1@3 ~@4 f#2@3 b2@3 ~@2 e2@6 ~ f#2@2 e2@2 ~ c#2@2 a1@3 ~@9 a1@2 ~ b1@3",
  U: "~@11 b1@4 ~@3 b1@3 c#2@3 ~@2 e2@5 ~@2 e2@2 c#2@3 b1@2 a1@3 ~@5", V: "~@4 a1@2 ~ b1@7 c#2@7 d2@3 ~@24",
  W: "~@31 c#2@5 ~@5 b2@3 c3@2 c#3@2", X: "~@5 c#2@8 f#1@35", Y: "~@23 a2@4 ~@4 a2@5 ~@12", Z: "~@21 a2@2 ~",
  AA: "~@11 g2@4 ~@5 g2@5 ~@23", AB: "~@6 f2@5 ~@3 a2@4 ~@30", AC: "b2 ~", AD: "~@44 a1@3 ~",
  AE: "~@8 a1@2 ~ b1 ~@13 a1@4 ~@8 a1@2 ~ b1@5 e1@2 f#1",
  AF: "[~@4 e1@2 a1@3 ~@9 a1@2 ~ b1@3 ~@11 a1@3 ~@9 a1@3 b1@5 e1@3 ~@4 e1@2 ~ a1@2 ~@10 a1 ~ b1@5 ~@10 a1@2]/2",
  AG: "~@12 b1@5 e1 ~ e1@3 ~@2 g#1@2 ~ a1@3 ~@9 a1@2 b1@7", AH: "~@8 a1@3 ~@9 a1@2 b1@4 ~ e1@4 ~@3 e1@3 a1@3 ~@8",
  AI: "~ a1@2 d2@9 ~@6 a1@3 ~@11 d2@4 ~@11 a1, ~@5 a1 ~@2", AJ: "~@11 a1 ~ d2@14 ~ a1@3 ~@9 a1@2 d2@5 ~",
  AK: "~@9 a1@3 ~@9 a1@2 d2@14 ~ a1@3 ~@7", AL: "~@2 a1@2 ~ d2@7 ~@7 a1@3 ~@9 a1@2 ~ d2@2 ~@12",
  AM: "a1@3 ~@9 a1@2 ~ d2@9 ~@5 a1@4 ~@8 a1@2 ~ d2@4", AN: "~@10 a1@2 ~@13 d2@13 ~ b1@9",
  AO: "~ e2@2 f#2@3 b2@7 f#2@2 e2@3 d2@2 e1@4 ~@24", AP: "~@30 a1@3 ~@10 a1@2 b1@3",
  AQ: "~@12 b1@3 ~@4 b1@2 c#2@3 d2@2 e2@6 ~ e2@2 ~ c#2@2 b1@2 ~ a1@3 ~@4",
  AR: "[~@5 a1@2 b1@5 ~@7 b1 ~@2 b1@3 ~@6 b2@3 ~@2 e2@7 ~@3 e2@2 c#2@3 a1@3 ~@9 a1 ~ b1@7 ~@8 b1@4 ~@3 b1@2 c#2@3 d2 ~ e2@2 ~@6 e2@2 c#2@2 b1@2 ~ a1@3 ~@9 a1@2 b1@9 ~@3 b1 ~@2 b1@3 ~@4 b1@3 ~@4 e1@5 ~@3 e1@5 g1 ~ [f#1,a1] ~@11 [a1,b1] ~@9 e1@3 ~@33 a1@3 ~@9 b1@3 ~@7 e1@5 ~@31 a1@3 ~@9 c2@3 c#2@2 ~@3 e2@2 ~@5 a2@4 ~@10 [c#3,g3]@3 [c3,f#3]@5 [c#3,g3]@2 [c3,f#3]@2 ~@3 [c#3,g3]@2 a1@4 ~@8 c2@3 c#2@5 e2@2 ~@5 a2@3 ~@4 a2@3 ~@4 c#3@2, ~@29 f#2@5 f#2@9 f#2@262 f#2@58 f#2@21, ~@237 a1 ~@146]/8", // F#m Asus2 C#dim Cdim C#dim Cdim C#dim
  AS: "[~@6 a2@2 b2@5 ~@2 a2@5 ~@8 c2@2 c#2@5 e2@2 ~@5 a2@3 ~@12 [c#3,g3]@2 [c3,f#3] ~@4 [c#3,g3]@2 [c3,f#3]@5 [c#3,g3]@3 a1@5 ~@7 c2@2 c#2@5 e2@2 f#2@2 ~@3 a2@3 ~@4 c2@3 ~@22 a1 ~@11, ~@13 f#2@24 f#2@58 ~@12 c#2 ~@36]/3", // C#dim Cdim C#dim Cdim C#dim
})).s("gm_fretless_bass").gain(0.36)

// bass · fretless bass · soft notes
const bass_soft = note(`<
  ~@3 A B ~@3 C D ~ E ~@2 F G H ~ I ~@5 J K L ~@3 M N O P Q ~ R ~ S T U ~@5 V ~@4 W ~ X ~@7
>`.pickRestart({
  A: "~@45 d#3 ~@2", B: "~@21 f#2 ~@26", C: "~ e1@2 ~@27 e1@2 ~@16", D: "~@3 f#1 ~@12", E: "~@17 a1 ~@30",
  F: "~@33 e1 ~@14", G: "~@43 [d1,e1] ~@4", H: "~@7 f#1 ~@8", I: "~@15 e1 ~@32", J: "~@3 d2 ~@44", K: "~@13 f#2@2 ~@33",
  L: "~@23 d2 ~@24", M: "~@40 g2@5 ~@3", N: "g2@5 ~@3 f#2@3 ~@6 f#2@5 ~@3 f2@4 ~@5 f2@4 ~@10",
  O: "~@3 a2@5 ~@20 f#2@5 ~@4 f#2@7 ~ f2@3", P: "~@23 a2 ~@7 a#2@6 ~@3 a#2@6 ~@2", Q: "a#2 ~@33 e2@2 ~@12",
  R: "~@45 f#1 ~@2", S: "~@3 f#1@2 ~@11", T: "~@5 a1 ~@5 f#1@2 ~@11", U: "~@29 f#1@5 ~@14", V: "~@11 a1 ~@12",
  W: "~@29 b1 ~@18", X: "~@2 g1 ~@3 f#1 ~@9",
})).s("gm_fretless_bass").gain(0.2)

// chords · piano · A
const piano = note("<~@6 [~@41 [a3,c#4,e4] ~@6] ~@54>").s("gm_piano").gain(0.36)

// chords · epiano2
const epiano2 = note(`<
  ~@7 A B C D E F ~ G H I@2 J@2 K@3 L M N@2 O P Q ~@5 R S@2 T U@2 V@4 W@2 X Y@2 Z AA AB@2 AC AD AE AF AG AH@2
>`.pickRestart({
  A: "~@5 [a3,d4]@6 ~@11 [a3,c#4,e4] ~@7 [a3,c#4,e4]@4 ~ [d4,f#4] ~@12, ~@5 f#4@16 ~@13 a3@2 ~@12", // D5 A D
  B: "~@4 a3 ~@11 [a3,d4,f#4]@14 ~@3 [a3,c#4,e4] ~@6 [a3,c#4,e4]@4 ~ [a3,d4,f#4]@3, ~@3 [c#4,e4]@2 ~@40 e4 ~@2", // D A D C#m
  C: "~@14 [a3,c#4,e4] ~@11 [a3,d4,f#4]@17 [c#4,e4]@2 ~@3, ~@43 a3 ~@4", // A D C#m
  D: "~@2 [c#4,e4]@5 [d4,f#4]@5 ~@12 [c#4,e4]@2 ~@10 [a3,d4,f#4]@12, ~@2 a3@22 a3 ~@23", // C#m D C#m D
  E: "~@5 [a3,c#4,e4] ~@6 [a3,c#4,e4]@4 ~@18 [a5,c#6]@12 ~@2, ~@17 [a3,d4,f#4]@29 ~@2", // A D
  F: "[f#5,a5]@15 [c#5,e5]@27 ~@2 [a4,b4,d5]@4", // F#m C#m Bm7
  G: "~@6 [c#4,e4]@2 ~@10 [a3,d4,f#4]@6 ~@11 [a3,c#4,e4] ~@6 [a3,c#4,e4]@5 [d4,f#4], ~@6 a3 ~@41", // C#m D A D
  H: "~@16 [c#4,e4]@2 ~@10 [a3,d4,f#4]@8 ~@9 [a3,e4] ~@2, ~@16 a3 ~@28 c#4@2 ~", // C#m D A5
  I: "[~@4 [a3,c#4,e4]@4 ~ [a3,d4,f#4]@3 ~@14 [c#4,e4]@2 ~@10 [a3,d4,f#4]@16 ~ [a3,c#4,e4] ~@7 [c#4,e4]@4 [d4,f#4]@5 ~@12 [c#4,e4]@2 ~@10, ~@26 a3 ~@36 a3@9 ~@12 a3 ~@11]/2", // A D C#m D A C#m D C#m
  J: "[~ [a3,d4,f#4]@15 ~ [c#4,e4]@2 ~@6 [c#4,e4]@4 ~ [d4,f#4]@3 ~@14 [c#4,e4]@2 ~@10 [a3,d4,f#4] ~@16 [a3,c#4,e4] ~@6 [a3,c#4] ~@4 [d4,f#4]@8, ~@17 a3 ~@7 a3@11 ~@11 a3 ~@48, ~@30 [c#4,e4] ~@52 e4@4 ~@9]/2", // D C#m D C#m D A D C#m
  K: "[~@9 [a5,c#6]@3 ~@11 [f#5,a5] ~@14 [c#5,e5]@27 ~@2 d5@26 ~@3 [e5,a5]@29 [d4,f#4,a4,c#5]@7 ~@12, ~@67 [a4,b4]@58 ~@19, ~@93 d5@32 ~@19]/3", // A F#m C#m A5 Dmaj7 Asus2
  L: "~@5 [c#4,e4] ~@5 [a3,d4,f#4] ~@10 c#5 b4, ~@10 a3 ~@37", // C#m D
  M: "~@6 a4@6 ~ f#4@5 e4 ~ [a3,c#4,e4] ~@11 [a3,d4,f#4]@4 ~@12", // A D
  N: "[~@6 c#5@2 b4 ~@7 a4@7 f#4@2 ~@5 [a3,c#4,e4] ~@11 [a3,d4,f#4]@17 ~@5 c#5@3 b4@2 ~@5 a4@5 ~@2 f#4@5 e4 ~ [a3,c#4,e4] ~@7]/2", // A D A
  O: "~@4 [a3,d4,f#4]@14 ~ f#3@2 [f#3,a3,c#4,e4]@3 ~@24", P: "~@8 [e3,g#3,c#4] ~@3", Q: "~@13 [f#3,a#3,c#4,e4]@35",
  R: "~@22 [c#4,e4] ~, ~@44 a3 ~@3", // C#m
  S: "[~@8 [a3,d4,f#4]@4 ~@13 [a3,c#4,e4] ~@7 [c#4,e4]@4 [d4,f#4]@17 a3@5 ~@8 [a3,d4,f#4]@14 ~@2 [a3,c#4,e4] ~@7 [a3,c#4,e4]@5, ~@8 d#4 ~@24 a3@3 ~ e4 ~@16 e4 ~@12 d#4 ~@28]/2", // D A C#m D A
  T: "[d4,f#4]@17 [a3,c#4,e4] ~@11 [a3,d4,f#4]@17 [a3,c#4,e4] ~", // D A D A
  U: "[~@5 [a3,c#4]@5 [d4,f#4]@2 ~@15 [c#4,e4] ~@11 [a3,d4,f#4]@17 [a3,c#4,e4] ~@6 [c#4,e4]@4 ~ [d4,f#4]@17 [a5,c#6]@11, ~@5 e4@4 ~@18 a3@2 ~@34 a3@22 ~@11]/2", // A D C#m D A C#m D A
  V: "[~@3 [f#5,a5]@15 [c#5,e5]@29 [e4,a4] ~@11 [f#4,a4] ~@16 [e4,a4,c#5] ~@6 [e4,a4,c#5]@3 ~@2 [f#4,a4,d5]@14 ~@3 [a5,c6]@15 [f#5,a5]@14 [c#5,e5]@29 [e4,a4,c#5] ~@11 [f#4,a4,d5]@17, ~@47 c#5@2 ~@10 c5@2 ~@131]/4", // F#m C#m A5 F#m A D Am F#m …
  W: "[[e4,a4] ~@6 [e4,a4]@4 ~ [f#4,a4,d5]@17 [a5,c#6]@14 ~ [f#5,a5]@14 e5@29 [f#4,b4]@9, c#5@2 ~@5 c#5@2 ~@49 c#5@2 ~@36]/2", // A5 D A F#m B5
  X: "~@7 e4 ~@8, ~@20 b4@3 ~@25",
  Y: "[~@31 [a3,c#4] ~@11 [a3,d4,f#4]@17 ~@4 c#5@3 b4@2 ~@5 a4@6 ~ f#4@5 e4 ~@2 [a3,c#4,e4] ~@6, ~@31 e4@2 ~@63]/2", // A D A
  Z: "~@5 [a3,d4,f#4]@17 ~@7 b4@2 ~@5 a4@7 f#4@2 ~@3, ~@27 c#5@4 ~@17", // D
  AA: "~@3 [a3,e4] ~@11 [a3,d4,f#4]@19 ~@5 b4@3 ~@4 a4@2, ~@3 c#4@2 ~@32 c#5@4 ~@7", // A5 D
  AB: "[~@6 f#4@4 e4 ~@2 [a3,c#4,e4] ~@11 [a3,d4,f#4]@17 ~@7 b4@2 ~@5 a4@3 ~@5 f#4 ~@6 [c#4,e4]@2 ~@10 [d4,f#4]@2 ~@8 [d4,f#4,a4]@3, ~@47 c#5@4 ~@20 a3 ~@11 a3 ~@12]/2", // A D C#m D
  AC: "~@33 [a3,c#4] ~@11 [d4,f#4]@2 ~, ~@33 e4@2 ~@10 a3 ~@2", AD: "~@7 [d4,f#4,a4]@5 ~@31 a3@3 ~@2",
  AE: "~@7 c4@3 c#4@2 ~@3 e4@2 f#4@4 ~ a4@3 ~@11 g4@3 f#4@5 g4@2 f#4@2",
  AF: "~@3 g4 ~ a3@3 ~@9 c4@3 c#4@5 e4@2 f#4@4 ~ a4@2 ~@5 a4@3 ~@5 [b4,c#5]", // Bsus2
  AG: "~@6 a4@2 b4@4 ~ f#4 ~@2 a4@4 ~@8 c4@2 c#4@5 e4@2 f#4@4 ~ a4@4 ~@2, ~@8 a#4 ~@39",
  AH: "[~@9 g4@2 f#4 ~@4 g4@2 f#4@5 g4 ~@2 a3 ~@11 c4@2 c#4@5 e4 ~ f#4@3 ~@2 a4@2 ~@6 c4@22 ~@2 [a4,e5,a5]@6 ~@6]/2", // A5
})).s("gm_epiano2").gain(0.36)

// other · brass section · "T 1 MC10"
const brass_section = note("<~@24 A ~ B ~@22 C ~ D E ~@7 F>".pickRestart({
  A: "~@3 [a4,a5]@9 ~ [f#4,f#5]@5 [e4,e5]@3 ~@27", B: "~@23 [a4,a5] ~@9 [f#4,f#5]@5 [e4,e5]@3 ~@7",
  C: "~@24 [a4,a5]@9 [f#4,f#5]@5 [e4,e5]@2 ~@8, ~@24 g4 ~@23", D: "~@11 [a4,a5]", E: "~@3 [f#4,f#5]@2 [e4,e5] ~@18",
  F: "~@36 [a2,a3]@7 ~@5, ~@36 b3 ~@11", // A
})).s("gm_brass_section").gain(0.41)

// drums · kick
const kick = s("bd").struct(`<
  ~@2 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 L M AI AJ AK AL AM S AN AO AP AQ AR AS
  AT AU AV AW AX AY AZ BA BB BC BD
>`.pickRestart({
  A: "~ x ~@35 x ~@10", B: "~@11 x ~@28 x ~@7", C: "~@7 x ~@8", D: "~@9 x ~@21 x ~@16", E: "~@10 x ~@6 x ~@23 x ~@6",
  F: "~@5 x ~@16 x ~@11 x ~@13", G: "~ x ~ x ~@11 x ~@16 x ~@12 x ~@2", H: "~@11 x ~ x ~@12 x ~@16 x ~@4",
  I: "~@7 x ~@13 x ~@2 x ~@11 x ~@11", J: "~@5 x ~@11 x ~@13 x ~@2 x ~@11 x ~", K: "~@15 x ~@11 x ~@13 x ~@2 x ~@3",
  L: "~@8 x ~@16 x ~@11 x ~@10", M: "~@4 x ~ x ~@11 x ~@16 x ~@11 x", N: "~@14 x ~ x ~@11 x ~@16 x ~@2",
  O: "~@9 x ~@14 x ~ x ~@11 x ~@9", P: "~@7 x ~@11 x ~@14 x ~ x ~@11", Q: "x ~@16 x ~@11 x ~@14 x ~ x ~",
  R: "~@11 x ~@15 x ~@12 x ~@7", S: "~@6 x ~@2 x ~@11 x ~@16 x ~@9", T: "~@2 x ~@13 x ~@2 x ~@11 x ~@16",
  U: "x ~@11 x ~@13 x ~@2 x ~@18", V: "~@10 x ~@13 x ~@11 x ~@2 x ~@8", W: "~@5 x ~@14 x ~@14 x ~@11 x",
  X: "~ x ~@14 x ~@13 x ~@14 x ~@2", Y: "~@9 x ~ x ~@14 x ~@13 x ~@7", Z: "~@7 x ~@11 x ~ x ~@11 x ~@2 x ~@11",
  AA: "~@2 x ~@11 x ~@2 x ~@13 x ~@12 x ~ x ~", AB: "~ x ~@2", AC: "~@23 x ~@16 x ~@7", AD: "~@8 x ~@16 x ~@16 x ~@5",
  AE: "~@11 x ~@16 x ~@16 x ~@2", AF: "~@14 x ~@13 x ~@2 x ~@16", AG: "x ~@16 x ~@6",
  AH: "~@15 x ~@11 x ~@6 x ~@7 x ~ x ~@3", AI: "~@14 x ~ x ~@12 x ~@15 x ~@2", AJ: "~@10 x ~@13 x ~@2 x ~@11 x ~@8",
  AK: "~@8 x ~@11 x ~@13 x ~@2 x ~@10", AL: "~ x ~@16 x ~@11 x ~@13 x ~@2 x", AM: "~@11 x ~@16 x ~@11 x ~@7",
  AN: "~@2 x ~@14 x ~ x ~@11 x ~@16", AO: "x ~@11 x ~@14 x ~ x ~@11 x ~@6", AP: "~@10 x ~@11 x ~@14 x ~ x ~@8",
  AQ: "~@3 x ~@16 x ~@26 x", AR: "~@6 x ~@9 x!2 ~@12 x ~@14 x ~@2", AS: "~@9 x ~ x ~@14 x ~@14 x ~@6",
  AT: "~@7 x ~@11 x ~@2 x ~@13 x ~@11", AU: "~@3 x ~@13 x ~@11 x ~@2 x ~@13 x ~", AV: "~@13 x ~@13 x ~@11 x ~@2 x ~@5",
  AW: "~@8 x ~@14 x ~@13 x ~@10", AX: "~@2 x ~ x ~@14 x ~@13 x ~@11 x ~@2", AY: "~@7 x ~@21 x ~@13 x ~@4",
  AZ: "~@31 x ~@16", BA: "~@5 x ~@28 x ~@13", BB: "~@5 x ~@10", BC: "~@2 x ~@10 x ~@10", BD: "~@4 x ~@6 x ~@24 x ~@11",
})).gain(0.51)

// drums · kick · soft notes
const kick_soft = s("bd").struct("<~@2 A B C D ~@29 E ~@12 F ~@6 G H I J K ~>".pickRestart({
  A: "~@35 x ~@12", B: "~@37 x ~@10", C: "~@4 x ~@6 x ~@36", D: "~@7 x ~@40", E: "~@18 x ~ x ~ x ~@2 x ~@22",
  F: "~@18 x ~@2 x ~ x ~@2 x ~@21", G: "~@13 x ~@10", H: "~@29 x ~@18", I: "~@16 x ~@6 x", J: "~ x ~@6", K: "~ x ~@46",
})).gain(0.26)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@22 A B ~@11 C ~@12 D ~@6 E ~@5>".pickRestart({
  A: "~@41 x ~@4 x ~", B: "x!2 ~@14", C: "~@32 x!4 ~@12", D: "~@13 x!2 ~@9", E: "~@38 x ~@2 x ~@6",
})).gain(0.15)

// drums · pedal hat
const pedal_hat = s("hh").struct(`<
  A B C D E F G H I J K L M N O P Q R S O T U V W X Y Z AA ~@2 AB AC AD AE ~ AF I AG K AH M N AI P L R AJ AK AL Q AM AN
  AO Y U AP AQ AR C Z AS
>`.pickRestart({
  A: "~@13 x ~@2", B: "~@5 x ~@14 x ~@13 x ~@13", C: "~ x ~@6 x ~@6 x ~@7 x ~@6 x ~@6 x ~@6 x ~@3",
  D: "~@4 x ~@6 x ~@6 x ~@6 x ~@7 x ~@6 x ~@6 x", E: "~@6 x ~@7 x ~@6 x ~@6 x ~@7 x ~@6 x ~@4",
  F: "~@2 x ~@6 x ~@7 x ~@6 x ~@6 x ~@6 x ~@7 x ~", G: "~@5 x ~@21 x ~@6 x ~@6 x ~@6",
  H: "x ~@7 x ~@6 x ~@6 x ~@7 x ~@6 x ~@6 x ~@3", I: "~@3 x ~@7 x ~@6 x ~@6 x ~@6 x ~@7 x ~@6 x",
  J: "~@6 x ~@6 x ~@7 x ~@6 x ~@6 x ~@7 x ~@4", K: "~@2 x ~@6 x ~@6 x ~@7 x ~@6 x ~@6 x ~@6 x ~@2",
  L: "~@5 x ~@6 x ~@6 x ~@6 x ~@7 x ~@6 x ~@6", M: "x ~@7 x ~@6 x ~@6 x ~@6 x ~@7 x ~@6 x ~@3",
  N: "~@3 x ~@6 x ~@7 x ~@6 x ~@6 x ~@6 x ~@7 x", O: "~@6 x ~@6 x ~@6 x ~@7 x ~@6 x ~@6 x ~@5",
  P: "~@2 x ~@6 x ~@6 x ~@6 x ~@7 x ~@6 x ~@6 x ~@2", Q: "~@4 x ~@7 x ~@6 x ~@6 x ~@6 x ~@7 x ~@6",
  R: "x ~@6 x ~@7 x ~@6 x ~@6 x ~@6 x ~@7 x ~@3", S: "~@3 x ~@6 x ~@6 x ~@7 x ~@6 x ~@6 x ~@6 x ~",
  T: "~ x ~@7 x ~@6 x ~@6 x ~@6 x ~@7 x ~@6 x ~@2", U: "~@4 x ~@6 x ~@7 x ~@6 x ~@6 x ~@6 x ~@7",
  V: "x ~@6 x ~@6 x ~@7 x ~@20 x ~@4", W: "~@10 x ~@6 x ~@6 x ~@7 x ~@6 x ~@6 x ~",
  X: "~@5 x ~@7 x ~@6 x ~@6 x ~@7 x ~@6 x ~@5", Y: "~ x ~@6 x ~@7 x ~@6 x ~@6 x ~@6 x ~@7 x ~@2",
  Z: "~@4 x ~@6 x ~@6 x ~@7 x ~@6 x ~@6 x ~@6 x", AA: "~@7 x ~@6 x ~@33", AB: "~@31 x ~@16", AC: "x ~@16 x ~@16 x ~@13",
  AD: "~@3 x ~@16 x ~@16 x ~@10", AE: "~ x ~@6", AF: "~ x ~@13 x ~@14 x ~@11 x ~ x ~@3",
  AG: "~@6 x ~@7 x ~@6 x ~@6 x ~@6 x ~@7 x ~@4", AH: "~@5 x ~@6 x ~@6 x ~@7 x ~@6 x ~@6 x ~@6",
  AI: "~@6 x ~@6 x ~@7 x ~@6 x ~@6 x ~@6 x ~@5", AJ: "~@3 x ~@6 x ~@6 x ~@7 x ~@6 x ~@6 x ~@7 x",
  AK: "~@6 x ~@6 x ~@6 x ~@14 x ~@12", AL: "~ x ~@14 x ~@13 x ~@7 x ~@6 x ~@2",
  AM: "x ~@6 x ~@6 x ~@7 x ~@6 x ~@6 x ~@6 x ~@4", AN: "~@3 x ~@6 x ~@6 x ~@6 x ~@7 x ~@6 x ~@6 x ~",
  AO: "~@6 x ~@6 x ~@6 x ~@6 x ~@7 x ~@6 x ~@5", AP: "x ~@6 x ~@35 x ~@4",
  AQ: "~@2 x ~@7 x ~@6 x ~@6 x ~@7 x ~@6 x ~@6 x ~", AR: "~@5 x ~@7 x ~@6 x ~@6 x ~@6 x ~@7 x ~@5",
  AS: "~@21 x ~@6 x ~@7 x ~@11",
})).gain(0.51)

// drums · pedal hat · soft notes
const pedal_hat_soft = s("hh").struct(`<
  ~@6 A B C D E F G H I J K L M N O P Q R S T U V ~@8 W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL S AM AN AO ~@5
>`.pickRestart({
  A: "~@23 x", B: "~@5 x ~@7 x ~@6 x ~@6 x ~@6 x ~@7 x ~@5", C: "~@8 x ~@6 x ~@7 x ~@6 x ~@6 x ~@7 x ~@2",
  D: "~@4 x ~@13 x ~@7 x ~@6 x ~@6 x ~@6 x", E: "~@7 x ~@6 x ~@13 x ~@7 x ~@6 x ~@4",
  F: "~@2 x ~@6 x ~@7 x ~@6 x ~@14 x ~@6 x ~", G: "~@5 x ~@6 x ~@7 x ~@6 x ~@6 x ~@13",
  H: "~ x ~@6 x ~@6 x ~@6 x ~@7 x ~@6 x ~@6 x ~@3", I: "~@11 x ~@6 x ~@6 x ~@7 x ~@6 x ~@6 x",
  J: "~@6 x ~@14 x ~@6 x ~@6 x ~@7 x ~@4", K: "~@2 x ~@6 x ~@7 x ~@13 x ~@6 x ~@7 x ~",
  L: "~@5 x ~@6 x ~@6 x ~@7 x ~@13 x ~@6", M: "x ~@7 x ~@6 x ~@6 x ~@6 x ~@7 x ~@10",
  N: "~@3 x ~@7 x ~@6 x ~@6 x ~@6 x ~@7 x ~@6 x", O: "~@13 x ~@7 x ~@6 x ~@6 x ~@6 x ~@5",
  P: "~@2 x ~@6 x ~@14 x ~@6 x ~@6 x ~@6 x ~@2", Q: "~@5 x ~@6 x ~@6 x ~@28", R: "~@15 x ~@6 x ~@6 x ~@7 x ~@6 x ~@3",
  S: "~@3 x ~@6 x ~@7 x ~@6 x ~@6 x ~@6 x ~@7 x", T: "~@6 x ~@6 x ~@6 x ~@7 x ~@6 x ~@6 x ~@5",
  U: "~ x ~@7 x ~@6 x ~@6 x ~@7 x ~@6 x ~@6 x ~@2", V: "~@4 x ~@7 x ~@6 x ~@28",
  W: "~ x ~@6 x ~@7 x ~@6 x ~@6 x ~@6 x ~@7 x ~@2", X: "~@11 x ~@6 x ~@7 x ~@6 x ~@6 x ~@6 x",
  Y: "~@7 x ~@13 x ~@7 x ~@6 x ~@6 x ~@4", Z: "~@2 x ~@7 x ~@6 x ~@13 x ~@7 x ~@6 x ~",
  AA: "~@5 x ~@6 x ~@7 x ~@6 x ~@13 x ~@6", AB: "~ x ~@6 x ~@6 x ~@7 x ~@6 x ~@6 x ~@10",
// … 37 more lines