Strudelify

Live and Let Die

Paul McCartney

KeyF♯ majorTempo152 bpm
0:00/0:00
// Live and Let Die — Paul McCartney
// 152 bpm, 4/4, key F# major. 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 (4/4 at bar 1, 3/8 at bar 30, 4/4 at bar 31, 3/8 at bar 97, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 115 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(152/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 · fretless bass · "Bass"
const bass = note(`<
  A@7 B@5 C@6 D@3 E@6 F G H G I J K L M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH@4 AI AJ AK AL AM T AN AO@7
  AP@5 AQ@6 AR@7 AS@3 AT AU@2 AV@4 AW AT AU@2 AV@4 AX@5
>`.pickRestart({
  A: "[~@23 f#1@28 ~@2 a#1@27 ~ b1@29 ~ c#2@28 ~@2 f#1@27, ~@53 g#1 ~@114]/7",
  B: "[~@2 a#1@28 ~ b1@28 ~ c#2@28 ~@2 f#1@29 ~]/5",
  C: "[a#1@28 ~ b1@29 ~ g#1@27 ~@2 c#2@15 ~@7 c#2@31 ~@3, ~@103 g#2@9 ~@32]/6",
  D: "[~@3 d#3@2 e3@22 ~@4 f#1@5, ~ c#3@2 ~@21]/3", E: "[~@4 f#1@5 ~ f#1@33 f#1@19 f#1@23 f#1@10 f#1@19 f#1@30]/6",
  F: "~ f#1@3 f#1@20", G: "~ f#1@3 f#1@2 f#1@3 f#1@3 f#1@2 ~ f#1@3 f#1@3 f#1@3",
  H: "f#1 f#1@2 f#1@3 f#1@3 f#1@3 ~ f#1@3 f#1@3 f#1@2 ~ f#1@2",
  I: "~ f#1@2 f#1@3 f#1@3 f#1@3 ~ f#1@3 f#1@2 f#1@3 ~ f#1@2", J: "~ f#1@3 f#1@3 f#1@2 ~ f#1@5 ~ f#1@3 f#1@2 f#1@3",
  K: "f#1@3 f#1@3 f#1@3 ~ f#1@3 f#1@3 f#1@3 f#1@3 f#1@2", L: "~ f#1@2 ~ f#1@3 f#1@2 f#1@3 ~@3 f#1@3 f#1@3 f#1@3",
  M: "f#1@3 ~ f#1@3 f#1@2 f#1@3 f#1@3 f#1@3 f#1@3 f#1@3", N: "f#1@3 ~ f#1@3 f#1@2 ~ f#1@3 f#1@2 f#1@3 ~ f#1@2 ~ f#1@2",
  O: "f#1@3 f#1@3 ~ f#1@2 ~ f#1@2 f#1@3 f#1@3 f#1@2 ~ f#1@3", P: "f#1@3 ~ f#1@3 f#1@2 f#1@6 f#1@3 f#1@3 f#1@3",
  Q: "f#1@3 ~ f#1@3 f#1@2 f#1@3 f#1@3 f#1@3 f#1@3 ~ f#1@2", R: "f#1@3 ~ f#1@3 f#1@2 ~ f#1@2 f#1@3 f#1@3 f#1@3 ~ f#1@2",
  S: "~ f#1@3 f#1@3 f#1@3 f#1@3 f#1@3 f#1@2 ~ f#1@3 f#1@2", T: "~ f#1@3 f#1@3 f#1@3 f#1@3 f#1@3 f#1@3 f#1@3 f#1@2",
  U: "f#1@3 ~ f#1@3 f#1@2 f#1@3 ~ f#1@3 f#1@3 f#1@3 f#1@2", V: "~ f#1@3 f#1@2 ~ f#1@3 f#1@3 f#1@2 f#1@2 ~ f#1@3 f#1@3",
  W: "f#1@3 ~ f#1@2 ~ f#1@2 ~ f#1@2 f#1@3 f#1@3 f#1@3 f#1@3", X: "f#1!8",
  Y: "f#1@3 f#1@3 f#1@3 f#1@3 f#1@2 ~ f#1@3 f#1@3 f#1@3", Z: "f#1@2 ~ f#1@3 f#1@3 ~ f#1@3 f#1@3 f#1@3 f#1@3 f#1@2",
  AA: "f#1@3 f#1@3 f#1@2 ~ f#1@3 f#1@3 f#1@3 f#1@2 ~ f#1@3", AB: "b1@2 b1 ~@5",
  AC: "~@4 f#1@3 g#1@2 a#1@3 ~ b1@2 ~@4 d1@2 ~ f1@2", AD: "f#1@3 ~@3 f#1@3 ~@9 f#1@2 ~ f#1@2 ~",
  AE: "~@7 a#1@3 ~@2 c#2@3 ~@3 d2@3 ~@3", AF: "~ c#2@6 ~ c#2 ~@3 g#1@5 ~@7", AG: "~@3 c#2@2 ~@3 g#1!2 ~@2 f1@6 g#1@6",
  AH: "[d#1@13 ~@5 e1@78]/4", AI: "f#1@3 ~ f#1@2 ~ f#1@3 f#1@2 f#1@3 f#1@3 f#1@3 f#1@3",
  AJ: "f#1@3 ~ f#1@2 f#1@3 f#1@3 ~ f#1@2 f#1@3 f#1@3 ~ f#1@2", AK: "f#1@3 f#1@3 ~ f#1@2 f#1@3 f#1@3 f#1@3 f#1@3 f#1@3",
  AL: "f#1@3 ~ f#1@3 f#1@3 f#1@3 f#1@3 f#1@2 f#1@3 ~ f#1@2",
  AM: "~ f#1@3 f#1@2 ~ f#1@2 ~ f#1@3 f#1@3 f#1@3 f#1@3 f#1@2",
  AN: "~ f#1@3 f#1@2 ~ f#1@3 f#1@3 f#1@2 f#1@3 f#1@2 ~ f#1@3",
  AO: "[f#1@3 f#1@3 f#1@3 f#1@3 f#1@3 f#1@3 f#1@2 ~ f#1@32 ~ a#1@29 b1@28 ~@2 c#2@27 ~@2 f#1@26]/7",
  AP: "[~@3 a#1@28 ~@2 b1@28 ~ c#2@28 ~ f#1@29]/5", AQ: "[~ a#1@29 b1@28 ~ g#1@29 ~ c#2@52 ~@3]/6",
  AR: "[~@5 c#3@3 d#3@3 ~ e3@49 ~@2 f#1@14 f#1@5 ~ f#1@33 f#1@19 f#1@23 ~ f#1@9]/7",
  AS: "[~ f#1@19 f#1@30 f#1@3 f#1@19]/3", AT: "~@2 f#1@3 f#1@3 f#1@3 f#1@2 f#1@2 ~ f#1@3 f#1@3 f#1@2",
  AU: "[~ f#1 f#1@2 f#1@3 f#1@3 ~ f#1@3 f#1@3 f#1@3 f#1@2 ~ f#1@2 ~ f#1@3 f#1@3 f#1@3 f#1@2 f#1@2 ~ f#1@3 f#1@3 f#1@2]/2",
  AV: "[~@2 f#1@2 f#1@3 f#1@3 ~ f#1@3 f#1@3 f#1@2 ~ f#1@3 f#1@3 f#1@3 f#1@3 f#1@2 ~ f#1@5 ~ f#1@3 f#1@3 f#1@3 f#1@2 f#1@3 ~ f#1@3 f#1@3 f#1@3 f#1@3 f#1@3 f#1@3 f#1@2 ~ f#1@3 f#1@2 ~ f#1@3 ~@2 f#1@3 f#1@3 f#1@2]/4",
  AW: "~ f#1@3 ~ f#1@3 f#1@2 f#1@3 f#1@3 f#1@3 f#1@3 f#1@2", AX: "[~ f#1@3 ~ b1@3 ~@2 d1@87 ~@23]/5",
})).s("gm_fretless_bass").gain(0.52)

// chords · piano · "Keyboard"
const piano = note(`<
  A@4 B@3 C@5 D@3 E@3 F@2 G@8 H I J H I J K L H I J H I J H I J M@5 N O P Q R S T@4 H I J H I J K L U@3 V@8 W@3 X@3 Y@7
  Z@3 AA AB AC AA AB AC AD AE AA AB AC AA AB AC AD AF@4 ~
>`.pickRestart({
  A: "[~@23 [f#2,f#3,a#3,c#4]@14 ~ [f#2,c#4]@14 [a#2,f3,a#3,c#4]@14 ~ [a#2,c#4]@14 ~ [b2,f#3,b3,d#4]@14, ~@38 [f#3,a#3]@12 ~@17 [f3,a#3]@12 ~@17]/4", // F# F#5 A#m B F# A#5
  B: "[[f#3,b3,d#4]@10 ~@5 [c#3,g#3]@14 ~ [d3,g#3]@14 ~ [f#2,f#3,a#3,c#4]@13 ~ [f#2,a#3,c#4]@13, b2@15 [c#4,f4]@12 ~@3 [d4,f4]@12 ~@17 f#3@10 ~@3]/3", // B C#5 Ddim F# C# Dm
  C: "[~@2 [a#2,f3,a#3]@14 ~ [f3,a#3,c#4]@11 ~@3 [b2,f#3,b3,d#4]@13 ~@2 [f#3,b3,d#4]@10 ~@5 [c#3,g#3]@14 ~ [g#3,d4,f4]@10 ~@4 [f#2,f#3,a#3,c#4]@14 ~ [f#3,a#3,c#4]@12 ~@3, ~@2 c#4@12 ~@3 a#2@14 ~@15 b2@14 ~ [c#4,f4]@12 ~@3 d3@12 ~@17 f#2@14 ~]/5", // A#5 A#m B C#5 Ddim F# C#
  D: "[[a#2,f3,a#3,c#4]@13 ~ [a#3,c#4]@11 ~@4 [b2,f#3,b3,d#4]@12 ~@3 [b2,d#4]@14 [g#2,g#3,c4,d#4]@13 ~, ~@14 a#2@14 ~@16 b3@9 ~@19, ~@14 f3@9 ~@21 f#3@11 ~@17]/3", // A#m B G#
  E: "[~ g#2@13 ~@2 [c#3,g#3,c#4]@55 ~, ~ g#3@11 ~@60, ~ d#4@9 ~@6 f4@52 ~@4, ~ c4@6 ~@65]/3", // C#5
  F: "[~@3 [d#3,d#4]@2 [e3,e4]@19, ~@3 [c#3,c#4]@5 ~@40]/2", // D# E C#
  G: "[~@14 [f#2,c#3,c#4,f#4]@17 ~@3 [b2,f#3,b3,f#4]@29 ~@3 [c3,f#3,c4,f#4]@17 ~@3 [f#2,c#3,c#4,f#4]@30 ~@3 [f#2,c#3,c#4,f#4]@19 ~ [b2,f#3,b3,f#4]@30 ~@3 [c3,f#3,c4,f#4]@20]/8", // F#5 B5 Cdim F#5 B5 Cdim
  H: "[f#2,f#3]@2 ~ [f#2,f#3]@2 ~ [f#2,f#3]@2 ~ [c#3,f#3] ~@2 [f#2,f#3]@2 ~ [c#3,f#3] ~@2 [f#2,f#3]@2 ~ [f#2,f#3]@2 ~, c#3 ~@2 c#3 ~@2 c#3 ~@2 f#2@2 ~ c#3 ~@2 f#2@2 ~ c#3 ~@2 c#3 ~@2", // F# F#5 F# F#5 F#
  I: "[f#2,f#3]@2 ~ [f#2,f#3]@2 ~ [f#2,f#3]@2 ~ [f#2,f#3]@2 ~ [f#2,c#3,f#3]@2 ~ [c#3,f#3] ~@2 [f#2,f#3]@2 ~ [c#3,f#3] ~@2, c#3 ~@2 c#3 ~@2 c#3 ~@2 c#3 ~@5 f#2@2 ~ c#3 ~@2 f#2@2 ~", // F# F#5 F# F#5
  J: "[c#3,f#3] ~@2 [f#2,f#3]@2 ~ [f#2,f#3]@2 ~ [f#2,f#3]@2 ~ [c#3,f#3] ~@2 [c#3,f#3] ~@2 [c#3,f#3] ~@2 [c#3,f#3] ~@2, f#2@2 ~ c#3 ~@2 c#3 ~@2 c#3 ~@2 f#2@2 ~ f#2@2 ~ f#2@2 ~ f#2@2 ~", // F#5 F# F#5
  K: "[c#3,f#3] ~@2 [f#2,f#3]@2 ~ [c#3,f#3] ~@2 [c#3,f#3] ~@2 [f#2,f#3]@2 ~ [c#3,f#3] ~@2 [c#3,f#3] ~@2 [f#2,f#3]@2 ~, f#2@2 ~ c#3 ~@2 f#2@2 ~ f#2@2 ~ c#3 ~@2 f#2@2 ~ f#2@2 ~ c#3 ~@2", // F#5 F# F#5 F# F#5 F#
  L: "~@3 [f#2,c#3,f#3]@3 ~@3 [f#2,c#3,f#3]@13 ~@2", // F#5
  M: "[[f#2,f#3]@2 ~ [f#2,f#3]@2 ~ [f#2,f#3]@2 ~ [f#2,c#3,f#3]@9 [f#2,c#3,f#3]@9 [f#2,c#3,f#3]@33 [f#2,c#3,f#3]@9 [f#2,c#3,f#3]@9 [f#2,c#3,f#3]@9 [f#2,c#3,f#3]@33, c#3 ~@2 c#3 ~@2 c#3 ~@113]/5", // F# F#5
  N: "[f#3,b3,d#4]@5 ~ [f#3,b3,d#4]@4 ~@8 [f#3,b3,d#4]@3 [f#3,b3,d#4]@2 ~", // B
  O: "~@6 [f#3,b3,d#4]@3 ~@9 [f#3,b3,d#4]@2 ~ [b3,d#4] ~@2, ~@21 f#3@2 ~", // B
  P: "[f#3,a#3,c#4]@3 ~@3 [f#3,a#3,c#4]@3 ~@9 [a#3,c#4] ~@2 [f#3,a#3,c#4]@2 ~, ~@9 f#3 ~@2", // F# A#m F#
  Q: "~@6 [f#3,a#3,c#4]@3 ~@9 [f#3,a#3,c#4] ~@2 [f#3,a#3,c#4] ~@2", // F#
  R: "[g#3,c#4]@3 ~@3 [f3,g#3,c#4]@3 ~@9 [f3,g#3,c#4]@2 ~ [f3,g#3,c#4]@2 ~, f3 ~@23", // C#5 C#
  S: "~@6 [f3,g#3,c#4]@3 ~@9 [g#3,c#4] ~@2 [g#3,c#4] ~@2, ~@18 f3@2 ~ f3@2 ~", // C# C#5
  T: "[[d#3,a#3,d#4]@17 ~ [e3,b3,e4]@74 ~@4]/4", // D#5 E5
  U: "[[f#2,f#3,a#3,c#4]@14 ~ [f#2,c#4]@14 [a#2,f3,a#3,c#4]@14 ~ [a#2,c#4]@14 ~ [b2,f#3,b3,d#4]@13, ~@15 [f#3,a#3]@12 ~@17 [f3,a#3]@12 ~@16]/3", // F# F#5 A#m B F# A#5
  V: "[~@2 [f#3,b3,d#4]@10 ~@4 [c#3,g#3]@14 ~ [d3,g#3]@14 ~ [f#2,f#3,a#3,c#4]@13 ~ [a#3,c#4]@12 ~@3 [a#2,f3,a#3]@14 ~ [f3,a#3,c#4]@11 ~@4 [b2,f#3,b3,d#4]@13 ~ [f#3,b3,d#4]@10 ~@5 [c#3,g#3]@14 ~ [g#3,d4,f4]@10 ~@4 [f#2,f#3,a#3,c#4]@14 ~ [f#3,a#3,c#4]@12 ~@2, ~@2 b2@14 [c#4,f4]@12 ~@3 [d4,f4]@12 ~@17 f#2@14 ~@16 a#2@14 ~@15 b2@14 ~@16 d3@12 ~@17 f#2@14, ~@60 f#3@10 ~@5 c#4@12 ~@47 [c#4,f4]@12 ~@46]/8", // B C#5 Ddim F# A#m A#5 A#m B …
  W: "[~ [a#2,f3,a#3,c#4]@13 ~ [a#3,c#4]@11 ~@4 [b2,f#3,b3,d#4]@12 ~@3 [b2,d#4]@14 ~ [g#2,g#3,c4,d#4]@12, ~@15 a#2@14 ~@16 b3@9 ~@18, ~@15 f3@9 ~@21 f#3@11 ~@16]/3", // A#m B G#
  X: "[~@2 g#2@13 ~@2 [c#3,g#3,c#4]@55, ~@2 g#3@11 ~@59, ~@2 d#4@9 ~@6 f4@52 ~@3, ~ c4@3 ~@32]/3", // C#5
  Y: "[~@4 [c#3,c#4]@4 [d#3,d#4]@3 [e3,e4]@45 ~@7 [f#2,c#3,c#4,f#4]@17 ~@3 [b2,f#3,b3,f#4]@29 ~@3 [c3,f#3,c4,f#4]@17 ~@3 [f#2,c#3,c#4,f#4]@30 ~@3]/7", // C# D# E F#5 B5 Cdim F#5
  Z: "[[f#2,c#3,c#4,f#4]@19 ~@2 [b3,f#4]@29 ~@3 [c3,f#3,c4,f#4]@19, ~@10 [b2,f#3]@15 ~@11]/3", // F#5 B5 Cdim B5
  AA: "~ [f#2,f#3]@2 ~ [f#2,f#3]@2 ~ [f#2,f#3]@2 ~ [c#3,f#3] ~@2 [f#2,f#3]@2 ~ [c#3,f#3] ~@2 [f#2,f#3]@2 ~ [f#2,f#3]@2, ~ c#3 ~@2 c#3 ~@2 c#3 ~@2 f#2@2 ~ c#3 ~@2 f#2@2 ~ c#3 ~@2 c#3 ~", // F# F#5 F# F#5 F#
  AB: "~ [f#2,f#3]@2 ~ [f#2,f#3]@2 ~ [f#2,f#3]@2 ~ [f#2,f#3]@2 ~ [f#2,c#3,f#3]@2 ~ [c#3,f#3] ~@2 [f#2,f#3]@2 ~ [c#3,f#3] ~, ~ c#3 ~@2 c#3 ~@2 c#3 ~@2 c#3 ~@5 f#2@2 ~ c#3 ~@2 f#2@2", // F# F#5 F# F#5
  AC: "~ [c#3,f#3] ~@2 [f#2,f#3]@2 ~ [f#2,f#3]@2 ~ [f#2,f#3]@2 ~ [c#3,f#3] ~@2 [c#3,f#3] ~@2 [c#3,f#3] ~@2 [c#3,f#3] ~, ~ f#2@2 ~ c#3 ~@2 c#3 ~@2 c#3 ~@2 f#2@2 ~ f#2@2 ~ f#2@2 ~ f#2@2", // F#5 F# F#5
  AD: "~ [c#3,f#3] ~@2 [f#2,f#3]@2 ~ [c#3,f#3] ~@2 [c#3,f#3] ~@2 [f#2,f#3]@2 ~ [c#3,f#3] ~@2 [c#3,f#3] ~@2 [f#2,f#3]@2, ~ f#2@2 ~ c#3 ~@2 f#2@2 ~ f#2@2 ~ c#3 ~@2 f#2@2 ~ f#2@2 ~ c#3 ~", // F#5 F# F#5 F# F#5 F#
  AE: "~@4 [f#2,c#3,f#3]@3 ~@3 [f#2,c#3,f#3]@13 ~", AF: "[~@4 [f#2,b2,f#3]@3 ~@3 [a2,d3,a3]@81 ~@5]/4",
})).s("gm_piano").gain(0.22).pan(0.3)

// chords · distortion guitar · "Guitar 1"
const distortion_guitar = note(`<
  ~@20 A@8 B@2 C D E@2 F G H I J K L M N O J P@5 ~@2 Q R S T U@4 B@2 C D E@2 F G ~@19 V@5 W@5 X@2 Y@2 Z AA AB@2 X@2 Y@2
  Z AC@4 ~
>`.pickRestart({
  A: "[~@14 [c#3,f#3]@20 [f#3,b3]@32 [f#3,c4]@20 [f#3,c#4]@33 ~ [c#3,f#3]@19 [f#3,b3]@33 [f#3,c4]@20, ~@14 f#2@53 ~@52 f#2@53 ~@20]/8", // F#5 B5 F#dim F#5 B5 F#dim
  B: "[[c#4,f#4]@3 [d#4,g#4]@3 [e4,a4,c#5]@4 c5 [a#4,b4] ~@3 c#4@3 [a#3,d#4]@3 [b3,e4,g#4]@6 [d#4,g4] ~@3 c3 ~@4 b3@2 a3 [e3,a3]@3 [c#3,f#3]@5 ~, ~@14 g#3@3 ~@18 f#3@3 ~@10]/2", // F#5 G#5 A Bmaj7 D#5 E D# A5 …
  C: "[c#4,f#4]@3 [d#4,g#4]@2 ~ a4@4 g#4 g4@2 ~@2 c#4@2 ~ d#4@3 [b3,e4,g#4]@3, ~@5 e4@5 ~@4 g#3@3 a#3@3 ~@4", // F#5 G#5 E
  D: "~ b3 ~ [e3,a3]@3 ~@2, ~@2 f#3@3 ~@19", // A5
  E: "[[c#4,f#4]@3 [d#4,g#4]@3 ~ c#5@4 [d#4,g4,g#4,b4,c5] ~@3 [g#3,c#4]@3 [a#3,d#4]@3 [b3,e4]@7 [d4,d#4] ~@7 [f#3,b3]@3 [e3,a3]@3 [c#3,f#3]@3 ~@3, ~@6 [e4,a4]@5 ~@37]/2", // F#5 G#5 G#maj7 C#5 D#5 E5 D#maj7 B5 …
  F: "[c#4,f#4]@3 [d#4,g#4]@3 [e4,a4]@4 [d#4,g#4] [d4,f#4,g4] ~@2 [g#3,c#4]@3 ~ d#4@3 [b3,e4,g#4]@3, ~@17 a#3@3 ~@4", // F#5 G#5 A5 G#5 Gmaj7 C#5 E
  G: "~@3 [f#3,b3]@3 ~@3 [e3,a3]@10 ~@5", // B5 A5
  H: "[f#2,c#3]@2 ~ [f#2,c#3]@2 ~ [f#2,c#3]@2 ~ [f#2,c#3]@2 ~ [f#2,c#3]@2 ~ [f#2,c#3] ~@2 [f#2,c#3]@2 ~ [f#2,c#3]@2 ~", // F#5
  I: "[f#2,c#3]@2 ~ [f#2,c#3]@2 ~ f#2 ~@2 [f#2,c#3]@2 ~ f#2@2 ~ [f#2,c#3]@2 ~ [f#2,c#3]@2 ~ f#2@2 ~", // F#5
  J: "[f#2,c#3]@2 ~ [f#2,c#3]@2 ~ [f#2,c#3]@2 ~ [f#2,c#3]@2 ~ [f#2,c#3]@2 ~ [f#2,c#3]@2 ~ [f#2,c#3]@2 ~ [f#2,c#3]@2 ~", // F#5
  K: "[f#2,c#3]@2 ~ f#2@2 ~ [f#2,c#3] ~@2 [f#2,c#3] ~@2 [f#2,c#3]@2 ~ [f#2,c#3]@2 ~ [f#2,c#3]@2 ~ [f#2,c#3] ~@2", // F#5
  L: "[f#2,c#3]@2 ~ [f#2,c#3]@2 ~ [f#2,c#3]@2 ~ [f#2,c#3] ~@2 [f#2,c#3]@2 ~ [f#2,c#3]@2 ~ [f#2,c#3]@2 ~ [f#2,c#3]@2 ~", // F#5
  M: "[f#2,c#3] ~@2 [f#2,c#3]@2 ~ [f#2,c#3]@2 ~ [f#2,c#3]@2 ~ [f#2,c#3]@2 ~ [f#2,c#3] ~@2 [f#2,c#3]@2 ~ [f#2,c#3]@2 ~", // F#5
  N: "[f#2,c#3]@2 ~ [f#2,c#3] ~@2 [f#2,c#3]@2 ~ [f#2,c#3] ~@2 [f#2,c#3] ~@2 [f#2,c#3]@2 ~ [f#2,c#3]@2 ~ [f#2,c#3]@2 ~", // F#5
  O: "[f#2,c#3]@2 ~ [f#2,c#3]@2 ~ f#2@2 ~ [f#2,c#3]@2 ~ f#2@2 ~ [f#2,c#3]@2 ~ [f#2,c#3]@2 ~ f#2@2 ~", // F#5
  P: "[[f#2,c#3]@3 f#2@2 ~ [f#2,c#3]@3 [f#2,c#3]@9 [f#2,c#3]@9 [f#2,c#3]@33 [f#2,c#3]@9 [f#2,c#3]@9 [f#2,c#3]@9 [f#2,c#3]@33]/5", // F#5
  Q: "~@3 [c#4,f#4]@2 ~@4 a3@3, [c#3,f#3]@11 ~@13, ~ f#2@9 ~@14", R: "[a#3,f#4] ~ b3@2 [c#4,a#4]@4",
  S: "c#4@3 ~@3 g#4@3 c#5@2 ~@4 g#4@3 e4@6, ~@5 f4@2 ~@17",
  T: "[f4,c#5]@3 ~@3 [f#4,d#5]@3 g4 ~@3 f5@5 f5@3 ~@3, ~@5 g#4@7", // C# D#m
  U: "[~ [d#3,a#3]@13 ~@5 [e3,b3,e4]@77, d#4@13 ~@83]/4", // D#5 E5
  V: "[b3@4 a3 f#3 ~@2 f#2@3 d#2@4 [c#3,f#3]@20 [f#3,b3]@33 [f#3,c4]@19 c#4 c#4@32, ~@15 f#2@53 ~@19 f#3@33]/5", // F#5 B5 F#dim
  W: "[~ [c#3,f#3]@19 ~ [f#3,b3]@32 c4 c4@19 [c#4,f#4]@3 [d#4,g#4]@3 [e4,a4,c#5]@4 c5 [a#4,b4] ~@3 [g#3,c#4]@3 [a#3,d#4]@3 [b3,e4,g#4]@6 [d#4,g4] ~@3 c3 ~@4 [f#3,b3]@2 a3 [e3,a3]@3 [c#3,f#3]@5, f#2@53 f#3@20 ~@47]/5", // F#5 B5 F#5 G#5 A Bmaj7 C#5 D#5 …
  X: "[~ [c#4,f#4]@3 [d#4,g#4]@3 [e4,a4]@4 g#4 g4@2 ~@2 c#4@3 [a#3,d#4]@3 [b3,e4]@4 ~@2 [f#3,b3]@3 ~@3 [e3,a3]@9 ~@5, ~@15 g#3@3 ~@4 g#4@2 ~@24]/2", // F#5 G#5 A5 D#5 E5 B5 A5
  Y: "[~ [c#4,f#4]@3 ~ [d#4,g#4]@2 ~ [a4,c#5]@4 [d#4,g4,g#4,b4,c5] ~@3 [g#3,c#4]@3 [a#3,d#4]@3 [b3,e4]@7 d#4 d4 ~@6 [f#3,b3]@3 [e3,a3]@3 [c#3,f#3]@3 ~@2, ~@7 e4@5 ~@36]/2", // F#5 G#5 A G#maj7 C#5 D#5 E5 B5 …
  Z: "~ [c#4,f#4]@3 [d#4,g#4]@3 [e4,a4]@4 d#4 [d4,f#4,g4,g#4] ~@3 c#4@3 [a#3,d#4]@3 [b3,e4,g#4]@2, ~@5 g#3 ~@2", // F#5 G#5 A5 Gmaj7 D#5 E
  AA: "~@4 [f#3,b3]@3 ~@3 [e3,a3]@10 ~@4", // B5 A5
  AB: "[~ [c#4,f#4]@3 [d#4,g#4]@3 [e4,a4,c#5]@4 c5 [a#4,b4] ~@3 [g#3,c#4]@3 [a#3,d#4]@3 [b3,e4,g#4]@6 [d#4,g4] ~@3 c3 ~@4 [f#3,b3]@2 a3 [e3,a3]@3 [c#3,f#3]@5]/2", // F#5 G#5 A Bmaj7 C#5 D#5 E D# …
  AC: "[~@4 [f#3,b3,d#4]@3 ~@5 d4@80 ~@4, ~@10 [d3,a3]@81 ~@5]/4", // B D5
})).s("gm_distortion_guitar").gain(0.19).pan(1)

// chords · distortion guitar · "Guitar 1" · soft notes
const distortion_guitar_soft = note(`<
  ~@28 A B C ~ D E ~ F ~ G ~ H ~@3 I ~ H ~@6 J ~@2 K L ~@3 A B C ~ D E ~ F ~@19 M ~@7 N O P ~ Q R ~ S N O P ~ Q R ~@6
>`.pickRestart({
  A: "~@11 [d4,d#4] ~@2 c#4 ~@9", B: "~@3 a#3 [a3,f#4] ~@19", C: "~@10 d#4 d4@2 ~@11", D: "~@11 d4 ~@9 g#4@3",
  E: "~@4 [a3,a#3] ~@19", F: "~@3 d4@3 ~@5 c#4@7 ~@6", G: "~@6 c#3 ~@5 c#3@2 ~@7 c#3@2 ~", H: "~@3 c#3@2 ~@19",
  I: "~@6 c#3@2 ~@4 c#3@2 ~@7 c#3@2 ~", J: "~@3 a#3@2 ~@7", K: "~@9 e5 f5@2 ~@11 f4", L: "~@18 b3 ~@5",
  M: "~@5 d#3 c3@2 ~@16", N: "~@12 [d4,d#4] ~@2 c#4 ~@8", O: "~@4 a#3 [a3,f#4] ~@18", P: "~@11 d#4 d4@2 ~@10",
  Q: "~@12 d4 ~@9 g#4@2", R: "~@5 a#3 a3 ~@17", S: "~@4 d4@3 ~@5 c#4@7 ~@5",
})).s("gm_distortion_guitar").gain(0.08).pan(1)

// other · overdriven guitar · "Guitar 2"
const overdriven_guitar = note("<~@40 A B C D E F@6 ~@17 G@4 H@3 ~@28 I@2 J K L@2 M N@5>".pickRestart({
  A: "~@7 a4@3 ~@6 f4@3 ~@5, ~@6 a3@4 ~@5 f3@4 ~@5",
  B: "[g3,g4]@5 ~@4 a2 d#4@3 ~@6 f4@3 ~@2, ~@9 d#3@4 ~@5 f3@4 ~@2, ~@19 b2 ~@4", // G
  C: "~@7 a4@4 ~@5 f4@4 ~@4, ~@6 a3@4 ~@5 f3@3 ~@6", D: "[g3,g4]@4 ~@5 [d#3,d#4]@4 ~@5 [f3,f4]@4 ~@2",
  E: "~@7 a4@3 ~@5 [f3,f4]@4 ~@5, ~@3 a3@2 ~@7", // F
  F: "[[g3,g4]@3 ~@7 [e3,e4]@8 ~ f4@8 [f#3,f#4] [g3,g4]@31 ~@2 d#4@8 ~ [e3,e4]@9 [e3,e4] [f3,f4] [f#3,f#4]@7 [f#3,f#4] [g3,g4] g#4@30 ~@24, ~@18 f3@9 ~ [b3,f#4] ~@31 d#3@9 ~@20 g#3@40 ~@15]/6", // G E F# G E F F# G …
  G: "[[g#3,g#4]@29 [c#4,c#5]@15 [d#4,d#5]@30 ~@7 [c#4,c#5]@7 [a#3,a#4]@8]/4", H: "[~@4 [g#3,g#4]@17 [c#3,c#4]@51]/3",
  I: "[~ f#5@2 ~ g#5@3 a5@6 ~@3 c#5@3 ~ d#5@2 e5@7 ~@2 f#4 ~@6 a4@5 ~@5]/2",
  J: "~@2 [f#5,g5]@2 ~ g#5@2 a5@5 ~@4 c#5@3 d#5@2 ~ e5@2", K: "~@5 b4@4 ~@2 a4@9 ~@4",
  L: "[~@2 f#5@3 g#5@2 ~ a5@6 ~@3 c#5@2 ~ d#5@3 e5@7 ~@7 a#4@5 ~ [f#4,g4,a4] ~@4, ~@37 c5 ~@10]/2", // F#m
  M: "~@2 f#5@2 ~ g#5@2 a5@5 ~@4 c#5@3 d#5@2 ~ e5@2", N: "[~@4 a4@5 ~@2 a4@86 ~@23]/5",
})).s("gm_overdriven_guitar").gain(0.2).pan(0.4)

// chords · distortion guitar · "Guitar 3"
const distortion_guitar_2 = note(`<
  ~@28 A@2 B C@2 D@3 A@2 B C@2 E@2 C@2 F ~@14 A@2 B C@2 D@3 ~@27 G@2 H I@2 J@3 G@2 H I@2 K@6 ~
>`.pickRestart({
  A: "[[f#2,c#3] [f#2,c#3,f#3] [f#2,c#3]!3 c#3!2 [c#3,f#3] [c#3,f#3] c#3 [f#2,c#3] [f#2,c#3,f#3]!5, ~@5 f#2@2 f#2@3 ~@6, ~@9 f#3@2 ~@5]/2", // F#5
  B: "[c#3,f#3]!2 [f#2,c#3]!2 [f#2,c#3,f#3] [f#2,c#3]!3, f#2 ~@3", // F#5
  C: "[[f#2,c#3]!3 c#3!2 [f#2,c#3]!2 c#3 [c#3,f#3] c#3!2 [f#2,c#3]!5, f#3@5 ~@5 f#3@2 f#3@2 ~@2, ~@3 f#2@2 ~@2 f#2@2 f#2@2 ~@5]/2", // F#5
  D: "[[f#2,c#3,f#3]@3 [f#2,c#3]@3 [f#2,c#3]@3 [f#2,c#3]@3 [f#2,c#3]@3 [f#2,c#3]@3 [f#2,c#3]@3 c#3@3 c#3@3 c#3@3 c#3@3 [f#2,c#3]@3 [f#2,c#3]@3 [f#2,c#3]@3 [f#2,c#3]@3 [c#3,f#3]@3 ~@3 [f#2,c#3,f#3]@2 ~@4 [f#2,c#3,f#3]@8 ~@7, ~ f#3@2 ~ f#3@4 ~@16, ~@7 f#2@2 f#2@2 ~@4 f#2@2 ~@7]/3", // F#5
  E: "[[f#2,c#3,f#3] [f#2,c#3]!6 c#3 c#3!3 [f#2,c#3]!4 [f#2,c#3,f#3], ~ f#3@2 ~ f#3@4 ~@8, ~@7 f#2@2 f#2@2 ~@5]/2", // F#5
  F: "[f#2,c#3,f#3] [f#2,c#3]!2 ~@5, ~ f#3@2 ~@5", // F#5
  G: "[~ [f#2,c#3]@3 [f#2,c#3,f#3]@3 [f#2,c#3]@3 [f#2,c#3]@3 [f#2,c#3]@3 c#3@3 c#3@3 [c#3,f#3]@3 [c#3,f#3]@3 c#3@3 [f#2,c#3]@3 [f#2,c#3,f#3]@3 [f#2,c#3,f#3]@3 [f#2,c#3,f#3]@3 [f#2,c#3,f#3]@3 [f#2,c#3,f#3]@2, ~@16 f#2@6 f#2@9 ~@17, ~@14 f#3@3 ~@7]/2", // F#5
  H: "~ [c#3,f#3]@3 [c#3,f#3]@3 [f#2,c#3]@3 [f#2,c#3]@3 [f#2,c#3,f#3]@3 [f#2,c#3]@3 [f#2,c#3]@3 [f#2,c#3]@2, ~ f#2@6 ~@17", // F#5
  I: "[~ [f#2,c#3]@3 [f#2,c#3]@3 [f#2,c#3]@3 c#3@3 c#3@3 [f#2,c#3]@3 [f#2,c#3]@3 c#3@3 [c#3,f#3]@3 c#3@3 c#3@3 [f#2,c#3]@3 [f#2,c#3]@3 [f#2,c#3]@3 [f#2,c#3]@3 [f#2,c#3]@2, ~ f#3@15 ~@15 f#3@6 f#3@6 ~@5, ~@5 f#2@3 ~@3 f#2@3 f#2@3 ~@7]/2", // F#5
  J: "[~ [f#2,c#3,f#3]@3 [f#2,c#3]@3 [f#2,c#3]@3 [f#2,c#3]@3 [f#2,c#3]@3 [f#2,c#3]@3 [f#2,c#3]@3 c#3@3 c#3@3 c#3@3 c#3@3 [f#2,c#3]@3 [f#2,c#3]@3 [f#2,c#3]@3 [f#2,c#3]@3 [c#3,f#3]@3 ~@3 [f#2,c#3,f#3]@2 ~@4 [f#2,c#3,f#3]@8 ~@6, ~@4 f#3@6 ~@3 f#3@12 ~@47, ~@11 f#2@3 f#2@3 ~@6 f#2@3 ~@10]/3", // F#5
  K: "[~ [f#2,c#3,f#3]@3 [f#2,c#3]@3 [f#2,c#3]@3 [f#2,c#3]@3 [f#2,c#3]@3 [f#2,c#3]@3 [f#2,c#3]@3 c#3@3 c#3@3 c#3@3 c#3@3 [f#2,c#3]@3 [f#2,c#3]@3 [f#2,c#3]@3 [f#2,c#3]@3 [c#3,f#3]@3 ~@3 [f#2,b2,f#3]@2 ~@4 [a2,d3,a3]@85 ~, ~@4 f#3@6 ~@3 f#3@12 ~@119, ~@11 f#2@3 f#2@3 ~@6 f#2@3 ~@46]/6", // F#5 B5 D5
})).s("gm_distortion_guitar").gain(0.22).pan(0.3)

// chords · distortion guitar · "Guitar 3" · soft notes
const distortion_guitar_soft_2 = note(`<
  ~@28 A ~ B C D E F ~ A ~ B C D E F C D ~@15 A ~ B C D E F ~@28 G ~ H I J K L ~ G ~ H I J K L ~@5
>`.pickRestart({
  A: "f#3 ~ f#3!5 ~", B: "~@2 f#3!2 ~ f#3!3", C: "~@5 f#3 f#3@2", D: "~ f#3 ~@4 f#3@2", E: "~@3 f#3 ~@4",
  F: "f#3 f#3@5 f#3 ~", G: "~ f#3@3 ~@3 f#3@3 f#3@3 f#3@3 f#3@3 f#3@3 ~@2", H: "~@7 f#3@3 f#3@3 ~@3 f#3@3 f#3@3 f#3@2",
  I: "~@16 f#3@3 f#3@5", J: "~@4 f#3@3 ~@12 f#3@5", K: "~@10 f#3@3 ~@11", L: "~ f#3@3 f#3@15 f#3@3 ~@2",
})).s("gm_distortion_guitar").gain(0.15).pan(0.3)

// chords · overdriven guitar · "Guitar 4"
const overdriven_guitar_2 = note("<~@19 A@8 B ~@17 C@6 D E F G H I@4 ~@27 J@5 K@2 L ~@20>".pickRestart({
  A: "[~@23 b3@4 a3 [d#3,f#3] ~ f#2@3 ~ d#2@4 [f#2,c#3,f#3]@12 ~ [f#2,c#3] ~@2 [f#2,c#3] ~@2 [f#2,b2]@26 ~ [f#2,b2] ~@2 [f#2,b2] ~@2 [f#2,c3]@14 [f#2,c3] ~@2 [f#2,c3] ~@2 [f#2,c#3]@26 ~ [f#2,c#3] ~@2 [f#2,c#3] ~@2 [f#2,c#3]@20 [f#2,b2]@26 ~ [f#2,b2] ~, ~@29 c3@2 ~@112 f#3@15 ~@34]/8", // D#m F#5 B5 F#dim F#5 B5
  B: "~ [f#2,b2] ~@2 [f#2,c3]@20", // B5 F#dim
  C: "[~@10 [f#2,c#3,f#3]@9 [f#2,f#3]@8 [f#2,f#3]@33 [f#2,c#3,f#3]@9 [f#2,c#3,f#3]@9 [f#2,c#3,f#3]@9 f#3@39 [f#3,b3,d#4]@2 ~ [f#3,b3,d#4] ~@2 [f#3,b3,d#4] ~@2 [f#3,b3,d#4] ~@2 [f#3,b3,d#4] ~@2 [f#3,b3,d#4] ~@2, ~@19 c#3@41 ~@27 [f#2,c#3]@44 ~@13]/6", // F#5 F# F#5 B F#5
  D: "[f#3,b3,d#4] ~@5 [f#3,b3,d#4]@2 ~@4 [f#3,b3,d#4] ~@2 [f#3,b3,d#4] ~@2 [f#3,b3,d#4]@2 ~@4", // B
  E: "~@6 [f#3,a#3,c#4] ~@2 [f#3,a#3,c#4] ~@2 [f#3,a#3,c#4] ~@2 [f#3,a#3,c#4] ~@2 [f#3,a#3,c#4] ~@2 [f#3,a#3,c#4] ~@2", // F#
  F: "[f#3,a#3,c#4] ~@2 [f#3,a#3,c#4] ~@2 [c#4,f#4] ~@2 [c#4,f#4]@2 ~@7 [c#4,f#4] ~@2 [c#4,f#4] ~@2", // F# F#5
  G: "~@6 [g#3,c#4,f4]@2 ~ [g#3,c#4,f4] ~@2 [g#3,c#4,f4] ~@2 [g#3,c#4,f4]@2 ~ [g#4,c#5]@3 ~@3", // C# C#5
  H: "[f#4,a#4]@3 ~@3 [e4,g#4]@3 ~@3 c#4@6 g#3@2 ~ g#3@2 ~", // F# E
  I: "[[d#3,a#3,d#4]@12 d#4 ~@2 [d#3,a#3,d#4] ~@2 [e3,b3,e4]@78]/4", // D#5 E5
  J: "[b3@4 a3 [d#3,f#3] ~ f#2@3 ~ d#2@4 [f#2,c#3,f#3]@12 ~ [f#2,c#3] ~@2 [f#2,c#3] ~@2 [f#2,b2]@26 ~ [f#2,b2] ~@2 [f#2,b2] ~@2 [f#2,c3]@14 [f#2,c3] ~@2 [f#2,c3] ~@2 [f#2,c#3]@26 ~ [f#2,c#3] ~@2 [f#2,c#3] ~@2, ~@3 c3 ~@56]/5", // D#m F#5 B5 F#dim F#5
  K: "[[f#2,c#3]@20 [f#2,b2]@26 ~ [f#2,b2], f#3@5 ~@11]/2", L: "~@2 [f#2,b2] ~@2 [f#2,c3]@19",
})).s("gm_overdriven_guitar").gain(0.22).pan(0.3)

// chords · acoustic guitar steel · "Guitar 5"
const acoustic_guitar_steel = note("<A@7 B@3 C@8 D@3 ~@47 E@6 F@5 G@6 H@3 ~@27>".pickRestart({
  A: "[~@23 [f#3,a#3,c#4]@12 ~@10 c#3@7 ~@8 g#3@4 ~@3 c#4@7 g#3@4 f#3@4 ~@7 f#3@8 f#3@6 ~ f#3@4 f#3 ~@10 c#4@7 ~@7 g#3@7 ~ f#4@11 ~@14 a#3@2, ~@23 f#4@30 ~@59 f4@23 ~@20 f#4@13, ~@23 f#2@24 ~@6 a#2@24 ~@5 [b2,d#4]@27 ~@3 c#3@27 ~@2 [f#2,c#3,c#4]@27, ~@23 c#3@14 f#3@10 ~@5 f3@24 ~@21 [d#3,b3]@12 ~@32 f#3@18 ~@4 f#3@5, ~@37 [a#3,c#4]@17 ~@10 g#3@10 ~@52 d4@15 ~@27]/7", // F# B F#5 G#m A#m
  B: "[~@9 g#3@7 ~ g#3@6 ~ g#3@6 ~@27 a#3@4 ~@7 c#4@4, ~@2 a#2@28 ~@2 b2@25 ~@4 [c#3,f4]@11, ~@2 f3@13 ~ f3@15 ~@8 f#3@10 ~@5 f#3@7 ~@4 g#3@7, ~@17 c#4@10 ~@19 d#4@11 ~@15]/3", // C#
  C: "[g#3@4 ~@3 g#3@4 g#3@4 f#3@3 [f#2,c#3,f#3,c#4,f#4]@14 ~ f#3@6 ~@31 g#3@4 a#3@3 ~@8 f#3@7 ~@7 b3@4 a#3@4 g#3@7 ~@7 d#4@7 g#3@6 ~@24 c#3@34, ~@4 d4@8 ~@21 [f#2,c#3,f#4]@13 ~@2 [a#2,f3]@27 ~@2 b2@25 ~@5 g#2@24 ~@5 f4@10 ~@4 f4@42, ~@33 c#4@11 a#3@18 f4@12 ~@18 d#4@5 ~@38 c#4@8 ~@3 c#4@46, ~@40 f#3@6 ~@9 g#3@10 ~@30 f#3@7 ~@5 d#3@26 ~@2 c#3@19 ~@38, ~@59 c#4@6 ~@27 b3@7 ~@15 g#3@13 ~@8 g#3@6 ~@2 g#3@49]/8", // F#5 A#5
  D: "[~@3 d#4@2 ~ d#4@4 e4@22 ~@4 d#4@3 e4@23 ~@10, ~@3 [c#3,g#3,c#4]@29 [c#3,g#3,c#4]@29 ~@11]/3", // C#5
  E: "[[f#2,c#3,f#3,c#4,f#4]@15 ~ [f#2,c#3]@10 ~@19 c#4@13 d#4@8 f#3@7 d#4@8 f#3@7 ~@11 g#3@4 ~@7 g#3@4 c#3@3 ~ f#3@6 ~ f#3@5 ~@3 f#3@7 f#3@2 ~ f#3, ~@15 f#4@13 ~@9 g#3@20 ~@31 f4@7 ~ c#4@5 ~@2 d4@11 ~@30, ~@16 c#4@14 a#2@18 ~@10 b2@30 c#3@26 ~@4 [f#2,c#3,c#4,f#4]@15 [f#2,c#3,c#4,f#4]@11, ~@16 f#3@8 ~@6 f3@24 ~@38 g#3@7 ~@45]/6", // F#5
  F: "[~@5 g#3@5 ~@15 g#3@6 ~@9 f#3@7 f#3@7 f#3@4 a#3@2 ~@16 d4@8 ~@3 c#4@4 c#4@15 f#4@4 ~@7 a#3@3, ~@3 a#2@28 ~@2 b2@24 ~@5 c#3@29 [f#2,c#3]@29, ~@4 f3@27 ~@34 g#3@7 g#3@11 ~ g#3@5 ~@2 f#3@20 ~@3 f#3@6, ~@11 g#3@12 ~@24 [b3,d#4]@9 ~@13 c#4@5 ~@36 c#4@7 ~@3, ~@18 c#4@11 ~@4 d#4@14 ~@15 f4@7 ~@51]/5", // F#5 B
  G: "[~@15 c#4@4 g#3@4 f3@4 ~@25 f#3@4 a#3@4 d#3@7 ~@8 d#4@7 g#3@4 f#3@2 ~ g#3@11 ~@11 c#3@33, ~ a#2@26 ~@4 b2@26 ~@3 g#2@24 ~@20 g#3@39 ~, ~@8 f3@6 ~@13 f#3@25 ~@15 g#3@8 ~@25 c#4@43 ~, ~@12 g#3@5 ~@28 d#4@11 ~@15 d#3@14 ~@4 c#3@17 ~@38]/6",
  H: "[~@4 d#4@2 ~ d#4@4 e4@22 ~@4 d#4@3 e4@23 ~@9, ~@4 [c#3,g#3,c#4]@29 [c#3,g#3,c#4]@29 ~@10]/3", // C#5
})).s("gm_acoustic_guitar_steel").gain(0.13).pan(0.7)
// … 91 more lines

More by Paul McCartney