Strudelify

Ask Me Why

The Beatles

KeyE majorTempo142 bpm
0:00/0:00
// Ask Me Why — The Beatles
// 142 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 79 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(142/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.

// chords · electric guitar clean · "Lead Guitar"
const electric_guitar_clean = note(`<
  A B C D E F G H@2 I@3 J K@2 L@3 M N@3 O P@2 Q R S T U V@2 W X Y Z AA AB AC AD AE@5 AF AG AH@3 AI@2 AJ ~ AK AL AM AN AO
  AP AQ AR AS@2 AT AU AV AW AX AY@2 AZ AO BA ~ BB@2 BC@2
>`.pickRestart({
  A: "e4@9 ~ b3@6 ~@2 b2@4 ~@2", B: "e3@5 ~@6 [e3,g#3,b3]@5 ~@2 [f#3,a3,c#4]@4 ~@2", C: "[g#3,b3,d#4]@7 ~",
  D: "[f#3,a3,c#4]@5 ~@7", E: "e4@5 ~@3 b3@2 ~@7 b2@4 ~@3",
  F: "e3@5 ~@6 e3@4 ~@3 [f#3,a3,c#4]@4 ~@2, ~@10 [g#3,b3]@5 ~@9", G: "~ [g#3,d#4]@19 ~@4, b3@17 ~@7",
  H: "[[f#3,a3,c#4]@12 ~@11 [b3,e4]@17 ~@8, ~@22 [e3,g#3]@17 ~@9]/2", // F#m E5 E
  I: "[~ [d3,f#4]@15 ~ d3@3 ~@3 [c#3,e3,g#3]@21 ~@3 [c#3,e3,g#3]@20 ~@5, c4@5 ~@19]/3", J: "~ [c3,e3,a3]@14 ~@9",
  K: "[[f#3,a#3,c#4]@10 ~@13 [f#3,b3,d#4]@6 ~@6 [e3,g#3,b3]@4 ~@3 [f#3,a3]@4 ~@2, ~@41 c#4@5 ~@2]/2", // F# B E F#m
  L: "[~@2 [g#3,c4,d#4]@18 ~@4 c#4@9 ~@14 e4@4 ~@6 b3@3 ~@6 b2@3 ~@3, ~@23 [f#3,a3]@8 ~@41]/3", // G# F#m
  M: "~@2 e3@6 ~@4 [e3,g#3,b3]@3 ~@2 [f#3,a3,c#4]@4 ~@3, d#3 ~@5", // E F#m
  N: "[[g#3,b3,d#4]@17 ~@7 c#4@5 ~@18 [e3,b3,e4]@18 ~@7, ~@23 [f#3,a3]@5 ~@19 g#3@12 ~@13]/3", // G#m E5 F#m
  O: "~@8 f#4@10 d3@5 ~, [a3,c4]@19 ~@5, ~ d3@16 ~@7", // Am
  P: "[~@16 e3@3 ~@4 [c#3,e3,g#3]@22 ~@3, c#3@17 ~@31, e3 ~@3, ~@4 g#3@15 ~@29]/2", Q: "~ [c3,e3,a3]@18 ~@5",
  R: "~ [e3,g#3]@12 ~@5 g#3@4 ~@2, ~ b3@16 ~@7", // E
  S: "[e3,g#3,c4]@9 ~@2 [e3,g#3,c4]@3 ~ [e3,g#3,c4]@4 ~@2 g#3 ~@2, ~@10 [e3,c4] ~", // Eaug C
  T: "[e3,a3,c#4]@10 ~@2 [e3,a3,c#4]@3 ~ [e3,a3,c#4]@4 ~ [e3,a3,c#4]@3", // A
  U: "~ g#3@2 ~ f#3@6 ~ [f#3,b3,d#4]@4 ~ b3@4 ~ b3@2 ~, ~ b3@9 ~@5 [f#3,d#4]@4 ~ [f#3,d#4]@2 ~@2, ~ d#4@2 ~@5", // B D#m
  V: "[[e3,g#3,b3]@8 ~@7 e3@4 ~@4 [e3,g#3,c4]@9 ~@2 [e3,g#3,c4]@4 ~ [e3,g#3,c4]@4 ~ [e3,g#3,c4]@2 ~@2, ~@11 g#3@6 ~@31]/2", // E Eaug
  W: "[e3,a3,c#4]@10 ~@2 [e3,a3,c#4]@3 ~ [e3,a3,c#4]@4 ~ [e3,a3]@2 ~, ~@10 c#4 ~", // A A5
  X: "~ [f#3,d#4]@8 ~@3 [f#3,b3,d#4]@4 ~@8, ~ c4@6 ~@17", // D#m B
  Y: "[e3,g#3,b3,e4]@2 ~ [d3,e3,g#3,b3,e4]@2 ~ [e3,g#3,b3,e4]@5 ~@13, ~@3 a#3 ~@8", // E E7 E
  Z: "~@6 b2@3 ~@3 [e3,g#3,b3]@4 ~@2 [f#3,a3,c#4]@4 ~@2", AA: "[g#3,b3,d#4]@3 ~", AB: "[e3,a3,c#4]@3 ~",
  AC: "[g#3,b3,d#4]@5 ~@7", AD: "[a3,c#4]@7 ~@5, e3 ~",
  AE: "[e4@6 ~@3 b3@5 ~@4 b2@4 ~ e3@7 ~@6 [g#3,b3]@4 ~@2 [f#3,a3,c#4]@3 ~@3 g#3@18 ~@5 [f#3,a3,c#4]@9 ~@15 e4@7 ~@2 b3@5 ~@4 b2@4 ~@3, ~@35 e3@4 ~@8 [b3,d#4]@18 ~@55]/5", // G#m F#m B
  AF: "e3@5 ~@6 [e3,g#3,b3]@4 ~@3 [f#3,a3,c#4]@3 ~@3", AG: "~ [g#3,b3]@15 ~@8, d#4@2 ~",
  AH: "[[f#3,a3,c#4]@5 ~@19 [b3,e4]@13 ~@12 f#4@16 d#3@5 ~@2, ~@22 e3@14 ~@12 [d#3,c4]@17 ~@7, ~@23 g#3@11 ~@13 g#3@18 ~@7]/3", // F#m E5 Cm
  AI: "[~@2 g#3@11 ~@11 g#3@17 ~@7, c#3@14 ~@9 [c#3,e3]@17 ~@8, ~ e3@12 ~@35]/2", AJ: "~ [c3,e3,a3]@20 ~@3",
  AK: "~@12 [e3,g#3,b3]@5 ~@2 [f#3,a3,c#4]@3 ~@2", AL: "~ [g#3,b3,d#4]@8 ~@3", AM: "[e3,a3,c#4]@17 ~@7",
  AN: "[g#3,b3,d#4]@17 ~@7", AO: "[e3,a3,c#4]@23 ~", AP: "[e3,g#3,b3]@3 ~",
  AQ: "~@11 [e3,g#3,b3]@4 ~ [e3,g#3,b3]@3 ~@2 [e3,g#3,b3]@2 ~", // E
  AR: "[e3,a3,c#4]@10 ~@2 [e3,a3,c#4]@2 ~@2 [e3,a3,c#4]@4 ~ [e3,a3,c#4] ~@2", // A
  AS: "[[f#3,b3,d#4]@10 ~@2 [f#3,b3,d#4]@3 ~@2 b3@4 [f#3,d#4]@3 ~ [e3,g#3]@12 ~ g#3@3 ~ e3@4 ~@2, ~@16 [f#3,d#4]@4 ~ b3@16 ~@11]/2", // B D#m E D#m
  AT: "~ c#4 ~ [g#3,c4]@7 ~ [e3,g#3,c4]@3 ~@2 [e3,g#3,c4]@3 ~@2 [e3,g#3,a#3,c4]@2 ~, ~ e3@8 ~@15", // G# Eaug
  AU: "g#3 c#4@9 ~@2 [e3,a3,c#4]@3 ~ [e3,a3,c#4]@4 ~ [e3,a3]@2 ~, [e3,a3]@5 ~@5 c#4 ~", // A A5
  AV: "a#3@4 b3@5 ~ [f#3,b3,d#4]@2 ~ b3 [f#3,d#4] ~@4 b3 ~@4, [f#3,d#4]@3 ~@3 d#4 ~", // B D#m
  AW: "~ [g#3,b3]@2 ~ e3@2 ~ [e3,b3,e4]@17, [e3,e4]@2 ~ [g#3,a#3,b3,e4]@2 ~ g#3@18", // G#m E5 E
  AX: "~@6 b2@2 ~@4 [e3,g#3,b3]@3 ~@3 [f#3,a3,c#4]@3 ~@3", AY: "[[g#3,b3,d#4]@15 ~@8 [e3,a3,c#4]@19 ~@6]/2",
  AZ: "~ g#3@12 ~@11, [b3,d#4]@11 ~@13", BA: "~@2 e3@3 ~@3 b3@5 ~ b2@10", BB: "[~@7 e3@3 ~ b3@7 ~ b2@8 ~@21]/2",
  BC: "[a4@3 f#4@2 ~ f#4@3 d#4@2 ~ d#4@3 [d#3,g#3]@3 [d#3,g#3]@13 ~@17]/2", // G#5
})).s("gm_electric_guitar_clean").gain(0.13)

// chords · acoustic guitar steel · "Rhythm Guitar"
const acoustic_guitar_steel = note(`<
  A B C D@3 E F@5 G H I J@3 K L M@3 N O P Q R S T U V@4 ~ W@2 X Y Z AA@2 AB@4 AC AD@5 AE@2 AF AG AH AI AJ AK@8 ~ AL AM
  AN AO AP AQ AR AS AT@2
>`.pickRestart({
  A: "~@8 [e3,g#3,b3]@8 ~@2 b3@5 ~, ~@17 [e3,g#3]@5 ~@2", B: "[e3,g#3,b3] ~@2",
  C: "[g#3,b3,d#4]@5 ~ [g#3,b3,d#4] ~@2 [g#3,b3,d#4]@7 ~ [g#3,b3,d#4]@4 ~@3", // G#m
  D: "[[f#3,a3,c#4]@5 ~ [f#3,a3,c#4] ~@2 [f#3,a3,c#4]@7 ~@2 [f#3,a3,c#4]@4 ~@2 [e3,g#3]@5 [e3,g#3,b3] ~@2 [e3,g#3,b3]@7 ~@2 [e3,g#3,b3]@5 ~ [e3,g#3,b3]@6 ~@19, ~@23 b3@5 ~@44]/3", // F#m E
  E: "[g#3,b3,d#4]@5 ~ [g#3,b3,d#4] ~@2 [g#3,b3,d#4]@7 ~@2 [g#3,b3,c4,d#4]@4 ~@2", // G#m G#
  F: "[[f#3,a3,c#4]@5 ~ [f#3,a3,c#4] ~@2 [f#3,a3,c#4]@8 ~ [f#3,a3,c#4]@4 ~@2 [e3,g#3]@4 ~ [e3,g#3,b3] ~@2 [e3,g#3,b3]@8 ~ [e3,g#3,b3]@5 ~@2 b3@5 [g#3,b3,d#4]@2 ~@2 [d#4,e4] ~@4 d#4@3 ~ [g#3,c4,d#4]@3 ~@3 e4@5 [g#3,c#4,e4] ~@2 [g#3,c#4,e4]@7 ~@2 [g#3,c#4,e4]@5 ~ [g#3,c#4,e4]@3 ~@2 [g#3,c#4,e4] [g#3,c#4,e4]@3 ~ [g#3,c#4,e4]@5 ~ [g#3,c#4,e4]@2 ~ [g#3,c#4,e4]@2 ~ [g#3,c#4,e4]@2 ~, ~@23 b3@5 ~@19 [g#3,d#4]@5 ~@5 [g#3,c4]@8 ~@6 [g#3,c#4]@5 ~@4 d#4@2 ~@38]/5", // F#m E G#m Emaj7 G# C#m G#5 G# …
  G: "[a3,c4,e4]@3 [a3,c4,e4] ~ [a3,c4]@4 ~ [a3,c4]@6 [a3,c4,e4] ~ [a3,c4,e4]@5 ~, ~@5 e4@11 ~@2 b3@2 ~@4", // Am
  H: "~@5 [f#3,a#3,c#4]@2 ~@3 [f#3,a#3,c#4]@5 ~ [f#3,a#3,c#4]@2 ~@2 [f#3,a#3,c#4] ~@2 d#4", // F#
  I: "~ [f#3,b3,e4]@2 ~@4 b3@2 ~@15, ~@3 [f#3,d#4] ~@8", // Esus2 D#m
  J: "[[g#3,b3,d#4]@5 ~ [g#3,b3,d#4]@2 ~ [g#3,b3,d#4]@7 ~ [g#3,b3,d#4]@4 ~@2 [f#3,a3,c#4]@5 ~ [f#3,a3,c#4] ~@3 [f#3,a3,c#4]@5 [f#3,a3,c#4] ~@2 [f#3,a3,c#4]@4 ~@3 b3@5 [e3,g#3,b3] ~@2 [e3,g#3,b3]@8 ~@2 [e3,g#3,b3]@5 ~, ~@33 a#3 ~@13 [e3,g#3]@4 ~@21, ~@47 a#3@2 ~@23, ~@48 c#4 ~@23]/3", // G#m F#m E
  K: "[e3,g#3,b3]@7 ~@17", L: "[g#3,b3,d#4]@5 ~ [g#3,b3,d#4] ~@2 [g#3,b3,d#4]@7 ~@2 [g#3,b3,d#4]@5 ~",
  M: "[[f#3,a3,c#4]@5 ~ [f#3,a3,c#4]@2 ~ [f#3,a3,c#4]@7 ~@2 [f#3,a3]@4 ~ [e3,g#3,b3]@5 ~ [e3,g#3,b3]@2 ~@2 [e3,g#3,b3]@7 ~@2 b3@4 ~ [g#3,c4,d#4]@5 ~@2 [c4,d#4]@2 ~ [g#3,c4,d#4]@7 ~@2 [g#3,d#4]@5 ~, a#3 ~@16 c#4@5 ~@19 [e3,g#3]@4 ~@8 g#3@2 ~@11 c4@3 ~@3]/3", // F#m E G# Cm G# G#5 E
  N: "[g#3,c#4,e4]@5 ~ [g#3,c#4,e4]@2 ~ [g#3,c#4,e4]@7 ~@2 c#4@4 ~@2, ~@17 [g#3,e4]@4 ~@3", // C#m
  O: "[g#3,c#4,e4]@2 ~ [g#3,c#4,e4] ~ [g#3,c#4,e4]@4 [g#3,c#4,e4]@5 ~ [g#3,c#4,e4]@2 ~@2 g#3 ~ [g#3,c#4,e4]@2 ~, ~@9 [c#4,e4] ~@2", // C#m
  P: "[b3,c4]@3 c4 a3 ~ [a3,c4,e4]@2 ~ [a3,c4,e4] ~@2 [a3,c4,e4]@2 ~@3 [a3,c4,e4]@2 ~ [a3,c4,e4] ~@3, e4@5 ~@19, a3 ~@23", // Cmaj7 Am
  Q: "e3 ~ [e3,g#3]@3 ~ [e3,g#3,b3] ~@2 [e3,b3] ~@2 [e3,b3]@3 ~@3 [e3,g#3,b3]@4 ~@2, b3@5 ~@4 g#3@6 ~@9", // E E5 E
  R: "[e3,g#3,c4]@4 ~@2 [e3,g#3,c4] ~@2 [e3,g#3,c4]@7 ~@2 e3@4 ~@2, ~@17 [g#3,c4]@3 ~@4", // Eaug G#
  S: "[e3,a3,c#4]@5 ~ [e3,a3,c#4]@2 ~ [e3,a3,c#4]@5 ~ [e3,a3,c#4]@5 ~ [e3,a3,c#4] ~@2", // A
  T: "[f#3,b3,d#4]@6 [f#3,b3,d#4]@2 ~ [f#3,b3,d#4]@6 ~ [f#3,b3,d#4]@4 ~ [f#3,b3,d#4]@2 ~, a#3 ~@23", // B
  U: "[e3,g#3,b3]@5 ~ [e3,g#3,b3]@2 ~ [e3,g#3,b3]@5 ~ [e3,g#3,b3]@4 ~@2 [e3,g#3,b3]@2 ~, a#3 ~@7", // E
  V: "[[e3,g#3,c4]@4 ~ [e3,g#3,c4]@2 ~ [e3,g#3,c4]@5 ~ [e3,g#3,c4]@4 ~@2 [e3,g#3,c4]@2 ~@2 [a3,c#4]@5 ~ c#4 ~@2 [e3,a3,c#4]@4 ~ [e3,a3,c#4]@4 ~@2 [e3,a3,c#4] ~@2 c4 ~ b3@3 ~ [f#3,b3,d#4]@2 ~ [f#3,b3,d#4]@5 ~ [f#3,b3,d#4]@2 ~ [f#3,b3,d#4]@3 ~@3 [e3,g#3,b3]@2 ~ [e3,g#3,b3]@2 ~@2 [e3,g#3,b3]@5 ~@13, ~@23 e3@5 ~ [e3,a3]@2 ~@16 [f#3,d#4]@5 ~@44, ~@24 a#3 ~@8 g#3 ~@62]/4", // Eaug A B E A5 D#m
  W: "[~ [g#3,b3,d#4]@2 [g#3,b3,d#4] ~ b3@4 b3@5 ~@2 [g#3,b3,d#4] ~ [g#3,b3,d#4]@2 ~ [g#3,b3,d#4] ~@2 [e3,a3]@3 [e3,a3] ~@2 [e3,a3,c#4]@2 ~ [e3,a3,c#4] ~ [e3,a3,c#4] [e3,a3,c#4]@2 ~ [e3,a3,c#4]@2 ~@2 [e3,g#3] ~@2 [d3,e3,a3] ~, ~@5 [g#3,d#4]@10 ~@9 f3 ~@18 a3@2 ~@3, ~@5 c4 ~@17 c#4@5 ~@15 c#4@5]/2", // G#m A5 A E Dsus2 G#5
  X: "~ [g#3,b3,d#4]@3 [g#3,b3,d#4] ~ [g#3,b3,d#4]@3 ~ [g#3,b3,d#4]@5 [g#3,b3,d#4]@2 ~ [g#3,b3,d#4]@2 ~ [g#3,b3,d#4]@2 ~", // G#m
  Y: "[e3,a3,c#4]@2 ~ [e3,a3,c#4] ~ [e3,a3,c#4]@3 ~ [e3,a3,c#4]@5 ~ [e3,a3,c#4]@2 ~ a3@3 [e3,c#4] ~@2, ~@9 c#4 ~@2, ~@18 e3 ~@5", // A C#m
  Z: "[e3,g#3,b3]@2 ~ [e3,g#3,b3] ~ b3 b3@3 ~ [e3,g#3]@5 ~ [e3,g#3,b3] ~ [e3,g#3,b3]@3 ~ g#3 ~, ~@5 [e3,g#3]@4 b3@6 ~@6 [e3,b3]@2 ~", // E E5
  AA: "[~ [e3,g#3,b3]@6 ~@17 b3@6 [g#3,b3,d#4] ~@2 [g#3,b3,d#4]@5 ~ [g#3,b3,d#4] ~@2 [g#3,b3,d#4]@4 ~@2, ~@23 [g#3,d#4]@6 ~@4 a#3 ~@14]/2", // E G#m G#5
  AB: "[[f#3,a3,c#4]@5 ~ [f#3,a3,c#4] ~@2 [f#3,a3,c#4]@4 ~@2 a3 ~ [f#3,a3,c#4]@4 ~@2 [e3,g#3,b3]@8 ~ [e3,g#3,b3]@8 ~ [e3,g#3,b3]@6 ~ [e3,g#3]@6 ~@17 [g#3,b3,d#4]@5 ~@2 [g#3,b3,d#4] ~@2 [g#3,b3,d#4]@7 ~@2 [g#3,b3,d#4]@4 ~@2, ~@14 [f#3,c#4]@2 ~@31 b3@7 ~@42, ~@48 a#3 ~@47]/4", // F#m E G#m F#5
  AC: "~ a3@4 ~ [f#3,a3,c#4] ~@2 [f#3,a3,c#4]@8 ~ [f#3,a3,c#4]@4 ~@2, [f#3,c#4]@5 ~@19", // F#m F#5
  AD: "[[e3,g#3,b3]@4 ~@2 [e3,g#3,b3]@2 ~ [e3,g#3,b3]@7 ~@2 [e3,g#3,b3]@4 ~@2 c4@5 ~ [g#3,c4,d#4]@2 ~ [g#3,c4,d#4]@7 ~@2 [g#3,c4,d#4]@3 ~@3 e4@5 ~ [g#3,c#4]@3 ~ [g#3,c#4]@6 ~@2 [g#3,e4]@3 ~@2 [g#3,c#4,e4]@2 ~ c#4 [g#3,e4] [g#3,c#4,e4] ~ [g#3,c#4,e4]@3 [g#3,c#4,e4]@5 ~ [g#3,c#4,e4] ~@2 [g#3,c#4,e4] ~@2 e4@2 ~ [g#3,e4]@2 ~@2 [a3,c4,e4] ~ [a3,c4,e4]@2 ~ [a3,c4,e4] ~@2 [a3,c4,e4] ~@2 [a3,c4,e4] ~@2 [a3,c4,e4]@4 ~@2, ~@23 [g#3,d#4]@6 ~@18 [g#3,c#4]@6 ~@40 g#3 ~@26, ~@48 d#4@2 ~@4 e4@10 ~ c#4@4 ~@24 c#4@5 ~@22]/5", // E G# C#5 C#m Am G#5 C#5
  AE: "[[f#3,a3,c#4]@3 ~ [f#3,c#4] a3 ~ a#3@3 ~ a#3@5 ~ [f#3,a#3,c#4] ~@2 [f#3,c#4]@2 ~ [f#3,a#3,c#4]@2 ~ d#4 b3@4 ~@2 [f#3,b3,d#4] ~@14, a#3 ~@6 [f#3,c#4]@9 ~@3 a#3@2 ~@5 [f#3,e4]@5 ~@17]/2", // F#m F#5 F# F#5 F# B F#5 F#7
  AF: "~ [g#3,b3,d#4]@2 ~@2 d#4 [b3,d#4] ~ [b3,d#4]@2 ~ [g#3,b3,d#4]@5 ~ [g#3,b3,d#4]@2 ~ [g#3,b3,d#4]@2 ~@2, ~@3 g#3@2 ~@7", // G#m B G#m
  AG: "~ [e3,g#3,a3,c#4]@3 ~@2 [e3,a3,c#4]@2 ~ [e3,a3,c#4] ~@2 [e3,a3]@3 [e3,a3,c#4]@2 ~ [e3,a3,c#4]@2 ~ [e3,a3,c#4] ~@2, ~@11 c#4@3 ~@10", // Amaj7 A A5 A
  AH: "[g#3,b3,d#4]@2 ~ [g#3,b3] d#4 g#3 ~ g#3@2 ~ [g#3,b3,d#4]@5 ~ b3@2 [g#3,b3,d#4]@2 ~ [g#3,b3,d#4]@2 ~, ~@5 [b3,d#4]@4 ~@6 [g#3,d#4]@2 ~@7", // G#m B G#5
  AI: "[e3,a3,c#4]@3 [e3,a3,c#4] ~@2 [e3,a3,c#4] ~@2 [e3,a3,c#4] ~@2 [e3,a3,c#4]@4 ~@3 c#4@5, f3 ~@17 [e3,a3]@6", // A A5
  AJ: "~ [e3,g#3,b3]@5 ~ [e3,g#3,b3]@2 ~ [e3,g#3,b3]@7 ~@2 [e3,g#3,b3]@4 ~", // E
  AK: "[~ [g#3,c4]@6 ~@2 [g#3,d#4] ~@13 [e3,a3,c#4]@8 ~@3 [e3,a3,c#4]@3 ~ [e3,a3,c#4]@4 ~ [e3,a3,c#4]@2 ~@2 f#3@9 ~@2 [f#3,b3,d#4]@3 ~@2 [f#3,b3,d#4]@4 ~ [f#3,b3,d#4]@2 ~@2 [e3,a3]@4 ~@7 [e3,g#3,b3]@2 ~@2 [e3,g#3,b3]@3 ~ [e3,b3]@3 ~ e3@10 ~ [e3,g#3,c4]@3 ~ [e3,g#3,c4]@4 ~@2 [e3,g#3,c4]@2 ~ [e3,a3,c#4]@11 ~@2 [e3,a3,a#3,c#4]@2 ~@2 a3@4 ~ [e3,a3,c#4] ~@2 [f#3,b3]@9 ~@2 [f#3,b3,d#4]@2 ~ [f#3,b3,d#4]@2 ~ [f#3,b3,d#4]@2 ~@4 [e3,g#3,b3,e4]@2 ~ [e3,g#3,b3,e4]@3 ~ [e3,g#3,b3,e4]@5 ~@13, e3@4 ~@41 d#4@10 ~@16 c#4@4 ~@19 c4@10 ~@40 d4 ~@47, ~@46 b3@9 ~@88 [a#3,d#4]@2 ~@29 a#3@2 ~@16, ~@47 g#3@2 ~@42 g#3@13 ~@31 [e3,c#4]@4 ~@53]/8", // G# G#5 A B A5 E E5 Eaug …
  AL: "[g#3,b3,d#4]@3 [g#3,b3,d#4] ~ d#4 d#4@2 ~@2 [g#3,b3,d#4]@5 ~ g#3@2 ~ g#3@2 ~@3, ~@5 [g#3,b3]@4 ~ a#3 ~@4 [b3,d#4]@2 ~ [b3,d#4]@3 ~@3", // G#m B
  AM: "[e3,a3,c#4]@4 ~ [e3,a3,c#4]@3 ~ [e3,a3,c#4] [e3,a3]@4 ~ [e3,a3]@2 ~ [e3,g#3,a3,c#4]@2 ~ [e3,a3,c#4]@2 ~, ~@10 c#4@7 ~@7", // A A5 Amaj7 A
  AN: "~ g#3@2 [g#3,d#4] b3 [g#3,b3,d#4] ~ [g#3,b3,d#4]@3 [g#3,b3,d#4]@5 ~ [g#3,b3,d#4]@2 ~ [g#3,b3,d#4]@2 ~ [g#3,b3]@2, [b3,d#4]@3 ~@18 d#4@2 ~", // G#5 G#m B
  AO: "~ b3 ~@2 [a3,c#4]!2 ~ [a3,c#4]@3 [a3,c#4]@5 ~ [a3,c#4]@2 ~ [a3,c#4]@2 ~ [a3,b3,c#4] ~, [a3,c#4] ~@7", // A
  AP: "~@4 [g#3,b3] ~ [g#3,b3] ~ [g#3,b3,c4]@3 b3@6 [e3,b3]@2 ~ [e3,g#3,b3]@4, ~@11 g#3@8 ~@5", // G#m G# E5 E
  AQ: "~@2 e3 ~@15 [e3,g#3,b3]@2 ~@4", // E
  AR: "[e3,a3]@3 ~ [a3,c#4] ~ [e3,a3,c#4]@3 ~ [e3,g#3,a3,c#4]@5 ~ [e3,c#4] a3 ~ [e3,a3,c#4] ~@2 [e3,a3,c#4] ~, g#3 ~@23", // A5 A Amaj7 C#m A
  AS: "~@2 [e3,a3,c#4]@3 ~@2 [e3,a3,c#4]@2 ~ [e3,a3,c#4] ~ [e3,a3,c#4]@4 ~@2 [e3,a3,c#4] ~@5, ~@2 [g#3,a#3] ~@21", // A G#sus2
  AT: "[~ [b3,d#4]@41 ~@6, g#3@7 ~]/2", // B
})).s("gm_acoustic_guitar_steel").gain(0.05)

// bass · electric bass finger · "Bass"
const bass = note(`<
  A B C D@3 E F G@2 H@2 I J K L M@2 N@4 O@2 P Q R S T U V@2 W X@2 Y Z@2 AA AB AC AD AE AF@3 AG@2 AH AI AJ@2 AK AL@2 AM
  AN AO AP AQ AR AS AT@4 AU AV AW AX AY@2 AZ BA@3 BB BC ~
>`.pickRestart({
  A: "~ e2@9 b2@7 b1@7, ~ f2 ~@22", B: "e2@6 ~@5 e2@7 f#2@6", C: "g#2@8 ~ g#2@6 d#2@5 ~ g#2@3",
  D: "[f#2@7 ~ f#2@6 c#2@3 b1@5 ~ e2@9 b2@8 ~ b1@6 e2@7 ~@5 e2@6 f#2@7]/3", E: "g#2@8 ~ g#2@5 d#2@6 g#2@4",
  F: "f#2@7 ~ f#2@6 c#2@4 b1@6", G: "[e2@9 b2@5 e2@3 f#2@3 g2@3 g#2@8 ~@2 g#2@6 d#2@2 d2@3 c#2@3 ~]/2",
  H: "[g#2@7 g#2@8 ~ a1 ~@2 b1@3 ~ c#2@8 ~ g#2@4 ~@2 g#2@3 c#2@7]/2", I: "a2@7 ~@2 a2@6 e2@4 ~@5",
  J: "f#2@5 ~@2 f#2 ~@2 f#2@7 f#2@7", K: "~ b1@8 ~@3 e2@5 ~ f#2@6", L: "g#2@8 ~ g#2@5 d#2@6 g#2@3 ~",
  M: "[f#2@6 ~@2 f#2@7 c#2@3 b1@5 ~@6 d2 ~@2 b2@9 b1@7, ~@23 e2@9 ~@16]/2",
  N: "[e2@7 ~@4 e2@7 f#2@5 g#2@7 ~@2 g#2@6 d#2@5 ~ g#2@3 f#2@8 ~ f#2@6 c#2@3 b1@5 ~ e2@10 b2@5 e2@4 f#2@2 g2@4]/4",
  O: "[g#2@8 ~ g#2@6 d#2@3 d2@3 c#2@16 ~ g#2@3 ~ g#2@6]/2", P: "b1@2 e2@4 ~@6 g#2@3 ~ g#2@2 c#2@6",
  Q: "a#2 a2@6 ~ a2@6 ~ e2@3 a2@6", R: "e2@7 ~@2 b2@9 b1@6", S: "e2@5 c3@4 e2@3", T: "a2@9 f#2@6 e2@5 c#2@4",
  U: "a2 ~@2 b2@4 a2@5 g#2@6 f#2@6", V: "[e2@5 ~ e2@4 b2@5 ~ b1@6 ~ e2@6 ~ e2@5 ~ c3@6 e2@6]/2",
  W: "a2@6 f#2@5 e2@6 c#2@7", X: "[b2@6 a2@6 g#2@6 f#2@5 e2@2 ~ e2@2 ~ e2@5 ~@14]/2", Y: "~@6 b1@5 ~ e2@6 f#2@6",
  Z: "[g#2@6 ~ g#2@2 g#2@5 d#2@4 g#2@5 f#2@5 ~@4 c#2@6 ~@2 e2@8, ~@15 f#2@2 ~@7]/2",
  AA: "~ f#2@4 ~@2 g#2@9 ~ d#2@4 g#2@3", AB: "f#2@6 ~@3 c#2@7 ~@2 d#2@6", AC: "e2@8 ~ b2@9 b1@6",
  AD: "e2@7 ~@4 e2@6 ~ f#2@6", AE: "g#2@7 ~@2 g#2@6 d#2@6 g#2@3",
  AF: "[f#2@6 ~@8 c#2@4 b1@5 e2@6 ~@3 b2@8 ~ b1@6 e2@6 ~@6 e2@6 f#2@7, ~@9 f#2@7 ~@56]/3",
  AG: "[g#2@7 ~@2 g#2@5 ~ d#2@4 ~ g#2@2 ~ f#2@7 ~@2 f#2@6 ~ c#2@3 b1@5 ~]/2", AH: "e2@9 b2@5 e2@3 f2@2 ~ f#2@3 ~",
  AI: "g2@5 g#2@10 e2@2 ~ d#2@2 c#2@2 ~@2", AJ: "[~ f#2 ~@2 g#2@2 ~@6 c#2 ~@5 b1@2 ~@3 c#2@7 g#2@2 ~ g#2@7 c#2@8]/2",
  AK: "a2@7 ~@2 a2@6 c#2@3 f#2@2 ~@4", AL: "[~@6 f#2@4 f#2@5 ~ f#2 ~@3 f#2@6 ~@6 b1@2 ~@4 e2@4 ~ f#2@5]/2",
  AM: "g#2@5 ~@2 g#2 ~@2 d#2@5 ~ g#2@8", AN: "a2@8 ~ c#2@7 e2@6 ~@2", AO: "g#2@7 ~ g#2@6 ~ d#2@3 g#2@6",
  AP: "a2@4 ~@2 a2@3 c#2@7 ~ d#2@7", AQ: "~@8 e2@11 ~@5", AR: "~ e2@8 b2@8 b1@6 ~", AS: "e2@8 ~@4 e2@5 ~ c#2@6",
  AT: "[~ a2 ~ b2@5 a2@3 g#2@7 f#2@5 e2@6 ~ e2@4 ~@2 b2@3 b1@6 ~ e2@7 ~ e2@5 c3@6 e2@6 a2@7 f#2@6 e2@6 c#2@6]/4",
  AU: "b2 a2 g#2 f#2", AV: "e2@2 ~ e2@2 e2@5 ~@14", AW: "~@7 b1@5 ~ e2@5 f#2@4 ~@2",
  AX: "g#2@5 ~@5 g#2@6 d#2@3 ~ g#2@4", AY: "[~@2 a2@8 ~@2 c#2@3 e2@2 ~@6 g#2@8 ~@2 g#2@7 d#2@3 g#2@5]/2",
  AZ: "~ a2@4 ~ a2@3 c#2@8 d#2@7", BA: "[~ e2@5 ~ b2@3 e3@9 b2@7 f2@6 ~ b2@3 e3@9 b2@6 e2@6 b2@3 e3@8 b2@4]/3",
  BB: "~ e2@6 b2@4 e3@8 b2@5", BC: "g#1@11 ~",
})).s("gm_electric_bass_finger").gain(0.18)

// drums · rim
const rim = s("rim").struct(`<
  A ~ B C D ~ C E F@2 G H C I J K D@2 ~ C@2 D L C M C N D O P@4 Q R S N T U C N ~ M C V ~ C@2 N W X Y C Z AA AB AC C@2 ~
  AD AE AF AG AH AI AJ AK ~ C AL C AM AN AO AP AQ J ~
>`.pickRestart({
  A: "x ~@4 x ~@3 x ~@2", B: "x ~@4 x!2 ~@2 x ~@2", C: "~@2 x!2 ~@2 x ~", D: "~@5 x ~@2 x ~@8 x ~@6",
  E: "x ~@5 x ~@10 x ~@6", F: "~@5 x ~@2 x ~@9 x ~@5", G: "~@6 x ~ x ~@8 x ~@6", H: "~@5 x ~@3 x ~@8 x ~@5",
  I: "~@2 x ~@3 x!2", J: "x", K: "x ~@6 x ~@2 x ~@7 x ~@5", L: "~@6 x ~@2 x ~@7 x ~@6", M: "~@2 x!2 ~@4", N: "~ x ~ x",
  O: "x ~@3 x ~@4 x ~@2", P: "x!2 ~ x", Q: "x ~@6 x ~ x ~@8 x ~@5", R: "~ x ~ x ~@2 x ~@17", S: "~@5 x",
  T: "x ~@2 x!2 ~@4 x ~@2", U: "x ~@2 x", V: "~@5 x ~@2 x ~@8 x ~@5 x", W: "x ~@5 x ~@2 x ~@7 x ~@5 x",
  X: "~@9 x ~ x ~@6 x ~@5", Y: "x ~ x!2 ~@2 x ~", Z: "~@6 x ~@12 x ~@2 x ~", AA: "~@7 x ~@16",
  AB: "~ x ~@6 x ~ x ~@8 x ~@4", AC: "~@7 x ~ x ~@8 x ~@5", AD: "~ x", AE: "~@5 x ~@3 x ~@7 x ~@6",
  AF: "x ~@4 x ~@11 x ~@5 x", AG: "~@6 x ~@10 x ~@5 x", AH: "~@4 x ~@4 x ~@2", AI: "x ~@3 x!2 ~@2",
  AJ: "x ~@10 x ~@10 x ~", AK: "~ x ~ x ~@8", AL: "x ~@2 x ~@5 x ~@7 x ~@6", AM: "~ x ~@7 x ~@8 x ~@3 x ~",
  AN: "~@7 x ~@12 x ~@3", AO: "~@8 x ~@2 x ~@8 x ~@3", AP: "~@8 x ~@2 x ~@9 x ~@2", AQ: "~ x ~@4 x ~@5",
})).gain(0.19)

// drums · snare
const snare = s("sd").struct("<~ A ~@15 B ~@17 C ~@5 D ~@26 E ~@10>".pickRestart({
  A: "x ~@10 x ~@6 x ~@5", B: "~@23 x", C: "~@4 x!2 ~@2", D: "~ x ~@22", E: "~@6 x ~@2 x!2 ~ x ~@2 x ~@8",
})).gain(0.19)

// drums · clap
const clap = s("cp").struct("<~@68 [~ x ~@2] ~@10>").gain(0.19)

// drums · crash
const crash = s("cr").struct("<~@77 x ~>").gain(0.19)

// drums · ride
const ride = s("rd").struct(`<
  A B C D E ~ F G H@2 I J K F B L J M ~ N O I J P Q R S T U F V W X Y B Z AA F AB F@2 ~ F AC J ~ AD F AC AE AF F AC AG
  AH AI AJ F AC AK C E J@2 AL F AM ~ AN F AO P AP AQ J@2 AR ~@2
>`.pickRestart({
  A: "~ x ~@2 x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~@2 x ~@2", B: "x", C: "x ~@3 x ~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2",
  D: "x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~ x ~@3", E: "x ~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x", F: "x!8",
  G: "x ~@2 x ~@2 x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~@2 x", H: "~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@3 x ~ x ~@2 x",
  I: "~@2 x ~@3 x ~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x", J: "~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x",
  K: "~@2 x ~@3 x ~ x ~@2 x ~@2 x ~@3 x ~@5", L: "~@3 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~ x",
  M: "~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~ x ~@4", N: "x ~@2 x ~@2 x ~@3 x ~@2 x ~ x ~@2 x ~@2 x ~ x",
  O: "~@3 x ~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x", P: "~ x!7", Q: "x ~@2 x ~@2 x ~@2 x ~@2 x ~ x ~@2 x ~@5 x",
  R: "~@2 x ~@3 x ~@5 x ~ x ~@2 x ~@2 x ~@2 x", S: "~@2 x ~@3 x ~ x ~@2 x ~@2 x ~@3 x ~@2 x ~@2",
  T: "x ~@2 x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~@2 x ~@3", U: "x ~@4 x ~@2 x ~@3 x ~@2 x ~@2 x ~@2 x ~@2",
  V: "x ~@2 x ~@2 x ~@2 x ~ x ~@3 x ~@2 x ~@2 x ~@2", W: "x ~ x ~@3 x ~ x ~@3 x ~@2 x ~ x ~@2 x ~@2 x",
  X: "~@2 x ~@2 x ~@2 x ~@3 x ~@2 x ~@2 x ~@2 x ~@2", Y: "x!4 ~ x!2 ~", Z: "~ x ~@2",
  AA: "~@6 x ~@2 x ~@3 x ~@2 x ~ x ~@2 x ~@2", AB: "x ~@2 x ~@2 x ~@2 x ~@2 x ~@3 x ~ x ~@2 x ~@2",
  AC: "x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~ x ~@2 x", AD: "x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@3 x ~@2 x ~",
  AE: "~@2 x ~@2 x ~@2 x ~@3 x ~@2 x ~ x ~@2 x ~@2 x", AF: "~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@3 x ~@2",
  AG: "~@3 x ~@2 x ~@6 x ~@2 x ~@2 x ~@2 x ~", AH: "~ x ~@2 x ~@2 x ~@2 x ~@13",
  AI: "~ x ~@2 x ~@2 x ~ x ~ x ~@2 x ~@2 x ~@2 x ~ x ~", AJ: "~ x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2",
  AK: "~@19 x ~@4", AL: "~@2 x ~@2 x ~@2 x ~@2 x ~ x ~@3 x ~@3 x ~@2", AM: "x ~@2 x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~@6",
  AN: "~ x ~@10", AO: "x ~@2 x ~@2 x ~@2 x ~ x ~@2 x ~@2 x ~@2 x ~@2 x", AP: "x!6 ~@2",
  AQ: "~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@3 x ~@2 x ~@2 x", AR: "~@2 x ~ x ~@2 x ~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2",
})).gain(0.19)

stack(electric_guitar_clean, acoustic_guitar_steel, bass, rim, snare, clap, crash, ride)

More by The Beatles