Strudelify

Searchin

The Beatles

KeyC majorTempo154 bpm
0:00/0:00
// Searchin — The Beatles
// 154 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 8 "LEIBER / STOLLER" electric guitar jazz (copy of ch 7 acoustic guitar nylon)
// note: Full arrangement: all 127 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(154/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 E G C F H B I J K J L B C F M N O J P F L Q R D A Q R G P D A D S F T U F B V W V X S F L G Y Z AA J S G
  C B R D P G R B P F AA AB V W C D E B AC AD AE W L B A Q S Q A G H F R F AF F AF B A AG D B AA J O X L Q AF B AH Z AI
  W S B H Q E F S G F AJ S AK AL ~
>`.pickRestart({
  A: "c2@5 ~@2 c2 g2@5 ~@2 g2", B: "c2@5 ~@2 c2 g2@6 ~ g2", C: "c2@7 c#2 g2@7 c#2", D: "c2@5 ~@2 c2 c2@6 ~ c2",
  E: "c2@7 c1 g2@7 g1", F: "c2@4 ~@3 c2 g1@5 ~@2 g1", G: "c2@5 ~@2 c2 g2@2 ~ c1 g1@2 ~@2", H: "c2@7 c#2 g2@5 ~@2 g2",
  I: "f2@7 f1 c2@7 f#2", J: "f2@5 ~@2 f2 c3@6 ~ c3", K: "f2@7 f1 c2@5 ~@2 c2", L: "c2@7 c#2 g2@7 g1",
  M: "g2@5 ~@2 g2 d2@7 d1", N: "g2@4 ~@3 g2 d2@5 ~@2 d2", O: "f2@5 ~@2 f2 c2@5 ~@2 c2", P: "c2@7 c1 g2@7 c#2",
  Q: "c2@5 ~@2 c2 g2@4 g1@2 ~@2", R: "c2@5 ~@2 c2 g2@7 c#2", S: "c2@5 ~@2 c2 g2@7 g1", T: "c2 g2",
  U: "c2@5 ~@2 c2 g2@4 c2 ~@3", V: "f2@7 f#2 c2@7 f#2", W: "f2@5 ~@2 f2 c3@4 c2@2 ~@2", X: "f2@5 ~@2 f2 f2@6 ~ f2",
  Y: "g2@7 g1 d2@7 g#2", Z: "g2@5 ~@2 g2 g2@6 ~ g2", AA: "f2@7 f#2 c2@7 c1", AB: "f2@4 ~@3 f2 c2@5 ~@2 c2",
  AC: "g2@5 ~@2 g2 d2@5 ~@2 d2", AD: "g2@5 ~@2 g2 d3@2 ~ g1 d2@2 ~@2", AE: "f2@5 ~@2 f2 c2@7 c1",
  AF: "c2@7 c1 g2@5 ~@2 g2", AG: "c2@5 ~@2 c2 g2@3 ~ g1 ~@3", AH: "g2@7 g#2 d2@7 g#2", AI: "f2@7 f1 c2@7 c1",
  AJ: "c2@2 ~ c2 c2@2 ~@2 c2 ~@3 c2 ~@3", AK: "c2@5 ~@2 c2 g2@4 ~@3 g2", AL: "c2@2 ~ c1 g1@2 ~ c2@4 ~@5",
})).s("gm_electric_bass_finger").gain(0.3)

// chords · acoustic guitar steel · "GUITAR"
const acoustic_guitar_steel = note(`<
  ~ A B C D E F G H I D J K L M N O P Q I D R S T U C F E F V W A B X W G H V W V F Y ~@3 L O N M Z B E B AA AB AC AD X
  F A D G F C B X B AE D L AF AG AF V B AH D AI AJ AK AL J B E D E AM P B A F AN W C F AO D ~@3 AP AC M AQ U V AM AR B
  AA AS AT AF AU AV AW AV AX D X AV@2 AM X AY AZ ~
>`.pickRestart({
  A: "~@2 [g3,c4,e4] ~ [g3,c4,e4] ~@3", B: "c4@2 ~@9 c3 [g3,c4,e4] ~@3", C: "[g3,c4,e4] ~@3 [g3,c4,e4] ~@3",
  D: "[g3,c4,e4]@2 ~ [g3,c4,e4] ~@3 [g3,c4,e4] ~@3 c3 [g3,c4,e4] ~@3", // C
  E: "[g3,c4,e4]@2 ~@6 [g3,c4,e4]@2 ~ g2 [g3,c4,e4] ~@3", F: "~@4 [g3,c4,e4]@2 ~@5 c3 [g3,c4,e4] ~@3",
  G: "~@2 [g3,c4,e4] ~@3 [g3,c4,e4] ~", H: "~@4 [g3,c4,e4]@3 ~@9",
  I: "[g3,c4,e4]@2 ~ c3 [g3,c4,e4] ~@3 [g3,c4,e4]@2 ~ g2 [g3,c4,e4] ~@3", J: "[g3,c4,e4] ~@5 [g3,c4,e4] ~",
  K: "c4@2 ~ e4 ~@3 c5@2 ~@2 c3 [g3,c4,e4] ~@3", L: "~@3 f3 [a3,c4,f4]@2 ~@2 [a3,c4,f4]@2 ~ c3 [a3,c4,f4] ~@3",
  M: "[a3,c4,f4]@2 ~ [a3,c4,f4] ~@3 [a3,c4,f4] ~@3 f3 [a3,c4,f4] ~@3", // F
  N: "[a3,c4,f4]@2 ~ f3 [a3,c4,f4] ~@7 [a3,c4,f4]@2 ~@2", O: "f4@2 ~@9 f3 [a3,c4,f4] ~@3",
  P: "[g3,c4,e4]@2 ~ c3 [g3,c4,e4] ~@3 [g3,c4,e4]@2 ~@6", Q: "c4@2 ~@5 c5@2 ~@2 c3 [g3,c4,e4] ~@3",
  R: "[g3,b3,d4]@2 ~@2 g3 b3 ~ d4 [g3,b3,d4]@2 ~ d2 [g3,b3,d4] ~@3", // G
  S: "[g3,b3,d4]@2 ~ [g3,b3,d4] ~@3 [g3,b3,d4] ~@3 g2 [g3,b3,d4] ~@3", T: "~@4 [a3,c4,f4]@2 ~@5 c3 [a3,c4,f4]@2 ~@2",
  U: "~@4 [a3,c4,f4]@2 ~@5 f3 [a3,c4,f4] ~@3", V: "~@3 c3 [g3,c4,e4]@2 ~@2 [g3,c4,e4]@2 ~@6",
  W: "[g3,c4,e4]@2 ~@2 [g3,c4,e4] ~@6 c3 [g3,c4,e4] ~@3", X: "~@4 [g3,c4,e4]@2 ~@2 [g3,c4,e4]@2 ~ g2 [g3,c4,e4] ~@3",
  Y: "g3@13 ~@3", Z: "~@3 c3 [g3,c4,e4]@2 ~@2 [g3,c4,e4]@2 ~ g2 [g3,c4,e4] ~@3",
  AA: "~@4 [g3,b3,d4]@2 ~@2 [g3,b3,d4]@2 ~@2 g3 b3 ~ d4", AB: "g3@2 ~ b3 d4@2 ~ g4@2 ~@2 g2 [g3,b3,d4] ~@3",
  AC: "[a3,c4,f4] ~@3 [a3,c4,f4] ~@3", AD: "~@4 [a3,c4,f4]@3 ~@4 f4 ~@4", AE: "[g3,c4,e4]@2 ~@9 g2 [g3,c4,e4]@2 ~@2",
  AF: "[a3,c4,f4]@2 ~@2 [a3,c4,f4] ~@6 f3 [a3,c4,f4] ~@3", AG: "~@2 [a3,c4,f4] ~ [a3,c4,f4] ~@3",
  AH: "~@3 c3 [g3,c4,e4]@2 ~@6 [g3,c4,e4]@2 ~@2", AI: "[g3,b3,d4]@2 ~ g2 [g3,b3,d4] ~@3 [g3,b3,d4]@2 ~@2 g3 b3 ~ d4",
  AJ: "~@4 [g3,b3,d4]@3 ~@4 g3 [a#3,b3] ~@3", AK: "~@3 f3 [a3,c4,f4]@2 ~@2 [a3,c4,f4]@2 ~@6",
  AL: "~@4 [a3,c4,f4]@3 ~@4 f4 a4 ~@3", AM: "~@4 [g3,c4,e4]@3 ~@4 c4 e4 ~@3",
  AN: "~@4 [g3,c4,e4]@2 ~@2 [g3,c4,e4]@3 ~@5", AO: "[g3,c4,e4]@2 ~ c3 [g3,c4,e4] ~@6 g2 [g3,c4,e4]@2 ~@2",
  AP: "~@12 [g3,c4,e4] ~@3", AQ: "[a3,c4,f4]@2 ~@6 [a3,c4,f4]@2 ~ c3 [a3,c4,f4] ~@3",
  AR: "~@3 c3 [g3,c4,e4]@2 ~@2 [g3,c4,e4]@2 ~@2 c4 ~@3", AS: "~@4 [g3,b3,d4]@2 ~@5 g2 [g3,b3,d4] ~@3",
  AT: "~@3 f3 [a3,c4,f4]@2 ~@6 [a3,c4,f4]@2 ~@2", AU: "[g3,c4,e4]@2 ~ c3 [g3,c4,e4] ~@7 [g3,c4,e4]@2 ~@2",
  AV: "c4@2 ~@2 g4@2 ~@5 c3 [g3,c4,e4] ~@3", AW: "~@3 c3 [g3,c4,e4]@2 ~@5 g2 [g3,c4,e4]@2 ~@2",
  AX: "[g3,c4,e4]@2 ~@2 c4 ~@3 [g3,c4,e4]@2 ~@2 c4 ~@3", AY: "~@4 [g3,c4,e4] ~@7 [g3,c4,e4] ~@3",
  AZ: "~@4 c3@3 [g3,c4,e4]@2 ~@7", // C
})).s("gm_acoustic_guitar_steel").gain(0.36)

// chords · electric guitar clean · "GUITAR"
const electric_guitar_clean = note(`<
  ~ A B A C A D A C E F A G H I H J A F K G L M N O A P Q G K R A G Q G A S A C T U ~@3 V H O H W A B A X@2 Y N Z A D A
  G A AA A U A C A G AB AC H W A F AD G Y AE N AF Q AG A AH K AI Q B Q AJ Q G AK R Q AL AM ~@2 AN H AO N AP A AQ AR AS Y
  AT H AU Q AV A AW Q AX A AY A B AZ BA BB ~
>`.pickRestart({
  A: "c3@4 [c4,e4,g4] ~@3 g2@4 [c4,e4,g4] ~@3", B: "~@4 [c4,e4,g4]@2 [c4,e4,g4]@2 g2@4 [c4,e4,g4] ~@3, c3@3 ~@5",
  C: "c3@4 [c4,e4,g4] ~ [c4,e4,g4]@2 g2@4 [c4,e4,g4] ~@3", // C
  D: "~@4 [c4,e4,g4] ~@3 g2@4 [c4,e4,g4] ~@3, c3@6 ~ [c4,e4,g4]@2 ~@7", // C
  E: "~@2 [c4,e4,g4] ~ g2@2 [c4,e4,g4] ~, c3@3 ~@5", F: "c3@4 [c4,e4,g4] ~ [c4,e4,g4]@2 g2@4 [c4,e4,g4]@2 ~@2",
  G: "~@4 [c4,e4,g4] ~ [c4,e4,g4]@2 g2@4 [c4,e4,g4] ~@3, c3@3 ~@5", H: "f2@4 [f3,a3,c4] ~@3 c2@4 [f3,a3,c4] ~@3",
  I: "f2@4 [f3,a3,c4] ~@3 c2@4 [f3,a3,c4] ~@3, ~@7 [f3,a3,c4]@2 ~@7", // F
  J: "f2@4 [f3,a3,c4] ~@3 c2@3 ~ [f3,a3,c4] ~@3, ~@7 [f3,a3,c4]@2 ~@7", K: "c3@4 [c4,e4,g4] ~@3 g2@4 [c4,e4,g4]@3 ~",
  L: "g2@4 [g3,b3,d4] ~@3 d2@4 [g3,b3,d4]@3 ~", M: "~@4 [g3,b3,d4] ~@3 d2@4 [g3,b3,d4] ~@3, g2@6 ~ [g3,b3,d4]@2 ~@7",
  N: "f2@4 [f3,a3,c4] ~@3 c2@4 [f3,a3,c4]@2 ~@2", O: "f2@4 [f3,a3,c4] ~ [f3,a3,c4]@2 c2@4 [f3,a3,c4] ~@3",
  P: "c3@4 [c4,e4,g4] ~@2 [c4,e4,g4]@2 g2@4 [c4,e4,g4] ~@2", Q: "c3@4 [c4,e4,g4] ~@3 g2@4 [c4,e4,g4]@2 ~@2",
  R: "c3@4 [c4,e4,g4] ~@3 g2@4 [c4,e4,g4] ~@3, ~@7 [c4,e4,g4]@2 ~@7", // C
  S: "~@4 [c4,e4,g4] ~ [c4,e4,g4] ~ g2@4 [c4,e4,g4] ~@3, c3@3 ~@5", // C
  T: "~@4 [c4,e4,g4] ~@3 g2@4 [c4,e4,g4]@2 ~@2, c3@3 ~@5", // C
  U: "~@4 [c4,e4,g4] ~ [c4,e4,g4]@2 g2@4 [c4,e4,g4]@2 ~@2, c3@3 ~@5", V: "~@12 [c4,e4,g4,a#4]@3 ~, ~@12 c3 ~@3",
  W: "f2@4 [f3,a3,c4] ~ [f3,a3,c4]@2 c2@3 ~ [f3,a3,c4] ~@3", // F
  X: "[c3@4 [c4,e4,g4] ~@3 g2@4 [c4,e4,g4] ~@2 g2@5 [g3,b3,d4] ~@3 [g3,b3,d4] ~@3 [g3,b3,d4] ~@3, ~@7 [c4,e4,g4]@2 ~@15 d2@4 ~@4]/2", // C G C
  Y: "g2@4 [g3,b3,d4] ~@3 d2@4 [g3,b3,d4] ~@3", Z: "~@4 [f3,a3,c4] ~@3 c2@3 ~ [f3,a3,c4] ~@3, f2@3 [f3,a3,c4]@2 ~@3",
  AA: "c3@4 [c4,e4,g4] ~@3 g2@4 [c4,e4,g4]@2 ~@2, ~@3 e4 ~@4, ~@7 [c4,g4]@2 ~@7", // C C5
  AB: "f2@4 [f3,a3,c4]@2 ~@2 c2@4 [f3,a3,c4] ~@3", AC: "~@4 [f3,a3,c4] ~ [f3,a3,c4]@2 c2@4 [f3,a3,c4] ~@3, f2@3 ~@5",
  AD: "c3@2 [c4,e4,g4] ~ g2@2 [c4,e4,g4] ~", AE: "g2@4 [g3,b3,d4]@2 ~@2 d2@4 [g3,b3,d4] ~@3, ~@3 [g3,b3,d4]@2 ~@3",
  AF: "~@4 [f3,a3,c4]@2 ~@2 c2@3 ~ [f3,a3,c4] ~@3, f2@3 [f3,a3,c4]@2 ~@3", // F
  AG: "~@4 [c4,e4,g4]@2 ~@2 g2@4 [c4,e4,g4] ~@3, c3@3 [c4,e4,g4]@2 ~@3", // C
  AH: "c3@4 [c4,e4,g4]@2 ~ e4 g2@4 [c4,e4,g4] ~@3, ~@7 [c4,g4]@3 ~@6", // C C5
  AI: "c3@4 [c4,e4,g4]@2 [c4,e4,g4]@2 g2@4 [c4,e4,g4] ~@3", // C
  AJ: "~@2 [c4,e4,g4] ~ g2@2 [c4,e4,g4] ~, c3@6 ~ [c4,e4,g4]@3 ~@6", // C
  AK: "c3@5 [c4,e4,g4] ~@6 [c4,e4,g4] [c4,e4,g4]@2 ~, ~@9 g2@5 ~@2", // C
  AL: "~@4 [c4,e4,g4] ~@3 g2@4 [c4,e4,g4]@3 ~, c3@3 [c4,e4,g4]@2 ~@3", AM: "f2 ~@3", AN: "~@11 [c4,e4]@2 ~@3",
  AO: "f2@4 [f3,a3,c4,d#4] ~ [c4,d#4]@2 c2@4 [f3,a3,c4]@3 ~, ~@3 [f3,a3]@2 ~@3", // F7 Cm F
  AP: "~@2 [f3,a3,c4] ~ c2@2 [f3,a3,c4] ~, f2@6 [f3,a3,c4]@5 ~@5", // F
  AQ: "c3@4 [c4,e4,g4] ~@3 g2@4 [c4,e4,g4] ~@3, ~@3 [c4,e4,g4]@2 ~@3", // C
  AR: "c3@4 [c4,e4,g4] ~@3 g2@4 [c4,g4]@3 ~, ~@12 e4 ~@3", // C C5
  AS: "c3@4 [c4,e4,g4]@2 ~ a#4 g2@4 [c4,e4,g4] ~@3, ~@6 [c4,g4]@5 ~@5, ~@6 e4@3 ~@7", // C C5
  AT: "g2@4 d4@2 ~@2 d2@4 [g3,b3,d4] ~@3, ~@4 [g3,b3]@7 ~@5, ~@3 d4@2 ~@3", // G
  AU: "f2@5 [f3,a3,c4]@2 ~ c2@4 [f3,a3,c4] ~@3", // F
  AV: "~@4 [c4,e4,g4]@2 ~@2 g2@4 [c4,e4,g4] ~@3, c3@3 [c4,e4]@2 ~@3, ~@7 g4@4 ~@5", // C
  AW: "~@4 [c4,e4,g4] ~@3 g2@4 [c4,e4,g4] ~@3, c3@6 ~ [c4,g4]@4 ~@5, ~@7 e4@2 ~@7", // C C5
  AX: "~@4 [c4,e4,g4]@2 ~@2 g2@4 [c4,e4,g4] ~@3, c3@6 [c4,e4,g4]@5 ~@5", // C
  AY: "~@4 [c4,e4,g4]@2 ~@2 g2@4 [c4,e4,g4] ~@3, c3@3 e4 ~@4, ~@7 [c4,g4]@3 ~@6", // C C5
  AZ: "c3@2 c4!2 g2@2 [c4,e4,g4]@2, ~ [e4,g4] ~@2", BA: "c3@5 [c4,e4,g4] ~@2 g2@4 [c4,e4,g4] ~@3",
  BB: "~@4 [c4,e4,g4] ~@2 [c4,e4,g4]@8 ~, c3@3 ~@5", // C
})).s("gm_electric_guitar_clean").gain(0.41)

// other · acoustic guitar nylon
const acoustic_guitar_nylon = note("<~@61 A B C@2 D E F G H I J K L M N O ~@50>".pickRestart({
  A: "~@4 c4@2 ~@2 d#4@2 e4 ~@4 [d4,d#4]", B: "~@2 c4 ~ a#3 ~ g3 ~ a#3 ~ c4 ~ a#3 ~@2 g3",
  C: "[a#3 ~@2 c4 ~@3 d#4 ~@2 f4 ~@3 d#4@4 c4 ~ d#4 f4 d#4 ~ c4@2 d#4 ~@3 f4 ~]/2",
  D: "~@2 d#4 ~@3 c4 ~ a#3 ~@2 g3 a#3 ~ g3 ~", E: "d#3 ~ c3 ~ d#3 ~ f3 ~ g3 ~@2 a#3 ~@3 c4",
  F: "~@2 a#3 ~ g3@2 a#3 ~ c4 ~ d#4@2 ~@2 c4 ~", G: "~@2 a#3@2 ~@3 g3 ~ a#3 ~ c4 ~@4",
  H: "~@2 g#3 ~ a#3 ~ c4 ~, ~@3 f3@2 ~@11", I: "a#3@2 g#3 ~ f3 ~ d#3 ~@3 f3 d#3 ~@2 c3 ~",
  J: "d#3 ~ f3 ~@3 a#3 ~@3 c4 ~ a#3 ~ g#3 a#3", K: "~@2 c4 ~ a#3 ~ g3@3 ~ a3@3 ~@3",
  L: "~@2 c3 ~ [d#3,e3]@2 g3 ~ a#3 ~ c4 ~@3 d#4 ~", M: "~@2 f4 ~@3 a#4 ~ f4 ~ d#4 ~ c4@2 d#4@2",
  N: "f4@2 d#4 ~ c4@2 a#3@2 g3@2 a#3@3 ~ c4@2", O: "~ a#3 g3 a#3@2 g3@2 ~",
})).s("gm_acoustic_guitar_nylon").gain(0.46)

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

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

// drums · snare
const snare = s("sd").struct("<~@28 A ~@31 B ~@15 C ~@7 B ~@31 A ~@6 D E F ~>".pickRestart({
  A: "x!2 ~ x ~@5 x ~ x!2 ~@3", B: "~@12 x!2 ~@2", C: "~@3 x ~@12", D: "~@4 x!2 ~@3 x ~@6", E: "~ x ~ x", F: "x",
})).gain(0.3)

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@28 [~@5 x ~@2 x ~@4 x ~@2] ~@87 [~@5 x ~@2 x ~@4 x ~@2] ~@6 [~ x ~ x ~@12] ~@3>")
  .gain(0.1)

// drums · clap
const clap = s("cp").struct("<~ A@27 ~ A@47 ~ A@39 ~ A@6 ~ A ~@2>".pickRestart({
  A: "~@3 x",
})).gain(0.25)

// drums · low tom
const low_tom = s("lt").struct("<~@28 A ~@47 B ~@39 A ~@6 C ~ D ~>".pickRestart({
  A: "~@15 x", B: "~@3 x", C: "~@13 x ~ x", D: "~@3 x!2 ~@11",
})).gain(0.4)

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

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@28 A ~@47 B ~@39 A ~@6 C ~@3>".pickRestart({
  A: "~@7 x ~@8", B: "~ x", C: "~@11 x!2 ~@3",
})).gain(0.4)

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

// drums · high tom
const high_tom = s("ht").struct("<~@28 [~ x ~@2] ~@47 [~ x ~@2] ~@39 [~ x ~@2] ~@10>").gain(0.35)

// drums · crash
const crash = s("cr").struct("<~ A ~@27 A ~@30 A@2 ~@15 A ~@6 A@2 ~@31 A ~@6 A B ~>".pickRestart({
  A: "x", B: "~@7 x ~@8",
})).gain(0.4)

// drums · tambourine
const tambourine = s("tb").struct("<~ A@27 ~ A@47 ~ A@39 ~ A@6 ~ B ~@2>".pickRestart({
  A: "~ x ~ x", B: "x ~@2 x!2 ~@6 x!2 ~@3",
})).gain(0.4)

stack(
// … 3 more lines

More by The Beatles