Strudelify
KeyC majorTempo124 bpm
0:00/0:00
// Why — The Beatles
// 124 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 2 "BASS" named as a bass, played on electric bass finger (its acoustic guitar steel patch is not one)
// note: sustain pedal (CC 64) lengthens the held notes
// 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(124/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 bass finger · "BASS"
const electric_bass_finger = note(`<
  A B C D E F G H I J K L M N O P Q@2 R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM@3 AN AO@3 AP AQ AR AS AT
  AU AV@2 AW AX AY AZ BA BB BC BD BE BF BG@2 BH@2 BI@2 BJ BK BL BM BN BO BP@2 BQ BR BS@2 BT BU BV BW BX BY BZ CA@3
>`.pickRestart({
  A: "[c2,c4]@3 c2!2 c2@2 c2, [c3,e4], g4@5 [c4,g4]@3, ~@14 f4 ~", // C C5
  B: "~@3 a#1 ~@3 a#1, [a#3,d4,f4,a#4,d5]@3 [a#3,d4,f4,a#4,d5], ~@4 a#1@3 ~", // A#
  C: "[c4,e4,g4]@3 c2 ~@2 c3 c2, c3@11 g4@5, ~@6 [c4,e4,g4]@4 [c4,e4]@5 ~, ~@4 c2@3 ~", // C
  D: "[a#4,d5]@3 a#1 ~@2 a#3 a#1, d4@15 ~, a#3@3 ~, f4@3 ~@3 [f4,a#4,d5]@4 [f4,a#4,d5]@5 ~, ~@4 a#1@3 ~", // A#
  E: "c4 ~ c4 c2 ~@3 c2, [c3,e4,g4]@6 [c3,c4,e4,g4]@4 [c4,e4,g4]@5 ~, ~@4 c2@3 ~, ~@3 c3", // C
  F: "[f4,a#4,d5]@3 ~ f4@2 a#1@2 a#1@2 ~@4 [a#1,g4]@2, a#3@5 a#1@2 ~, a#1@3 [f4,a#4,d5]@2 [f4,a#4,d5]@3, ~@3 a#3", // A# D# A#
  G: "[g4,b4,d5]@2 ~ g2 ~@2 g3 g4, [g2,g3]@3 g3@3 ~@2, ~@2 g4@3 [b4,d5]@3, ~@4 g2@3 ~", // G Bm
  H: "[g4,b4,d5]@2 [g4,b4,d5]@2 [f4,a4,c5] ~ a4@2 [e4,g4,b4]@2 ~@2 a4 ~ g2@2, g3 f3@2 [d3,d4,f4], ~@3 c5@5, ~@3 f4 [g2,d4,a4] g4@3, ~@6 g2 ~ e3@8", // G F Em Dm Gsus2
  I: "[c2,c3,e5]@3 c2!2 ~@2 [c2,a4], [g4,c5]@2 ~ c3@3 c3@2, ~@3 [g4,c5,e5]@2 [g4,c5,e5]@3, ~@5 c2@2 ~", // C F C5 C
  J: "[a3,c5,e5]@6 a1@2 ~@4 a3@2 [a1,d4] ~, a4@4 ~@2 [a3,a4,c5,e5]@4 [a4,c5,e5]@5 ~, ~@4 a1@3 ~", // Am D5 Am
  K: "d4@2 d4 d2 ~@3 g4, [d3,f4,a4]@3 d3@3 d3@2, ~@3 [d4,f4,a4]@2 [d4,f4,a4]@3, ~@8 d2@6 d2 ~", // Dm
  L: "g4@4 g4@2 g2@2 ~@4 g3@2 [g2,g4] ~, [g3,b4,d5]@3 g3@3 ~@2, ~@6 [g4,b4,d5]@4 [g4,b4,d5]@5 ~, ~@4 g2@3 ~", // G
  M: "g4@2 g4 c2!2 ~@2 c2, [c2,c3,c5,e5]@3 c3@3 c3@2, ~@3 [g4,c5,e5]@2 [g4,c5,e5]@3, ~@10 c2@3 a4@2 ~", // C
  N: "a4@2 a4 a1 ~@2 a3 [a1,d4], [a3,c5,e5]@3 a3@3 ~@2, ~@3 [a4,c5,e5]@2 [a4,c5,e5]@3, ~@4 a1@3 ~", // D5 Am
  O: "d4 ~ d4 d2 ~@2 d3 [d2,g4], [d3,f4,a4]@3 d3@3 ~@2, ~@6 [d4,f4,a4]@4 [d4,f4,a4]@5 ~, ~@4 d2@3 ~", // G5 Dm
  P: "[g4,b4,d5]@3 ~ g4@2 g2@2 g2@2 ~@2 g3@2 [g2,g4] ~, [g2,g3]@3 g3@3 ~@2, ~@6 [g4,b4,d5]@4 [g2,g4,b4,d5]@5 ~", // G
  Q: "[g4@2 g4 ~ c2 ~@7 a1 ~@2 [a1,f4], c2@8 ~@2 [c2,g4,c5,e5]@4 c2@2 a1@8 ~@2 [a1,a4,c5,e5]@5 ~, [c3,c5,e5]@6 c3@6 c3@3 [a3,c5]@6 a3@6 ~ a3@4, ~@6 [g4,c5,e5]@4 ~@3 a4@2 [a4,e5]@4 a4@5 ~@8]/2", // Dm C Am C Am C A5
  R: "[f4,a4,c5]@2 ~ f2 [f2,f4] ~ f3 f2, [f2,f3]@3 f3@3 ~@2, ~@4 [a4,c5]@6 ~@4 f4 ~, ~@4 f4@4 ~@2 [f2,f4,a4,c5]@5 ~", // F Am F
  S: "[f4,g#4,c5] ~@5 [f2,f4,g#4,c5]@2 [f3,f4,g#4,c5]@4 ~@2 g4@2, f3@4 f3@4 f2@6 f2 ~, ~ [f4,g#4,c5]@2 ~@3 [f3,f4,g#4,c5]@2", // Fm
  T: "[g4,c5,e5]@4 g4@2 c2@2 [c2,g4]@2 ~@2 c3@2 [c2,g4] ~, [c2,c3]@3 c3@3 ~@2, ~@4 [c5,e5]@6 [c2,g4,c5,e5]@5 ~", // C C5 C
  U: "[g4,b4,d5]@2 ~ g2 g4 ~@2 g4, g3@3 g3@3 g3@2, ~@2 [b4,d5]@3 [b4,d5]@3, ~@4 g4@4 g2@6 g2 ~, ~@5 g4@2 ~", // G Bm
  V: "[g4,c5,e5]@4 [g4,c5,e5]@2 c2@2 g4 ~@3 c3@2 g4 ~, [c2,c3]@3 c3@3 ~@2, ~@6 [c5,e5]@4 [g4,c5,e5]@5 ~, ~@4 c2@3 ~", // C
  W: "g4@2 g4 c2 ~@3 [g4,b4,d5], [g3,b4,d5]@3 g3@3 g3@2, ~@3 [b4,d5]@2 [g4,b4,d5]@2 ~, ~@8 c2@6 c2 ~", // G Bm G
  X: "[g4,c5,e5]@2 [g4,c5,e5] c2 ~@3 c2, c3@4 c2@3 ~, ~@3 [g4,c5,e5]@2 [g4,c5]@3, ~@5 e5@2 ~, ~@3 c3", // C C5
  Y: "[a4,c5,e5]@2 ~@2 [a1,a4] ~@2 [a1,d4], a1@8 ~@2 [a1,a4,c5,e5]@5 ~, a3@3 a3@3 a3@2, ~@2 [c5,e5]@3 ~@3, ~ a4 ~@2", // Am A D5 Am C
  Z: "d4@2 ~ d2!2 ~@2 [d2,d4,f4,a4], [f4,a4]@5 ~@3, [d2,d3]@3 d3@3 d3@2, ~@2 d4@2 ~ [d2,d4,f4,a4]@2 ~", // Dm F D Dm
  AA: "[g4,b4,d5]@3 ~ d5 ~ g2@2 ~@4 g3@2 [g2,g4] ~, g3@4 g2@3 ~, ~@4 [g4,b4]@2 b4@4 [g4,b4,d5]@5 ~, ~@5 d5@3 g3@4 ~@4", // G
  AB: "[g4,c5,e5]@2 ~@2 c2 ~@2 c2, c2@4 ~ [c2,c5,e5]@2 ~, c3@3 c3@3 c3@2, ~@2 [c5,e5]@3 ~@3, ~@2 g4@2 ~ g4@3", // C
  AC: "[a4,c5,e5]@2 ~@2 [a1,a4] ~@2 [a1,d4], a1@4 ~ a1@2 ~, a3@3 a3@3 a3@2, ~@2 [c5,e5]@3 ~@3, ~@2 a4@2 ~ [a4,c5,e5]@3", // Am A D5 C Am
  AD: "[d4,f4,a4]@2 ~ d2 d4 ~@2 [d2,g4], d3@3 d3@3 d3@2, ~@2 [f4,a4]@3 [d4,f4,a4]@3, ~@2 d4@2 d2@3 ~", // Dm G5 F Dm
  AE: "[g4,b4,d5]@4 [g4,b4,d5]@2 g2@2 ~@4 g3@2 [g2,g4] ~, g3@4 g2@3 ~, ~@6 [b4,d5]@4 [g4,b4,d5]@5 ~", // G Bm G
  AF: "[g4,c5,e5]@2 ~ c2 g4 ~@2 [c2,c5,e5], c3@3 c3@3 c3@2, ~@2 [c5,e5]@3 g4@3, ~@2 g4@2 c2@3 ~, ~@5 [c5,e5]@2 ~", // C
  AG: "[a4,c5,e5]@2 ~ a1 a4 ~ a3 f4, a3@3 a3@3 ~@2, ~@4 [c5,e5]@6 [a4,c5,e5]@5 ~, ~@4 a4@4 a1@6 a1 ~", // Am C Am
  AH: "[f4,a4,c5]@2 ~ f2 f4 ~@2 f4, f3@3 f3@3 f3@2, ~@2 [a4,c5]@3 [a4,c5]@3, ~@4 f4@4 f2@6 f2 ~, ~@5 f4@2 ~", // F Am
  AI: "[f4,g#4,c5]@3 ~@3 f2@2 f4@2 ~@2 f3@2 [f2,g4] ~, f3@2 f4@2 f2@3 ~, ~@3 [g#4,c5]@6 ~ [f4,g#4,c5]@5 ~, ~@5 f3@6 ~@5", // Fm Fsus2 G# Fm
  AJ: "[g4,c5,e5]@3 ~@3 c2@2 [c2,g4]@2 ~@4 [c2,g4]@2, [c2,c3]@3 c3@3 c3@2, ~@2 [c5,e5]@3 [c5,e5]@3, ~@2 g4@2 ~ [c2,g4]@2 ~", // C C5 C C5
  AK: "[g4,b4,d5]@2 ~ g2 g4 ~@2 g2, g3@3 g3@3 g3@2, ~@2 [b4,d5]@3 [g4,b4,d5]@3, ~@2 g4@2 g2@3 ~", // G Bm G
  AL: "e4@3 ~@3 c2@2 c4@2 ~@2 c3@2 c4@2, c3@3 c3@3 ~@2, ~@2 g4@3 [e4,g4]@3, ~@4 c4@4 c2@6 c2 ~, ~@5 c4@2 ~", // Em
  AM: "[c4@4 c4@2 [c2,c4,e4,g4,a#4]@2 ~@6 c2 ~@7 f2@2 [f2,f4]@2 f4@2 ~@12 f2@2 ~@4 [f2,f4,a4,c5]@2, c3@8 c2@5 f4@3 ~@4 [a4,c5]@6 ~@3 f4@2 [f4,a4,c5,d#5]@4 [a4,c5,d#5]@6 ~ d#5@6, [e4,g4,a#4]@6 ~@2 c3@3 c3@4 f3@5 f4@4 ~@2 [f2,a4,c5]@4 f2@2 f2@8 ~@2 [f2,f4,a4,c5]@4 ~@2, ~@9 [c4,e4,g4,a#4]@6 ~ f2@6 f3@6 f3@3 f3@6 f3@6 ~ f3@4, ~@35 f4@4 f4@2 ~@7]/3", // C7 F Am F7 Adim Edim F C7
  AN: "~@3 c2 [c2,c4] ~@2 [c2,c4], [c2,c3]@3 c3@3 c3@2, ~@2 [e4,g4]@3 [e4,g4]@3, ~@2 c4@2 ~ [c2,c4]@2 ~", // C Em C
  AO: "[[c4,e4,g4,a#4]@3 ~@3 c2@2 c4@2 ~@2 c3@2 c2 ~ d3@4 ~@2 d2@2 d4@2 ~ d3@3 [d4,f#4]@2 ~@2 d4@2 d4@2 d2@2 d4@2 ~@2 d3@2 [d4,f#4,c5]@2, c3@4 g4@6 [c4,e4,g4]@5 ~@6 d3@6 ~@5 d3@6 d3@6 ~@4, ~@3 a#4@12 ~@5 [f#4,c5]@6 ~@4 c5@6 ~@12, ~@3 e4@5 c2@6 ~@10 d2@6 d2 ~@9 d2@6 d2 ~, ~@3 c4@3 c3@6 ~@2 d4@6 d4@4 ~@2 [d4,f#4,c5]@4 ~@6 [f#4,c5]@5 ~ [d4,f#4,c5]@4 ~@2]/3", // C7 D D7 C F#dim D7 F#dim D7
  AP: "~ g4 ~ g2 [g2,g4] g4 ~ [g2,g4], [g2,g3]@6 g3@5 ~ g3@4, ~@2 [b4,d5]@3 ~@3, ~@4 g4@4 ~@2 [g2,b4,d5]@5 ~", // G Bm G
  AQ: "[g4,b4,d5]@2 ~@2 a4 ~ g2@2 [e4,g4,b4]@2 ~@2 [f4,a4]@2 [g2,f4,a4]@2, g3@3 f4 [g2,e3] [e4,g4,b4] [d3,d4]@2, ~ d5@7, ~@2 [g4,b4]@2 [f4,c5] a4 c5@10, ~ f3@3", // G Em F Dm C Em D G …
  AR: "[g4,c5,e5]@3 ~@3 c2@2 g4@2 ~@4 [c2,a4]@2, c3@2 [c5,e5]@3 [g4,c5,e5]@3, b2 ~@3 g4@4 c2@6 ~@2, ~@3 c3@3 c3@2", // C F C
  AS: "[a4,c5,e5]@4 ~@2 a1@2 a4@2 ~@4 a1 ~, a3@3 a3@3 a3@2, g3 ~@3 [c5,e5]@6 [a4,c5,e5]@6, ~@4 a4@4 a1@5 d4@2 ~", // Am C Am
  AT: "[d4,f4,a4]@3 ~@3 d2@2 d4@2 d4@2 d3@2 [d2,d4]@2, d3@5 d3@7 ~@4, ~@3 [f4,a4]@6 ~ [f4,a4]@6, ~@3 d4@4 ~ d2@6 ~@2", // Dm D F
  AU: "[d4,g4,b4]@4 ~@2 g2@2 d4@2 ~@2 g3@2 [g2,c4] ~, g3@3 g3@3 ~@2, ~@4 [g4,b4]@6 [d4,g4,b4]@5 ~, ~@2 d4@2 g2@3 ~", // G C5 G
  AV: "[[c4,e4,g4]@4 ~@4 [c2,c4]@2 ~@8 a4@2 [a4,c5,e5]@2 a1 ~ a4@2 ~@4 [a1,a4,c5,e5]@2, c2@4 ~ [c2,c4,e4,g4]@2 [c2,c4,e4,g4]@3 ~@2 a1@3 ~, c3@6 c3@6 c3@7 ~@13, ~@2 [e4,g4]@3 ~@8 [a4,c5,e5]@2 ~, ~@4 c4@4 ~@8 a3@5 ~ a3@6 a3@4]/2", // C Am C Em Am
  AW: "~@3 d2 [d2,d4] ~@2 [d2,d4,f4,a4], [d2,d3]@6 d3@5 ~ d3@4, ~@2 [f4,a4]@3 ~@3, ~@2 d4@2 ~ [d2,d4,f4,a4]@2 ~", // D Dm D F Dm
  AX: "[g4,b4,d5]@2 ~ g2 g4 ~@2 [g2,g4], g3@3 g3@3 g3@2, ~@2 [b4,d5]@3 [b4,d5]@3, ~@2 g4@2 g2@3 ~, ~@5 g4@2 ~", // G Bm
  AY: "[g4,c5,e5]@3 ~@3 c2@2 g4@2 ~@4 c5@2, c3@3 c3@3 c3@2, ~@2 [c5,e5]@3 g4@3, ~@4 g4@4 c2@6 c2 ~, ~@5 [c5,e5]@2 ~", // C
  AZ: "[a4,c5,e5]@2 ~ a1 [a1,a4] ~ a3 [a1,f4], [a1,a3]@3 a3@3 ~@2, ~@2 [c5,e5]@3 a1@2 ~, ~@2 a4@2 ~ [a4,c5,e5]@3", // Am A Dm A C Am
  BA: "[f4,a4,c5]@3 ~@3 f2@2 ~@6 [f2,f4]@2, f3@3 f3@3 f3@2, ~@2 [a4,c5]@3 [a4,c5]@3, ~@2 f4@2 f2@3 ~, ~@5 f4@2 ~", // F Am
  BB: "[f4,g#4,c5] ~@3 f3@2 f2@2 f3@4 ~@2 g4@2, f3@4 ~@4 f2@6 f2 ~, ~ [f4,g#4,c5]@2 [f4,g#4,c5]@3 [f3,f4,g#4,c5]@2", // Fm
  BC: "[g4,c5,e5]@4 ~@2 c2@2 g4@2 g4@2 ~@2 c2 ~, c3@6 c3@6 c3@3 ~, ~@4 [c5,e5]@6 [c5,e5]@5 ~, ~@4 g4@4 c2@5 g4@2 ~", // C
  BD: "[g4,b4,d5]@2 ~ g2 g4 ~ g3 c4, g3@3 g3@3 ~@2, ~@4 [b4,d5]@6 [g4,b4,d5]@5 ~, ~@4 g4@4 g2@6 g2 ~", // G Bm G
  BE: "[c4,e4,g4]@4 ~@4 [c2,c4]@2 ~@2 c3@2 [c2,c4] ~, c2@8 ~@2 [c2,c4,e4,g4]@5 ~, c3@3 c3@3 ~@2, ~@2 [e4,g4]@3 ~@3, ~ c4 ~@2", // C Em
  BF: "[c4,e4,g4,a#4]@3 ~@3 c2@2 c4@2 ~@4 c2 ~, c3@6 c3@6 c3@3 ~, ~@3 e4@6 ~ [c4,e4,g4,a#4]@5 ~, ~@4 a#4@6 ~@3 f4@3, ~@2 c4@2 c2@3 ~", // C7
  BG: "[~@4 [f2,f4] f4 ~@5 f2 [f2,f4,a4,c5] ~ f3 [f4,a4,c5], f2@8 ~@2 [f2,a4,c5]@5 ~ [f2,f3]@6 ~@4 [f2,f4,a4,c5]@4 f2 ~, f3@6 f3@6 f3@4 ~@3 [f4,a4,c5]@4 ~@9, ~@4 [a4,c5]@6 ~@4 f2@2 ~@5 f3@7 ~@4, ~@4 f4@4 ~@5 f4@2 [f4,a4,c5,d#5]@4 d#5@12 ~]/2", // F Am F7
  BH: "[~@2 c4 ~@3 c2@2 c2@2 ~@4 c2@2 ~@6 c2@2 c4@2 [c4,e4,g4,a#4]@2 ~@2 c2@2, [c2,c3]@3 c3@3 c3@2 c3@3 c3@3 c3@2, ~ d4@7, ~@4 [e4,g4]@6 [e4,g4]@10 [e4,g4,a#4]@6 ~@3 [c4,e4,g4,a#4]@3, ~@2 c4@2 ~ [c2,c4]@2 c4@2 ~ c4@2 c2@3 ~]/2", // C7 C Em Edim C7 C
  BI: "[d3@4 ~@2 d2@2 d4@2 ~@4 [d2,d4]@2 [d4,f#4,c5]@3 ~@9 d3@2 [d4,f#4,c5]@2, e3 ~@3 [f#4,a4]@6 a4@21 ~, ~@4 d4@4 d2@4 d3@4 d3@3 d4@2 d3@5 [d4,f#4,c5]@4 ~@2, ~@6 d3@4 d4@4 ~@5 [f#4,c5]@3 d2 d4 d2@6 d2 ~, ~@10 f#4@6 g#4@15 ~]/2", // D D7 F#m D7 F#dim
  BJ: "~@4 [g2,g4] g4 ~ [g2,g4], g2@8 ~@2 [g2,b4,d5]@5 ~, g3@3 g3@3 g3@2, ~@2 [b4,d5]@3 ~@3, ~ g4 ~@2", // G Bm
  BK: "[g4,b4,d5]@2 [g4,b4,d5]@2 [f4,a4,c5] ~ [g2,f4,a4,c5] ~ [e4,g4,b4]@2 ~@2 [f4,a4]@2 [g2,f4,a4]@2, g3@2 f3@2 g2@3 ~, ~@2 e3 [d3,e3,d4], ~@5 [e4,g4,b4]@3", // G F Em F Dm Dsus2 Em
  BL: "[c4,e4,g4]@3 ~@3 c2@2 c4@2 ~@4 [c4,e4,g4]@2, c3@2 e4@5 ~, ~@2 g4@3 [c4,g4]@2 ~, ~@4 c4@4 c2@6 c2 ~, ~@3 c3@3 c3@2", // C C5
  BM: "~@4 [a1,a4] ~@2 [a1,a4,c5,e5], a1@4 ~ [a1,a4,c5,e5]@2 ~, a3@3 a3@3 a3@2, ~@2 [c5,e5]@3 ~@3, ~ a4 ~@2", // A Am C
  BN: "~@3 d2 [d2,d4] ~ d3 [d4,f4,a4], [d2,d3]@3 d3@3 ~@2, ~@2 [f4,a4]@3 ~@3, ~@4 d4@4 ~@2 [d2,d4,f4,a4]@4 d2 ~", // D Dm D F Dm
  BO: "~@3 g2 [g2,g4] ~@2 [g2,g4], [g2,g3]@3 g3@3 g3@2, ~@2 [b4,d5]@3 [b4,d5]@3, ~@2 g4@2 ~ [g2,g4]@2 ~", // G Bm G
  BP: "[[g4,c5,e5]@2 ~@2 [c2,g4] ~ c3 a4 ~@3 a1 a4 ~@2 [a1,a4,c5,e5], c2@8 ~@2 [c2,g4,c5,e5]@5 ~@5 a4@4 ~@2 [a4,c5,e5]@4 ~@2, c3@6 c3@6 ~@2 c2 ~@9 a1@6 ~@2, ~@2 [c5,e5]@3 ~@2 [c5,e5]@3 [c5,e5]@3 ~@3, ~@2 g4@2 ~@4 a3@3 a3@3 a3@2]/2", // C C5 Am C Am C
  BQ: "~@3 d2 d4 [d4,f4,a4] d3 [d4,f4,a4], d3@3 d3@3 ~@2, ~@2 [f4,a4]@3 ~@3, ~@4 d4@4 d2@6 d2 ~", // Dm F
  BR: "~@3 g2 g4 ~@2 [g2,g4,b4,d5], g3@3 g3@3 g3@2, ~@2 [b4,d5]@3 [g4,b4,d5]@2 ~, ~@2 g4@2 g2@3 ~", // G Bm G
  BS: "[~@4 [c4,e4,g4]@2 c2 ~ [c2,c4] ~@6 a3@5 a4@2 a1@2 a4@2 ~@2 a3@2 [a4,c5,e5]@2, [c2,c3]@6 c3@4 [c2,c4,e4,g4]@3 e4@3 ~@4 [c5,e5]@6 [a4,c5,e5]@4 ~@2, ~@12 c3@5 ~@5 a3@6 ~@4, ~@14 [c2,c4,g4]@3 ~@7 a1@6 a1 ~]/2", // C Am C Am C5
  BT: "f3@4 [f4,a4,c5]@2 f2 ~ f4@2 ~@4 f2@2, ~@3 f3@3 f3@2, ~@4 f2@3 ~, ~@5 [a4,c5]@3, ~@10 f4@4 f4 ~", // F Am
  BU: "[f4,g#4,c5] ~ [f3,f4,g#4,c5]@4 [f2,f3,f4,g#4,c5]@2 [f3,f4,g#4,c5]@4 ~@2 f2@2, f3 ~@3 f2@3 ~, ~@3 [f3,f4,g#4,c5]", // Fm
  BV: "[c3,e4,g4]@2 ~@2 c2 ~ c3 [c4,e4,g4], c2@8 ~@2 [c2,c4,e4,g4]@4 c2 ~, c4 ~@3 [e4,g4]@6 ~@6, ~ c4 ~@2, ~@5 c3@6 ~@5", // C Em
  BW: "g3@2 g4 g2 g4 ~@2 [g4,b4,d5], ~@4 [b4,d5]@4 g2@6 g2 ~, ~@3 g3@3 g3@2, ~@5 [g4,b4,d5]@2 ~", // G Bm G
  BX: "c3@2 c4 c2 c4 ~@2 [c4,e4,g4], ~@2 [e4,g4]@3 [c4,e4,g4]@2 ~, ~@3 c3@3 c3@2, ~@8 c2@6 c2 ~", // C Em C
  BY: "g3@4 ~@2 g2@2 g4@2 ~ g3@3 [g4,b4,d5]@2, ~@2 [b4,d5]@3 [g4,b4,d5]@2 ~, ~@4 g4@4 g2@6 g2 ~, ~@6 g3@5 ~@5", // G Bm G
  BZ: "~@4 [c4,g4]@2 c2 ~ [c2,c4]@2 ~@4 [c2,c4,e4,g4]@2, [c2,c3]@3 c3@3 c3@2, ~@2 e4@3 [c2,c4,e4,g4]@2 ~", // C5 C
  CA: "[g3@4 ~@10 g2 ~ c2@17 ~@15, g2@5 g3@6 ~ g3@3 ~@33, ~@4 [b4,d5]@6 ~@3 c4@2 ~@33, ~@4 g4@2 g2@2 g2@2 [g2,d5]@5 [c3,c4,e4,g4]@18 ~@15, ~@7 g4@2 [g4,b4]@6 ~@33]/3", // Bm G5 C G
})).s("gm_electric_bass_finger").gain(0.4)

// chords · electric bass finger · "BASS" · soft notes
const electric_bass_finger_2 = note(`<
  A B C D C ~ E F G H I J ~ K I ~ L M ~ N ~ J O P Q R S T U R I V W K N@2 ~ X C@2 ~ Y Z C I AA ~ J AB K I J AC@2 ~ J AD
  ~ AE N C J AF AG AH@2 AI AJ AK I AL@2 AB R ~@2 AF K I J Z AM AN N AO J AB AP ~@4
>`.pickRestart({
  A: "~@3 c4@2 ~@3", B: "a#1@3 ~@5", C: "c2@3 ~@5", D: "~@2 f4 ~@5, a#1@3 ~@5", E: "~@5 g4@2 g2",
  F: "g2@5 ~@8 a4@2 ~, ~@5 [e4,b4]@3", G: "~@4 g4 ~@11", H: "~@4 a4 ~@11, a1@3 ~@5", I: "d2@3 ~@5", J: "g2@3 ~@5",
  K: "a1@3 ~@5", L: "~@6 g1@8 e5 ~", M: "~@4 a4 ~@3, ~@2 [c5,e5]@3 ~@3, ~@3 e1@5", N: "f2@3 ~@5", O: "~@3 g4 ~@3 c2",
  P: "c2@3 g4@2 ~@3", Q: "c2@3 ~ c3@2 ~ [a4,e5]", R: "~@3 e1@5", S: "~@4 d4 ~@3", T: "g2@3 g4@2 ~@3",
  U: "~@4 g4 ~@2 [a4,c5,e5], ~@3 g1@5", V: "g2@6 ~@2 g3@3 ~@5, ~@3 g4@2 ~@3", W: "c2@3 ~@4 a4", X: "g2@6 ~@9 e4",
  Y: "~@3 c2@5", Z: "~@2 c4 ~@13", AA: "d2@3 ~@2 a#4@2 ~", AB: "c2 ~@3", AC: "[~@4 a1 ~@3, ~@3 g1@7 ~@6]/2",
  AD: "c2@6 ~@7 e5@2 ~", AE: "f2@3 ~ f4 ~@3", AF: "~@6 g1@9 ~", AG: "~@2 g4@3 ~@3, c2@3 ~@5", AH: "[~@6 c2@25 ~]/2",
  AI: "~@4 c4 ~@3", AJ: "~ c4 ~@6, c2@3 ~@5", AK: "d2 ~@3", AL: "[~@16 g2@5 ~@11, ~@6 d2@15 ~@11]/2", AM: "a1 ~@3",
  AN: "~@2 f4 ~@13, f2 ~@3", AO: "~@4 c4 ~@3, ~@6 g1@9 ~", AP: "g2 ~@3",
})).s("gm_electric_bass_finger").gain(0.25)

// chords · piano
const piano = note(`<
  A B C D E F G@2 H I J K L I M N H O P Q L N R@2 H S M T A U J N V O W Q X N H Y Z AA H Y AB AC AD AE C AF AG N V U AH
  AI H AJ AK AL X T H AM AN AO E AP AQ AR N AS E U J N V AT AU K X AJ W Q V AI H AD V AD AV@2
>`.pickRestart({
  A: "[g3,c4,e4]@3 ~@3 g4 c5, ~@3 c3@5, ~ c4, ~@5 e4@3", B: "[a#3,d4,f4]@3 ~@3 f4 a#4, ~@3 a#2@5, ~ a#3, ~@5 d4@3",
  C: "~@5 g4 e4 c4, [g3,c4,e4]@3 ~", D: "~@10 a#3@4 d4 ~, [d4,f4]@15 ~, a#3@5 ~@3, a#2!2, ~@6 a#1@9 ~",
  E: "[g3,c4,e4]@12 c4 e4 g4 c5", F: "[f3,a#3,d4]@9 ~ a#2@2 [f3,a#3,d4]@3 ~",
  G: "[~@14 b3 ~, g2@13 g3@2 ~, g4@6 g3 b3@2 d3@6 ~, [b3,d4]@2 g3@3 d3@2 g4@3 g3 b3 g4@3 ~, g3 d3@2 [b3,d4]@4 d4@8 ~]/2", // Bm
  H: "[g3,c4,e4]@7 ~", I: "e4@5 e4 c4 a3, [a3,c4]@3 ~", J: "[a3,d4,f4]@12 d4 f4 a4 d5", K: "[g3,b3,d4]@7 ~",
  L: "[g3,c4,e4]@9 ~ c3@2 [g3,c4,e4]@3 ~", M: "[a3,d4,f4]@9 ~ d3@2 [a3,d4,f4]@3 ~",
  N: "[g3,b3,d4]@9 ~ g2@2 [g3,b3,d4]@3 ~", // G
  O: "[g3,a3,c4,e4]@7 ~@5 c4@2 e4 ~, a2@7 ~, ~@7 e4@7 ~@2, ~@7 c4@3 a3@4 ~@2, ~@7 a3 g3@6 ~@2", // Am7
  P: "[a3,c4,f4]@9 ~ f3@2 [a3,c4,f4]@3 ~", Q: "~@5 c5 g#4 f4, [g#3,c4,f4]@3 ~",
  R: "[~@6 c4@4 c4@2 ~@2 e4@2 c4@6 c4@2 c4@3 ~@3 e4 g4, [c4,e4,g4]@6 g4@10 g4@8 g4@7 ~, ~ c3@7, ~@3 e4@4 ~ e4@6 c4@2, ~@12 c4@4 ~@11 g3@5]/2", // C
  S: "a2@8 ~@2 a3@4 c4 ~, [c4,e4]@15 ~, a3@5 ~@3, ~@8 a2@7 ~", T: "d4@5 d4 b3 g3, [g3,b3]@3 ~",
  U: "[a3,c4,e4]@12 a3 c4 e4 a4", V: "[c4,e4,g4]@7 c4@2 ~@3 e4@2 g4 ~, c2@7 ~, ~@7 g4@7 ~@2, ~@7 e4@5 ~@4, ~@5 c4@2 ~",
  W: "~@5 c5 a4 f4, [a3,c4,f4]@3 ~", X: "~@10 c4@4 e4 ~, [e4,g4]@15 ~, c4@5 ~@3, c3!2, ~@6 c2@9 ~",
  Y: "[a#3,c4,e4,g4]@3 ~@3 g4 a#4, ~@3 c3@5, ~ c4, ~@5 e4@3", Z: "[a3,c4,f4]@12 f4 a4 c5 f5",
  AA: "[c4,d#4,f4,a4]@3 ~@3 c5 d#5, ~@3 f3@5, ~ f4, ~@5 a4@3", // F7
  AB: "[d4,f#4,a4]@7 d4@2 ~@3 f#4@2 a4 ~, d2@7 ~, ~@7 a4@7 ~@2, ~@7 f#4@5 ~@4, ~@5 d4@2 ~", // D
  AC: "[c4,d4,f#4,a4]@7 ~@5 f#4@2 a4 ~, d2@7 ~, ~@7 a4@7 ~@2, ~@7 f#4@3 d4@4 ~@2, ~@7 d4 c4@6 ~@2", // D7
  AD: "[g4,b4,d5]@7 g4@2 ~@3 b4@2 d5 ~, g2@7 ~, ~@7 d5@7 ~@2, ~@7 b4@5 ~@4, ~@5 g4@2 ~", // G
  AE: "[b3,d4,f4,g4]@3 ~@3 d4 f4, ~@3 g2@5, ~ g3, ~@5 b3@3", AF: "[a3,c4,e4]@7 ~",
  AG: "[d4,f4,a4]@7 d4@2 ~@3 f4@2 a4 ~, d2@7 ~, ~@7 a4@7 ~@2, ~@7 f4@5 ~@4, ~@5 d4@2 ~", // Dm
  AH: "~@5 a4 f4 d4, [a3,d4,f4]@3 ~", AI: "g2@8 ~@2 g3@4 b3 ~, [b3,d4]@15 ~, g3@5 ~@3, ~@8 g2@7 ~",
  AJ: "[c4,e4,g4,a4]@7 ~", AK: "[f4,a4,c5]@7 f4@2 ~@3 a4@2 c5 ~, f2@7 ~, ~@7 c5@7 ~@2, ~@7 a4@5 ~@4, ~@5 f4@2 ~",
  AL: "[g#3,c4,f4]@3 ~@3 c5 f5, ~@3 f3@5, ~ f4, ~@5 g#4@3", AM: "[a#3,c4,e4,g4]@7 ~", AN: "[a3,c4,f4]@7 ~",
  AO: "~@12 f4@2 a4 ~, [a4,c5]@15 ~, f4@10 d#4@5 ~, d#4 f3, f3@6 f2@9 ~", AP: "g4@5 g4 e4 c4, [a#3,c4,e4]@3 ~",
  AQ: "~@5 a4 f#4 d4, [a3,d4,f#4]@3 ~", AR: "[c4,d4,f#4,a4]@7 ~", AS: "[b3,d4,f4,g4]@9 ~ g2@2 [b3,d4,f4,g4]@3 ~",
  AT: "[a3,c4,e4]@3 ~@3 e4 a4, ~@3 a2@5, ~ a3, ~@5 c4@3", // Am
  AU: "~@10 d4@4 f4 ~, [f4,a4]@15 ~, d4@5 ~@3, d3!2, ~@6 d2@9 ~", AV: "[[c4,e4,g4]@21 ~@11]/2",
})).s("gm_piano").gain(0.36)

// chords · drawbar organ · "ORGAN"
const drawbar_organ = note("<~@90 A@2>".pickRestart({
  A: "[~ [g5,e6]@21 ~@10]/2", // C
})).s("gm_drawbar_organ").gain(0.2)

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

// drums · rim
const rim = s("rim").struct("<A@7 B A@15 B A@15 B A@7 B A@15 B A@7 B A@17 ~@3>".pickRestart({
  A: "~ x ~ x", B: "~ x ~@2",
})).gain(0.32)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<~@89 [~@3 x ~@3 x ~@3 x ~ x ~@2] ~@2>").gain(0.16)

// drums · low tom
const low_tom = s("lt").struct("<~@89 [~@7 x] ~@2>").gain(0.32)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@89 [~@9 x ~@6] ~@2>").gain(0.28)

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

// drums · crash
const crash = s("cr").struct("<A ~@7 A ~@15 A ~@15 A ~@7 A ~@14 B A ~@7 A ~@11 A C ~ A C B A ~>".pickRestart({
  A: "x", B: "~@15 x", C: "x ~@14 x",
})).gain(0.32)

// … 13 more lines

More by The Beatles