Strudelify
Hope of Deliverance cover art

1993 · Off The Ground

Hope of Deliverance

McCartney

KeyA minorTempo124 bpm
0:00/0:00
// Hope of Deliverance — McCartney
// 124 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 131 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.

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  ~@4 A B C D A B C E F G H I J K L M N O A P Q R F S T G U V W X Y Z AA AB AC W AD AE X AF AG@2 L P L K AH P N AI AJ AK
  N AL F G AM AN AO AP AQ AR AS AG W AT AQ AU AV AR Y AA AW AH AX AY S AH B AY AZ BA BB BC BD AK BE AE AR Y BF AG AE BG
  BH BI BJ BK Y AW W BG BL BM BH X AF AG BN AH B A BO BP BQ BR P L P L BQ AJ P BS BT BU@2
>`.pickRestart({
  A: "c3@6 e2@6 g2@3 ~", B: "a2@5 ~ c3@6 a2@3 ~", C: "d3@5 ~ f3@6 a3@4", D: "d3@4 ~@2 d3@7 ~@3", E: "d3@6 f2@6 a2@3 ~",
  F: "d3@5 ~ a2@5 ~ c3@3 ~", G: "d3@5 ~ d3@8 ~@2", H: "c3@5 ~ e3@6 g3@2 ~@2", I: "a2@5 ~ a2@5 ~ g2@3 ~",
  J: "c3@5 ~ e3@6 g3@4", K: "a2@3 ~", L: "c3@5 ~ e2@5 ~ g2@3 ~", M: "a2@5 ~ c3@5 ~ e3@3 ~", N: "d3@5 ~ f3@6 a3@3 ~",
  O: "d3@5 ~ d3@7 ~@3", P: "a2@5 ~ c3@6 e3@3 ~", Q: "d3@2 ~ f3@3 a3@2", R: "d3@5 ~ d3@6 a2@3 ~", S: "d3@2 ~ d3@4 ~",
  T: "a2@2 ~ a2@2 g2 a2@2", U: "a2@5 ~ a2@4 g2@2 a2@4", V: "d3@5 ~ d3@4 c3 ~ d3@3 ~", W: "f3@5 ~ f3@10",
  X: "e3@5 ~ e3@9 ~", Y: "d3@5 ~ d3@10", Z: "c3@5 ~ c3@10", AA: "c3@4 ~@2 c3@9 ~", AB: "f3@2 ~ f3@5",
  AC: "a2@4 ~@2 a2@9 ~", AD: "a2@5 ~ a2@9 ~", AE: "f3@5 ~ f3@9 ~", AF: "d3@5 ~ d3@9 ~", AG: "c3@5 ~ c3@8 ~@2",
  AH: "c3@5 ~ e2@6 g2@3 ~", AI: "d3@3 ~@3 d3@7 ~@3", AJ: "c3@6 e2@5 ~ g2@3 ~", AK: "a2@3 c3@3 a2@2",
  AL: "d3@6 a2@5 ~ c3@3 ~", AM: "a2@5 ~ a2@5 ~ a2@3 ~", AN: "d3@5 ~ a2@5 ~ d3@4", AO: "a2@4 ~@2 a2@4 g2@2 a2@3 ~",
  AP: "d3@5 ~ a2@4 c3@2 d3@3 ~", AQ: "f3@5 ~ f3@6 f3@4", AR: "e3@5 ~ e3@10", AS: "d3@5 ~ d3@5 ~ d3@4",
  AT: "a2@2 ~ a2@5", AU: "a2@4 ~@2 a2@5 ~ a2@4", AV: "f3@6 f3@5 ~ f3@4", AW: "c3@3 ~@3 c3@8 ~@2",
  AX: "a2@5 ~ c3@6 a2@2 ~@2", AY: "d3@3 f3@3 a3@2", AZ: "d3@2 ~ a2@3 c3 ~", BA: "d3@5 ~ a2@6 c3@2 ~@2",
  BB: "d3@3 a2@3 d3@2", BC: "a2@5 ~ c3@5 ~ a2@3 ~", BD: "d3@5 ~ d3@4 a2@2 d3@4", BE: "d3@5 ~ d3@5 ~ d3@2 ~@2",
  BF: "c3@5 ~ c3@5 ~ c3@2 ~@2", BG: "a2@4 ~@2 a2@6 c3@2 a2 ~", BH: "f3@5 ~ f3@7 ~ f3@2", BI: "a2@5 ~ a2@6 c3@2 a2@2",
  BJ: "f3@5 ~ f3@5 ~ f3@4", BK: "e3@5 ~ e3@5 ~ e3@4", BL: "f3@5 ~ f3@8 e3@2", BM: "a2@5 ~ a2@3 ~ a2 ~ c3@2 a2 ~",
  BN: "c3@5 ~ c3@5 ~ c3@3 ~", BO: "a2@6 c3@6 e3@3 ~", BP: "c3@6 e2@5 ~ g2@2 ~@2", BQ: "a2@5 ~ c3@3 ~ c3@2 e3@3 ~",
  BR: "c3@4 ~@2 e2@5 ~ g2@3 ~", BS: "c3@5 ~ e3@6 g3@3 ~", BT: "a2@5 ~ c3@3 ~ c3 ~ e3@3 ~", BU: "[c3@27 ~@5]/2",
})).s("gm_acoustic_bass").gain(0.28)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note("<~@76 A B C D E B C F G H I J K L M N O@2 P Q N R S T U V W X ~@27>".pickRestart({
  A: "~@2 [e4,g4]@2 [f4,a4]@2 [g4,b4]@2 [a4,c5] ~ [b4,d5]@2 [c5,e5]@2 [d5,f5] ~", B: "[c5,e5]@5 [d5,f5]@2 [e5,g5]",
  C: "[a4,c5]@5 [b4,d5]@2 [c5,e5]", D: "[f4,a4]",
  E: "~@2 [e4,g4]@2 [f4,a4]@2 [e4,g4]@2 [f4,a4]@2 [e4,g4]@2 [d4,f4] ~ [c4,e4] ~", F: "[f4,a4]@5 [g4,b4]@2 [a4,c5]",
  G: "~@14 [a3,d4] c4", H: "[d4,f4]@5 ~ [e4,g4]@5 ~ [f4,a4]@4", I: "~@2 [g4,c5]@5 ~ [a4,d5]@4 [c5,e5]@2 [d5,f5]@2",
  J: "[c5,e5]@7 ~", K: "~@8 [d5,f5]@3 [c5,e5]@3 [b4,d5]@2", L: "~ [a4,c5]@12 ~@3",
  M: "~@8 [c5,e5]@3 ~ [d5,f5]@2 [e5,g5] ~", N: "[f5,a5]@7 ~ [f5,a5]@5 ~ [f5,a5]@2",
  O: "[[e5,g5]@2 [d5,f5]@2 [c5,e5]@4 [a4,c5]@2 [c5,e5]@3 ~ [d5,f5]@7 ~ [d5,f5]@4 [e5,g5]@3 ~ [d5,f5]@2]/2", // Em Dm C Am C Dm Em Dm
  P: "~ [c5,e5]@7", Q: "~@2 [c5,e5]@4 ~@2 [c5,e5]@3 ~ [c5,e5]@2 ~@2", R: "[e5,g5]@2 [d5,f5]@2 [c5,e5]@9 ~@3",
  S: "[f5,a5]@7 ~ [g5,b5]@5 ~ [f5,a5]@2", T: "[e5,g5]@2 [d5,f5] ~ [c5,e5]@9 ~@3",
  U: "[f5,a5]@7 ~ [f5,a5]@4 ~@2 [f5,a5]@2", V: "[e5,g5] ~ [d5,f5] ~ [c5,e5]@3 ~ [a4,c5]@2 [c5,e5]@3 ~ [d5,f5]@2",
  W: "[d5,f5]@5 ~ [d5,f5]@5 ~ [e5,g5]@2 [d5,f5]@2", X: "~@2 [c5,e5]@9 ~@5",
})).s("gm_acoustic_guitar_steel").gain(0.32)

// chords · string ensemble 2 · "STRINGS"
const string_ensemble_2 = note(`<
  ~@18 A B C@2 A B D@4 E F E F G H I@3 J K J E L H M@3 N@2 O@2 A P Q@2 R S T@4 E U E U G H V@2 J K J K J H W@3 X@4 Y@6 E
  U K U Z H AA@3 L K J E G H AB@2 AC E L E J H AD AE@2 AF@2 AG@2 AF@2 AH@2 AI@4 AG@2 AI@2 AJ@2
>`.pickRestart({
  A: "[g3,c4,e4]@7 ~", B: "[d4,f4]@2 [c4,e4]@5 ~, a3@7 ~", C: "[[d4,g4]@2 ~@2 d4@11 ~, a3@29 ~@3, ~@2 [c4,f4]@13 ~]/2",
  D: "[[a3,d4,g4]@5 ~ [a3,d4,f4]@57 ~, ~@3 c4@13 ~@16]/4", E: "[a3,c4,e4]@15 ~", F: "[a3,d4,f4]@7 ~",
  G: "[f3,a3,c4,f4]@15 ~", H: "[e3,a3,c4,e4]@15 ~", I: "[[d3,d4]@16 c4@29 ~@3, [f3,a3]@15 ~]/3", J: "[a3,c4,f4]@15 ~",
  K: "[a3,c4,e4]@7 ~", L: "[a3,c4,f4]@7 ~", M: "[[d3,d4]@8 c4@15 ~, [f3,a3]@23 ~]/3",
  N: "[g3@15 ~ a3@14 ~@2, [c4,e4]@31 ~]/2", O: "[g3@7 ~ a3@3 ~@5, [c4,e4]@11 ~@5]/2",
  P: "[d4,f4]@4 [c4,e4]@9 ~@3, a3@3 ~", Q: "[g4@3 ~ [c4,f4]@27 ~, [a3,d4]@31 ~]/2", R: "[g3,c4,e4]@15 ~",
  S: "[d4,f4]@4 [c4,e4]@11 ~, a3@7 ~", T: "[g4@5 ~ f4@57 ~, [a3,d4]@63 ~, ~@6 c4@27 ~@31]/4", U: "[a3,d4,f4]@15 ~",
  V: "[[d3,d4]@8 c4@7 ~, f3, a3@15 ~, ~@2 c3 ~]/2", W: "[[d3,d4] c3@2, [f3,a3]@23 ~, ~@8 c4@15 ~]/3",
  X: "[g3@14 ~@18 [d4,f4]@31 ~, [c4,e4]@15 ~@17, ~@8 a3@23 ~]/4", // Dm C
  Y: "[g3@15 ~@17 [d4,f4]@63 ~, [c4,e4] ~@2, ~@16 a3@79 ~]/6", Z: "[f3,a3,c4,f4]@7 ~",
  AA: "[[d3,d4]@16 c4@29 ~@3, [f3,a3]@15 ~, ~@8 c3@9 ~@7]/3", AB: "[[d3,d4]@16 [c3,c4]@13 ~@3, [f3,a3]@7 ~]/2",
  AC: "[f3,a3,c4,f4]", AD: "[d3,f3,a3,d4]", AE: "[[f3,a3,c4]@15 ~, c3]/2", AF: "[g3@7 ~ a3@7 ~, [c4,e4]@31 ~]/2",
  AG: "[g3@15 ~ a3@14 ~@2, [c4,e4]@15 ~]/2", AH: "[g3@15 ~ a3@13 ~@3, [c4,e4]@29 ~@3]/2",
  AI: "[g3@7 ~ a3@7 ~, [c4,e4]@15 ~]/2", AJ: "[[c3,g3,c4,e4]@9 ~@7]/2",
})).s("gm_string_ensemble_2").gain(0.2)

// chords · acoustic guitar nylon · "A.GUITAR"
const acoustic_guitar_nylon = note(`<
  A B A C D E F@2 A E G@2 H I A B A J A K L H D B M H I N O H P H Q R H S T U B V E W E H X Y Z B AA AB AC AD AE AF D AG
  AH AI H I AJ I P H AK E H AL AM AN AO E AP AQ AR Y AS A R AT AU AV AW AX AY AZ I BA I BB BC W E BD BE BF BG R BH B BI
  BJ BK BL BM BN BO E BP BQ BR BS BT A B BU BV BW P BX BY BZ CA CB AN CC CD CE CF CG@2
>`.pickRestart({
  A: "[g3,c4,e4,g4,c5,e5]@3 ~ [g3,c4,e4,g4,c5,e5] ~ [g3,c4,e4,g4,c5,e5]@3 ~ [g3,c4,e4,g4,c5,e5] ~ [g3,c4,e4,g4,c5,e5]@3 ~", // C
  B: "[a3,c4,e4,a4,c5,e5]@3 ~ [a3,c4,e4,a4,c5,e5] ~ [a3,c4,e4,a4,c5,e5]@3 ~ [a3,c4,e4,a4,c5,e5] ~ [a3,c4,e4,a4,c5,e5] ~ [a3,c4,e4,a4,c5,e5] ~", // Am
  C: "[a3,c4,e4,a4,c5,e5]@13 ~@3", // Am
  D: "[g3,c4,e4,g4,c5,e5]@3 ~ [g3,c4,e4,g4,c5,e5] ~ [g3,c4,e4,g4,c5,e5]@3 ~ [g3,c4,e4,g4,c5,e5] ~ [g3,c4,e4,g4,c5,e5] ~ [g3,c4,e4,g4,c5,e5] ~", // C
  E: "[a3,c4,e4,a4,c5,e5]@3 ~ [a3,c4,e4,a4,c5,e5] ~ [a3,c4,e4,a4,c5,e5]@3 ~ [a3,c4,e4,a4,c5,e5] ~ [a3,c4,e4,a4,c5,e5]@3 ~", // Am
  F: "[a3,d4,f4,a4,d5,f5]@3 ~ [a3,d4,f4,a4,d5,f5] ~ [a3,d4,f4,a4,d5,f5]@3 ~ [a3,d4,f4,a4,d5,f5] ~ [a3,d4,f4,a4,d5,f5]@3 ~", // Dm
  G: "[a3,d4,a4,d5,f5]@3 ~ [a3,d4,a4,d5,f5] ~ [a3,d4,a4,d5,f5]@3 ~ [a3,d4,a4,d5,f5] ~ [a3,d4,a4,d5,f5]@2 ~@2", // Dm
  H: "[a3,d4,a4,d5,f5]@3 ~ [a3,d4,a4,d5,f5] ~ [a3,d4,a4,d5,f5]@3 ~ [a3,d4,a4,d5,f5] ~ [a3,d4,a4,d5,f5]@3 ~", // Dm
  I: "[a3,d4,a4,d5,f5]@3 ~ [a3,d4,a4,d5,f5] ~ [a3,d4,a4,d5,f5]@3 ~ [a3,d4,a4,d5,f5] ~ [a3,d4,a4,d5,f5] ~ [a3,d4,a4,d5,f5] ~", // Dm
  J: "[c4,e4,a4,c5,e5]@7 ~, a3@3 ~", // Am
  K: "[a3,c4,e4,a4,c5,e5]@3 ~ [a3,c4,e4,a4,c5,e5] ~ [a3,c4,e4,a4,c5,e5]@3 ~ [a3,c4,e4,a4,c5,e5] ~ [a3,c4,e4,e5]@2 [a4,c5,e5] ~, ~@12 [a4,c5] ~@3", // Am
  L: "[a3,d4,a4,d5,g5]@3 ~ [d4,a4,d5,g5] ~ [a3,d4,a4,d5,f5]@3 ~ [a3,d4,a4,d5,f5] ~ [a3,d4,a4,d5,f5]@3 ~", // Dsus4 Dm
  M: "[a3,d4,a4,d5,g5]@3 ~ [a3,d4,a4,d5,f5] ~ [a3,d4,a4,d5,f5]@3 ~ [a3,d4,a4,d5,f5] ~ [a3,d4,a4,d5,f5] ~ [a3,d4,a4,d5,f5] ~", // Dsus4 Dm
  N: "[a3,d4,d5] ~ [a3,d4,d5] ~ [a3,d4,a4,d5,f5] ~ [a3,d4,a4,d5,f5]@3 ~ [a3,d4,a4,d5,f5] ~ [a3,d4,a4,d5,f5] ~ [a3,d4,a4,d5,f5] ~, [a4,f5] ~@7", // D5 Dm
  O: "[a3,e4,a4,c5,e5]@3 ~ [a3,e4,a4,c5,e5] ~ [a3,e4,a4,c5,e5]@3 ~ [a3,e4,a4,c5,e5] ~ [a3,e4,a4]@2 [c5,e5] ~, ~@12 [c5,e5] ~@3", // Am A5 C
  P: "[a3,e4,a4,c5,e5]@3 ~ [a3,e4,a4,c5,e5] ~ [a3,e4,a4,c5,e5]@3 ~ [a3,e4,a4,c5,e5] ~ [a3,e4,a4,c5,e5] ~ [a3,e4,a4,c5,e5] ~", // Am
  Q: "[a3,c4,f4,a4,c5,f5]@3 ~ [a3,c4,f4,a4,c5,f5] ~ [a3,c4,f4]@4 [a4,c5,f5] ~ [a3,c4,f4,a4,c5,f5]@3 ~, ~@6 [a4,c5,f5]@3 ~@7", // F
  R: "[a3,c4,e4,a4,c5,e5]@3 ~ [c4,e4,a4,c5,e5] ~ [a3,c4,e4,a4,c5,e5]@3 ~ [a3,c4,e4,a4,c5,e5] ~ [a3,c4,e4,a4,c5,e5]@3 ~", // Am
  S: "[a3,c4,a4,c5,f5]@3 ~ [c4,a4,c5,f5] ~ [a3,c4,a4,c5,f5]@3 ~ [a3,c4,a4,c5,f5] ~ [a3,c4,a4,c5,f5]@3 ~", // F
  T: "[a3,c4,a4,c5,f5]@3 ~ [a3,c4,a4,c5,f5] ~ [a3,c4,a4,c5,f5]@3 ~ [a3,c4,a4,c5,f5] ~ [a4,c5,f5] ~ [a4,c5,f5] ~, ~@6 [a3,c4] ~", // F Am
  U: "[a3,c4,f4]@4 [a4,c5,f5] ~ [a3,c4,f4,a4,c5,f5]@3 ~ [a3,c4,f4,a4,c5,f5] ~ [a3,c4,f4,a4,c5,f5]@3 ~, [a4,c5,f5] ~@7", // F
  V: "[a3,c4,f4,a4,c5,f5]@3 ~ [a3,c4,f4,a4,c5,f5] ~ [a3,c4,f4,a4,c5,f5]@3 ~ [a3,c4,f4,a4,c5,f5] ~ [a3,c4,f4,a4,f5]@2 c5 ~, ~@12 c5 ~@3", // F
  W: "[a3,c4,f4,a4,c5,f5]@3 ~ [a3,c4,f4,a4,c5,f5] ~ [a3,c4,f4,a4,c5,f5]@3 ~ [a3,c4,f4,a4,c5,f5] ~ [a3,c4,f4,a4,c5,f5]@3 ~", // F
  X: "[a3,c4,a4,c5,f5]@3 ~ [a3,c4,a4,c5,f5] ~ [a3,c4,a4,c5,f5]@3 ~ [a3,c4,a4,c5,f5] ~ [a3,c4,a4,c5,f5] ~ [c4,a4,c5,f5] ~", // F
  Y: "[a3,c4,a4,c5,f5]@3 ~ [a3,c4,a4,c5,f5] ~ [a3,c4,a4,c5,f5]@3 ~ [a3,c4,a4,c5,f5] ~ [a3,c4,a4,c5,f5]@3 ~", // F
  Z: "[g3,c4,e4,g4,c5,e5]@3 ~ [g3,c4,e4,g4,c5,e5] ~ [g3,c4,e4,g4,c5,e5]@3 ~ [c4,e4,g4,c5,e5] ~ [g3,c4,e4,g4,c5,e5]@3 ~", // C
  AA: "[g3,c4,e4,g4,c5,e5]@3 ~ [g3,c4,e4,g4,c5,e5] ~ [g3,c4,e4,g4,c5,e5]@3 ~ [g3,c4,e4,g4,c5,e5] ~ [c4,e4,g4,c5,e5]@3 ~, [f3,d4] ~@11 g3 ~@3", // C Dm
  AB: "[a3,e4,a4,c5,e5]@7 ~", // Am
  AC: "[g3,c4,e4,g4,c5,e5]@3 ~ [c4,g4,c5,e5] ~ [g3,c4,e4,g4,c5,e5]@3 ~ [g3,c4,e4,g4,c5,e5] ~ [g3,c4,e4,g4,c5,e5]@2 c5 ~", // C
  AD: "[a3,c4,e4,a4,c5,e5]@3 ~ [c4,e4,a4,c5,e5] ~ [a3,c4,e4,a4,c5,e5]@3 ~ [a3,c4,e4,a4,c5,e5] ~ [a3,c4,e4,a4,c5,e5]@3 ~, ~@12 d5 ~@3", // Am
  AE: "[a3,d4,a4,d5,g5]@3 ~ [a3,d4,a4,d5,f5] ~ [a3,d4,a4,d5,f5]@3 ~ [a3,d4,f4,a4,d5,f5] ~ [a3,f4,a4,d5,f5]@2 ~@2", // Dsus4 Dm
  AF: "[a3,d4,a4,d5,f5]@3 ~ [a3,d4,a4,d5,f5] ~ [a3,d4,a4,d5,f5]@3 ~ [a3,d4,a4,d5,f5] ~ [a3,d4,a4]@2 [d5,f5] ~, ~@12 [d5,f5] ~@3", // Dm D5 Dm
  AG: "[a3,e4,a4,c5,e5]@3 ~ [a3,e4,a4,c5,e5] ~ [a3,e4,a4,c5,e5]@3 ~ [a3,e4,a4,c5,e5] ~ [a3,e4,a4,c5,e5]@3 ~, c4 ~@5 c#4 ~@9", // Am
  AH: "[a3,d4,a4,d5,g5]@3 ~ [a3,d4,a4,d5,f5] ~ [a3,d4,a4,d5,f5]@3 ~ [d5,f5] ~ [a3,d4,a4,d5,f5] ~ [a3,d4,a4,d5,f5] ~", // Dsus4 Dm
  AI: "[a3,d4,a4,d5,f5]@3 ~ [a3,d4,a4,d5,f5] ~ [a3,d4,a4,d5,f5]@3 ~ [a3,d4,a4,d5,f5] ~ [a4,d5,f5] ~ [a4,d5,f5] ~, ~@6 [a3,d4] ~", // Dm D5
  AJ: "[a3,e4,a4,c5,e5]@3 ~ [a3,e4,a4,c5,e5] ~ [a3,e4,a4,c5,e5]@2 ~@2 [a3,e4,a4,c5,e5] ~ [a4,c5,e5] ~ [a4,c5,e5] ~, ~@6 [a3,e4] ~", // Am A5
  AK: "[a3,f4,a4,c5,f5]@3 ~ [a3,c4,f4,a4,c5,f5] ~ [a3,f4,a4,c5,f5]@3 ~ [a4,c5,f5] ~ [a3,c4,f4,a4]@2 [c5,f5] ~, ~@6 c4@4 ~@2 [e4,c5,f5] ~@3", // F F5 Fmaj7
  AL: "[a3,c4,a4,c5,f5]@2 ~@2 [c4,a4,c5,f5] ~ [a3,a4,c5]@4 [a3,c4,f5] ~ [a3,c4,a4,c5,f5]@2 ~@2, ~@6 [c4,f5]@3 ~@7", // F Am F F5
  AM: "[a3,c4,f4,a4,c5,f5]@3 ~ [a3,c4,f4,a4,c5,f5] ~ [a3,c4,f4,a4,c5,f5]@3 ~ [a3,c4,f4,a4,c5,f5] ~ [a3,c4,f4,a4,c5,f5] ~ [a3,c4,f4,a4,c5,f5] ~, d4 ~@15", // F
  AN: "[a3,c4,e4,a4,c5,e5]@3 ~ [a3,e4,a4,c5,e5] ~ [a3,e4,a4,c5,e5]@3 ~ [a3,e4,a4,c5,e5] ~ [a4,c5,e5] ~ [a4,c5,e5] ~, ~@6 [a3,e4] ~", // Am A5
  AO: "[a3,f4,c5,f5]@4 [c4,f4,a4,c5,f5] ~ [a3,c4,f4,a4,c5,f5]@3 ~ [a3,c4,f4,a4,c5,f5] ~ [a3,c4,f4,a4,c5,f5]@3 ~, a4 ~@7", // F
  AP: "[a3,c4,f4,a4,c5,f5]@2 ~@2 [a3,c4,f4,a4,c5,f5] ~ [a3,c4,f4,a4,c5,f5]@3 ~ [a3,c4,f4,a4,c5,f5] ~ [a3,c4,f4,a4,c5,f5] ~ [a3,c4,f4,a4,c5,f5] ~", // F
  AQ: "[a3,c4,e4,a4,c5,e5]@3 ~ [a3,c4,e4,a4,c5,e5] ~ [a3,c4,e4,a4,c5,e5]@3 ~ [c4,e4,a4,c5,e5] ~ [a3,c4,e4]@2 [a4,c5,e5] ~, ~@12 [a4,c5,e5] ~@3", // Am
  AR: "[a3,d4,a4,d5,f5]@2 ~@2 [a3,d4,a4,d5,f5] ~ [a3,d4,a4,d5,f5]@3 ~ [a3,d4,a4,d5,f5] ~ [a3,d4,a4,d5,f5]@3 ~", // Dm
  AS: "[a3,c4,a4,c5,f5]@3 ~ [a4,c5,f5] ~ [a3,c4,a4,c5,f5]@3 ~ [a3,c4,a4,c5,f5] ~ [a3,c4,a4,c5,f5]@2 ~@2", // F
  AT: "[a3,d4,a4,d5]@3 ~ [a3,d4,a4,d5,f5] ~ [a3,d4,a4,d5,f5]@3 ~ [a3,d4,a4,d5,f5] ~ [a3,d4,f4,a4,d5,f5]@3 ~, ~@12 d#5 ~@3", // D5 Dm
  AU: "[a3,d4,a4,d5,f5]@3 ~ [a3,d4,a4,d5,f5] ~ [a3,d4,a4,d5,f5]@3 ~ [a3,d4,a4,d5,f5] ~ [a3,d4,a4,d5,f5]@3 ~, [c5,d#5] ~@15", // Dm Cm
  AV: "[g3,c4,g4,c5,e5]@3 ~ [g3,c4,e4,g4,c5,e5] ~ [g3,c4,e4,g4,c5,e5]@3 ~ [g3,c4,e4,g4,c5,e5] ~ [g3,c4,e4,g4,c5,e5]@3 ~", // C
  AW: "[a3,e4,a4,c5,e5]@3 ~ [a3,e4,a4,c5,e5] ~ [a3,e4,a4,c5,e5]@3 ~ [a3,e4,a4,c5,e5] ~ [a3,e4,a4,e5]@2 c5 ~, ~@12 c5 ~@3", // Am A5
  AX: "[a3,d4,a4,d5,g5]@3 ~ [a3,d4,a4,d5,f5] ~ [a3,d4,a4,d5,f5]@3 ~ [d4,a4,d5,f5] ~ [a3,d4,a4,d5]@2 f5 ~, ~@12 f5 ~@3", // Dsus4 Dm D5
  AY: "[a3,d4,a4,d5,f5]@3 ~ [d4,a4,d5,f5] ~ [a3,d4,a4,d5,f5]@3 ~ [a3,d4,a4,d5,f5] ~ [a4,d5,f5] ~ [a4,d5,f5] ~, ~@6 [a3,d4] ~", // Dm D5
  AZ: "[a3,d4,d5,f5]@4 [a4,d5,f5] ~ [a3,d4,a4,d5,f5]@3 ~ [a3,d4,a4,d5,f5] ~ [a3,d4,a4,f5]@2 d5 ~, a4@2 ~@10 d5 ~@3", // Dm
  BA: "[a3,e4,a4,c5,e5]@2 ~@2 [a4,c5,e5] ~ [a3,e4,a4,c5,e5]@3 ~ [a3,e4,a4,c5,e5] ~ [a3,e4,a4,c5,e5]@3 ~", // Am
  BB: "[a3,e4,c5,e5]@4 [a4,c5,e5] ~ [a3,e4,a4,c5,e5]@3 ~ [a3,e4,a4,c5,e5] ~ [a4,c5,e5] ~ [a4,c5,e5] ~, a4 ~@5 [a3,e4] ~", // Am A5
  BC: "[a3,d4,f5]@4 [a4,d5,f5] ~ [a3,d4,a4,d5,f5]@3 ~ [a3,d4,a4,d5,f5] ~ [a3,d4,a4,d5,f5]@3 ~, [a4,d5] ~@7", // Dm D5
  BD: "[a3,d4,a4,d5,f5]@3 ~ [a3,d4,a4,d5,f5] ~ [a3,d4,a4,d5,f5]@3 ~ [a3,d4,d5] ~ [a3,d4,a4,d5,f5]@3 ~", // Dm D5 Dm
  BE: "[a3,c4,c5,f5]@4 [c4,a4,c5,f5] ~ [a3,c4,a4,c5,f5]@3 ~ [a3,c4,a4,c5,f5] ~ [a3,c4,a4,c5,f5]@3 ~, a4 ~@7", // F
  BF: "[a3,c4,a4,c5,f5] ~ [a3,c4,a4,c5,f5]@2 ~@2 [a3,c4,a4,c5,f5] ~ [a3,c4,a4,c5,f5] ~ [a3,c4,a4,c5,f5] ~ [a3,c4,a4,c5,f5] ~ [a3,c4,a4,c5,f5] ~", // F
  BG: "[a3,c4,a4,c5,f5]@4 [a4,c5,f5] ~ [a3,c4,f4,a4,c5,f5]@3 ~ [a3,c4,f4,a4,c5,f5] ~ [a3,c4,f4,a4,c5,f5]@3 ~, f4 ~@15", // F
  BH: "[a3,c4,f4,a4,c5,f5]@2 ~@2 [c4,f4,a4,c5,f5] ~ [a3,c4,f4,a4,c5,f5]@3 ~ [a3,c4,f4,a4,c5,f5] ~ [a3,c4,f4,a4,c5,f5]@3 ~", // F
  BI: "[a3,c4,f4,a4,c5,f5]@2 ~@2 [a3,c4,f4,a4,c5,f5] ~ [a3,c4,f4,a4,c5,f5]@3 ~ [a3,c4,f4,a4,c5,f5] ~ [a3,c4,f4,a4,c5,f5]@3 ~", // F
  BJ: "[a3,c4,e4]@4 [a4,c5,e5] ~ [a3,c4,e4,a4,c5,e5]@3 ~ [a3,c4,e4,a4,c5,e5] ~ [a3,c4,e4,a4,c5,e5]@3 ~, [a4,c5,e5] ~@7", // Am
  BK: "[a4,d5,f5]@2 ~@2 [a4,d5,f5] ~ [a3,d4,a4,d5,f5]@3 ~@3 [a3,d4,a4,d5,f5]@3 ~, [a3,d4] ~@3", // Dm D5
  BL: "[a3,c4,a4,c5,f5]@4 ~@2 [a3,c4,a4,c5,f5]@3 ~ [a3,c4,a4,c5,f5] ~ [a3,c4,a4,c5,f5]@3 ~", // F
  BM: "[a3,c4,f4,a4,c5,f5]@3 ~ [a4,c5,f5] ~ [a3,c4,f4,a4,c5,f5]@3 ~ [a3,c4,f4,a4,c5,f5] ~ [a3,c4,f4,a4,c5,f5]@3 ~", // F
  BN: "[a3,c4,e4,a4,c5,e5]@4 [a4,c5,e5] ~ [a3,c4,e4,a4,c5,e5]@3 ~ [a3,c4,e4,a4,c5,e5] ~ [a3,c4,e4,a4,c5,e5]@3 ~", // Am
  BO: "[a3,c4,f4,a4,c5,f5]@3 ~ [a4,c5,f5] ~ [a3,c4,f4,a4,c5,f5]@5 ~ [a3,c4,f4,a4,c5,f5]@3 ~", // F
  BP: "[a3,c4,f4,a4,c5,f5]@2 ~@2 [a3,c4,f4,a4,c5,f5] ~ [a3,c4,f4,a4,c5,f5]@4 [a4,c5,f5] ~ [a3,c4,f4,a4,c5,f5]@3 ~", // F
  BQ: "[a3,c4,e4,a4,c5,e5]@3 ~ [a3,c4,e4,a4,c5,e5] ~ [a3,c4,e4,a4,c5,e5]@3 ~ [a3,c4,a4,c5,e5] ~ [a3,c4,e4,a4,c5,e5]@3 ~", // Am
  BR: "[a3,d4,a4,d5,f5]@3 ~ [d4,a4,d5,f5] ~ [a3,d4,a4,d5,f5]@4 [d4,a4,d5,f5] ~ [a3,d4,a4,d5,f5]@3 ~, e5 ~@11 b3 ~@3", // Dm
  BS: "[a3,c4,a4,c5,f5]@3 ~ [a3,c4,a4,c5,f5] ~ [a3,c4,a4,c5,f5]@3 ~ [a3,c4,a4,c5,f5] ~ [a3,c4,a4,f5]@2 c5 ~, ~@12 c5 ~@3", // F
  BT: "[a3,c4,a4,c5,f5]@3 ~ [a3,c4,a4,c5,f5] ~ [a3,c4,a4,c5,f5]@3 ~ [a3,c4,a4,c5,f5] ~ [a3,c4,a4,c5,f5]@2 ~@2", // F
  BU: "[g3,c4,e4,g4,c5,e5]@3 ~ [g3,c4,e4,g4,c5,e5] ~ [g3,c4,e4,g4,c5,e5]@3 ~ [g3,c4,e4,g4,c5,e5] ~ [g3,c4,e4,g4,c5,e5]@3 ~, ~@6 a#3 ~@9", // C
  BV: "[a3,e4,a4,c5,e5]@3 ~ [a3,e4,a4,c5,e5] ~ [a3,e4,a4,c5,e5]@3 ~ [a3,e4,a4,c5,e5] ~ [a3,e4,a4,e5]@2 [a4,c5,e5] ~, ~@12 c5 ~@3", // Am A5 Am
  BW: "[g3,e4,c5,e5]@4 [g4,c5,e5] ~ [g3,c4,g4,c5,e5]@3 ~ [g3,c4,e4,g4,c5,e5] ~ [g3,c4,e4,g4,c5,e5]@3 ~, g4@2 ~@4 [a#3,e4] ~@9", // C A#dim
  BX: "[g3,e4,g4,c5,e5]@3 ~ [g3,c4,e4,g4,c5,e5] ~ [g3,c4,e4,g4,c5,e5]@3 ~ [g3,c4,e4,g4,c5,e5] ~ [g3,c4,e4]@2 [g4,c5,e5] ~, ~@12 [g4,c5,e5] ~@3", // C
  BY: "[a3,e4,a4,c5,e5]@2 ~@2 [a3,e4,a4,c5,e5] ~ [a3,e4,a4,c5,e5]@3 ~ [a3,e4,a4,c5,e5] ~ [a4,c5,e5] ~ [a4,c5,e5] ~, ~@6 [a3,e4] ~", // Am A5
  BZ: "[g3,c4,e4,e5]@4 [g4,c5,e5] ~ [g3,c4,e4,g4,c5,e5]@3 ~ [g3,c4,e4,g4,c5,e5] ~ [g3,c4,e4,g4,c5,e5] ~ [g3,c4,e4,g4,c5,e5] ~, [g4,c5] ~@7", // C C5
  CA: "[a3,e4,a4,c5,e5]@2 ~@2 [a3,e4,a4,c5,e5] ~ [a3,e4,a4,c5,e5]@3 ~ [a3,e4,a4,c5,e5] ~ [a3,e4,a4,c5,e5]@2 c5 ~", // Am
  CB: "[g3,e4,c5,e5]@4 [g4,c5,e5] ~ [g3,e4,g4,c5,e5]@3 ~ [g3,c4,e4,g4,c5,e5] ~ [g3,c4,e4]@2 [g4,c5,e5] ~, g4@2 ~@10 [g4,c5,e5] ~@3", // C
  CC: "[g3,c4,e4,g4,c5,e5]@3 ~ [g3,c4,e4,g4,c5,e5] ~ [g3,c4,e4,g4,c5,e5]@3 ~ [g3,c4,e4,g4,c5,e5] ~ [g3,c4,e4]@2 [g4,c5,e5] ~, ~@12 [g4,c5,e5] ~@3", // C
  CD: "[a3,e4,a4,c5,e5]@2 ~@2 [a3,e4,a4,c5,e5] ~ [a3,c4,e4,a4,c5,e5]@3 ~ [a3,e4,a4,c5,e5] ~ [a4,c5,e5] ~ [a4,c5,e5] ~, ~@6 [a3,e4] ~", // Am A5
  CE: "[g3,c4,e4,g4,c5,e5]@3 ~ [g3,c4,e4,g4,c5,e5] ~ [g3,c4,e4,g4,c5,e5]@2 ~@2 [g3,c4,e4,g4,c5,e5] ~ [g3,c4,e4,g4,c5,e5]@2 [g4,c5,e5] ~", // C
  CF: "[a3,e4,a4,c5,e5]@3 ~ [a3,e4,a4,c5,e5] ~ [a3,e4,a4,c5,e5]@3 ~ [a3,e4,a4,c5,e5] ~ [a3,e4,a4,c5,e5]@2 ~@2", // Am
  CG: "[[g3,c4,g4,c5,e5]@15 ~, e4@27 ~@5]/2", // C
})).s("gm_acoustic_guitar_nylon").gain(0.2)

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

// drums · rim
const rim = s("rim").struct("<~@4 [~@3 x]!13 ~ [~@3 x]!18 ~@95>").gain(0.36)

// drums · clap
const clap = s("cp").struct("<~@77 [~@2 x!2 ~@2 x ~]!52 ~@2>").gain(0.36)

// drums · snare
const snare = s("sd").struct("<~@36 A B@12 ~ C@17 A B@9 D@45 E D@5 F ~@2>".pickRestart({
  A: "~@10 x!3 ~ x ~", B: "~ x ~ x", C: "~@3 x", D: "~@2 x!2 ~@2 x ~", E: "~@4 x ~@5 x ~ x!3 ~",
  F: "~@4 x ~ x ~@3 x ~ x ~ x!2",
})).gain(0.31)

// drums · hihat
const hihat = s("hh").struct("<~@4 A@13 B A@18 C A@12 B A@17 C A@54 C A@5 D B ~>".pickRestart({
  A: "x!8", B: "x", C: "x!5 ~@3", D: "x!7 ~",
})).gain(0.31)

// drums · crash
const crash = s("cr").struct(`<
  ~@4 A ~@13 A ~@18 A ~@11 A@2 ~@17 A ~@8 A ~@13 A ~@4 A ~@7 A ~@8 A ~@9 A ~@5 A ~
>`.pickRestart({
  A: "x",
})).gain(0.26)

// drums · bongos
const bongos = s("bongo:4").struct("<~@15 [~@7 x] ~@115>").gain(0.41)

// drums · bongos
// … 75 more lines

More by McCartney