Strudelify

Sweet Little Sixteen

The Beatles

KeyC majorTempo196 bpm
0:00/0:00
// Sweet Little Sixteen — The Beatles
// 196 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 7 acoustic guitar steel (copy of ch 6 "CHUCK BERRY" electric guitar jazz)
// note: Full arrangement: all 82 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): GUITAR.
setcpm(196/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 B D E B@2 F E G H F@2 B I J E B K D L M K D L N O F L M K D L C I F E B@2 F E P Q F E B@2 F@2 M K D L M K F L
  P O F L M K J L B I D E M I F E B@2 E@2 R ~@2
>`.pickRestart({
  A: "~@14 c2 ~", B: "g2@5 ~ g2 ~ g2@5 ~ g2 ~", C: "g2@5 ~ g2 ~ g2 ~ g2@3 ~ g2 ~", D: "c2@6 c2 ~ c2@5 ~ c2 ~",
  E: "c2@5 ~ c2 ~ c2@6 c2 ~", F: "c2@5 ~ c2 ~ c2@5 ~ c2 ~", G: "f2@5 ~ f2 ~ f2@5 ~ f2 ~", H: "f2@5 ~ f2 ~ f2@6 d2 ~",
  I: "g2@5 ~ g2 ~ g2@6 g2 ~", J: "c2@5 ~ c2 ~ c2 ~ c2@3 ~ c2 ~", K: "g2@5 ~@9 g2 ~", L: "c2@5 ~@9 c2 ~",
  M: "g2@6 g2 ~ g2@5 ~ g2 ~", N: "f2@5 ~ f2 ~ f2 ~ f2@3 ~ f2 ~", O: "f2@5 ~@9 f2 ~", P: "f2@6 f2 ~ f2@5 ~ f2 ~",
  Q: "f2@5 ~ f2 ~ f2@6 f2 ~", R: "c2@5 ~ c2 ~ c2 ~ c2@2 ~@2 c2 ~",
})).s("gm_electric_bass_finger").gain(0.35)

// chords · acoustic guitar steel · "GUITAR"
const acoustic_guitar_steel = note(`<
  ~ A@2 B ~ C ~ D ~ C ~ E ~@15 F@2 ~@2 G ~@7 H ~@3 I ~ J ~@13 K ~@17 L@2 M ~@2
>`.pickRestart({
  A: "[~@14 [b3,d4]@7 ~@11]/2", B: "~@8 c4@3 ~ b3 ~@3", C: "~@4 e4 ~@11", D: "~@4 b3 ~@11",
  E: "~@3 a#3@3 ~@5 [f3,a#3]@2 ~@3", F: "[~@3 a#3@3 ~@2 [f2,f3,c4]@3 ~ [f2,f3,a#3] f3@8 ~@11]/2", G: "~@11 c4 ~@4",
  H: "~@4 c4@3 [g3,d4]@3 ~@6", I: "[f2,f3,a3]@2 ~@2 a#3@2 ~@5 [f3,a#3] ~@4", J: "~@11 f4 ~@4", K: "a3@3 ~ b3@2 ~@10",
  L: "[~@7 [c3,c4]@7 ~@2]/2", M: "b3 ~ e4 ~@5",
})).s("gm_acoustic_guitar_steel").gain(0.36)

// chords · electric guitar jazz · "GUITAR"
const electric_guitar_jazz = note(`<
  A@3 B@2 C@2 D@2 E@2 F@2 G@2 H@2 I@2 J@2 K@2 L@2 M@2 N@2 O@2 P@2 Q@2 R@2 S@4 T@4 U@2 V@2 W@2 X@2 Y@2 Z@2 AA@4 AB@2 AC@2
  AD@2 AE@2 AF@2 AG@2 AD@2 AH@2 AI@2 AJ AK ~
>`.pickRestart({
  A: "[~@16 b4@2 g4@2 [d4,a#4]@2 g4@2 [d4,a4]@2 g4 ~ [d4,g#4]@2 [g3,g4]@15 ~ g3@2, ~@15 d4@5 ~@28, ~@15 g4@2 ~@31]/3", // Gm D5 Ddim G
  B: "[[g2,b3]@2 g3 ~ [g2,c4]@2 g3 ~ [g2,d4]@2 g3@2 [g2,g3,c4] ~@3 g2@10 ~@4 c4 ~, ~@4 g3 ~@3 g3 ~@5 [g3,b3]@12 ~@6]/2", // G C5 G5 C5 G
  C: "[e4@2 c4 ~ [c3,f4]@2 c4 ~ g4@2 c4@2 [c3,c4,f4]@2 ~@2 c3@8 ~@6 g3@2, c3@4 c4 ~@3 c3@4 ~@20, ~@8 c4 ~@5 [c4,e4]@10 ~@8]/2", // F5 C
  D: "[[g2,b3]@2 g3 ~ [g2,c4]@2 g3 ~ [g2,d4]@2 g3@2 [g2,c4,c#4] g3 ~@2 g2@9 ~@5 c4 ~, g3 ~@3 g3 ~@3 g3 ~@5 [g3,b3]@11 ~@7]/2", // G C5 G5 C G
  E: "[[c3,e4]@2 c4 ~ [c3,f4]@2 c4 ~ [c3,g4]@2 c4!2 [c3,f4]@2 ~@2 c3@7 ~@7 f3 ~, ~@4 c4 ~@3 c4 ~@5 [c4,e4]@9 ~@9]/2", // C F5 C5 F5 C
  F: "[[f2,a3]@2 f3 ~ [f2,a#3]@2 f3 ~ [f2,c4]@2 f3@2 [f2,a#3]@2 ~@2 f2@7 ~@7 c4@2, f3 ~@3 f3 ~@3 f3 ~@5 [f3,a3]@9 ~@9]/2", // F A#5 F5 A#5 F
  G: "[[c3,e4]@2 c4 ~ [c3,f4]@2 c4 ~ [c4,g4] ~ c4 ~ [c3,c4,f4] ~@3 c3@7 ~@7 g3@2, ~@4 c4 ~@3 c3@2 ~@4 [c4,e4]@9 ~@9]/2", // C F5 C5 F5 C
  H: "[[g2,b3]@2 g3 ~ [g2,c4]@2 g3 ~ [g3,d4] ~ g3@2 [g2,g3,c4] ~@3 g2@9 ~@5 c4 ~, ~@4 g3 ~@3 g2@2 ~@4 [g3,b3]@11 ~@7]/2", // G C5 G5 C5 G
  I: "[[c3,e4]@2 c4 ~ [c3,f4]@2 c4 ~ [c4,g4] ~ c4 ~ [c3,f4]@2 ~@2 c3@5 ~@9 g3@2, ~@4 c4 ~@3 c3@2 ~@4 [c4,e4]@7 ~@11]/2", // C F5 C5 F5 C
  J: "[[g2,b3]@2 g3 ~ [g2,g3,c4]@2 g3 ~ [g3,d4] ~ g3 ~ [g2,g3,c4] ~@3 g2@11 ~@3 c4 ~, ~@8 g2@2 ~@4 [g3,b3]@13 ~@5]/2", // G C5 G5 C5 G
  K: "[[e4,f4] ~ c4 ~ [c3,c4,f4]@2 c4 ~ [c4,g4] c4 ~@2 [c3,c4,f4]@2 ~@2 c3@9 ~@5 g3@2, c3@2 ~@6 c3@3 ~@3 [c4,e4]@10 ~@8]/2", // Fmaj7 F5 C5 F5 C
  L: "[[g2,b3]@2 g3 ~ [g2,c4]@2 g3 ~ [g3,d4] ~ g3@2 [g2,g3,c4] ~@3 g2@6 ~@8 c4 ~, ~@4 g3 ~@3 g2@2 ~@4 [g3,b3]@9 ~@9]/2", // G C5 G5 C5 G
  M: "[[c3,e4]@2 c4 ~ [c3,c4,f4]@2 c4 ~ [c3,c4,g4] c4 ~@2 [c3,c4,f4] ~@3 c3@6 ~@8 f3@2, ~@7 [c4,e4]@4 ~@5]/2", // C F5 C5 F5 C
  N: "[[f2,a3]@2 f3 ~@2 f3 ~ [f2,c4]@2 f3 ~ [f2,f3,a#3]@2 ~@3 f2@8 ~@6 [c4,d4] ~, ~@2 [f2,f3,a#3] ~@4 [f3,a3]@5 ~@4]/2", // F F5 A#5 Csus2 A#5 F
  O: "[[c3,e4]@2 c4 ~ [c3,f4]@2 c4 ~ [c3,c4,g4] ~ c4 ~ [c3,c4,f4]@2 ~@2 c3@12 ~@2 g3 ~, c4 ~@13 [c4,e4]@14 ~@4]/2", // C F5 C5 F5 C
  P: "[[g2,b3]@2 g3 ~ [g2,c4]@2 g3 ~ [g2,g3,d4]@2 g3 ~ [g2,g3,c4] ~@3 g2@5 ~@9 c4 ~, ~@14 [g3,b3]@9 ~@9]/2", // G C5 G5 C5 G
  Q: "[[c3,e4]@2 c4 ~ [c3,f4]@2 c4 ~ [c3,c4,g4] ~ c4 ~ [c3,c4,f4]@2 ~@2 c3@3 ~@11 g3 ~, ~@14 [c4,e4]@5 ~@13]/2", // C F5 C5 F5 C
  R: "[[g2,b3]@2 g3 ~ [g2,c4]@2 g3 ~ [g3,d4] ~ g3 ~ [g2,g3,c4] ~@3 g2@11 ~@3 c4 ~, g3 ~@3 g3 ~@3 g2@2 ~@4 [g3,b3]@13 ~@5]/2", // G C5 G5 C5 G
  S: "[[c3,e4]@2 c4 ~ [c3,f4]@2 c4 ~ [c3,c4,g4] ~ c4 ~ [c3,c4,f4] ~@3 c3@10 ~@4 g3 ~ [g3,b3]@2 g3 ~ g3 ~ g3 ~ [g2,g3,d4]@2 g3!2 [g2,c4]@2 ~@2 g2@11 ~@3 c4 ~, ~@14 [c4,e4]@11 ~@6 g2@3 ~ [g2,c4]@2 ~@9 [g3,b3]@14 ~@4]/4", // C F5 C5 F5 G G5 C5 C …
  T: "[[c3,e4]@2 c4 ~ [c3,f4]@2 c4 ~ [c4,f4,g4] ~ c4 ~ [c3,c4,f4] ~@3 c3@9 ~@5 f3 [f2,a3]@3 f3 ~ f3 ~ f3 ~ [f2,f3,c4]@2 f3 ~ [f2,f3,a#3] ~@3 f2@7 ~@7 c4@2, ~@4 c4 ~@3 c3@2 ~@4 [c4,e4]@10 ~@11 [f2,a#3]@3 ~@8 [f3,a3]@9 ~@9]/4", // C F5 Csus4 F5 F F5 A#5 C …
  U: "[[c3,e4]@2 c4 ~ [c3,c4,f4]@2 c4 ~ [c3,c4,g4]@2 c4 ~ [c3,c4,f4] ~@3 c3@11 ~@3 g3 ~, c4 ~@13 [c4,e4]@13 ~@5]/2", // C F5 C5 F5 C
  V: "[[g2,b3]@2 g3 ~ [g2,g3,c4]@2 g3 ~ [g2,g3,d4] ~ g3 ~ [g3,c4] ~@3 g2@9 ~@5 c4@2, g3 ~@10 g2@2 ~ [g3,b3]@11 ~@7]/2", // G C5 G5 C5 G
  W: "[[c3,e4]@2 c4 ~ [c3,f4]@2 c4 ~ [c3,c4,g4]@2 c4 ~ [c3,c4,f4] ~@3 c3@3 ~@11 g3@2, ~@4 c4 ~@9 [c4,e4]@5 ~@13]/2", // C F5 C5 F5 C
  X: "[[g2,b3]@2 g3 ~ [g2,g3,c4]@2 g3 ~ [g2,g3,d4] ~ g3 ~ [g2,g3,c4] ~@3 g2@8 ~@6 c4@2, ~@7 [g3,b3]@5 ~@4]/2", // G C5 G5 C5 G
  Y: "[[c3,e4]@2 c4 ~ [c3,c4,f4]@2 c4 ~ [c3,c4,g4] ~ c4 ~ [c3,c4,f4] ~@3 c3@9 ~@5 g3@2, ~@14 [c4,e4]@11 ~@7]/2", // C F5 C5 F5 C
  Z: "[[g2,b3]@2 g3 ~ [g2,g3,c4]@2 g3 ~ [g2,g3,d4]@2 g3 ~ [g2,g3,c4] ~@3 g2@10 ~@4 c4 ~, ~@7 [g3,b3]@6 ~@3]/2", // G C5 G5 C5 G
  AA: "[[c3,e4]@2 c4 ~ [c3,c4,f4]@2 c4 ~ [c3,c4,g4] ~ c4 ~ [c3,c4,f4]@2 ~@2 c3@7 ~@7 f3 ~ f3 ~ f3 ~ [f2,f3]@2 f3 ~ [f2,f3,c4]@2 f3 ~ [f2,f3,a#3] ~@3 f2@9 ~@5 c4@2, c4 ~@13 [c4,e4]@9 ~@8 [f2,a3]@3 ~ a#3@2 ~@9 [f3,a3]@11 ~@7]/4", // C F5 C5 F5 F F5 A#5 C …
  AB: "[[c3,e4]@2 c4 ~ [c3,f4]@2 c4 ~ [c3,c4,g4] ~ c4 ~ [c3,c4,f4] ~@3 c3@10 ~@4 g3@2, ~@4 c4 ~@9 [c4,e4]@11 ~@7]/2", // C F5 C5 F5 C
  AC: "[[g2,b3]@2 g3 ~ [g2,g3,c4]@2 g3 ~ [g2,g3,d4] ~ g3 ~ [g2,g3,c4] ~@3 g2@9 ~@5 c4 ~, g3 ~@13 [g3,b3]@11 ~@7]/2", // G C5 G5 C5 G
  AD: "[[c3,e4]@2 c4 ~ [c3,c4,f4]@2 c4 ~ [c3,c4,g4] ~ c4 ~ [c3,c4,f4] ~@3 c3@9 ~@5 g3@2, c4 ~@13 [c4,e4]@11 ~@7]/2", // C F5 C5 F5 C
  AE: "[[g2,b3]@2 g3 ~ [g2,g3,c4]@2 g3 ~ [g2,g3,d4]@2 g3 ~ [g2,g3,c4] ~@3 g2@10 ~@4 c4@2, g3 ~@13 [g3,b3]@12 ~@6]/2", // G C5 G5 C5 G
  AF: "[[c3,e4]@2 c4 ~ [c3,c4,f4]@2 c4 ~ [c3,c4,g4]@2 c4@2 [c3,c4,f4] ~@3 c3@11 ~@3 g3@2, c4 ~@13 [c4,e4]@13 ~@5]/2", // C F5 C5 F5 C
  AG: "[[g2,b3]@2 g3 ~ [g2,g3,c4]@2 g3 ~ [g2,g3,d4]@2 g3 ~ [g3,c4] ~@3 g2@11 ~@3 c4 ~, ~@11 g2@2 ~ [g3,b3]@13 ~@5]/2", // G C5 G5 C5 G
  AH: "[[g2,b3]@2 g3@2 [g2,c4]@2 g3 ~ [g2,d4]@2 g3@2 [g2,g3,c4] ~@3 g2@11 ~@3 c4 ~, ~@4 g3 ~@3 g3 ~@5 [g3,b3]@13 ~@5]/2", // G C5 G5 C5 G
  AI: "[[c3,e4]@2 c4 ~ [c3,f4]@2 c4 ~ [c4,g4] ~ c4@2 c3@2 ~@2 c3@9 ~@5 c4@2, c4 ~@3 c4 ~@3 c3@2 ~@2 c4@13 ~@7, ~@12 f4 ~ e4@11 ~@7]/2", // C F5 C5
  AJ: "[c4,e4]@2 [c4,g4]@2 [c3,f4]@2 [c4,g4]@2 [c3,c4,g4]@2 [c4,f4]@2 [c3,c4,f4] [c4,e4] [c4,e4]@2, c3 ~@3, g4 ~@3 c4 ~@11", // C C5 F5 C5 F5 C
  AK: "c4@2 ~ c4@3 c4@9 ~, [c3,e4]@7 ~, ~ d4 ~@6", // C
})).s("gm_electric_guitar_jazz").gain(0.36)

// bass · acoustic bass
const bass_2 = note(`<
  ~@3 A B C D E F G H I J K D E F L M N O P Q R S T U V W X@2 Y@2 Z@2 AA@2 K H AB@2 K H AC AD K AE E AF AG@4 AH Q AI AJ
  AK@2 AL AM AN@2 AO@2 AP Q A F AQ@2 AR@3 AS E F AT@3 AU ~
>`.pickRestart({
  A: "g2@4 a2@3 ~ b2@4 c3@4", B: "d3@2 ~@3 c3@3 b2@3 ~ a2@2 ~@2", C: "c2@4 d2@3 ~ e2@4 f2@4",
  D: "g2@4 f2@3 e2@4 ~ d2@4", E: "g2 a2 b2 c3", F: "d3@2 c3@2 b2@2 a2 ~", G: "c2@3 ~ d2@3 ~ e2@4 f2@4",
  H: "g2 f2 e2 d2", I: "f2@4 g2@4 a2@3 ~ a#2@4", J: "c3@3 a#2@3 ~ a2@5 g2@3 ~", K: "c2 d2 e2 f2",
  L: "c2@4 d2@4 e2@4 d2@3 ~", M: "c2@3 ~@13", N: "g2 a2 c3 b2, ~@8 b2 ~@7", O: "g2@3 ~@13",
  P: "c2@4 e2@4 f2@3 ~ d2 e2@3", Q: "c2 ~@3", R: "g2@4 b2@4 d3@3 b2@4 ~", S: "g2@5 ~@11", T: "c2@3 ~ e2@4 g2@3 e2@4 ~",
  U: "c2@5 ~@11", V: "f2@3 a2@4 c3@4 a2@4 ~", W: "f2@3 ~@5", X: "[c2@4 e2@4 g2@3 e2@4 c2@5 ~@12]/2",
  Y: "[g2@4 b2@4 d3@4 b2@3 g2@5 ~@12]/2", Z: "[c2@4 e2@4 g2@3 e2@4 c2@6 ~@11]/2",
  AA: "[g2@4 a2@3 b2@4 c3@4 d3@4 ~ c3@4 b2@4 a2@3 ~]/2", AB: "[g2@4 a2@4 b2@4 c3@3 d3@4 ~ c3@3 b2@4 ~ a2@3 ~]/2",
  AC: "f2 a2 a#2 b2", AD: "c3@3 a#2@4 a2@4 ~ g2@3 ~", AE: "g2@3 f2@5 e2@3 d2@5", AF: "d3@4 c3@3 b2@4 a2@2 ~@3",
  AG: "[c2@5 d2@3 e2@4 f2@3 g2@3 ~@13 g2@4 ~ b2@4 d3@3 b2@4 g2@4 ~@13]/4", AH: "c2@4 e2@3 g2@4 e2@4 ~",
  AI: "g2@4 b2@3 d3@4 b2@4 ~", AJ: "g2 ~@3", AK: "[c2@4 e2@3 g2@5 e2@3 c2@5 ~@12]/2", AL: "f2@4 a2@3 c3@4 a2@4 ~",
  AM: "f2@5 ~@11", AN: "[c2@3 e2@4 ~ g2@3 e2@4 c2@4 ~@13]/2", AO: "[g2@4 b2@4 d3@3 b2@4 g2@4 ~@13]/2",
  AP: "c2 e2 g2 e2", AQ: "[c2@4 d2@3 ~ e2@3 f2@4 g2@5 f2@3 e2@5 d2@4]/2",
  AR: "[g2@3 a2@4 ~ b2@3 c3@4 d3@4 ~ c3@3 b2@4 a2@2 ~@2 c2@5 d2@4 e2@4 f2@4]/3", AS: "g2@4 f2@3 e2@4 d2@4 ~",
  AT: "[c2@4 d2@4 e2@3 f2@4 g2@4 ~ f2@4 e2@3 d2@3 ~ c2@4 ~ d2@4 e2@4 d2@4]/3", AU: "c2@6 ~ c2@9",
})).s("gm_acoustic_bass").gain(0.36)

// chords · electric guitar jazz · "CHUCK BERRY"
const electric_guitar_jazz_2 = note("<~ A B ~@31 C D E F G H I J K L M N O P Q R S ~@31>".pickRestart({
  A: "[g4,b4]@3 ~ a4@2 ~@2 [e4,g4]@2 ~@2 [d4,f4]@2 ~@2, ~@3 f4@3 ~@10", B: "[d4,g4]@5 ~@11, e4 ~@15",
  C: "~@4 [g4,c5]@2 [g4,c5] ~ [g4,c5]@2 [g4,b4]@2 ~@2 [g4,b4] ~", // C5 G
  D: "[g4,b4]@2 ~ [g4,b4] ~@2 [g4,b4] ~ [g4,b4] ~ [f4,a4] ~@2 [f4,a4] ~@2", // G F
  E: "[f4,a4]@2 ~ [e4,g4] ~ [e4,g4] ~@2 [e4,g4] ~ [d4,f4]@2 ~@2 [d4,f4] ~", // F Em Dm
  F: "[c4,e4]@2 ~@4 [g4,c5]@3 ~ b4@3 ~ g4 ~, ~@10 g4 ~@5", G: "[g4,a4]@2 ~ g4@2 ~ g4 ~ a4@2 g4 ~@2 a4 g4 ~",
  H: "[g4,c5]@2 ~ [g4,b4] ~@2 [g4,b4] ~ [g4,b4] ~ [g4,c5]@2 ~ [g4,c5] ~@2", // C5 G C5
  I: "[g4,d5]@2 [g4,d5]@2 ~ [g4,d5] ~@2 [g4,d5]@2 ~ g4@2 [g4,b4]@2 ~, ~@5 c5 ~@2", // G5 G
  J: "[g4,c5]@5 ~ a4@3 ~ g4 ~@3 a4@2, ~@6 g4 ~@9", // C5
  K: "g4 ~ [g4,c5]@2 ~@2 [g4,c5] ~ [g4,c5]@2 ~ g#4@2 a4@3, ~@13 g#4 ~@2", // C5
  L: "~ [f4,c5]@5 ~ [f4,c5]@3 ~ [f4,a4]@2 ~ [f4,a4]@2, ~ b4 ~@14", M: "~@2 [f4,c5]@3 ~@3 [f4,c5]@3 ~ [f4,a4] ~@3",
  N: "[g4,a4,c5]@2 ~ [g4,a4,c5]@2 ~ [a4,c5] ~ [a4,c5] ~ [g4,b4]@2 ~ [g4,b4]@2 ~", // Am7 Am G
  O: "[g4,b4]@2 [f4,a4]@2 ~@2 [f4,a4] ~ [f4,a4] ~ e4 g4 ~ [e4,g4] ~@2", // G F Em
  P: "[g4,b4]@2 [g4,b4] ~@2 [a4,c5] ~@2 [b4,d5]@2 [b4,d5] ~@2 [a4,c5] ~@2", // G Am Bm Am
  Q: "[g4,b4] ~ [f4,a4] ~@2 [e4,g4] ~@2 [f4,a4] ~ [e4,g4] ~@2 [g4,b4]@2 ~", // G F Em F Em G
  R: "[g4,a4,c5]@2 ~ [g4,c5]@2 [g4,c5] ~@2 [g4,c5] ~ a4@3 g4@2 ~, ~@10 g4 ~@5", S: "[g4,c5] ~@7",
})).s("gm_electric_guitar_jazz").gain(0.41)

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

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

// drums · low tom
const low_tom = s("lt").struct("<~@18 [~ x!4 ~ x ~] ~@47 [~@7 x] ~@7 [~@13 x!2 ~] ~@7>").gain(0.4)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A B C D C D E C@2 D F C@2 D C D C ~ C G C H C H C H E H E I F I E J C D C D C@2 E D E C@3 F C B ~ C H C I E H C H C
  H C I F I C K C@2 F B C D E L C D E D C ~@2
>`.pickRestart({
  A: "~@7 x", B: "x!5 ~@3", C: "x!8", D: "x!7 ~", E: "x!3 ~ x ~ x ~ x ~ x ~ x ~ x ~",
  F: "x ~ x ~ x!3 ~ x ~ x ~ x ~ x ~", G: "x!2 ~@3 x!2 ~", H: "x ~@4 x!3", I: "x ~@4 x!2 ~", J: "x!2",
  K: "x ~ x!2 ~@8 x ~ x ~", L: "x!2 ~@6",
})).gain(0.35)

// drums · mid tom
const mid_tom = s("mt").struct("<~@2 A ~@46 A ~@16 B ~@7 C ~@7>".pickRestart({
  A: "~@12 x!4", B: "~@3 x ~ x!2 ~", C: "~@11 x!2 ~@3",
})).gain(0.35)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@4 A ~ A B ~@2 A ~@3 A ~ A ~@3 A ~@9 A ~ A ~@3 A ~ A ~@3 A ~@11 A ~@7 A ~ A ~ C ~@5 A ~ C ~ A B A ~@3
>`.pickRestart({
  A: "~@7 x", B: "~@15 x", C: "~ x ~@2",
})).gain(0.3)

// drums · high tom
const high_tom = s("ht").struct("<~@66 [~ x] ~@7 [~ x] ~@7>").gain(0.46)

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

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

stack(
  bass, acoustic_guitar_steel, electric_guitar_jazz, bass_2, electric_guitar_jazz_2, kick, snare, low_tom, hihat,
  mid_tom, open_hat, high_tom, crash, tambourine
)

More by The Beatles