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, A@4 for four bars: edit a riff to change every repeat.

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  ~@4 A B C D A B E F G H I J K L A M E H A M E N G H O H O P Q R S T U Q V Q V W R H U@2 A M A L X M E Y A B E G@2 H Z
  AA O AB AC R AD U Q V AC Z AC R S U T A B AE Y A B E G@2 AF B AG B AH Q R S AI U Q AJ AK AJ AC AL S T Q AJ AM AN AK R
  S U AI AO B A M A AP AQ M A M A AP A M K AP AR@2
>`.pickRestart({
  A: "c3@5 ~ e2@5 ~ 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@5 ~ f3@6 a3@3 ~", F: "d3@6 f2@6 a2@3 ~", G: "d3@5 ~ a2@5 ~ c3@3 ~", H: "d3@5 ~ d3@8 ~@2",
  I: "c3@5 ~ e3@6 g3@2 ~@2", J: "a2@5 ~ a2@5 ~ g2@3 ~", K: "c3@5 ~ e3@6 g3@4", L: "a2@3 ~", M: "a2@5 ~ c3@6 e3@3 ~",
  N: "d3@5 ~ d3@6 a2@3 ~", O: "a2@2 ~ a2@2 g2 a2@2", P: "d3@5 ~ d3@4 c3 ~ d3@3 ~", Q: "f3@5 ~ f3@10",
  R: "e3@5 ~ e3@9 ~", S: "d3@5 ~ d3@10", T: "c3@4 ~@2 c3@9 ~", U: "c3@5 ~ c3@8 ~@2", V: "a2@4 ~@2 a2@9 ~",
  W: "f3@5 ~ f3@9 ~", X: "c3@6 e2@6 g2@3 ~", Y: "d3@2 ~ d3@4 ~", Z: "a2@5 ~ a2@5 ~ a2@3 ~", AA: "d3@5 ~ a2@5 ~ d3@4",
  AB: "d3@5 ~ a2@4 c3@2 d3@3 ~", AC: "f3@5 ~ f3@6 f3@4", AD: "d3@5 ~ d3@5 ~ d3@4", AE: "d3@3 f3@3 a3@2",
  AF: "d3@3 a2@3 d3@2", AG: "d3@5 ~ d3@4 a2@2 d3@4", AH: "d3@5 ~ d3@5 ~ d3@2 ~@2", AI: "c3@5 ~ c3@5 ~ c3@2 ~@2",
  AJ: "a2@4 ~@2 a2@6 c3@2 a2 ~", AK: "f3@5 ~ f3@7 ~ f3@2", AL: "e3@5 ~ e3@5 ~ e3@4", AM: "f3@5 ~ f3@8 e3@2",
  AN: "a2@5 ~ a2@3 ~ a2 ~ c3@2 a2 ~", AO: "c3@5 ~ e2@6 g2@3 ~", AP: "a2@5 ~ c3@3 ~ c3@2 e3@3 ~",
  AQ: "c3@4 ~@2 e2@5 ~ g2@3 ~", AR: "[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 N U V W ~@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: "[e5,g5] ~ [d5,f5] ~ [c5,e5]@3 ~ [a4,c5]@2 [c5,e5]@3 ~ [d5,f5]@2", // Em Dm C Am C Dm
  V: "[d5,f5]@5 ~ [d5,f5]@5 ~ [e5,g5]@2 [d5,f5]@2", W: "~@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 G H I J@3 K E K E K I L@3 M@2 N@2 A O P@2 A B Q@4 E F E F H I R@2 K E K E K I S@3 T@4 U@6 E
  F E F H I V@3 K E K E H I W@2 H E K E K I X Y@2 M@2 Z@2 M@12 AA@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]@15 ~",
  G: "[a3,d4,f4]@7 ~", H: "[f3,a3,c4,f4]@15 ~", I: "[e3,a3,c4,e4]@15 ~", J: "[[d3,d4]@16 c4@29 ~@3, [f3,a3]@15 ~]/3",
  K: "[a3,c4,f4]@15 ~", L: "[[d3,d4]@8 c4@15 ~, [f3,a3]@15 ~]/3", M: "[g3@7 ~ a3@7 ~, [c4,e4]@15 ~]/2",
  N: "[g3@7 ~ a3@3 ~@5, [c4,e4]@11 ~@5]/2", O: "[d4,f4]@4 [c4,e4]@9 ~@3, a3@3 ~",
  P: "[g4@3 ~ [c4,f4]@27 ~, [a3,d4]@31 ~]/2", Q: "[g4@5 ~ f4@57 ~, [a3,d4]@63 ~, ~@6 c4@27 ~@31]/4",
  R: "[[d3,d4]@8 c4@7 ~, f3, a3@15 ~, ~@2 c3 ~]/2", S: "[[d3,d4] c3@2, [f3,a3]@15 ~, ~@8 c4@15 ~]/3",
  T: "[g3@14 ~@18 [d4,f4]@31 ~, [c4,e4]@15 ~@17, ~@8 a3@23 ~]/4", // Dm C
  U: "[g3@14 ~@18 [d4,f4]@63 ~, [c4,e4]@31 ~@65, ~@16 a3@79 ~]/6", // Dm C
  V: "[[d3,d4]@16 c4@29 ~@3, [f3,a3]@15 ~, ~@8 c3@9 ~@7]/3", W: "[[d3,d4]@16 [c3,c4]@13 ~@3, [f3,a3]@7 ~]/2",
  X: "[d3,f3,a3,d4]", Y: "[[f3,a3,c4]@15 ~, c3]/2", Z: "[g3@15 ~ a3@14 ~@2, [c4,e4]@15 ~]/2",
  AA: "[[c3,g3,c4,e4]@9 ~@7]/2", // C
})).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@3 H A B A C A I J G D B K G H L M G N G O P G Q R S B T E U E G V W X B Y Z AA AB AC AD D AE AF
  AG G H AH H N G AI E G AJ AK AL AM E AN AO G W AP A P AQ AR AS AT AU AV AW H AX H AY AZ U E BA BB BC BD P BE B U BF BG
  BH BI BF BJ E BK BL BM BN BO A B BP BQ BR N BS BT BU BV BW AL BX BY BZ CA CB@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]@3 ~", // 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] ~ [a3,d4,a4,d5,f5] ~", // Dm
  I: "[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
  J: "[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
  K: "[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
  L: "[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
  M: "[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
  N: "[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
  O: "[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
  P: "[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
  Q: "[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
  R: "[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
  S: "[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
  T: "[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
  U: "[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
  V: "[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
  W: "[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
  X: "[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
  Y: "[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
  Z: "[a3,e4,a4,c5,e5]@7 ~", // Am
  AA: "[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
  AB: "[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
  AC: "[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
  AD: "[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
  AE: "[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
  AF: "[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
  AG: "[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
  AH: "[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
  AI: "[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
  AJ: "[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
  AK: "[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
  AL: "[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
  AM: "[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
  AN: "[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
  AO: "[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
  AP: "[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
  AQ: "[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
  AR: "[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
  AS: "[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
  AT: "[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
  AU: "[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
  AV: "[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
  AW: "[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
  AX: "[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
  AY: "[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
  AZ: "[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
  BA: "[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
  BB: "[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
  BC: "[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
  BD: "[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
  BE: "[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
  BF: "[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
  BG: "[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
  BH: "[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
  BI: "[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
  BJ: "[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
  BK: "[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
  BL: "[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
  BM: "[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
  BN: "[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
  BO: "[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
  BP: "[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
  BQ: "[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
  BR: "[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
  BS: "[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
  BT: "[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
  BU: "[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
  BV: "[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
  BW: "[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
  BX: "[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
  BY: "[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
  BZ: "[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
  CA: "[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
  CB: "[[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
const bongos_2 = s("bongo:18").struct("<~@38 [~@13 x ~@2] ~@29 [~@13 x ~@2] ~@62>").gain(0.41)

// drums · congas
const congas = s("conga:13").struct(`<
  ~@4 A B A@4 C A@3 B D C ~ A E A F C B A@14 C A@6 G A@3 ~ A B A G C A@4 C@2 A@6 G A@3 G A@2 ~ H G B A@7 D ~ A@2 D G A ~
  A@2 ~ A I A@5 C A B A B A B A@4 C A C G I A C A G A G A C D J ~@2
>`.pickRestart({
  A: "~@6 x!2", B: "~@3 x", C: "~@5 x!2 ~", D: "~@7 x", E: "~@3 x ~@3 x", F: "~@3 x ~@4", G: "~@5 x!3",
  H: "~@4 x!2 ~ x", I: "~@10 x ~@2 x ~@2", J: "x!2 ~@5 x",
})).gain(0.99)

// drums · congas · soft notes
const congas_soft = s("conga:13").struct(`<
// … 62 more lines

More by McCartney