Strudelify

Keep Your Hands Off My Baby

The Beatles

KeyC majorTempo120 bpm
0:00/0:00
// Keep Your Hands Off My Baby — The Beatles
// 120 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 82 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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(`<
  ~@2 A B C D E F G H I J K L M N O@2 P Q R S T F U V E F A W O X A O Y Z K L AA AB O X P Q R S AC O AD V O@2 C G X O A
  F P Q AE AF AG AH H O AI AJ R S AC AK AL AM AI AJ R S AN E AO AP
>`.pickRestart({
  A: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 c1 c2 c1 c2!2", B: "f2 ~ f2@2 f2 ~ b1 ~ c2 ~ c2@2 c2 ~ c2 c1",
  C: "c2 ~ c2 ~ c2 ~ c2 c1 c2 ~ c2 ~ c2@2 b1 ~", D: "c2 ~ c2 ~ c2 ~ c2@2 c2 ~ c2 ~ c2 ~ c2 c1",
  E: "g2 ~ g2 ~ g2 ~ g2@2 g2 ~ g2 ~ g2 ~ g2 ~", F: "g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2@2 b1 ~",
  G: "c2 ~ c2 ~ c2 ~ c2 c1 c2 ~ c2 ~ c2@2 f#2 ~", H: "g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 g1 g2 g1 g2!2",
  I: "c2 ~ c2@2 c2@2 c2 c1 c2 ~ c2 ~ c2 ~ c2@2", J: "c2 ~ c2 ~ c2 ~ c2 c1 c2 ~ c2 c1 c2 ~ c2 ~",
  K: "a1 ~ a1@2 a1 ~ a1@2 a1 ~ a1@2 a1 ~ a1@2", L: "a1 ~ a1@2 a1 ~ a1@2 a1 ~ a1 ~ a1 ~ a1 ~",
  M: "d2 ~ d2 ~ d2 ~ d2 d1 d2 ~ d2 ~ d2 ~ d2@2", N: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~",
  O: "g2 ~ g2 ~ g2 ~ g2@2 g2 ~ g2 ~ g2 ~ g2 g1", P: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2@2",
  Q: "c2 ~ c2 ~ c2 ~ c2@2 c2 ~ c2@2 c2 ~ c2 ~", R: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1@2",
  S: "a1 ~ a1 ~ a1 ~ a1@2 a1 ~ a1@2 a1 ~ a1 ~", T: "f2 ~ f2 ~ f2 ~ f2@2 f2 ~ f2 ~ f2 ~ f2 f1",
  U: "c2 ~ c2@2 c2 ~ e2 ~ f2 ~ f2@2 f2 ~ f2 f1", V: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2@2 f#2 ~",
  W: "c2 ~ c2 ~ c2 ~ c2@2 c2 ~ c2 ~ c2 ~ c2 ~", X: "g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2@2",
  Y: "c2 ~ c2@2 c2 ~ c2@2 c2 ~ c2@2 c2 ~ c2@2", Z: "c2 ~ c2@2 c2 ~ c2@2 c2 ~ c2 ~ c2 ~ c2 ~",
  AA: "d2 ~ d2@2 d2@2 d2 d1 d2 ~ d2 ~ d2 ~ d2@2", AB: "d2 ~ d2 ~ d2 ~ d2 d1 d2 ~ d2 d1 d2 ~ d2 ~",
  AC: "f2 ~ f2 ~ f2 ~ f2 f1 f2 ~ f2 ~ f2@2 f#2 ~", AD: "c2 c1 c2 ~ c2 ~ c2 ~ f2 f1 f2 ~ f2 ~ f2 ~",
  AE: "a1 ~ a1 ~ a1 ~ a1@2 a1 ~ a1 ~ a1 ~ a1 a0", AF: "a1 ~ a1 ~ a1 ~ a1 a0 a1 ~ a1 ~ a1 ~ c#2 ~",
  AG: "d2 ~ d2@2 d2 ~ d2@2 d2 ~ d2@2 d2 ~ d2@2", AH: "d2 ~ d2@2 d2 ~ d2@2 d2 ~ d2 ~ d2 ~ d2 ~",
  AI: "c2 ~ c2@2 c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 c1", AJ: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ g#1 ~",
  AK: "g2 ~ g2 ~ g2 ~ g2 g1 g2 ~ g2 ~ g2@2 b1 ~", AL: "c2 ~ c2@2 c2 ~ c2 c1 f2 ~ f2@2 f2 ~ b1 ~",
  AM: "c2 c1 c2 ~ c2 ~ c2 ~ g2 ~ g2@2 g2 ~ b1 ~", AN: "f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2 ~ f2@2 f#2 ~",
  AO: "c2 ~ c2@2 c2 ~ e2 ~ f2 f1 f2 ~ f2 ~ f2 ~", AP: "c2 ~@15",
})).s("gm_electric_bass_finger").gain(0.4)

// chords · acoustic guitar steel · "GUITAR"
const acoustic_guitar_steel = note(`<
  ~@10 A@2 B@2 C@2 D E F@2 G@2 H I J K L M N O I M ~@2 P@2 B@2 Q@2 R S P@2 G@2 T L U K D M V W I S N X Y@2 Z@2 C@2 D S
  P@2 G@2 AA L AB AC F@2 AD@2 AE R AF AG
>`.pickRestart({
  A: "[~@2 [g4,c5,e5] ~@3 c3 ~ [g4,c5,e5]@2 ~@2 c3 ~@5 c3 ~ [g4,c5,d5,e5] ~ c3 ~ [g4,c5,d5] ~ c3 ~ [g4,a4,c5,d5,e5] ~@3, ~@7 [g4,c5,d5]@3 ~@6]/2", // C Gsus4 Am7 Gsus4
  B: "[a5@23 ~ [a4,e5]@3 e3 e5 ~ [a4,e5] ~, e5@7 ~@9]/2", // A5
  C: "[~@6 a5@16 d3 ~ [a4,f5,a5,d6]@2 d3 ~ [a4,f5,a5,d6]@2 ~@2, ~ a4@10 ~@5, ~@4 f5@18 ~@2 c#6 ~@7]/2", // Dm
  D: "b4 ~@5 d6@7 ~@3, g5@13 ~@3, ~ b4@6 ~, ~@4 b5@9 ~@3", E: "b4 ~@5 d6@7 ~@3, f5@13 ~@3, ~ b4@6 ~, ~@4 g5@9 ~@3",
  F: "[[g4,c5,e5,g5]@18 [g4,c5,e5,g5]@3 [g4,c5,e5,g5] ~ c3 [g4,c5,e5,g5]@2 c3 [g4,c5,e5,g5]@2 c3 [g4,c5,e5,g5]@2]/2", // C
  G: "[[c5,e5,a5]@23 a2 ~ c5 ~ a2 [a4,c5,e5]!2 ~@2, ~@12 [a4,c5,e5] ~@3]/2", // Am
  H: "[a4,c5,f5]@9 ~ [a4,c5,f5] ~ [a4,c5,f5,a5] ~ [a4,c5,f5,a5] ~, a5@5 ~@3", // F
  I: "[b4,d5,g5]@9 ~ [b4,d5,g5] ~ [b4,d5,g5,b5] ~ [b4,d5,g5,b5] ~, b5@5 ~@3", J: "[g4,c5,e5,g5] [a4,c5,f5,a5]",
  K: "[g4,c5,e5,g5]@9 ~ [g4,c5,e5,g5] ~ c3 [g4,c5,e5,g5] ~@2", // C
  L: "[d5,g5]@10 ~@4 g5 d5, b4, b5@9 ~ b5@2 d5@2 ~@2, ~@11 g5@2 b5@2 ~", // G5
  M: "[b4,d5,f5]@9 ~ [b4,d5,f5] ~ [b4,d5,f5,g5] ~ [b4,d5,f5,g5] ~, g5@5 ~@3", // Bdim G7
  N: "g4 ~@5 c6@7 ~@3, e5@13 ~@3, ~ g4@6 ~, ~@4 g5@9 ~@3", O: "[a#4,c5,e5,g5]",
  P: "[[e5,g5,c6]@23 c3 ~ e5 ~ c3 [c5,e5,g5]!2 ~@2, ~@12 [c5,e5,g5] ~@3]/2", // C
  Q: "[d6@23 ~ [d5,a5]@3 a3 a5 ~ [d5,a5] ~, a5@7 ~@9]/2", R: "[b4,d5,g5,b5]@9 ~ [b4,d5,g5,b5] ~ g2 [b4,d5,g5,b5] ~@2",
  S: "[b4,d5,f5,g5]@9 ~ [b4,d5,f5,g5] ~ g2 [b4,d5,f5,g5] ~@2", // G7
  T: "[c5,f5]@10 ~@4 f5 c5, a4, a5@9 ~ a5@2 c5@2 ~@2, ~@11 f5@2 a5@2 ~", U: "[g4,e5]@4 ~ [c5,f5] ~ c4",
  V: "[c5,e5]@10 ~@4 e5 c5, g4, g5@9 ~ g5@2 c5@2 ~@2, ~@11 e5@2 g5@2 ~", // C
  W: "[c5,e5]@10 ~@4 e5 c5, a#4, g5@9 ~ g5@2 c5@2 ~@2, ~@11 e5@2 g5@2 ~", // C
  X: "[d5,f5]@10 ~@4 f5 d5, b4, g5@9 ~ g5@2 d5@2 ~@2, ~@11 f5@2 g5@2 ~", // Dm
  Y: "[[g4,c5,e5,g5]@19 c3 [g4,c5,e5,g5]@3 c3 [g4,c5,e5,g5] [c5,e5,g5] ~ c3 [g4,c5,e5,g5]@2 c3 ~]/2", // C
  Z: "[~@6 e5@16 a2 ~ [e4,c5,e5,a5]@2 a2 ~ [e4,c5,e5,a5]@2 ~@2, ~ e4@10 ~@5, ~@4 c5@18 ~@2 g#5 ~@7]/2", // Am
  AA: "a4 ~@5 c6@7 ~@3, f5@13 ~@3, ~ a4@6 ~, ~@4 a5@9 ~@3", AB: "~ [c5,e5] ~ c4 ~ [c5,f5] ~ c4",
  AC: "~@2 [c5,e5]@2 ~@2 c4@2 [b4,f5,g5,b5]@7 ~", // C G7
  AD: "[[e4,a4,c5,e5]@18 [e4,a4,c5,e5]@3 [e4,a4,c5,e5] ~ a2 [e4,a4,c5,e5]@2 a2 [e4,a4,c5,e5]@2 a2 [e4,a4,c5,e5]@2]/2", // Am
  AE: "[a4,c5,f5,a5]", AF: "[g4,e5] [a4,f5]", AG: "[c5,e5,g5]@15 ~",
})).s("gm_acoustic_guitar_steel").gain(0.2)

// chords · electric guitar clean · "GUITAR"
const electric_guitar_clean = note(`<
  ~@9 A B@2 C@2 D@2 E@2 F@2 G H I J K L M N O@2 P Q ~ R B@2 G H S@2 M N T@2 U@2 V M W O M X Y L P M Y M Z@2 AA@2 D@2 J Q
  B@2 AB AC I M AD AE AF@2 AB AC I N AG AH
>`.pickRestart({
  A: "~@2 g3@2 d3@2 ~@2 g3 ~@2 g3 ~@2 g3 d3, ~@2 f3 ~@6 d3@2 ~ d3@2 ~@2, ~@10 g2@2 ~ g2@2 ~",
  B: "[~@2 c2@2 ~@2 c2@2 ~@6 g3@3 ~ [c3,g3,c4] ~@9 [c3,c4]@3 ~, ~@4 c3@6 c2@10 ~@2 c2@4 c2@5 ~, ~@8 g3@4 c3@5 ~@7 [c3,g3]@4 ~@4]/2", // C5 C C5
  C: "[~@2 [a2,e3] ~ [a2,e3]@3 ~ [a2,e3] ~ [a2,e3]@2 a2 ~ e3@4 a2 ~ a2@2 e3@2 a2 ~ a2@2 e3@2 a2 ~, ~@14 a2@3 ~@7 a3@4 ~@4]/2", // A5
  D: "[~@2 [d3,a3] ~@5 [d3,a3]@4 ~@6 d2@2 ~@2 d2@2 ~@6 a3@2, ~@6 d2@5 ~ d2@5 ~@7 a3@4 d3@4, ~@14 [d3,a3]@6 d3@6 d2@5 ~]/2", // D5
  E: "~@4 d3@2 ~@4 g2 ~ g2 ~ d3@2, g2@6 [d3,g3]@7 ~@3", // G5
  F: "[[c3,g3] ~@6 g3@2 c3 g3 c3 ~ c3 g3 c3, ~@4 c2@5 ~ c2@22, ~@3 c3@4 ~@9, ~@3 g3@3 ~@6 c4@2 ~@2]/2", // C5
  G: "~@2 a2@3 ~ a2@2 ~@2 a2 ~@3 e3@2, ~@2 e3 a2", H: "~@2 [a2,e3,a3] ~@7 a2@2 [a2,a3]@3 ~, ~@3 a2@2 ~@3, ~@2 e3 ~",
  I: "g3 ~@5 f3@4 ~@2 f3@2 [c4,f4]@2, f3@4 f2@5 ~ f2@4 ~@2, ~ c4@2 ~@5", // F5
  J: "~@2 g3 ~ d3@2 ~@2 g3 ~@2 g3 ~@2 g3 d3, g2@9 d3@2 ~ d3@2 ~@2, ~@10 g2@2 ~ g2@2 ~",
  K: "[c3,g3,c4] ~ c2@2 [c3,g3,c4]@2 [c3,g3,c4] ~ [f3,c4,f4]@6 f2@2", // C5 F5
  L: "~@2 [c3,g3,c4] ~ [c3,g3,c4]@2 ~@2 [c3,g3,c4] ~ [c3,g3,c4] ~ [c3,g3,c4] ~ [c3,g3,c4] ~, ~@3 c2@5", // C5
  M: "~@2 [d3,g3] ~@3 g2@2 [d3,g3]@2 g2 ~@3 [g2,d3,g3]@2", N: "a2 ~ d3@4 g2@3 ~ g2 ~ g2@2 [d3,g3]@2, g2 ~@3",
  O: "~@2 [c3,g3,c4] ~@3 c2@2 [c3,g3,c4]@2 c2@4 [c3,g3,c4]@2", // C5
  P: "~@2 [d3,g3] ~ [g2,d3,g3]@2 g2 ~ [g2,d3,g3] ~ [g2,d3,g3] ~ [g2,d3,g3] ~ [g2,d3,g3] ~", // G5
  Q: "g2@2 d3 ~ d3@2 g2 ~ g2 ~ g2 ~ g2@2 d3 ~, ~@4 g2 ~@3 d3@4 ~@4", R: "~@10 g2 ~@3 [g2,d3,g3]@2",
  S: "[[d3,a3] ~@6 a3@2 d3 a3 d3 ~ d3 a3 d3, ~@4 d2@5 ~ d2@22, ~@3 d3@4 ~@9, ~@3 a3@3 ~@6 d4@2 ~@2]/2", // D5
  T: "[~@2 [c3,g3] ~@5 [c3,g3]@4 ~@6 c2@2 ~@2 c2@2 ~@6 g3@2, ~@6 c2@5 ~ c2@5 ~@7 g3@4 c3@4, ~@14 [c3,g3]@6 c3@6 c2@5 ~]/2", // C5
  U: "[[a2,d#3,e3]@2 ~@2 e3 ~ [a2,e3]@5 ~ a2 ~ [a2,e3]@4 a2 ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~ [a2,e3] ~]/2", // A A5
  V: "~@2 [f3,c4,f4] ~ [f3,c4,f4]@2 ~@2 [f3,c4,f4] ~ [f3,c4,f4] ~ [f3,c4,f4] ~ [f3,c4,f4] ~, ~@3 f2@5", // F5
  W: "[c3,g3,b3,c4] c2 [c3,g3,c4] ~ [f3,c4,f4]@3 f2", // Cmaj7 C5 F5
  X: "~@2 g3@2 d3@2 ~@2 g3 ~@2 g3 ~@2 g3 d3, g2@9 ~ g2@2 ~ g2@2 ~, ~@2 f3 ~@6 d3@2 ~ d3@2 ~@2",
  Y: "d3 ~@5 c3@4 ~@2 c3@2 [g3,c4]@2, c3@4 c2@5 ~ c2@4 ~@2, ~ g3@2 ~@5", // C5
  Z: "[[c3,f#3,g3]@2 c2@2 g3 ~ [c3,g3]@4 ~@2 c3 ~ [c3,g3]@4 ~@2 [c3,g3] ~ [c3,g3] ~ [c3,g3] ~ [c3,g3] ~ [c3,g3] ~ [c3,g3] ~, ~@10 c2@7 ~ c2@13 ~]/2", // C C5
  AA: "[~@2 [a2,e3] ~@5 e3@4 a2 ~ a2@3 ~ a2 ~ a2 ~ a2@2 ~@2 a2 ~ a2@2 e3@2, ~@6 a2@5 ~@3 e3@6 ~@4 e3@5 ~@3]/2", // A5
  AB: "~@2 [a2,e3]@2 ~@4 e3@4 a2 ~ [a2,e3]@2, ~@6 a2@5 ~@5, ~@8 b2 ~@7", // A5
  AC: "~ a3 e3 ~@2 e3 ~@5 e3 a2 a3 ~ a2, ~@3 a2@2 ~ a2@2 e3@2 a3@2 ~@2 e3@2, ~@4 a3@2 ~ a3@2 a2@2 ~@5",
  AD: "[c3,g3,b3,c4] c2 [c3,g3,c4] ~ [f3,c4,e4,f4] f2 [f3,c4,f4] ~", // Cmaj7 C5 Fmaj7 F5
  AE: "[c3,g3,c4]@6 c2@2 [g2,d3,g3] ~ g2@2 [d3,g3]@2 [g2,d3,g3] ~", // C5 G5
  AF: "[~@2 [c3,g3] ~@17 g3@2 ~@8 g3@2, c2@5 ~ c2@7 ~ c2@11 ~ c2@6, ~@8 [c3,g3]@8 c4@5 ~ c4@8 ~@2, ~@18 c3@9 ~ c3@4]/2", // C5
  AG: "[c3,g3,c4]@3 c2 [f3,c4,f4]@3 f2", AH: "[g3,c4]",
})).s("gm_electric_guitar_clean").gain(0.41)

// chords · electric guitar clean · "GUITAR" · soft notes
const electric_guitar_clean_2 = note(`<
  ~@10 A B C D ~ E F@2 G H I J K ~@2 L M N O@2 P Q ~ R A B I J S T M N ~ U V ~ W M ~ O M ~ X L P M X M Y ~@2 Z ~ E ~ Q A
  B AA ~ K M ~@3 AB AA ~ K N ~ AC
>`.pickRestart({
  A: "~@12 a3 ~@3", B: "~@12 g3 ~@3", C: "a2 ~@3 b2 ~@11", D: "~@4 e3 ~@3 e3 ~@7", E: "~@4 a3 ~@11", F: "~@6 g2@3 ~@7",
  G: "~@7 c3", H: "~@6 a3 ~@9", I: "~@12 f3 ~@3", J: "~@12 e3 ~@3", K: "~@7 c#4 ~@8", L: "c2@5 ~@11",
  M: "g2@3 ~@9 g2 ~@3", N: "~@7 d#3 ~@8", O: "c2@3 ~@9 c3 ~@3", P: "g2@3 ~@13", Q: "~@13 d3 ~@2", R: "~@12 g2 ~@3",
  S: "~@7 d3", T: "~@6 b3 ~@9", U: "~@4 g3 ~@11", V: "~@4 a2 ~@11", W: "f2@5 ~@11", X: "~@7 g#3 ~@8", Y: "~@4 c3 ~@11",
  Z: "~@4 e3 ~@11", AA: "a2 ~@15", AB: "~@10 g2 ~@5", AC: "c3",
})).s("gm_electric_guitar_clean").gain(0.2)

// other · electric guitar clean · "GUITAR"
const electric_guitar_clean_3 = note("<~@50 A B@4 C D E ~@24>".pickRestart({
  A: "~@4 d4 ~ d4 ~ d4@4 e4@2 d4@2",
  B: "[b4@2 a4@3 ~ g4@14 e4 ~ e4 ~ e4@2 g4@4 a4@4 g4@16 ~@2 e4@3 ~ d4@3 ~ e4@2 d4@2, ~@30 g4 ~@33]/4",
  C: "b4@2 a4@3 ~ g4@7 ~ g4@2", D: "c5 a4 g4 e4, g4 ~", E: "d4@9 ~@7, g4@7 ~@9",
})).s("gm_electric_guitar_clean").gain(0.46)

// drums · rim
const rim = s("rim").struct("<[~@2 x!2 ~@2 x ~]!9 ~@73>").gain(0.46)

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

// drums · snare
const snare = s("sd").struct("<~@9 A B@3 C B@11 A B@7 D B@15 E B@7 F B@5 C B@8 E G B@6 A ~>".pickRestart({
  A: "x!2 ~@14", B: "~ x ~ x", C: "~@4 x ~@2 x ~@4 x ~@3", D: "~@2 x!6", E: "x ~@5 x ~@7 x!2",
  F: "~@4 x ~@3 x!2 ~@2 x ~ x ~", G: "~@4 x ~@3 x ~@3 x ~ x!2",
})).gain(0.46)

// drums · low tom
const low_tom = s("lt").struct("<~@9 A ~@15 A ~@7 B ~@15 C ~@22 C ~@7 A ~>".pickRestart({
  A: "~@12 x!4", B: "~@2 x!6", C: "~@3 x",
})).gain(0.41)

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

// drums · mid tom
const mid_tom = s("mt").struct("<A@9 B ~@15 C ~@6 D E ~@15 F ~@22 F ~@7 C ~>".pickRestart({
  A: "x!8", B: "x ~@7 x!2 ~@6", C: "~@8 x!2 ~@6", D: "~@2 x!5 ~", E: "x!7 ~", F: "~@3 x ~@2 x ~",
})).gain(0.46)

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

// drums · high tom
const high_tom = s("ht").struct("<~@9 A ~@15 A ~@23 B ~@22 B ~@7 A ~>".pickRestart({
  A: "~@4 x!2 ~@10", B: "x",
})).gain(0.46)

// drums · crash
const crash = s("cr").struct("<~@10 A ~@15 A ~@7 A ~@15 A ~@7 A ~@15 A ~@6 A>".pickRestart({
  A: "x",
})).gain(0.41)

// drums · tambourine
const tambourine = s("tb").struct("<~@8 A B@40 C B@7 C B@14 C@2 B@7 D>".pickRestart({
  A: "~@7 x", B: "x!8", C: "x!4", D: "x",
})).gain(0.41)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@8 [~@7 x] [x!8]!72 ~>").gain(1.56)

// drums · shaker
const shaker = s("sh").struct("<~@9 [x!4]!72 ~>").gain(0.41)

stack(
  bass, acoustic_guitar_steel, electric_guitar_clean, electric_guitar_clean_2, electric_guitar_clean_3, rim, kick,
  snare, low_tom, hihat, mid_tom, open_hat, high_tom, crash, tambourine, cabasa, shaker
)

More by The Beatles