Strudelify
Drive My Car cover art

Rubber Soul

Drive My Car

The Beatles

KeyD majorTempo130 bpm
0:00/0:00
// Drive My Car — The Beatles
// 130 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 92 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(130/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.

// other · acoustic guitar nylon · "Gtr Nylon"
const acoustic_guitar_nylon = note(`<
  ~@3 A B A B A B C D E F E F G H I J A B A B A B C D E F E F G H I K A B A B A B C D E F E F G H I J A B A B A B C D E
  F E F G H I K L M L M L M L M L M L M L M L M L M L M L M L M ~
>`.pickRestart({
  A: "d3@7 e3 f#3@2 a3@2 f#3 e3 d3@2", B: "g2@7 g2 a2 b2 d3@2 b2 a2 g2@2", C: "a2@2 a2!2 a2@2 a2!2",
  D: "a2@4 a2@2 a2@2 c#3@2 e3@2 f#3 e3 c#3@2", E: "b2@2 b2@2 b2@2 b2 a2", F: "g2@2 g2@2 g2@2 g2 a2", G: "b2!4",
  H: "e2 f#2 g2 e2 a2 g2 f#2 e2", I: "d3@4 d3@3 a2 b2@2 d3@2 b2@2 g2@2", J: "a2@4 a2@3 a2 c#3@2 e3@2 c#3@2 a2@2",
  K: "a2 ~@7", L: "d3@7 a2 b2@2 d3@2 b2@2 g2@2", M: "a2@4 a2@3 a2 c#3@2 e3@2 f#3 e3 c#3@2",
})).s("gm_acoustic_guitar_nylon").gain(0.5).pan(0.3)

// other · overdriven guitar · "Gtr Leads Overdrive"
const overdriven_guitar = note("<A B@3 ~@31 C D C E C F G H@2 ~@27 I@20 ~>".pickRestart({
  A: "~@7 a3",
  B: "[c4@2 d#4 d4 c4@2 f4@4 a3@2 [c4,e4]@2 [d4,f#4]@4 [d4,f#4]@2 e4@2 a3@2 [c4,e4]@4 [d4,f#4]@8 ~@12, ~@5 c4 ~@6]/3", // C D C D
  C: "c4@4 d4@2 d5@4 d4@2 g#4 g4 f4@2, ~@6 c#5 ~@9", D: "g4@4 g4@3 g4 f4@2 g4@2 ~@2 a3@2",
  E: "g4@4 g4@3 g4 f4@2 e4@2 c4@2 a3@2", F: "g4@4 g4@3 g4 f4@2 d4@6", G: "a4@2 a4 c5 c5@2 c5 d5",
  H: "[d5@2 d5 f5!2 c5@2 d5@3 ~@6]/2", I: "[~ d5@2 d5@2 d5@2 d5@3 ~@6, ~@2 c5 ~@3 c5 ~@3 c5 ~@3 c5 ~@17]/2",
})).s("gm_overdriven_guitar").gain(0.4).pan(0.9)

// bass · fretless bass · "Fretless E Bass"
const bass = note(`<
  ~ A@2 B C B C B C D E F G F G H I J K B C B C B C D E F G F G H I L M B C B C B C D E F G F G H I J K B C B C B C D E
  F G F G H I N M O P Q R O P Q R O P Q R O P Q R O P Q R O P Q R ~
>`.pickRestart({
  A: "[~@4 a1 c2 d2 d1@8 ~, ~@8 g1 ~@23]/2", B: "d2@8 f#2@2 a2@2 f#2 e2 d2@2", C: "g1@7 g1 b1@2 d2@2 b1 a1 g1@2",
  D: "a1@2 a1!2 a1@2 a1!2", E: "a1@4 a1@2 a1@2 c#2@2 e2@2 f#2 e2 c#2@2", F: "b1@2 b1@2 b1@2 b1 a1",
  G: "g1@2 g1@2 g1@2 g1 a1", H: "b1!4", I: "e1 f#1 g1 e1 a1 g1 f#1 e1", J: "d2@4 d2@3 a1 b1@2 d2@2 b1@2 g1@2",
  K: "a1@4 a1@3 a1 c#2@2 e2@2 c#2@2 a1@2", L: "d2@2 d2@2 d2!2 d2@2", M: "a1 ~@7", N: "d2@2 d2@2 g1 g1@2 g1",
  O: "d2@2 d2@2 g1!2 b1 g1", P: "a1@2 a1@2 a1 a1@2 a1", Q: "d2@2 f#2 a2 g1!2 b1 d2", R: "a1!2 c#2!2 e2!2 e2@2",
})).s("gm_fretless_bass").gain(0.49)

// chords · piano
const piano = note(`<
  ~@10 A B C D C D E F G ~@7 A B C D C D E H ~@10 C D C D E F G ~@7 A B C D C D E H ~ I J I J I J I J I J I J I J I J I
  J I J I J I J ~
>`.pickRestart({
  A: "~@7 [a#2,f#3,a#3]", B: "[b2,f#3,b3]@2 [f#3,b3,d4]@2 b2 [f#3,b3,d4]@2 [f#3,b3,d4]",
  C: "g3@3 [g3,b3,d4]@2 [g3,c4,e4]@3 [g3,d4,f4]@3 [g3,c4,e4]@2 [g3,b3,d4]@3", // G C G7 C G
  D: "b2@2 [f#3,b3,d4]@2 b2 [f#3,b3,d4]@2 [f#3,b3,d4]", E: "e2@2 [e3,g#3,b3]@2 a2 [e3,a3,c#4]@2 [e3,a3,c#4]",
  F: "d2@2 [f#3,a3,d4]@2 g2 [g3,b3,d4]@2 [g3,b3,d4]", G: "[a2,a3,c#4,e4] ~@7",
  H: "d2@2 [f#3,a3,d4]@2 g2@2 [g3,b3,d4] [a2,a3,c#4,e4]", // D G A
  I: "[d2,f#3,a3,d4]@2 [d2,f#3,a3,d4]@2 [g2,g3,b3,d4] [g2,g3,b3,d4]@3", // D G
  J: "a2@2 [e3,g3,c#4]@2 a2 [e3,g3,c#4]@2 [e3,g3,c#4]", // C#dim
})).s("gm_piano").gain(0.72).pan(0.8)

// chords · rock organ
const rock_organ = note(`<
  ~@3 A B C B A D E@2 F G H G I J K L M N A O P N Q@2 F R F R I S T U C B M V M O W@2 X Y F G H Z AA AB M D C O A N AC@2
  AD Y AD AE AD AF AG AH AI L AJ AK P AL AM AL AN L AO AP A AQ M AQ AR AK AO L AM AL AM AL ~
>`.pickRestart({
  A: "[a4,d5,f#5,a5]@5 d3 [a4,d5,f#5,a5] ~", B: "[d5,g5,b5,d6] ~@2 [d5,g5,b5,d6]@4 ~", C: "[a4,d5,f#5,a5]@15 ~",
  D: "~@3 b5@4 ~, ~ b4@6 ~, ~@2 d5@5 ~, ~@5 g5@9 ~@2", E: "[[g4,a4,c#5,e5]@25 ~ a2!2 [g4,a4,c#5,e5]@2 a2@2]/2",
  F: "f#4 ~@5 b5@7 ~@3, d5@13 ~@3, ~ f#4@6 ~, ~@4 f#5@9 ~@3",
  G: "[d5,f5]@10 ~@4 f5 d5, b4, g5@9 ~ g5@2 d5@2 ~@2, ~@11 f5@2 g5@2 ~", H: "[f#4,b4,d5,f#5]",
  I: "[f#4,b4,d5,f#5]@9 ~ [f#4,b4,d5,f#5] ~ b2 [f#4,b4,d5,f#5] ~@2", J: "[g#4,b4,d5,e5]@4 ~ [g4,c#5] ~ a3",
  K: "~ [d5,f#5] ~ d4 [b4,g5]@4", L: "[e4,a4,c#5,e5]", M: "~@3 a5@4 ~, ~ a4@6 ~, ~@2 d5@5 ~, ~@5 f#5@9 ~@2",
  N: "[d5,g5]@10 ~@4 g5 d5, b4, b5@9 ~ b5@2 d5@2 ~@2, ~@11 g5@2 b5@2 ~", O: "[b4,d5,g5,b5]@15 ~",
  P: "[d5,f#5]@10 ~@4 f#5 d5, a4, a5@9 ~ a5@2 d5@2 ~@2, ~@11 f#5@2 a5@2 ~", // D
  Q: "[[g4,a4,c#5,e5]@25 ~ a2!2 [g4,a4,c#5,e5]@2 a2 ~]/2", // A7
  R: "[b4,d5,f5]@9 ~ [b4,d5,f5] ~ [b4,d5,f5,g5] ~ [b4,d5,f5,g5] ~, g5@5 ~@3", S: "[g#4,d5] [g4,c#5]",
  T: "[a4,f#5,a5]@7 ~ [b4,g5]@8", U: "c#5@13 ~@3, e4 ~@15", V: "[b4,d5,g5,b5]@5 g2 [b4,d5,g5,b5] ~",
  W: "[[e4,a4,c#5]@13 ~@5 e3 ~ [e4,a4,c#5] ~ e3 ~ [e4,a4,b4]@4 [e4,a4,b4,c#5] ~@3, ~@7 [e4,a4,b4]@3 ~@6]/2", // A Esus4 A Esus4
  X: "[f#4,b4,d5]@9 ~ [f#4,b4,d5] ~ [f#4,b4,d5,f#5] ~ [f#4,b4,d5,f#5] ~, f#5@5 ~@3", // Bm
  Y: "[b4,d5,f5,g5]@9 ~ [b4,d5,f5,g5] ~ g2 [b4,d5,f5,g5] ~@2", Z: "[g#4,b4,d5,e5] [g4,a4,c#5,e5]",
  AA: "[a4,f#5,a5]@7 ~ [b4,g5,b5]@7 ~", AB: "e4 ~@5 a5@7 ~@3, c#5@13 ~@3, ~ e4@6 ~, ~@4 e5@9 ~@3",
  AC: "[~@7 a5@6 ~ [c#5,e5,a5] ~, ~@2 g4@23 ~ g4@4 ~@2, ~@2 a4@13 ~, ~@6 [c#5,e5]@21 ~@5]/2", // A C#m
  AD: "[b4,d5]@10 ~@4 d5 b4, f#4, f#5@9 ~ f#5@2 b4@2 ~@2, ~@11 d5@2 f#5@2 ~", AE: "[b4,d5,f5,g5]",
  AF: "[g#4,d5]@4 ~ [g4,c#5] ~ a3", AG: "[a4,f#5] [b4,g5]", AH: "[e4,a4] ~, [c#5,e5]@3 ~@5",
  AI: "[a4,d5,f#5]@9 ~ [a4,d5,f#5] ~ [a4,d5,f#5,a5] ~ [a4,d5,f#5,a5] ~, a5@5 ~@3", // D
  AJ: "[a4,d5,f#5,a5]@9 ~ [a4,d5,f#5,a5] ~ d3 [a4,d5,f#5,a5] ~@2", // D
  AK: "[e4,a4,c#5]@9 ~ [e4,a4,c#5] ~ [e4,a4,c#5,e5] ~ [e4,a4,c#5,e5] ~, e5@5 ~@3", // A
  AL: "[a4,c#5,e5,a5] ~@2 [a4,c#5,e5,a5]@4 ~", AM: "[d5,f#5,a5,d6] ~@2 [d5,f#5,a5,d6]@4 ~",
  AN: "[a4,e5]@4 [a4,e5,f#5] ~@3 [a4,e5]@3 ~ [a4,e5,f#5] ~@3, b4 ~@15", AO: "[a4,d5,f#5,a5]",
  AP: "[a4,c#5]@10 ~@4 c#5 a4, e4, e5@9 ~ e5@2 a4@2 ~@2, ~@11 c#5@2 e5@2 ~", AQ: "[e4,a4,c#5,e5]@15 ~",
  AR: "a4 ~@5 d6@7 ~@3, f#5@13 ~@3, ~ a4@6 ~, ~@4 a5@9 ~@3",
})).s("gm_rock_organ").gain(0.32).pan(0.1)

// chords · electric guitar muted · "Rythm Gtr Muted"
const electric_guitar_muted = note(`<
  ~@3 A B A C D B E F G H I H J K L M N B O P O Q R@2 S T I U J V W ~ N X A Y N X Z@2 AA H AB AC AD AE L AF N Q A Y N Y
  AG AH I U S AI J K AJ AK AL AF AM AF A AN A AO AP AF AQ AR A AS AT AO AU AR AU AF O AV D AW ~
>`.pickRestart({
  A: "~@2 [d3,a3]@2 ~@4 [d3,a3]@7 ~, ~@6 d2@9 ~", B: "~@2 d3@2 ~@4 d3@7 ~, ~@6 g2@9 ~",
  C: "g2@2 d3 ~@7 d3@2 ~@2 d3@2, ~@6 g2@5 ~ g2@4, ~@4 g3@3 ~",
  D: "~@2 [d3,a3] ~@5 d3@2 a3@2 ~@2 a3@2, d2@5 ~ d2@10, ~@4 d4@3 ~, ~@3 d3", // D5
  E: "~@4 [a2,e3]@2 ~@2 a2@2 [a2,e3] ~@3 [a2,e3]@2", F: "~@2 [a2,e3]@2 ~@2 a2@2 e3 ~@3 [a2,e3]@2 ~@2",
  G: "~@2 [b2,f#3,b3] ~@3 b1@2 [b2,f#3,b3]@2 b1@4 [b2,f#3,b3]@2", // B5
  H: "g2@2 d3 ~ d3@2 g2 ~ g2 ~ g2 ~ g2@2 d3 ~, ~@4 g2 ~@3 d3@4 ~@4",
  I: "~@2 b3 ~ f#3@2 b2@2 b3 ~@2 b3 ~ b2 b3 f#3, b1, ~@9 f#3@2 ~ f#3@2 ~@2, ~@5 b2 ~@2",
  J: "~@2 f#3 ~@2 b1 ~ f#3, b1@9 ~@3 b2@4, ~@2 b2@4 [f#3,b3]@7 ~@3", // B5
  K: "[e3,b3,d#4,e4]@2 e2@2 [e3,b3,e4]@2 ~@2 a3 e3 a2 ~ e3 a2 a3 e3, ~@11 a3@2 ~@3", // Emaj7 E5
  L: "d4 a3 d3 ~ a3 d3 d4 a3 g3 d3 g2 ~ d3 g2 g3 d3, ~@3 d4@2 ~@6 g3@2 ~@3",
  M: "~@2 a3 ~ e3@2 ~@2 a3 ~@2 a3 ~ a2 a3 e3, a2@9 e3@2 ~ e3@2 ~@2, ~@5 a2 ~@2",
  N: "~@2 [d3,a3] ~@3 d2@2 ~@2 d2@2 ~@2 a3 ~, ~@2 [d3,a3] d3", O: "~@2 [d3,a3] ~@3 d2@2 [d3,a3]@6 ~@2",
  P: "~@2 [g2,d3] ~@3 g2@2 d3@6 ~@2", Q: "~@2 d3 ~@5 d3@7 ~, ~@6 g2@9 ~",
  R: "[~@4 [a2,e3]@2 ~@4 [a2,e3]@2 ~@2 [a2,e3]@4 a2@2 ~@2 a2@2 ~@2 a2@2 e3@2 a2 ~, ~@20 e3@4 a3@5 ~@3]/2", // A5
  S: "~@2 [b2,f#3] ~ [b2,f#3]@2 b1@2 ~@4 b2@2 f#3 ~, b1@5 ~@3 [b2,f#3]@4 ~@4, ~@5 b1@2 ~", // B5
  T: "~@4 d3@2 ~@4 g2 ~ g2 ~ d3@2, g2@6 [d3,g3]@7 ~@3", U: "a2 ~ d3@4 g2@3 ~ g2 ~ g2@2 [d3,g3]@2, g2 ~@3",
  V: "[e3,b3,d#4,e4] e2 [e3,b3,e4] ~ [a2,e3,a3]@3 ~", // Emaj7 E5 A5
  W: "[d3,a3,d4] ~ d2@2 [d3,a3,d4]@2 [d3,a3,d4] ~ [g2,d3,g3] ~ g2@2 [d3,g3]@2 [g2,d3,g3] ~", // D5 G5
  X: "g2@2 d3 ~@7 d3@2 ~@2 d3 ~, ~@6 g2@5 ~ g2@4, ~@4 g3@3 ~", Y: "~@2 [g2,d3] ~@3 g2@2 ~@2 g2 ~ g2 ~ d3 ~, ~@2 d3 ~",
  Z: "[~@2 [a2,e3] ~@2 [a2,e3] ~ [a2,e3]@2 ~ e3 ~@2 e3 a2 [a2,e3], ~@18 a3@4 a2@5 ~@5, ~@24 a3@5 ~@3]/2", // A5
  AA: "~@2 b3 ~ f#3@2 b2@2 b3 ~ b2 b3 ~ b2 b3 f#3, b1, ~@9 f#3@2 ~ f#3@2 ~@2",
  AB: "c#3 ~@5 b2@4 ~@2 b2@2 [f#3,b3]@2, b2@4 b1@5 ~ b1@4 ~@2, ~ f#3@2 ~@5", // B5
  AC: "~@2 [d3,g3] ~ [g2,d3,g3]@2 g2 ~ [g2,d3,g3] ~ [g2,d3,g3] ~ [g2,d3,g3] ~ [g2,d3,g3] ~", // G5
  AD: "~@2 [b2,f#3,b3] ~ [b2,f#3,b3]@2 ~@2 [b2,f#3,b3] ~ [b2,f#3,b3] ~ [b2,f#3,b3] ~ [b2,f#3,b3] ~, ~@3 b1@5", // B5
  AE: "[e3,b3,e4]@6 e2@2 [a2,e3,a3] ~ a2@2 [e3,a3]@2 [a2,e3,a3] ~", // E5 A5
  AF: "~@4 e3@2 ~@4 a2 ~ a2 ~ e3@2, a2@6 [e3,a3]@7 ~@3", AG: "~@2 e3 ~@3 a2@2 e3@4 a2 ~ [a2,e3]@2",
  AH: "~@2 [a2,e3]@2 ~@2 [a2,e3]@4 ~@2 a2 ~ [a2,e3]@2", AI: "~@2 [d3,g3] ~@3 g2@2 [d3,g3]@2 g2 ~@3 [g2,d3,g3]@2",
  AJ: "[d3,a3,d4] ~ d2@2 [d3,a3,d4]@2 [d3,a3,d4] ~ [g2,d3,f#3,g3]@2 ~@2 [g2,d3,g3]@2 ~@2", AK: "a2 ~@3, b2 ~@15",
  AL: "e3 ~@5 d3@4 ~@2 d3@2 [a3,d4]@2, d3@4 d2@5 ~ d2@4 ~@2, ~ a3@2 ~@5", // D5
  AM: "~@2 [d3,a3,d4] ~@3 d2@2 [d3,a3,d4]@2 d2@4 [d3,a3,d4]@2", AN: "~@2 e3@2 ~@4 e3@7 ~, ~@6 a2@9 ~",
  AO: "~@2 [a2,e3] ~@3 a2@2 ~@2 a2 ~ a2 ~ e3 ~, ~@2 e3 ~", // A5
  AP: "~@2 d4 ~ a3@2 d3@2 d4 ~ d3 d4 ~ d3 d4 a3, d2, ~@9 a3@2 ~ a3@2 ~@2",
  AQ: "~@2 [d3,a3] ~ [d3,a3]@2 d2@2 ~@4 d3@2 a3 ~, d2@5 ~@3 [d3,a3]@4 ~@4, ~@5 d2@2 ~", // D5
  AR: "a2@2 e3 ~ e3@2 a2 ~ a2 ~ a2 ~ a2@2 e3 ~, ~@4 a2 ~@3 e3@4 ~@4", AS: "~@2 [a2,e3] ~@3 a2@2 e3@6 ~@2",
  AT: "~@2 [d3,a3] ~@5 d3@2 a3@2 ~@2 a3 ~, d2@5 ~ d2@10, ~@4 d4@3 ~, ~@3 d3", // D5
  AU: "~@2 d4 ~ a3@2 d3@2 d4 ~@2 d4 ~ d3 d4 a3, d2, ~@9 a3@2 ~ a3@2 ~@2, ~@5 d3 ~@2",
  AV: "~@2 e3 ~@5 e3@7 ~, ~@6 a2@9 ~", AW: "a2@2 e3 ~@7 e3@2 ~@2 e3@2, ~@6 a2@5 ~ a2@4, ~@4 a3@3 ~",
})).s("gm_electric_guitar_muted").gain(0.48).pan(0.9)

// chords · electric guitar muted · "Rythm Gtr Muted" · soft notes
const electric_guitar_muted_2 = note(`<
  ~@3 A B A ~@2 B ~@2 C D ~ D E ~@3 F B G H G B ~@2 I J ~ K E ~@2 L F ~ A M F ~ N ~@2 D O P Q ~@2 R F B A M F M S T ~ K
  I U E ~@3 V R W R A X A Y ~ R Z AA A AB ~ Y ~ AA ~ R G X ~@3
>`.pickRestart({
  A: "d2@5 ~@11", B: "g2 ~@3", C: "b1@3 ~@9 b2 ~@3", D: "~@13 d3 ~@2", E: "~@6 b2@5 ~@5", F: "d2 ~@11 a3 ~@3",
  G: "~@2 g#3 ~@13", H: "~@2 c#3 ~@13", I: "~@13 f#3 ~@2", J: "~@6 g2@3 ~@7", K: "~@7 d#3 ~@8", L: "a2@3 ~@13",
  M: "g2 ~@11 d3 ~@3", N: "~@3 a2 ~@4 a2 ~@3 a2 ~@3", O: "~@7 g3 ~@8", P: "g2@3 ~@13", Q: "b1@5 ~@11",
  R: "~@6 a2@3 ~@7", S: "a2@2 d#3 ~@13", T: "~@4 a2 ~@11", U: "g2@3 ~@9 g2 ~@3", V: "~@7 a#3 ~@8", W: "d2@3 ~@9 d3 ~@3",
  X: "a2 ~@3", Y: "a2 ~@11 e3 ~@3", Z: "~@13 a3 ~@2", AA: "~@13 e3 ~@2", AB: "~@2 d#3 ~@13",
})).s("gm_electric_guitar_muted").gain(0.24).pan(0.9)

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

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

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

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@2 A ~@23 B ~@39 B ~@19 C ~@5>".pickRestart({
  A: "~@8 x ~@2 x ~@2 x ~", B: "~@3 x ~@2 x ~", C: "~@8 x!2 ~@6",
})).gain(0.36)

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

// drums · high tom
const high_tom = s("ht").struct("<~@26 x ~@39 x ~@19 [~@4 x!2 ~@10] ~@5>").gain(0.4)

// drums · crash
const crash = s("cr").struct(`<
  ~@3 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@7 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@4
>`.pickRestart({
  A: "x",
})).gain(0.36)

// drums · tambourine
const tambourine = s("tb").struct("<~@34 A B@8 C@7 B@9 C@7 D C@3 B@5 C@3 B@5 C@4 B@4 ~>".pickRestart({
// … 25 more lines

More by The Beatles