Strudelify

Andante, Andante

ABBA

KeyF majorTempo103 bpm
0:00/0:00
// Andante, Andante — ABBA
// 103 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 115 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(103/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 · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  ~@12 A@3 B@3 C@6 D@3 B@3 E@6 F@3 G H@2 I@3 J@3 K@3 ~@5 L M@3 N O P@4 Q@3 R@2 S T@2 U@3 V W@2 ~@10 X@2 Y@7 Z@3 ~@13
>`.pickRestart({
  A: "[~@12 c4 ~@3 f4@2 ~@4 c4 ~ e4@2 ~ e4 e4@2 ~@2 e4@2 c4 ~@5 f4@2 ~@2 f4@2 c4 ~, ~@12 a3@11 ~ g3@11 ~ a3@12, ~@14 c4@6 f4@4 ~@2 c4@8 ~@4 c4@7 ~@3, ~@18 a4@5 ~@7 g4@5 ~@7 a4@5 ~]/3",
  B: "[g3@2 ~@2 e4@2 ~@2 e4@2 c4 ~@5 f4@2 ~@2 f4@2 c4 ~@5 e4@2 ~@4 c4@2 a3@2 bb3@2 b3@2 c4@2 d4 ~ e4 ~, ~@2 g3@10 a3@11 ~ g3@12 ~@12, ~@2 c4@8 ~@4 c4@7 ~@5 c4@5 ~ e4@4 ~@12, ~@6 g4@5 ~@7 a4@5 ~@7 g4@5 ~@13]/3",
  C: "[g4 ~ f4@2 e4@2 g4 ~ f4@2 eb4 ~ [bb3,d4]@5 ~ d4@6 bb3@10 ~@2 [c4,f4]@6 a3@5 ~ [f3,a3]@11 ~@5 d4@2 ~@2 d4@3 ~@5 e4@2 ~@2 e4@2 c4@2 a3@2 bb3@2 b3@2 ~@2 a4@2 c4 ~, ~@12 f4@23 a3@6 ~ c4@17 ~@3 bb3@8 ~@4 c4@6 ~@10 c4@4 ~@2, ~@18 bb3 ~@16 f3@12 ~@13 f3@11 ~ g3@12 ~@12, ~@66 f4@5 ~@7 g4@5 ~@13]/6", // Bb F5 F
  D: "[bb4@2 g4@2 e4 ~ d4 ~ c4@2 bb3 ~@5 f4@2 ~@4 c4 ~ e4@2 ~ e4 e4@2 ~@2 e4@2 c4 ~@5 f4@2 ~@2 f4@2 c4 ~, ~@12 a3@11 ~ g3@11 ~ a3@12, ~@14 c4@6 f4@4 ~@2 c4@8 ~@4 c4@7 ~@3, ~@18 a4@5 ~@7 g4@5 ~@7 a4@5 ~]/3",
  E: "[g4 ~ f4@2 e4@2 g4 ~ f4@2 eb4 ~ [bb3,d4]@5 ~ bb3 bb3@4 ~ bb3@10 ~@2 [c4,f4]@6 a3@5 ~ [f3,a3]@11 ~@5 d4@2 ~@2 d4@3 ~@5 e4@2 ~@2 e4@2 c4@2 ~@4 c4@2 ~@2 a3 ~ f3@2, ~@12 f4@23 a3@6 ~ c4@17 ~@3 bb3@8 ~@4 c4@6 ~@6 a3@6 c4@4, ~@18 d4@5 f3@11 ~ f3@12 ~@13 f3@11 ~ g3@12 f3@8 ~ a3@2 ~, ~@66 f4@5 ~@7 g4@5 ~@7 f4@6]/6", // Bb F5 F
  F: "[~@6 [f3,a3,eb4,f4]@5 ~@3 [d4,f4] ~ [bb3,d4,f4]@3 ~ [bb3,d4] ~ [bb3,d4,f4]@2 ~@2 [a3,c4,f4] ~ [a3,c4,f4]@3 ~ [a3,eb4,f4] ~ [a3,eb4,f4]@2 f3@2 [bb3,eb4,f4] ~ [bb3,eb4,f4]@3 ~ [bb3,d4,f4] ~ [bb3,d4,f4]@2, ~ f3 f3 ~]/3", // F7 Dm Bb F F7 Bbsus4 Bb
  G: "~@2 [bb3,c4,f4] ~ [bb3,c4,f4]@3 ~ [bb3,d4,f4] ~ [bb3,d4,f4]@2 bb3@2 eb4@2", // Bbsus2 Bb
  H: "[~@6 bb3 ~@9 f4@2 c4 ~@3 [bb3,eb4,f4] ~ [bb3,eb4,f4]@3 ~ [bb3,d4,f4] ~ [bb3,d4,f4]@2, bb3@4 eb4@4 c4@4 c4@6 ~@2 f3@5 ~@7, ~@2 g4@5 ~@3 f4@4 a4@5 ~@13]/2", // Bbsus4 Bb
  I: "[~@2 [bb3,c4,f4] ~ [bb3,c4,f4]@3 ~ [bb3,d4,f4] ~ [bb3,d4,f4]@2 ~@8 eb4@2 bb3@4 ~@6 eb4@2 bb3 ~@3 [bb3,eb4,f4] ~ [bb3,eb4,f4]@3 ~ [bb3,d4,f4] ~ [bb3,d4,f4]@2, ~@7 bb3@4 ~@3 bb3@2 ~@2 f3@3 ~@3, ~@16 eb4@4 ~@6 eb4@5 ~@17, ~@9 g4@4 ~@2 g4@2 ~@7]/3", // Bbsus2 Bb Bbsus4 Bb
  J: "[~@2 [bb3,c4,f4] ~ [bb3,c4,f4]@3 ~ [bb3,d4,f4] ~ [bb3,d4,f4]@2 bb3@2 ~@6 eb4@5 ~@7 f4@3 ~@5 f4@2 ~@2 f4@4, ~@14 eb4@4 g4@7 ~ f4@4 a4@5 ~@3 d4@7 ~@3, ~@16 bb3@6 ~@6 c4@5 ~@3 bb3@11 ~, ~@7 bb4]/3", // Bbsus2 Bb
  K: "[~@8 d4@2 bb3 ~@11 bb3@3 ~@9 c4@2 ~@12, bb3@4 bb3@5 ~@3 bb3@4 bb3@6 ~@6 c4@6 ~@14, ~@2 d4@4 f4@4 ~@4 eb4@4 g4@7 ~ f4@6 f4@4 ~@12, ~@20 eb4@5 ~@5 a4@6 ~@12]/3",
  L: "[e4,g4]@2 [bb3,e4,g4]@2 ~@4 f4@2 ~@4 c4 ~, ~@4 a3@11 ~, ~@3 c4@3 f4@2, ~@10 a4@5 ~", // Em Edim
  M: "[e4@2 ~ e4 e4@2 ~@2 e4@2 c4 ~@5 f4@2 ~@2 f4@2 c4 ~ g3@2 ~@2 e4@2 ~@2 e4@2 c4 ~@5 f4@2 ~@2 f4@2 c4 ~, g3@11 ~ a3@12 ~@2 g3@10 a3@11 ~, ~@2 c4@8 ~@4 c4@7 ~@5 c4@8 ~@4 c4@7 ~@3, ~@6 g4@5 ~@7 a4@5 ~@7 g4@5 ~@7 a4@5 ~]/3",
  N: "~@2 e4 ~@2 c4 a3 bb3, g3@3 ~, ~@2 c4@4 g4@5 ~@5, ~@2 e4 ~", O: "b3@2 c4@2 d4 ~ e4 ~ g4 ~ f4@2 e4@2 g4 ~",
  P: "[f4@2 eb4 ~ [bb3,d4]@5 ~ bb3 bb3@4 ~ bb3@10 ~@2 [c4,f4]@6 a3@5 ~ [f3,a3]@11 ~@5 d4@2 ~@2 d4@3 ~, ~@4 f4@23 a3@6 ~ c4@17 ~@3 bb3@8 ~@2, ~@10 d4@5 f3@11 ~ f3@12 ~@13 f3@11 ~, ~@58 f4@5 ~]/4", // Bb F5 F
  Q: "[~@4 e4@2 ~@2 e4@2 c4@2 ~@4 c4@2 ~@2 a3 ~ f3@2 ~@6 [f3,a3,eb4,f4]@5 ~@3 [eb4,f4] ~ [bb3,eb4,f4]@3 ~ [bb3,d4] ~ [bb3,d4,f4]@2, g3@12 f3@9 a3@2 ~@13 f3@12, ~ c4@3 ~@3 a3@3 c4@2 ~@12, ~@6 g4@5 ~@7 f4@6 ~@24]/3", // F7 Ebsus2 Bbsus4 Bb
  R: "[~@2 [a3,c4,f4] ~ [a3,c4,f4]@3 ~ [a3,eb4,f4] ~ [a3,eb4,f4]@2 ~@2 [bb3,eb4,f4] ~ [bb3,eb4,f4]@3 ~ [bb3,d4,f4] ~ [bb3,d4,f4]@2 ~@2 [bb3,c4,f4] ~ [bb3,c4,f4]@3 ~, f3@6 f3@3 ~@7]/2", // F F7 Bbsus4 Bb Bbsus2
  S: "[bb3,d4,f4] ~ [bb3,d4,f4]@2 bb3@2 eb4@2 ~@6 bb3 ~, ~@2 bb3 eb4, ~@10 g4@5 ~", // Bb
  T: "[~@8 f4@2 c4 ~@3 [bb3,eb4,f4] ~ [bb3,eb4,f4]@3 ~ [bb3,d4,f4] ~ [bb3,d4,f4]@2 ~@2 [bb3,c4,f4] ~ [bb3,c4,f4]@3 ~, c4@2 c4@3 ~ f3@3 ~@7, ~@2 f4@4 a4@5 ~@21]/2", // Bbsus4 Bb Bbsus2
  U: "[[bb3,d4,f4] ~ [bb3,d4,f4]@2 ~@8 eb4@2 bb3@4 ~@6 eb4@2 bb3 ~@3 [bb3,eb4,f4] ~ [bb3,eb4,f4]@3 ~ [bb3,d4,f4] ~ [bb3,d4,f4]@2 ~@2 [bb3,c4,f4] ~ [bb3,c4,f4]@3 ~, ~@3 bb3@4 ~@3 bb3@2 ~@2 f3@3 ~@7, ~@8 eb4@4 ~@6 eb4@5 ~@25, ~@5 g4@4 ~@2 g4@2 ~@11]/3", // Bb Bbsus4 Bb Bbsus2
  V: "[bb3,d4,f4] ~ [bb3,d4,f4]@2 bb3@2 ~@6 eb4@4, ~@3 eb4@2 g4@3, ~@4 bb3@3 ~", // Bb
  W: "[~@8 f4@3 ~@5 f4@2 ~@2 f4@4 bb3@4 ~@4, ~@2 f4@4 a4@5 ~@3 d4@7 ~@11, ~@4 c4@5 ~@3 bb3@11 ~@9, ~@18 bb4@7 ~@7]/2",
  X: "[~@28 g4@2 bb3 ~, ~@6 bb3@6 bb3@3 ~, ~@14 eb4@7 ~ eb4@4 eb4@6, ~@16 g4@4 g4@7 ~@5, ~@18 bb4@11 ~@3]/2",
  Y: "[g4@2 ~@18 f4@2 ~@2 f4@2 d4@2 ~@2 eb4@2 ~@4 g4@2 eb4 ~@5 a4@2 ~@2 a4@2 f4 ~@5 f4@2 ~@4 d4@2 ~@4 f4@2 ~@4 d4@2 ~@4 g4@2 ~@2 g4@3 ~@5 a4@2 ~@2 a4@3 ~@11 d4@2, ~@2 bb4@8 bb4@11 ~ bb4@10 ~@2 bb4@5 ~@7 c5@5 ~@7 bb4@11 ~ bb4@5 ~@7 bb4@5 ~@7 c5@4 ~@8 bb4@6, ~@4 bb3@12 bb3@11 ~ bb3@11 ~ c4@11 ~ bb3@11 ~ bb3@11 ~ bb3@11 ~ c4@11 ~@3 d4@8 ~@2, ~@6 d4@8 d4@4 d4@7 ~@29 d4@7 ~@5 d4@7 ~@5 eb4@7 ~@5 f4@8 ~@6 f4@4 f4@4, ~@8 f4@4 f4@7 ~@13 g4@4 ~@6 f4@7 ~@11 f4@8 ~@4 f4@4 g4@4 ~@32]/7",
  Z: "[~@2 f4@2 ~@4 f4@3 ~@5 g4@2 ~@4 eb4 ~@7 c5@14 ~@4, bb3@11 ~ bb3@11 ~ c4@20 ~@4, ~@2 d4@7 ~@5 eb4@8 ~@4 f4@18 ~@4, ~@2 bb4 ~ f4@4 ~@12 g4@4 ~@24, ~@6 bb4@6 ~@6 bb4@5 ~@5 a4@16 ~@4]/3",
})).s("gm_acoustic_guitar_nylon").gain(0.21).pan(0.7)

// chords · pad poly
const pad_poly = note(`<
  ~@36 A B C D E F G@3 H@3 I@2 J ~@17 K L M N O M P Q M R S T U V W X Y ~@5 Z AA AB AC AD AE AF AG@2 AH ~@15
>`.pickRestart({
  A: "~@14 [g4,eb5] ~", B: "[g4,eb5]@3 ~ [f4,d5] ~ [f4,d5]@3 ~ [f4,c5] ~ [f4,c5]@2 ~@2",
  C: "[a4,eb5] ~ [a4,eb5] ~@3 [g4,eb5] ~ [g4,eb5]@3 ~ [f4,d5] ~ [f4,d5]@2", // Adim Cm Dm
  D: "~@2 [f4,c5] ~ [f4,c5]@3 ~ [f4,d5] ~ [f4,d5] ~@3 [bb4,g5] ~", // F5 Dm Eb
  E: "[bb4,g5]@3 ~ [bb4,g5] ~ [bb4,g5] ~@3 [c5,a5] ~ [c5,a5]@3 ~", // Eb F
  F: "[c5,a5] ~ [c5,a5] ~@3 [g4,eb5] ~ [g4,eb5]@3 ~ [f4,d5] ~ [f4,d5]@2", // F Cm Dm
  G: "[~@2 [f4,c5] ~ [f4,c5]@3 ~ [f4,d5] ~ [f4,d5] ~@5 bb4@2 ~@4 g4@2 ~@4 bb4@2 ~@4 g4 ~@3 [g4,eb5] ~ [g4,eb5]@3 ~ [f4,d5] ~ [f4,d5]@2, ~@6 eb4@3 ~ bb4@2 eb4@2 ~@2 bb4@2 ~@6, ~@7 g4@2 eb5@3 ~ g4@2 eb5@3 ~@6]/3", // F5 Dm Cm Dm
  H: "[~@2 [f4,c5] ~ [f4,c5]@3 ~ [f4,d5] ~ [f4,d5]@2 ~@4 bb4@2 ~@4 g4 ~@5 c5@2 ~@4 a4@2 ~@2 [f4,d5] ~ [f4,d5]@3 ~ [f4,d5] ~ [f4,d5]@2, ~@7 g4@2 eb5@3 ~ a4@2 eb5@3 ~@6, ~@5 bb4 f4@3 ~@3, ~@8 c5 ~@3]/3", // F5 Dm
  I: "[~@2 [f4,d5] ~ [f4,d5]@3 ~ [f4,d5] ~ [f4,d5] ~@3 [g4,eb5]@5 ~ [g4,eb5] ~ [g4,eb5] ~@3 [a4,f5] ~ [a4,f5]@3 ~]/2", // Dm Cm Dm
  J: "[a4,f5] ~ [a4,f5]@2 ~@12", K: "~@6 [g4,eb5] ~ [g4,eb5]@3 ~ [f4,d5] ~ [f4,d5]@2",
  L: "~@2 [f4,c5] ~ [f4,c5]@2 ~@2 [a4,eb5] ~ [a4,eb5] ~@3 [g4,eb5] ~", // F5 Adim Cm
  M: "[g4,eb5]@3 ~ [f4,d5] ~ [f4,d5]@3 ~ [f4,c5] ~ [f4,c5]@3 ~", // Cm Dm F5
  N: "[f4,d5]@3 ~@3 [bb4,g5] ~ [bb4,g5]@3 ~ [bb4,g5] ~ [bb4,g5] ~", // Dm Eb
  O: "~@2 [c5,a5] ~ [c5,a5]@3 ~ [c5,a5] ~ [c5,a5] ~@3 [g4,eb5] ~", // F Cm
  P: "[f4,d5] ~ [f4,d5] ~@5 bb4@2 ~@4 g4@2, ~@2 eb4@3 ~ bb4@2, ~@3 g4@2 eb5@3", // Dm
  Q: "~@4 bb4@2 ~@4 g4 ~@3 [g4,eb5] ~, eb4 ~ bb4 ~, ~ g4@2 eb5@3 ~@2", // Cm
  R: "[f4,d5] ~ [f4,d5]@2 ~@4 bb4@2 ~@4 g4 ~, ~@3 g4@2 eb5@3, ~@3 bb4", // Dm
  S: "~@4 c5@2 ~@4 a4@2 ~@2 [f4,d5] ~, f4@3 ~, ~ a4@2 eb5@3 ~@2, ~@2 c5 ~", // Dm
  T: "[f4,d5]@3 ~ [f4,d5] ~ [f4,d5]@3 ~ [f4,d5] ~ [f4,d5]@3 ~", // Dm
  U: "[f4,d5] ~ [f4,d5] ~@3 [g4,eb5]@5 ~ [g4,eb5] ~ [g4,eb5] ~", // Dm Cm
  V: "~@2 [a4,f5] ~ [a4,f5]@3 ~ [a4,f5] ~ [a4,f5]@2 eb4@2 g4@2", W: "bb4 eb5 bb4 g4 f4 a4 c5 f5",
  X: "~@2 a4@2 ~@2 [f4,d5] ~ [f4,d5]@2 ~@2 [f4,d5] ~ [f4,d5]@2, c5 ~@3", // Dm
  Y: "~@2 [f4,d5] ~ [f4,d5]@2 ~@2 [f4,d5] ~ [f4,d5] ~@5", Z: "~@14 [g4,bb4,eb5] ~",
  AA: "[g4,bb4,eb5] ~@3 [g4,bb4,eb5] ~ [g4,bb4,eb5] ~@3 [g4,bb4,eb5] ~ [g4,bb4,eb5] ~ [g4,bb4,eb5] ~", // Eb
  AB: "[g4,bb4,eb5] ~@2 [g4,bb4,eb5] ~@2 [g4,bb4,eb5] ~ [g4,bb4,eb5] ~ [f4,bb4,d5] ~ [f4,bb4,d5] ~ [f4,bb4,d5] ~", // Eb Bb
  AC: "[f4,a4,c5] ~ [f4,a4,c5] ~ [f4,a4,c5] ~ [f4,bb4,d5] ~ [f4,bb4,d5] ~ [f4,bb4,d5] ~@3 eb4@2", // F Bb
  AD: "g4 bb4 eb5 bb4 f4 a4 c5 f5", AE: "~ a4 d4 f4 bb4 d5 bb4 f4, c5 ~@3",
  AF: "d4@2 f4@2 bb4@2 d5@2 bb4@2 f4 ~ g4@2 bb4@2",
  AG: "[eb5@2 g5@2 ~@2 bb4@2 g4@2 ~ a4 c5@2 ~@2 c5@2 a4 ~@3 [f4,bb4,d5] ~ [f4,bb4,d5] ~@3 [f4,bb4,d5] ~ [f4,bb4,d5] ~, ~@4 eb5@4 ~@6 f5@5 ~@13]/2", // Bb
  AH: "~@2 [f4,bb4,d5] ~ [f4,bb4,d5]@3 ~ [f4,bb4,d5] ~ [f4,bb4,d5] ~@5", // Bb
})).s("gm_pad_poly").gain(0.16).pan(0.6)

// chords · synth strings 1
const synth_strings_1 = note(`<
  ~@6 A@7 ~@23 B C D E@3 F@3 G@3 H@3 I@3 J@3 ~@11 K L M N O P Q@2 M R S@2 T U@3 V@7 ~ W X@3 Y@3 Z@3 AA AB@3 AC@7 ~@2
>`.pickRestart({
  A: "[~@21 bb5@3 a5@5 ~ f4 f4@5 [g4,bb4]@6 f4 f4@5 [e4,g4]@6 ~@2, ~@3 c6@12 [bb4,c5]@3 c5@9 ~, ~@21 a4@3 ~@4]/7", // Gm Em Bbsus2
  B: "~@14 [bb4,eb5] ~", C: "[bb4,eb5] ~ [bb4,d5] ~ [bb4,d5] ~ [bb4,d5] ~ [a4,c5] ~ [a4,c5] ~ [a4,c5] ~ [c5,eb5] ~",
  D: "[c5,eb5] ~ [c5,eb5] ~@3 [bb4,eb5] ~ [bb4,eb5] ~ [bb4,d5] ~ [bb4,d5] ~ [bb4,d5] ~", // Cm Eb5 Bb
  E: "[~@2 [f4,a4,c5] ~ [f4,a4,c5] ~ [f4,bb4,d5] ~ [f4,bb4,d5] ~ [f4,bb4,d5] ~ [eb5,g5]@12 [f5,a5]@12 ~@2 [bb4,eb5] ~ [bb4,eb5] ~ [bb4,d5] ~ [bb4,d5] ~ [bb4,d5] ~]/3", // F Bb Eb F Eb5 Bb
  F: "[[a4,c5] ~ [a4,c5] ~ [a4,c5] ~ [a4,d5] ~ [bb4,d5] ~ [bb4,d5] ~ [eb5,g5]@24 ~@2 [f4,bb4,eb5] ~ [f4,bb4,eb5] ~ [f4,bb4,d5] ~ [f4,bb4,d5] ~ [f4,bb4,d5] ~]/3", // Am D5 Bb Eb Ebsus2 Bb
  G: "[[f4,bb4,c5] ~ [f4,bb4,c5] ~ [f4,bb4,c5] ~ [f4,bb4,d5] ~ [f4,bb4,d5] ~ [f4,bb4,d5] ~ eb4@12 f4@12 ~@2 [bb4,d5,f5] ~ [bb4,d5,f5]@3 ~ [bb4,d5,f5] ~ [bb4,d5,f5] ~]/3", // Fsus4 Bb
  H: "[~@2 [bb4,d5,f5] ~ [bb4,d5,f5]@3 ~ [bb4,d5,f5] ~ [bb4,d5,f5] ~ [eb4,eb5]@12 [f4,f5]@12 bb3@12]/3", // Bb Eb F
  I: "[c4 bb3@2 bb3]/3", J: "[c4@6 bb3@7 ~@2 [c3,c4]@2 ~@7]/3",
  K: "~@4 [f4,eb5] ~ [eb4,f4,eb5] ~ [eb4,f4,eb5] ~ [d4,f4,d5] ~ [d4,f4,d5] ~ [f4,d5] ~, ~@7 d4", // F7 Ebsus2 Dm
  L: "[c4,f4,c5] ~ [c4,f4,c5] ~ [c4,f4,c5] ~ [eb4,f4,eb5] ~ [eb4,f4,eb5]@3 ~@3 [eb4,f4,eb5] ~", // F5 Ebsus2
  M: "[eb4,f4,eb5] ~ [d4,f4,d5] ~ [d4,f4,d5] ~ [f4,d5] ~ [c4,f4,c5] ~ [c4,f4,c5] ~ [c4,f4,c5] ~ [d4,f4,d5] ~, ~@3 d4 ~@4", // Ebsus2 Dm F5 Dm
  N: "[d4,f4,d5] ~ [d4,f4,d5] ~ g4@9 ~ bb4@2, ~ [eb5,g5]@3", O: "[f5,a5]@10 g4 ~@3 [eb4,f4,eb5] ~, a4@9 ~@7",
  P: "[f4,eb5] ~ [d4,f4,d5] ~ [d4,f4,d5] ~ [f4,d5] ~ [c4,f4,c5] ~ [c4,f4,c5] ~ [c4,f4,c5] ~ [d4,f4,d5] ~, eb4 ~@2 d4 ~@4", // F7 Dm F5 Dm
  Q: "[[f4,d5]@3 ~ [eb5,g5]@10 [eb5,g5] ~@13 f4 ~ [f4,eb5] ~, d4 ~@3 g4@23 ~@5]/2", // Dm Eb F7
  R: "[d4,f4,d5]@3 ~@11 bb4@2, ~ [eb5,g5]@3", // Dm Eb
  S: "[[a4,f5,a5]@12 [bb4,d5]@8 [bb4,d5,f5] ~ [bb4,d5,f5]@2 ~@2 [bb4,d5,f5] ~ [bb4,d5] ~@3, ~@14 f5 ~]/2", // Dm Bb
  T: "~@4 bb4@9 ~ bb4@2, ~ [eb5,g5]@3", // Eb
  U: "[[a4,f5,a5]@12 g5@9 ~ [g4,g5]@2 [a4,f5,a5]@11 ~ [bb4,d5]@2 [bb4,d5,f5] ~ [bb4,d5,f5]@3 ~ [bb4,d5,f5] ~ [bb4,d5,f5]@2, ~ eb5 ~@2]/3", // Dm G Dm Bb
  V: "[~@2 [bb4,d5,f5] ~ [bb4,d5,f5]@2 ~@2 [bb4,d5,f5] ~ [bb4,f5] ~ [eb4,g4]@24 [f4,a4]@24 bb4@14 a4@2 bb4@2 a4@4 g4@2 ~@12 eb4@6 d4@5 ~@5, ~@10 d5@2 ~@72 f4@23 ~@5]/7", // Bb Bb5 Eb F
  W: "~@6 [f4,eb5] ~ [f4,eb5] ~@3 [f4,d5] ~ [f4,d5] ~", // F7 Dm
  X: "[[f4,c5] ~ [f4,c5] ~ [f4,c5] ~ [f4,d5]@2 ~@4 [eb5,g5]@10 [g4,eb5,g5]@2 [f4,f5]@12 ~@2 [eb4,f4,eb5] ~ [eb4,f4,eb5] ~ [d4,f4,d5] ~ [d4,f4,d5] ~ [f4,d5] ~, ~@12 a5@5 ~@6 d4]/3", // F5 Dm Eb Cm F Ebsus2 Dm
  Y: "[[c4,f4] ~ [c4,f4] ~ [c4,f4] ~ [d4,f4,d5] ~ [d4,f4,d5] ~ [d4,f4,d5] ~ g4@9 ~ bb4@2 [a4,f5,a5]@11 ~ [bb4,d5,f5]@11 ~, ~ [eb5,g5] ~@2]/3", // F5 Dm Bb Eb
  Z: "[~@12 [eb4,g4]@12 f4@13 ~@11]/3", AA: "~@3 bb4@5", AB: "[bb4 c5@6 [g4,eb5]@6 [f4,d5]@6 [eb5,g5]@5]/3",
  AC: "[[eb5,g5] [bb4,f5]@6 [a4,c5]@12 [bb4,d5]@6 [a4,c5]@6 ~@3 eb5@3 [f4,d5]@6 [eb4,g4]@6 [f4,a4]@6 ~, ~@19 f5@18 ~@19, ~@31 bb4@12 ~@13, ~@31 g4@6 ~@19]/7", // Eb Bb5 Am Bb Am Dm Eb F
})).s("gm_synth_strings_1").gain(0.07).pan(0.4)

// bass · fretless bass
const bass = note(`<
  ~@12 A@2 B C@3 D@3 E@2 F G@3 H@3 I@2 J K@2 L M@2 N O@2 N P@3 Q@2 N R@3 S@2 T U@3 V@3 W@2 X Y@2 Z AA@2 AB AC@2 AD AE@2
  AF AG@2 AD AH@2 AI AJ@2 N AK@2 AL AM@2 AN AO@2 N AP@2 N AQ@3 AR@4 AS@3 AT@2 AU@4 ~@3
>`.pickRestart({
  A: "[~@12 f1@7 ~@3 f1@2 c2@8]/2", B: "~@4 f1@7 ~@3 f1@2", C: "[c2@8 ~@4 f1@9 ~ f1@2 c2@10 ~@2 f1@8 ~@2 c2@2]/3",
  D: "[f1@8 g1@2 a1@2 bb1@9 ~ f1@2 bb1@10 ~@2 f1@8 ~@2 c2@2]/3", E: "[f1@8 g1@2 a1@2 bb1@7 ~@3 bb1@2 c2@8]/2",
  F: "~@4 f1@9 ~ f1@2", G: "[c2@8 ~@4 f1@9 ~ f1@2 c2@10 ~@2 f1@9 ~ f1@2]/3",
  H: "[c2@9 ~@3 f1@9 ~ f1@2 c2@10 ~@2 f1@8 ~@2 c2@2]/3", I: "[f1@4 g1 a1 bb1@4 ~ f1 bb1@4]/2", J: "~@2 f1@4 ~ c2",
  K: "[f1@8 g1@2 a1@2 bb1@9 ~ bb1@2 c2@8]/2", L: "~@4 f1@7 ~@3 f1 ~", M: "[f1@8 ~@4 bb1@9 ~ bb1@2 f1@8]/2",
  N: "~@2 bb1@4 ~ f1", O: "[bb1@8 c2@2 d2@2 eb2@9 ~ eb2@2 f1@8]/2",
  P: "[bb1@7 ~ c2@2 d2@2 eb2@9 ~ bb1@2 eb2@10 ~@2 bb1@9 ~ f1@2]/3", Q: "[bb1@7 ~ c2@2 d2@2 eb2@7 ~@3 eb2@2 f1@8]/2",
  R: "[bb1@7 ~ c2@2 d2@2 eb2@9 ~ eb2@2 f1@10 ~@2 bb2@9 ~ bb2@2]/3", S: "[a2@8 ~@4 g2@9 ~ g2@2 f1@8]/2",
  T: "~@4 eb2@9 ~ eb2@2", U: "[f1@8 ~@4 bb1@8 ~@2 f1@2 bb1@6 c2@6 f1@9 ~ f1@2]/3",
  V: "[c2@10 ~@2 f1@9 ~ f1@2 c2@10 ~@2 f1@9 ~ f1 ~]/3", W: "[c2@4 ~@2 f1@4 ~ c2 f1@4]/2", X: "g1@2 a1@2 bb1@9 ~ f1@2",
  Y: "[bb1@4 ~@2 f1@5 c2 f1@4]/2", Z: "g1@2 a1@2 bb1@7 ~@3 bb1@2", AA: "[c2@8 ~@4 f1@7 ~@3 f1 ~ f1@8]/2",
  AB: "~@4 bb1@9 ~ bb1@2", AC: "[f1@5 ~ bb1@4 ~ f1 bb1@4]/2", AD: "c2@2 d2@2 eb2@9 ~ eb2@2",
  AE: "[f1@8 ~@4 bb1@10 f1@2 bb1@7 ~]/2", AF: "c2@2 d2@2 eb2@9 ~ bb1@2", AG: "[eb2@9 ~@3 bb1@8 ~@2 f1@2 bb1@8]/2",
  AH: "[f1@8 ~@4 bb1@8 ~@2 f1@2 bb1@7 ~]/2", AI: "c2@2 d2@2 eb2@7 ~@3 eb2@2", AJ: "[f1@8 ~@4 eb2@7 ~@3 eb2@2 f1@8]/2",
  AK: "[bb1@5 ~ bb1@2 c2@2 d2@2 eb2@9 ~ bb1@2 eb2@5 ~ eb2@2]/2", AL: "d2 eb2 f1@4 ~ c2",
  AM: "[f1@6 f1@2 g1@2 a1@2 bb1@7 ~@3 bb1@2 c2@8]/2", AN: "~@4 f1@8 ~@2 f1 ~", AO: "[f1@6 bb1@6 eb2@9 ~ bb1@2 eb2@8]/2",
  AP: "[bb1@7 ~ c2@2 d2@2 eb2@9 ~ eb2@2 f1@8]/2", AQ: "[bb1@7 ~ c2@2 d2@2 eb2@9 ~ eb2@2 f1@10 ~@2 bb1@9 ~ f1 ~]/3",
  AR: "[bb1@4 ~@4 c2@2 d2@2 eb2@7 ~@3 eb2@2 f1@30 bb2@9 ~]/4", AS: "[bb2@2 a2@8 ~@4 g2@8 ~@2 g2@2 f1@8 ~@4 eb2@9 ~]/3",
  AT: "[eb2 d2@4 ~@2 f1@9]/2", AU: "[f1@6 f1@47 ~@11]/4",
})).s("gm_fretless_bass").gain(0.5)

// chords · vibraphone
const vibraphone = note(`<
  ~ A@2 B C@2 D@3 E F G H@3 I@3 J K L M N O P@3 Q@3 R S T U V W@2 X Y Z@3 AA@2 AB AC@2 AD AE@2 AF AG@3 AH AI@2 AJ@2 AK
  AL AM AN AO AP AQ AR@2 AS AT AU AV AW AX AY@2 AZ BA BB BC BD BE@2 BF BG@2 BH BI BJ BK@3 BL BM@3 BN@2 BO BP@4 BQ BR@2
  BS@2 BT@2 BU BV BW BX ~
>`.pickRestart({
  A: "[c4@3 ~@4 [g5,a5] ~@6 e5@6 d5@5 c5 d5@2 c5@2 bb4@2, ~@13 d4@2 ~]/2", // Gsus2
  B: "~@5 f3 f5 d5, ~@2 f5@9 ~@5, ~@3 c4@3 ~@2",
  C: "[~ f5@2 ~ f5 c5 ~ f5@2 f3 ~ g4 e4 ~ g4 e4, bb5@7 ~@5 a5@6 c5 ~@7 c5@4 ~@2]/2",
  D: "[~@2 g4@2 e4@2 ~@2 g4@2 e4 ~@7 f4@2 ~@2 a3@2 c7@11 ~@2 d6@4 c6 d6@2 c6@2 bb5@2, ~@6 e5@5 ~ c6@11 ~ a6 ~@17 d4@5 ~]/3",
  E: "~@2 f6@9 ~ f6@2 d6@2", F: "~@2 f6@5 d6 ~@8, bb6@7 ~@9", G: "~@2 e3 ~ a4@2 bb4@2 b4@2 c5@2 a5@2 c5@2",
  H: "[bb4 g5 e5 d5 ~ bb3 a3 ~ f4 a4 f4 c4 ~@5 c4 ~@2 f4 a4@2 c4, ~@10 bb4 ~@3 c4@4 ~@12 g4@6 ~@10 f3 ~]/3",
  I: "[~@2 e4 ~@2 c4 ~@2 f4 a4@2 c4 ~@2 e4 ~ e4 c4 a3 bb3 b3 c4 ~ e4, ~@8 e4@4 ~@2 c4@4 ~@4 f3 ~@3 c4@4 g4@5 ~@13]/3",
  J: "g4@2 ~@2 e4@2 f4@2 ~@4 [bb5,d6] ~ d4@2", K: "~@2 [bb4,f5,bb5] ~ f4 ~ d4 ~ [d5,f5]@2 d4 ~@3 bb4@2",
  L: "f4@2 bb3 ~ f3@6 [c5,f5,a5] ~@3 a3@2, ~@4 c6 ~@11", M: "c5 ~ c4 ~ a4 ~ [bb4,d5]@2, f5 ~@7 c4 ~@7",
  N: "~ bb4 ~ d6 ~ e4 g4 c5", O: "~@2 c4 ~ a3@2 bb3@2 ~@2 c4@2 a4@2 c4@2",
  P: "[bb3@2 g4@2 ~@2 d4@2 ~@2 bb3 ~@5 f4@2 a4@4 c4@2 ~@4 e4@2 ~@4 c4@2 ~@4 f4@2 a4@4 c4@2, ~@14 c4@4 ~@4 f3 ~@3 c4@4 g4@6 ~@12, ~@32 e4@4 ~@2 c4@4 ~@4 f3 ~]/3",
  Q: "[~@4 e4@2 ~@4 c4@2 ~@4 f4@2 a4@2 ~@2 c4@2 ~@4 e4@2 g4@4 c4 ~@3 bb4@2 b4@2 ~@2 d5@2 e5@2, ~ c4@2 g4@3 ~@7 c4@2 ~@9, ~@8 e4@4 ~@2 c4@4 ~@4 f3 ~@25]/3",
  R: "g5@2 ~@2 e5@2 f5@2 ~@4 [bb5,d6] ~ d4 ~, ~@6 bb3 ~", S: "~@2 [bb4,f5,bb5] ~ f4@2 d4@2 [d5,f5]@2 d4 ~@3 bb4@2",
  T: "~@2 bb3 ~ f3@3 ~@3 [c5,f5,a5] ~ c4@2 a3@2, ~@4 c6 ~@11", // F
  U: "~@2 a3@2 c4@2 ~@2 a4@2 c5@2 ~@2 d4 ~, [c5,f5]@7 ~@5 d5@4", // F5
  V: "f4@2 bb4 ~@3 d6@2 ~@2 e4@2 g4@2 c5@2, ~@6 d4 ~@2 c6@6 ~",
  W: "[~@2 e4 ~@5 c4@2 ~@2 c4 ~@3 [eb4,eb5]@8 ~@6 eb5 ~, ~ c5@5 ~@2, ~@2 f5@5 ~@9, ~@3 a3@2 f4@2 c4@5 ~@4]/2", // Eb
  X: "eb5 ~ d5 ~ d5 ~ d5 ~ c5 ~ c5 ~ c5 ~ eb5 ~", Y: "eb5 ~ eb5@2 ~@2 eb5 ~ eb5 ~ d5 ~ d5 ~ d5 ~",
  Z: "[c5 ~ c5 ~ c5 ~ d5 ~ d5 ~ d5 ~@5 bb3@2 eb4@2 bb3@2 ~@4 a3 ~@3 f4@2 c4@2 a3 ~@3 eb5 ~ eb5@2 bb4 ~ d5 ~ d5 ~, ~@12 eb5@11 ~ [a4,c5,f5]@12 ~@12, ~@7 g3@2 ~@15]/3", // F
  AA: "[c5 ~ c5 ~ c5 ~ d5 ~ d5 ~ d5 ~@3 g3@2 bb3@2 ~@2 bb3@2 ~@2 eb3@3 ~ bb3@2 ~@2, ~@6 [bb4,eb5]@9 ~]/2", // Eb5
  AB: "g4@2 bb4 ~ bb3@2 eb5 ~ eb5@2 bb4 ~ d5 ~ d5 ~",
  AC: "[c5 ~ c5 ~ c5 ~ d5 ~ d5 ~ d5 ~@5 bb3@2 eb4@2 bb3@2 g3 ~@3 a3 ~ c4@2 f4 ~, ~@12 [bb4,eb5]@11 ~ [c5,f5]@7 ~, ~@7 g3@3 ~@6]/2", // Eb5 F5
  AD: "c4@2 a3 ~@3 d4@2 ~@2 bb4 ~ f4 ~ d4@2",
  AE: "[~@2 d4 ~@3 bb4 ~ f4 ~ bb3 ~@3 g3@2 bb3@2 eb4 ~@3 g3 ~@3 a3 ~@3 f4@2, ~@12 eb5@11 ~ [c5,f5]@5 ~@3]/2", // F5
  AF: "~@2 a3 ~@3 d4@2 f4@2 bb4@2 f4@2 ~ [bb5,c6]", // Bbsus2
  AG: "[~@2 c4@2 f4@2 ~@2 f4@2 c4 ~@5 eb4@2 ~@2 eb4@2 bb3 ~@5 d4@2 ~@2 d4@2 bb3 ~ eb5@2 ~@2 bb3@3 ~ [bb3,eb6]@2 eb5 ~, ~@3 a5@3 ~ bb3@2 g4@2 ~@2 bb5@4 ~@7, ~@13 bb3@2 f4@2 ~@7]/3", // Eb5
  AH: "~@2 a3@2 c4@2 f4@2 c4@2 a3 ~ d5@2 d4 ~",
  AI: "[~@2 bb4@2 f4 ~@3 [d5,bb5]@2 ~@4 [e5,g5]@5 ~@5 f4@2 a4@4 c4@2, ~@8 f5 ~@13 c4@4 ~@4 f3 ~]/2", // Gm Em
  AJ: "[~@2 e4 ~@2 c4 ~@2 f4 a4@2 c4 ~@2 e4 ~, ~@8 e4@4 ~@2 c4@4 ~@4 f3 ~@9]/2",
  AK: "~@2 c4@2 ~@4 f4@2 a4@3 ~ c4@2, e4@4 ~@2 c4@4 ~@4 f3 ~", AL: "~ c4 e4 ~@2 c4 a3 bb3, ~@6 g4@5 ~@5, ~@2 e4 ~",
  AM: "b3 c4 ~ e4 g4 ~ e4 f4", AN: "~@4 d6 ~ d4@2 f4@2 [f5,bb5] ~ f4 ~@3, ~@5 bb3@5 ~@6",
  AO: "~@2 d4@2 f4@2 ~@4 bb3 ~ [a5,c6] ~ a3@2, [d5,f5] ~@3", // Am Dm
  AP: "~@2 [c5,f5,a5] ~ c4@2 a3@2 ~@2 a3@2 c4@2 f4@2, ~@8 [c5,f5]@7 ~", // F F5
  AQ: "a4@2 c5@2 ~@2 d4 ~ f4@2 bb4@2 bb5@2 d6@2, ~ d5 ~@2",
  AR: "[~@2 e4@2 ~@2 c5@2 ~@2 e4 ~@3 a3@2 c4@2 f4@2 ~@2 a3@2 eb5@6 ~@2, ~@6 c5@9 ~, ~@12 f5@11 ~@9, ~@10 c4@5 ~]/2",
  AS: "~@6 eb5 ~ eb5 ~ d5 ~ d5 ~ d5 ~", AT: "c5 ~ c5 ~ c5 ~ eb5 ~ eb5@3 ~@3 eb5 ~",
  AU: "eb5 ~ f4 ~ f4 ~ f4 ~ c5 ~ c5 ~ c5 ~ d5 ~",
  AV: "d5 ~ d5 ~@5 bb3@2 eb4@2 bb3@2 ~@2, ~@4 [bb4,eb5]@11 ~, ~@3 g3@2 ~@3", // Eb5
  AW: "~@2 a3 ~@3 f4@2 c4@2 a3 ~@3 [bb4,eb5] ~, [a4,c5,f5]@3 ~", // Eb5 F
  AX: "[bb4,eb5]@2 bb4 ~ d5 ~ d5 ~ c5 ~ [bb4,c5] ~ [bb4,c5] ~ d5 ~", // Eb5 Bbsus2
  AY: "[d5@3 ~@3 g3@2 bb3@2 ~@2 bb3@2 ~@2 eb3@3 ~ bb3@2 ~@2 g4@2 bb4 ~ bb3@2 eb5 ~, ~@2 [bb4,eb5]@9 ~@5]/2", // Eb5
  AZ: "eb5@2 bb4 ~ d5 ~ d5 ~ c5 ~ c5 ~ c5 ~ d5 ~",
  BA: "d5@3 ~@5 bb3@2 eb4@2 bb3@2 g3 ~, ~@4 [bb4,eb5]@11 ~, ~@3 g3@3 ~@2", // Eb5
  BB: "~@2 a3 ~ c4@2 f4 ~ c4@2 a3 ~@3 d4@2, [c5,f5]@7 ~@9", BC: "~@2 bb4 ~ f4 ~ d4@2 ~@2 d4 ~@3 bb4 ~",
  BD: "f4 ~ bb3 ~@3 g3@2 bb3@2 eb4 ~@3 g3 ~, ~@4 eb5@11 ~",
  BE: "[~@2 a3 ~@3 f4@2 ~@2 a3 ~@5 bb3@2 eb4@2 bb3@2 g3 ~@3 a3@2 c4@2 f4@2, [c5,f5]@5 ~@7 eb5@8 ~@4 f5@7 ~, ~@14 g3@5 ~@13]/2", // F5
  BF: "c4@2 a3 ~ d5@2 d4@2 f4@2 ~ bb4 f4@2 bb5@2",
  BG: "[bb6 ~ d4 ~@3 bb4@2 f4 ~ bb3 ~@3 g3@2 bb3@2 eb4@2 ~@2 g3@2 ~@4 bb3@2 eb4@2, ~@3 eb5@5, ~@13 g3@3]/2",
  BH: "bb3@2 g3 ~ f5@2 a3@2 ~@2 [f5,a5] ~@3 a3@2, ~@5 f4 ~@2", // F
  BI: "c6 ~@3 c4@2 ~@2 [c5,f5] ~ a3 ~ d5@2 d4 ~, ~@4 c4 ~@3", BJ: "f4@2 bb4 ~ bb5 ~ d4 ~ c6@2 e4 ~@3 c5@2",
  BK: "[~@2 e4 ~@3 a3@2 c4@2 ~@6 [eb4,eb5]@5 ~ [bb4,d5]@4 ~@8 bb3@2 ~@2 bb3@2 ~@4 bb3@2 eb4@2, ~@4 f5@11 ~@33, ~@5 f4@2 ~@8 [bb4,eb5]@5 ~@4, ~@12 c4@9 ~@11 g3@4 eb4@5 ~@7]/3", // Eb Bb Eb5
  BL: "[bb4,eb5] ~ eb5@2 bb3 ~ eb5 ~ eb5 ~ d5 ~ d5 ~ d5 ~, bb3 ~@7", // Eb5
  BM: "[c5 ~ [bb4,c5] ~ [f4,c5]@2 d5 ~ d5 ~ [bb4,d5] ~@5 bb3@2 eb4@4 g3 ~@3 a3@2 c4@2 f4@2 ~@2 a3 ~ bb3 ~ eb5 ~ eb5 ~ d5 ~ d5 ~ d5 ~, ~@4 bb4 ~@7 [bb4,eb5]@11 ~ [c5,f5]@11 ~@13]/3", // Bbsus2 F5 Bb Eb5 F5
  BN: "[c5 ~ [bb4,c5] ~ c5 ~ [bb4,d5] ~ d5 ~ d5 ~@5 bb3@2 eb4 ~@3 g3 ~@3 a3@2 c4@3 ~, ~@12 [bb4,eb5]@7 ~@5 f5@5 ~@3, ~@7 g3@3 ~@6]/2", // Bbsus2 Bb Eb5
  BO: "c4@2 a3 ~@3 [bb4,d5] ~ [bb4,d5] ~ bb4 ~ d5 ~ d5@2", // Bb
  BP: "[~@2 [bb4,d5] ~ d5 ~ bb4 ~ d5 ~ d5 ~@5 bb3@2 eb4 ~ bb3@2 g3 ~@3 a3@2 c4@2 ~@2 c4@2 ~@14 f6 ~ f6 ~ f6 ~@3 d4@2 f4@2 ~@2 f4@2, ~@12 eb5@7 ~@5 [c5,f5]@18 ~@18 bb4@4, ~@14 g3@5 ~@11 f4@21 ~@13]/4", // Bb F5
  BQ: "d4 ~@3 c4@2 f4@2 ~@2 f4@2 c4 ~@3, ~@4 a5@3 ~",
  BR: "[~@2 eb4@2 ~@2 eb4@2 bb3@2 ~@4 d4@2 ~@2 d4@2 bb3 ~ eb5@2 ~@2 bb3@2 ~@2 eb6@2, bb3@4 g4@5 ~@3 bb5@8 ~@12, ~@3 bb3 f4 ~@2 eb4]/2",
  BS: "[[g3,eb5] ~@3 f3@2 bb3@2 ~@2 c5@2 bb4@2 ~@2 a3@2 c4@2 f4@2 ~@2 a3@2 f4@2 g4@2 a4 ~, ~@8 d4@4 f3 ~ c5@7 ~@11]/2", // Cm
  BT: "[~ eb5 g5 ~ d4 f5 bb5 ~ [d4,d5] ~@2 f5 [a4,a5] f5 c5 ~, [f4,c5]@2 ~ bb4@3 ~ f5@2 ~ [c4,c5]@2 ~@4]/2", // D A F5 C
  BU: "~ eb5 [g4,g5] ~ bb4 ~@2 [d4,d5], [bb3,bb4]@2 ~ eb5@2 ~ [bb3,bb4]@2", // G D Bb
  BV: "[f4,f5]@2 d5@2 bb4 ~@3 g4@2 bb4@2 [eb4,eb5]@2 bb4@2", // F Eb
// … 185 more lines

More by ABBA