Strudelify

A Taste Of Honey

The Beatles

KeyC♯ minorTempo120 bpm
0:00/0:00
// A Taste Of Honey — The Beatles
// 120 bpm, 3/4, key C# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (3/4 at bar 1, 4/4 at bar 26, 3/4 at bar 34, 4/4 at bar 54, ...) are rendered on a constant 3/4 grid of one bar per cycle
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 98 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/3)

// 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 · fretless bass
const bass = note(`<
  A@5 B@4 C@3 D C@3 D B C E F B G H C I J@6 K@4 L@8 M@6 N@6 O P Q R S@4 T@8 U@6 V@3 W X Y Z AA AB@2 AC@3 AD@3 AE@3 ~
>`.pickRestart({
  A: "[~ f#2@60 ~ a2@28 ~ e2@28 ~]/5", B: "f#2@15 ~ c#2@7 ~", C: "f#2@23 ~", D: "b1@23 ~", E: "a1@23 ~", F: "e2@23 ~",
  G: "f#2@13 f#2@2 ~ c#2@7 ~", H: "f#2@15 ~ c#2@5 c#2@2 ~", I: "f#2@7 ~ e2@7 ~ d2@7 ~",
  J: "[c#2@7 b1@7 ~ b1@7 ~ f#2@7 ~ d#2@7 ~ f#2@7 ~ f#2@5 e2@2 ~ d2@7 ~ c#2@7 b1@7 ~ b1@7 ~ f#2@7 ~ b1@7 ~ a1@7 ~ a2@7 ~ e2@7 a1@7 ~ e2@7 ~ e2@3]/6",
  K: "[~@5 b1@7 ~ e2@7 ~ f#2@15 ~ c#2@7 ~ f#2@15 ~ c#2@7 ~ f#2@15 ~ c#2@7 ~ f#2@3]/4",
  L: "[~@13 c#2@7 ~ f#2@23 ~ f#2@23 ~ f#2@23 ~ b1@23 ~ f#2@23 ~ f#2@23 ~ f#2@23 ~ b1@3]/8",
  M: "[~@21 f#2@15 ~ c#2@7 ~ f#2@23 ~ a1@23 ~ e2@23 ~ f#2@15 ~ c#2@7 ~ f#2@3]/6",
  N: "[~@10 f#2@2 ~ c#2@7 ~ f#2@15 ~ c#2@5 c#2@2 ~ f#2@23 ~ f#2@7 ~ e2@7 ~ d2@7 c#2@7 ~ b1@7 ~ b1@7 ~ f#2@7 ~ d#2@7 ~ f#2@7 ~ f#2@4]/6",
  O: "~ e2@2 ~ d2@7 c#2@7 ~ b1@5", P: "~@3 b1@7 ~ f#2@7 ~ b1@5", Q: "~@3 a1@7 ~ a2@7 e2@6", R: "~@2 a1@7 ~ e2@7 ~ e2@6",
  S: "[~@2 b1@7 ~ e2@7 ~ f#2@15 ~ c#2@7 ~ f#2@15 ~ c#2@7 ~ f#2@15 ~ c#2@7 ~ f#2@6]/4",
  T: "[~@10 c#2@7 ~ f#2@23 ~ f#2@23 ~ f#2@23 ~ b1@23 ~ f#2@23 ~ f#2@23 ~ f#2@23 ~ b1@6]/8",
  U: "[~@18 f#2@15 ~ c#2@7 ~ f#2@23 ~ a1@23 ~ e2@23 ~ f#2@15 ~ c#2@7 ~ f#2@6]/6",
  V: "[~@7 f#2@2 ~ c#2@7 ~ f#2@15 ~ c#2@5 c#2@2 ~ f#2@23 ~ f#2@6]/3", W: "~@2 e2@7 d2@7 ~ c#2@7",
  X: "~ b1@7 ~ b1@7 ~ f#2@7", Y: "~ d#2@7 ~ f#2@7 ~ f#2@5 e2@2", Z: "d2@7 ~ c#2@7 ~ b1@7 ~",
  AA: "b1@7 ~ f#2@7 ~ b1@7 ~", AB: "[a1@11 ~]/2", AC: "[~@5 e2@67]/3", AD: "~ f#2@15 ~ c#2@7", AE: "[~ f#2@69 ~@2]/3",
})).s("gm_fretless_bass").gain(0.47).pan(0.8)

// other · flute · "Lead Flute"
const flute = note(`<
  A B@3 C D@2 ~ E F G H I F G H J K@2 L M N@2 ~ O@2 P Q@4 R@4 ~ S@8 T@7 ~ U@3 V@3 W X Y@3 ~ Z@8 AA@7 ~ AB@2 AC@2 AD@2
  AE@2 AF@2 AG AH@6 ~
>`.pickRestart({
  A: "~@5 c#5 c#5@2", B: "[e5@3 f#5@5 f#5@30 e5@6 ~ c#5@13 ~@6 a4@3 b4@5]/3", C: "~ g#4@6 e4@5", D: "f#4/2",
  E: "~@2 c#4", F: "f#4@2 c#5", G: "c#5@2 d#5", H: "e5@2 f#5", I: "d#5@5 b4@11 c#4@8", J: "d#5@5 b4@8 a4@3 c#5@5 e5@3",
  K: "[f#5@3 f#5@35 ~@10]/2", L: "e5@5 c#5@16 a4@3", M: "b4@5 g#4@11 e4@8", N: "[f#4@5 ~]/2",
  O: "[~@16 c#5@5 e5@26 ~]/2", P: "f#5@7 d#5@5 ~ b4@10 ~",
  Q: "[~@4 c#5@8 c#5@8 c#5@10 ~ b4@8 a4@5 b4@18 ~@8 f#4@5 g#4@3 a4@16 ~@2]/4",
  R: "[~@3 b4@8 a4@2 g#4@5 ~ e4@10 ~@8 c#4@8 f#4@48 ~@3]/4",
  S: "[~@13 c#4@8 f#4@16 c#5@8 c#5@16 d#5@8 e5@16 f#5@8 d#5@5 b4@11 c#4@8 f#4@16 c#5@8 c#5@16 d#5@8 e5@16 f#5@8 d#5@3]/8",
  T: "[~@2 b4@8 a4@3 c#5@5 e5@3 f#5@2 f#5@35 ~@11 e5@5 c#5@16 a4@3 b4@5 g#4@11 e4@8 f#4@40 ~@11]/7",
  U: "[~@13 c#5@5 e5@26 f#5@8 d#5@5 ~ b4@10 ~@4]/3", V: "[~ c#5@8 c#5@8 c#5@10 ~ b4@7 a4@5 ~ b4@18 ~@8 f#4@5]/3",
  W: "g#4@3 a4@16 ~@5", X: "b4@8 a4@2 g#4@5 e4@9", Y: "[~@5 c#4@4 f#4@24 ~@3]/3",
  Z: "[~@10 c#4@8 f#4@16 c#5@8 c#5@16 c#5@5 d#5@3 e5@16 f#5@8 d#5@5 b4@11 c#4@8 f#4@16 c#5@8 c#5@16 c#5@5 d#5@3 e5@16 f#5@8 d#5@5 b4]/8",
  AA: "[~@7 a4@3 c#5@5 e5@3 f#5@2 f#5@35 ~@11 e5@5 c#5@16 a4@3 b4@5 g#4@11 e4@8 f#4@48 ~@6]/7",
  AB: "[~@10 c#5@5 e5@26 f#5@7]/2", AC: "[~ d#5@5 b4@10 ~@6 c#5@8 c#5@8 c#5@10]/2",
  AD: "[b4@8 a4@5 b4@18 ~@9 f#4@5 g#4@3]/2", AE: "[a4@9 ~@2 b4]/2", AF: "[~@2 a4@3 g#4@6 e4@30 ~@7]/2",
  AG: "~@17 c#5@7", AH: "[~ f#5@142 ~]/6",
})).s("gm_flute").gain(0.45).pan(0.6)

// chords · acoustic guitar nylon · "Nylon Gt.2 (Bank 32)"
const acoustic_guitar_nylon = note(`<
  A@6 B@2 C@7 D@2 B E@3 F G F G H I@8 J K@7 L@4 M@8 N@6 O@3 P Q@6 R@7 S T S U@4 V W@8 X@4 ~
>`.pickRestart({
  A: "[~@128 [c#3,f#3,a3,c#4,f#4]@5 ~@3 [c#3,f#3,a3,c#4,f#4]@8, ~ f#2@61 e2@4 e4@27 [e3,g#3]@27 f#2@24, ~@2 [c#3,f#3]@61 a2@28 e2@4 e4@28 ~@21, ~@3 a3@61 [e3,a3]@28 b2@29 ~@23, ~@4 [c#4,f#4]@61 c#4@29 b3@28 ~@22]/6", // F#m E F#5 A5 F#5
  B: "~@8 [c#3,f#3,a3,c#4,f#4]@5 ~@3 [c#3,f#3,a3,c#4,f#4]@8, f#2", // F#m
  C: "[~@8 [c#3,f#3,a3,c#4,f#4]@5 ~@3 f#3@8 ~@141 a3@3, f#2@29 c#4@3 f#4@8 c#4@13 c#4@11 c#4@13 c#4@11 d#4@16 d#4@8 c#4@5 a3@5 ~ a3@18 a3@5 ~ a3@18 ~@3, ~@16 c#3@32 ~@8 f4@16 ~@8 e4@16 ~@5 b3@19 ~@5 c#4@11 c#4@8 ~@5 c#4@11 c#4@8, ~@16 f#4@11 a3@21 ~@3 a3@21 ~@3 a3@21 ~@3 f#3@21 f#3@24 f3@24, ~@2 [a3,c#4] f#3@3 f3@3 e3@3 b2@3 ~ f#4@2 ~ f4@2]/7", // F#m A
  D: "[~@2 d#4, e3@16 d#4@5 b3@8 b3@19, ~ a3@7 b2@8, ~@5 c#4@19 ~@3 f#3@21, ~ e4@2 ~@3]/2",
  E: "[~@8 [c#3,f#3,a3,c#4,f#4]@5 ~@3 [c#3,f#3,a3,c#4,f#4]@7 ~@27 e4@22, f#2@23 e2@24 e2@24 ~, ~ [a2,e3] [b2,e3], ~@25 [a3,c#4]@24 [g#3,b3]@23, ~@13 e4@12 ~@11]/3", // F#m A5 E5 A G#m
  F: "[f#2,c#3,f#3,a3,c#4,f#4]@8 [f#2,c#3,f#3,a3,c#4,f#4]@3 ~@3 [d#4,f#4,b4]@2 [b2,d#3,b3]@6 [d#4,f#4,b4]@2, ~@16 [d#4,f#4,b4]@5 ~@3", // F#m B
  G: "[f#2,c#3,f#3,a3,c#4,f#4]@4 [f#2,c#3,f#3]@3 [a3,c#4,f#4] [f#2,c#3,f#3]@3 [a3,c#4,f#4], ~@8 [a3,c#4,f#4]@5 ~@3 [a3,c#4,f#4]@5 ~@3", // F#m F#5 F#m F#5 F#m
  H: "[f#4,a4,c#5]@5 ~ c#5@2 [f#4,a4,c#5]@5 [f#4,a4,c#5]@3 [f#4,a4,c#5]@5 [f#4,a4,c#5]@3, [f#3,c#4]!3, ~@5 [f#4,a4]@3 ~@16", // F#m F#5 F#m
  I: "[[f#4,a4,c#5]@5 [f#4,a4,c#5]@2 ~ [f#3,b3,d#4,f#4,b4]@5 [d#4,f#4,b4]@2 ~ [d#4,f#4,b4]@5 [d#4,f#4,b4]@2 ~ [f#4,b4]@5 [d#4,f#4,b4]@2 [b2,f#3,b3]@6 [d#4,f#4,b4]@2 [f#4,a4,c#5]@5 ~ c#5@2 [f#4,a4,c#5]@5 [f#4,a4,c#5]@3 [f#4,a4,c#5]@5 [f#4,a4,c#5]@3 [f#4,a4,c#5]@5 [f#4,a4,c#5]@2 ~ [b3,d#4,f#4,b4]@5 [d#4,f#4,b4]@2 ~ [d#4,f#4,b4]@5 [d#4,f#4,b4]@2 ~ b4@5 [d#4,f#4,b4]@2 [b2,f#3,b3]@6 [d#4,f#4,b4]@2 [c#4,e4,a4]@5 ~ a4@2 [c#4,e4,a4]@5 [c#4,e4,a4]@3 [c#4,e4,a4]@5 [c#4,e4,a4]@2 ~ [c#4,e4,a4]@5 [c#4,e4,a4]@2 ~ [e3,g#3,b3,e4]@5 [g#3,b3,e4]@2 ~ [b3,e4]@5 [g#3,b3,e4]@2 ~ e4@5 [g#3,b3,e4]@2 [g#3,b3,e4]@5 ~ [b3,e4]@2 ~@8 [c#3,f#3,a3,c#4,f#4]@5 ~@3 [c#3,f#3,a3,c#4,f#4]@8 f#2@3, [f#3,c#4]@7 b2@8 [b2,f#3,b3]@8 [b2,f#3,b3]@8 ~@8 [f#3,c#4]@8 [f#3,c#4]@8 [f#3,c#4]@8 [f#3,c#4]@8 ~@15 [d#4,f#4]@5 ~@3 [d#4,f#4,b4]@5 ~@8 [c#4,e4]@3 ~@15 a2@8 [e2,b2]@8 [e2,b2,e3]@8 [e2,b2,e3]@8 [e2,b2,e3]@8 f#2@24 ~@3, ~@23 d#4@5 ~@3 [d#4,f#4,b4]@5 ~@8 [f#4,a4]@3 ~@23 [b2,f#3]@8 [b2,f#3,b3]@8 [b2,f#3,b3]@8 ~@8 [a2,e3,a3]@8 [a2,e3,a3]@8 [a2,e3,a3]@8 [e3,a3]@8 ~@7 g#3@5 ~@3 [g#3,b3]@5 ~@8 g#3@3 ~@27]/8", // F#m B B5 B B5 B F#m B …
  J: "~@5 [c#3,f#3,a3,c#4,f#4]@5 ~@3 [c#3,f#3,a3,c#4,f#4]@8 f#2@3", // F#m
  K: "[~@5 [c#3,f#3,a3,c#4,f#4]@5 ~@3 [c#3,f#3,a3,c#4,f#4]@8 ~@8 [c#3,f#3,a3,c#4,f#4]@5 ~@3 [f#3,a3]@8 ~@120 f3@2 a3, ~@21 f#2@40 c#4@13 c#4@11 c#4@13 c#4@19 ~@2 f#3@14 c#4@5 a3@5 a3@19 a3@5 ~, ~@37 c#3@32 ~@2 a3@21 ~@3 a3@14 d#4@16 d#4@16 ~@5 c#4@11 c#4@8 ~@3, ~@37 f#4@10 a3@3 c#4@3 f#4@16 ~@8 f4@16 ~@8 e4@16 ~@5 b3@19 f#3@24 ~@3, ~@37 c#4@8 f#3@24 f3@24 e3@24 b2@24 ~@8 f#4@16 ~@3]/7", // F#m
  L: "[~@53 d#4@16 ~@8 [c#3,f#3,a3,c#4,f#4]@5 ~@3 [c#3,f#3,a3,c#4,f#4]@8 f#2@3, ~@2 c#4@11 c#4@8 e3@21 b3@8 b3@19 ~@27, ~@5 f4@16 ~@5 c#4@19 b2@24 f#2@24 ~@3, ~@18 a3@5 a3@14 d#4@8 ~@2 f#3@21 ~@28, ~@29 e4@16 ~@51]/4", // F#m
  M: "[~@5 [c#3,f#3,a3,c#4,f#4]@5 ~@3 [c#3,f#3,a3,c#4,f#4]@7 ~@27 e4@22 [f#2,c#3,f#3,a3,c#4,f#4]@8 [f#2,c#3,f#3,a3,c#4,f#4]@3 ~@3 b4@2 [d#4,f#4,b4]@5 ~ b4@2 [f#2,c#3,f#3,a3,c#4,f#4]@8 [a3,c#4,f#4]@5 ~ f#4@2 [a3,c#4,f#4]@5 ~ f#4@2 [f#2,c#3,f#3,a3,c#4,f#4]@8 [f#2,c#3,f#3,a3,c#4,f#4]@3 ~@3 b4@2 [d#4,f#4,b4]@5 ~ b4@2 [f#2,c#3,f#3,a3,c#4,f#4]@8 [a3,c#4,f#4]@5 ~ f#4@2 [a3,c#4,f#4]@5 ~ f#4@2 [f#4,a4,c#5]@5 [f#4,a4,c#5]@3 [f#4,a4,c#5]@5 [f#4,a4,c#5]@3 [f#4,a4,c#5]@5 [f#4,a4,c#5]@2 ~ [c#4,f#4,a4,c#5]@3, ~@20 e2@24 e2@24 ~@33 [f#2,c#3,f#3]@8 [f#2,c#3,f#3]@8 ~@32 [f#2,c#3,f#3]@8 [f#2,c#3,f#3]@8 ~@27, ~@21 [a2,e3]@24 [b2,e3]@24 ~@16 [b2,d#3,b3]@8 ~@40 [b2,d#3,b3]@8 ~@47 f#3@4, ~@22 [a3,c#4]@24 [g#3,b3]@24 ~@36 [a3,c#4]@3 ~@5 [a3,c#4]@3 ~@37 [a3,c#4]@3 ~@5 [a3,c#4]@3 [f#3,c#4]@8 [f#3,c#4]@8 [f#3,c#4]@8 ~@3, ~@23 e4@24 ~@35 [d#4,f#4]@3 ~@5 [d#4,f#4]@3 ~@37 [d#4,f#4]@3 ~@5 [d#4,f#4]@3 ~@51]/8", // F#m B F#m B F#m F#5 A5 E5 …
  N: "[~@2 [f#4,a4,c#5]@2 ~ [d#4,f#4,b4]@5 [d#4,f#4,b4]@2 ~ [f#4,b4]@5 [d#4,f#4,b4]@2 [b2,f#3,b3]@6 [d#4,f#4,b4]@2 [d#4,f#4,b4]@5 ~ b4@2 [f#4,a4,c#5]@5 [f#4,a4,c#5]@3 [f#4,a4,c#5]@5 [f#4,a4,c#5]@3 [f#3,c#4,f#4,a4,c#5]@5 [f#4,a4,c#5]@2 ~ [f#4,a4,c#5]@5 [f#4,a4,c#5]@2 ~ [d#4,f#4,b4]@5 [d#4,f#4,b4]@2 ~ b4@5 [d#4,f#4,b4]@2 [d#4,f#4,b4]@5 ~ [f#4,b4]@2 [d#4,f#4,b4]@5 ~ b4@2 [c#4,e4,a4]@5 [c#4,e4,a4]@3 [c#4,e4,a4]@5 [c#4,e4,a4]@2 ~ [c#4,e4,a4]@5 [c#4,e4,a4]@2 ~ [c#4,e4,a4]@5 [c#4,e4,a4]@2 ~ [b3,e4]@5 [g#3,b3,e4]@2 [e2,b2,e3,g#3,b3,e4]@6, ~@4 [b2,f#3,b3]@8 [b2,f#3,b3]@8 ~@8 [b2,f#3,b3]@8 [f#3,c#4]@8 [f#3,c#4]@8 ~@7 [f#3,c#4]@8 [b2,f#3,b3]@8 [b2,f#3,b3]@8 [b2,f#3,b3]@8 [b2,f#3,b3]@8 [a2,e3,a3]@8 [a2,e3,a3]@8 [e3,a3]@8 a3@7 g#3@5 ~@9, ~@12 d#4@5 ~@3 [d#4,f#4,b4]@5 ~@8 [d#4,f#4]@3 ~@39 [d#4,f#4]@5 ~@8 d#4@3 ~@5 [d#4,f#4]@3 ~@15 a2@8 [a2,e3]@8 [e2,b2,e3]@8 ~@6]/6", // F#m B B5 B B5 B F#m B …
  O: "[[g#3,b3,e4]@2 [g#3,b3,e4]@5 ~ [b3,e4]@2 [g#3,b3,e4]@5 [g#3,b3,e4]@3 ~@8 [c#3,f#3,a3,c#4,f#4]@5 ~@3 [c#3,f#3,a3,c#4,f#4]@8 ~@8 [c#3,f#3,a3,c#4,f#4]@5 ~@3 [c#3,f#3,a3,c#4,f#4]@8 f#2@6, ~ [e2,b2,e3]@4 [e2,b2,e3]@4 f#2@12 f#2@12 ~@3, ~@7 g#3@3 ~@62]/3", // E E5 E F#m E5
  P: "~@2 [c#3,f#3,a3,c#4,f#4]@5 ~@3 [c#3,f#3,a3,c#4,f#4]@8 f#2@6", // F#m
  Q: "[~@2 [c#3,f#3,a3,c#4,f#4]@5 ~@3 [f#3,a3]@8 ~@122 a3@3 c#4, ~@10 c#3@32 ~@2 a3@21 ~@3 a3@14 d#4@16 d#4@13 a3@5 a3@19 a3@5 ~@4, ~@10 f#4@13 c#4@3 f#4@16 ~@8 f4@16 ~@8 e4@16 ~@5 b3@19 f#3@24 f3@6, ~@10 c#4@10 a3@14 c#4@13 c#4@11 c#4@13 c#4@19 ~@2 f#3@14 c#4@8 ~@5 c#4@11 c#4@8 ~@6, ~@9 f#3@12 f3@12 e3@12 b2@12 ~@4 f#4@8 ~@3]/6", // F#m
  R: "[~@50 d#4@16 ~@8 [c#3,f#3,a3,c#4,f#4]@5 ~@3 [c#3,f#3,a3,c#4,f#4]@8 ~@8 [c#3,f#3,a3,c#4,f#4]@5 ~@3 [c#3,f#3,a3,c#4,f#4]@7 ~@27 e4@22 [f#2,c#3,f#3,a3,c#4,f#4]@6, ~@2 f4@16 ~@5 c#4@16 b3@8 b3@19 ~@48 e3@24 e3@24 ~@6, ~@5 c#4@4 e3@12 b2@12 f#2@12 f#2@12 ~ e4@12 ~@14, ~@15 a3@5 a3@14 d#4@8 ~@2 f#3@21 ~@48 [e2,a2]@24 [e2,b2]@24 ~@7, ~@26 e4@16 ~@73 [a3,c#4]@24 [g#3,b3]@24 ~@5]/7", // F#m A5 E5 A G#m
  S: "~@2 [f#2,c#3,f#3,a3,c#4,f#4]@3 ~@2 [d#4,f#4,b4]@3 [d#4,f#4,b4]@5 [d#4,f#4,b4]@3 [f#2,c#3,f#3,a3,c#4,f#4]@6, ~@5 [b2,d#3,b3]@4 ~@3", // F#m B F#m B
  T: "~@2 [a3,c#4,f#4]@5 [a3,c#4,f#4]@3 [a3,c#4,f#4]@5 [a3,c#4,f#4]@3 [f#2,c#3,f#3,a3,c#4,f#4]@6, ~ [f#2,c#3,f#3]@4 [f#2,c#3,f#3]@4 ~@3", // F#m F#5
  U: "[~@2 [a3,c#4,f#4]@5 [a3,c#4,f#4]@3 [a3,c#4,f#4]@5 [a3,c#4,f#4]@3 [f#4,a4,c#5]@5 [f#4,a4,c#5]@3 [f#4,a4,c#5]@5 [f#4,a4,c#5]@2 ~ [c#4,f#4,a4,c#5]@5 [f#4,a4,c#5]@2 ~ [a4,c#5]@5 [f#4,a4,c#5]@2 ~ b4@5 [d#4,f#4,b4]@2 [b2,f#3,b3]@6 [d#4,f#4,b4]@2 [d#4,f#4,b4]@5 ~ b4@2 [d#4,f#4,b4]@5 [d#4,f#4,b4]@3 [f#4,a4,c#5]@5 [f#4,a4,c#5]@3 [f#3,c#4,f#4,a4,c#5]@5 [f#4,a4,c#5]@2, ~@2 [f#2,c#3,f#3]@8 [f#2,c#3,f#3]@8 [f#3,c#4]@8 [f#3,c#4]@7 f#3@8 [f#3,c#4]@8 [b2,f#3,b3]@8 ~@8 [b2,f#3,b3]@8 [b2,f#3,b3]@8 [f#3,c#4]@8 ~@7, ~@41 f#4@5 ~@3 [d#4,f#4]@5 ~@3 [d#4,f#4,b4]@5 ~@8 [d#4,f#4]@3 ~@23]/4", // F#m A F#m B B5 B F#m F#5 …
  V: "~ [f#4,a4,c#5]@5 [f#4,a4,c#5]@2 ~ c#5@5 [f#4,a4,c#5]@2 ~ b4@5 [d#4,f#4,b4]@2, [f#3,c#4]!2 [b2,f#3,b3], ~@8 [f#4,a4]@5 ~@3 [d#4,f#4]@5 ~@3", // F#m B F#5 B5 F#m D#m
  W: "[[d#4,f#4,b4]@5 ~ [f#4,b4]@2 [d#4,f#4,b4]@5 ~ b4@2 [d#4,f#4,b4]@5 [d#4,f#4,b4]@2 ~@123 [a3,c#4,f#4]@7 ~ [a3,c#4,f#4]@3 ~@2 [d#4,f#4,b4]@2 ~ [d#4,f#4,b4]@5 [d#4,f#4,b4]@2 ~ [a3,c#4,f#4]@7 ~ [a3,c#4,f#4]@3 ~@2 [a3,c#4,f#4]@2 ~ [a3,c#4,f#4]@5 [a3,c#4,f#4], [b2,f#3,b3]@2 [b2,f#3,b3]@2 [b2,f#3,b3]@2 e3@13 e2 e4@17 ~@11, ~@5 d#4@3 ~@5 [d#4,f#4]@3 ~@7 [e2,a2]@54 b2@68 [f#2,c#3,f#3]@8 [f#2,c#3,f#3]@3 ~@5 [b2,d#3,b3]@8 [f#2,c#3,f#3]@8 [f#2,c#3,f#3]@3 ~@5 [f#2,c#3,f#3]@7, ~@25 [a3,c#4]@53 [e3,g#3]@68 ~@46, ~@26 e4@53 b3@68 ~@45]/8", // B B5 B F#m B F#m B5 D#m …
  X: "[~@2 [a3,c#4,f#4]@7 ~ [a3,c#4,f#4]@3 ~@2 [a3,c#4,f#4]@2 ~ [a3,c#4,f#4]@5 ~@4 [c#4,f#4]@69, ~ [f#2,c#3,f#3]@8 [f#2,c#3,f#3]@3 ~@5 [f#2,c#3,f#3]@6 [a3,c#4,f#4]@2 [c#3,f#3]@70 ~, ~@12 f#2@35 ~, ~@13 a#3@35]/4", // F#m F#5 F#m F#5
})).s("gm_acoustic_guitar_nylon").gain(0.32).pan(0.2)

// other · string ensemble 2 · "Strings"
const string_ensemble_2 = note(`<
  ~@5 A@4 B C D E B C D E F@2 G H A@4 ~@7 I@8 J@8 K@5 ~@7 L@8 M@8 N@5 ~@5 O@5 P@6 ~
>`.pickRestart({
  A: "f#4/4", B: "f#5", C: "f5", D: "e5", E: "d#5", F: "f#4/2", G: "a4", H: "e4",
  I: "[~@7 f#4@32 f#5@8 f5@8 e5@8 d#5]/8", J: "[~@7 f#5@8 f5@8 e5@8 d#5@8 f#4@16 a4@8 e4]/8", K: "[~@7 f#4@32 ~]/5",
  L: "[~@3 f#4@16 f#5@4 f5@4 e5@4 d#5]/8", M: "[~@3 f#5@4 f5@4 e5@4 d#5@4 f#4@8 a4@4 e4]/8", N: "[~@3 f#4@16 ~]/5",
  O: "[a4@53 e4@67]/5", P: "[~ f#5@142 ~]/6",
})).s("gm_string_ensemble_2").gain(0.22)

// drums · kick
const kick = s("bd").struct(`<
  ~@5 A@4 B@8 A B@3 A C D B A E F G H I J K L@4 M@8 L M@3 L N O M J P Q R S T U V W@4 X@8 W X@3 W Y Z X AA AB AC A AD B
  ~ AE ~@2 AB@3 AF ~@3
>`.pickRestart({
  A: "x ~ x", B: "x", C: "x ~@12 x ~@2 x ~@7", D: "x ~@15 x ~@4 x ~@2", E: "~@7 x ~@15 x", F: "~@5 x ~@2",
  G: "~@4 x ~@2 x ~@14 x ~", H: "~@7 x ~@4", I: "~@3 x ~@7 x", J: "~@13 x ~@10", K: "~@5 x ~@15 x ~@2",
  L: "~@13 x ~@7 x ~@2", M: "~@7 x", N: "~@10 x ~@2 x ~@7 x ~@2", O: "~@13 x ~@4 x ~@2 x ~@2", P: "~ x ~@3 x", Q: "~ x",
  R: "~ x ~@2 x ~@14 x ~@4", S: "~@11 x ~@12", T: "~ x ~@4 x ~", U: "~@5 x ~@6", V: "~ x ~@7 x ~@2",
  W: "~@5 x ~@3 x ~@2", X: "~@3 x", Y: "~@7 x ~@2 x ~@7 x ~@5", Z: "~@10 x ~@4 x ~@2 x ~@5", AA: "~@3 x ~@4",
  AB: "~ x ~@15 x ~@6", AC: "~@9 x ~@12 x ~", AD: "~ x ~", AE: "~@5 x ~@18", AF: "~ x ~@22",
})).gain(0.32)

// drums · snare
const snare = s("sd").struct(`<
  ~@5 A@20 B C D E F G H I J@20 K L M N O P Q R S@19 T U V W X Y ~@5 Z@3 AA ~@3
>`.pickRestart({
  A: "x ~@7 x ~@7 x ~@4 x ~@2", B: "x ~@4 x ~@7 x ~@2 x ~@4 x ~@2", C: "~@5 x ~ x ~@5 x ~@7 x ~ x",
  D: "~@4 x ~@7 x ~@2 x ~@4 x ~@3", E: "~@4 x ~@2 x ~@4 x ~@7 x ~ x ~", F: "~@4 x ~@7 x ~ x ~@4 x ~@4",
  G: "~@3 x ~@2 x ~@4 x ~@7 x ~@2 x ~", H: "~@3 x ~@7 x ~ x ~@5 x ~@4", I: "~@2 x ~@2 x ~@4 x ~@7 x ~@2 x ~@2",
  J: "~@5 x ~@7 x ~@4 x ~@2 x ~@2", K: "~@2 x ~@7 x ~@2 x ~@4 x ~@5", L: "~@2 x ~ x ~@5 x ~@6 x ~@2 x ~@3",
  M: "~ x ~@7 x ~@2 x ~@4 x ~@6", N: "~ x ~@2 x ~@4 x ~@7 x ~ x ~@4", O: "~ x ~@6 x ~@2 x ~@4 x ~@7",
  P: "x ~@2 x ~@4 x ~@7 x ~ x ~@5", Q: "x ~@7 x ~ x ~@4 x ~@7 x", R: "~@2 x ~@4 x ~@7 x ~@2 x ~@5",
  S: "~@2 x ~@7 x ~@4 x ~@2 x ~@5", T: "~@2 x ~@7 x ~@4 x ~@2 x ~@4 x", U: "~@7 x ~ x ~@5 x ~@7 x",
  V: "~ x ~@4 x ~@7 x ~@2 x ~@4 x ~", W: "~@6 x ~@2 x ~@4 x ~@7 x ~", X: "x ~@5 x ~@6 x ~@2 x ~@4 x ~@2",
  Y: "~@5 x ~@2 x ~@4 x ~@7 x ~@2", Z: "~ x ~@7 x ~@7 x ~@5 x", AA: "~ x ~@22",
})).gain(0.48)

// drums · clap
const clap = s("cp").struct("<~@25 A B C D E F G H ~@20 I J K L M L N O ~@20 P Q R A S ~@12>".pickRestart({
  A: "~ x ~", B: "x ~@4 x ~@2", C: "~@7 x ~@15 x", D: "~@5 x ~@2", E: "~@3 x ~@7 x", F: "~@7 x ~@4",
  G: "~@5 x ~@15 x ~@2", H: "~@13 x ~@10", I: "~@5 x ~@14 x ~@3", J: "~ x", K: "~ x ~@3 x", L: "~@11 x ~@12",
  M: "~@3 x ~@15 x ~@4", N: "~ x ~@7 x ~@2", O: "~@5 x ~@6", P: "~@2 x ~@14 x ~@6", Q: "~@3 x ~@4", R: "~ x ~@15 x ~@6",
  S: "x ~ x",
})).gain(0.48)

// drums · pedal hat
const pedal_hat = s("hh").struct(`<
  ~@5 A@20 B C D E F G H I J@20 K L M N O N P Q R@20 S T U B V T ~@4 W@3 ~@4
>`.pickRestart({
  A: "~ x!2", B: "~ x ~", C: "x ~@4 x ~@2", D: "~@7 x ~@15 x", E: "~@5 x ~@2", F: "~@3 x ~@7 x", G: "~@7 x ~@4",
  H: "~@5 x ~@15 x ~@2", I: "~@13 x ~@10", J: "~@5 x ~@7 x ~@10", K: "~@5 x ~@14 x ~@3", L: "~ x", M: "~ x ~@3 x",
  N: "~@11 x ~@12", O: "~@3 x ~@15 x ~@4", P: "~ x ~@7 x ~@2", Q: "~@5 x ~@6", R: "~ x ~@3 x ~@6",
  S: "~@2 x ~@14 x ~@6", T: "~@3 x ~@4", U: "~ x ~@15 x ~@6", V: "x ~ x", W: "~@9 x ~@7 x ~@6",
})).gain(0.48)

// drums · crash
const crash = s("cr").struct("<~@32 A ~@27 B ~@21 C ~@11 D ~@3>".pickRestart({
  A: "~@7 x", B: "~@3 x", C: "~@7 x ~@4", D: "~ x ~@22",
})).gain(0.32)

// drums · ride
const ride = s("rd").struct("<~@25 A B C D E F G H ~@19 I J K L M N O P Q ~@19 R S T U A V W X ~@10>".pickRestart({
  A: "x!3", B: "x ~@6 x ~@7 x ~@5 x ~ x", C: "~@7 x ~@7 x ~@7 x", D: "~@7 x ~@7 x ~@6 x ~", E: "~@3 x ~@2 x!2 ~@3 x",
  F: "~@6 x ~@7 x ~@4 x ~@2 x ~", G: "~@5 x ~@7 x ~@7 x ~@2", H: "~@2 x ~@2 x ~@7 x ~@10", I: "~@7 x",
  J: "~@5 x ~@7 x ~@6 x ~@3", K: "~@4 x ~@7 x ~@4 x ~@2 x ~@3", L: "~ x ~ x ~ x", M: "~@4 x ~@6 x ~@7 x ~@4",
  N: "~@3 x ~@4 x ~@2 x ~@7 x ~@4", O: "~@3 x ~@7 x ~@4 x ~ x ~@5", P: "~@2 x ~@7 x ~@7 x ~@4 x", Q: "~ x ~@3 x ~@6",
  R: "~@3 x", S: "~@2 x ~@6 x ~@7 x ~@6", T: "~ x ~@7 x ~@7 x ~@6", U: "~ x ~@7 x ~@7 x ~@4 x ~",
  V: "x ~@4 x ~@2 x ~@7 x ~@7", W: "x!3 ~ x!2 ~ x!3 ~ x!2 ~ x!3 ~ x!2 ~ x!3", X: "~ x!2 ~ x!3 ~ x!2 ~@14",
})).gain(0.38)

stack(bass, flute, acoustic_guitar_nylon, string_ensemble_2, kick, snare, clap, pedal_hat, crash, ride)

More by The Beatles