Strudelify

Carol

The Beatles

KeyC majorTempo164 bpm
0:00/0:00
// Carol — The Beatles
// 164 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: duplicate parts dropped: ch 4 "GUITAR" electric guitar jazz (copy of ch 1 "GUITAR" electric guitar clean)
// note: Full arrangement: all 89 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(164/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 G@2 H@2 I@2 J I K I G I G@2 F@4 I@4 L M@2 H I K G I N@2 O P F Q G I M@2 I R J K G I G I@3 F Q F Q I@2 K
  G H M@3 I G I K S@3 T F@2 R U L M G I M@2 G V
>`.pickRestart({
  A: "~@15 c2", B: "c2 ~@15", C: "c2 ~@7 c2 ~@7", D: "c2@3 ~ d2@2 c2 ~ d#2@3 ~ e2@2 c2 ~, ~@4 c2@3 ~",
  E: "f2@5 ~ f2 ~ f2@6 g2 ~", F: "f2@5 ~ f2 ~ f2@6 f2 ~", G: "c2@5 ~ c2 ~ c2@5 ~ c2 ~", H: "g2@5 ~ g2 ~ g2@5 ~ g2 ~",
  I: "c2@5 ~ c2 ~ c2@6 c2 ~", J: "c2@5 ~ c2 ~ c2@6 b1 ~", K: "c2@5 ~ c2 ~ c2 ~ c2@3 ~ c2 ~",
  L: "g2@5 ~ g2 ~ g2 ~ g2@3 ~ g2 ~", M: "g2@5 ~ g2 ~ g2@6 g2 ~", N: "[c2@2 ~@13 c2@2 ~@15]/2", O: "c2 ~@3 c2 ~@3",
  P: "c2@2 ~ c#2@3 c2 ~@5 d#2@2 e2 ~, ~@7 d2@3 ~@6, ~@4 c2@3 ~", Q: "f2@5 ~ f2 ~ f2@5 ~ f2 ~",
  R: "c2@5 ~ c2 ~ c2@6 d2 ~", S: "[c2@2 ~@13 c2@3 ~@13 c2@2 ~@7 c2@2 ~@6]/3",
  T: "c2@3 ~ c#2@2 c2 ~ d2@2 ~ d#2@2 ~ c2 ~, ~@4 c2@3 ~", U: "c2@5 ~ c2 ~ c2@6 f2 ~", V: "c2@5 ~ c2 ~ c2 ~@7",
})).s("gm_electric_bass_finger").gain(0.36)

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

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

// chords · acoustic guitar steel · "GUITAR" · soft notes
const acoustic_guitar_steel_2 = note(`<
  ~@6 A ~ B ~ C D E F G H ~ I J ~@2 K ~@3 L M ~@2 N C ~@2 L O ~@6 P ~ Q L ~@2 R L S T ~@2 U V ~@2 W K ~@3 T ~@2 C X ~
  Y@2 Z ~@6 AA K AB AC ~ C AD L ~ C AE@2
>`.pickRestart({
  A: "~@6 f2 ~", B: "c3@5 ~ c3@5 ~ c3@2 ~@2", C: "~@8 g3 ~@7", D: "~@6 c3@5 c3 ~@4", E: "~@12 c3 ~@3",
  F: "~@10 g4 c3@2 ~@3", G: "~@5 c3@5 ~@4 a#4 ~", H: "c3@3 ~@13", I: "~@7 g4", J: "~@7 c4", K: "~@8 f3 ~@7",
  L: "~@8 c4 ~@7", M: "~@14 c4 ~", N: "~@2 g3 ~@5 g3 ~@7", O: "~@4 g4 ~@3 c4 ~ g4@2 ~@4", P: "~@8 f2@3 f2@2 ~@3",
  Q: "~@6 c3@5 ~ c3 ~@3", R: "~@11 c3 ~@4", S: "~@6 c3 ~", T: "~@8 c4 ~@3 c3@2 ~@2", U: "~@8 c4 ~@7, ~@3 c3@2 ~@3",
  V: "~@12 c3@3 ~", W: "~@8 f3 ~@2 f2@2 ~@3", X: "~@8 g3 ~@5 g3 ~", Y: "[~@14 c4@4 ~@6 c4 ~@7]/2",
  Z: "~@4 g4 ~@3 c4 ~@3 c3@2 ~@2", AA: "f2@5 ~@3 f3@2 ~@2 f2 ~@3", AB: "c3@4 ~@4 c4 ~@3 c3 ~@3, ~@6 c3@5 ~@5",
  AC: "~@4 c4 ~@3", AD: "~@8 c4 ~@3 c3 ~@3, ~@6 c3@5 ~@5", AE: "[c3@4 ~@10 g4@5 ~@4 [c4,e4]@8 ~, ~@11 a#4@4 ~]/2",
})).s("gm_acoustic_guitar_steel").gain(0.2)

// drums · rim
const rim = s("rim").struct("<~ A@2 B A ~@32 A@2 C ~@33 A@2 B A ~@12>".pickRestart({
  A: "x", B: "x!2", C: "x ~@7 x ~@6 x",
})).gain(0.51)

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

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

// drums · clap
const clap = s("cp").struct("<~@56 [~@2 x!2 ~@4] ~@32>").gain(0.41)

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

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

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

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

// drums · high tom
const high_tom = s("ht").struct("<~@4 A ~@31 A ~@35 A ~@11 A ~@4>".pickRestart({
  A: "~ x",
})).gain(0.46)

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

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

// … 4 more lines

More by The Beatles