Strudelify
I Have a Dream cover art

Voulez-Vous

I Have a Dream

ABBA

KeyB♭ majorTempo105 bpm
0:00/0:00
// I Have a Dream — ABBA
// 105 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 2/4 at bar 5, 4/4 at bar 6, 2/4 at bar 53, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: Full arrangement: all 125 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(105/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
const bass = note(`<
  ~@23 A B C D E F G H I J K L M N F O@2 F N P Q R@2 S T U@2 S V W X Y Z AA AB AC AD AE AF AG AH AI AJ@2 AK AL U L@2 AM
  AN R AO Q R@2 L@2 R AP AQ Q R@2 S AR U R S AS@2 AT AU AV AW AX AY AV AZ BA BB BC BD BE@2 BF BG AN L@2 BH BI BJ BK BL
  BM BN BO BP BM BQ BR
>`.pickRestart({
  A: "~ bb2 a2 g2", B: "f2 c2", C: "f2@7 ~ c2@2 ~@2 f2@2 c2@2", D: "eb2@7 ~ bb1@6 ~@2", E: "bb1@5 ~ bb1@2 d2@4 eb2@4",
  F: "f2@7 ~ c2@7 ~", G: "f2@7 ~ c2@3 ~ f2@4", H: "eb2@8 bb1@5 ~ eb2@2", I: "bb1@5 ~ bb1@2 a1@4 g1@4",
  J: "f1@6 ~@2 c2@5 ~@3", K: "f2@15 ~", L: "bb1@3 ~ f1@3 ~", M: "bb1@2 d2 eb2", N: "f2@8 c2@7 ~", O: "bb1@7 ~ f1@7 ~",
  P: "bb1@7 ~ f1@8", Q: "bb1@6 ~@2 d2@3 ~ eb2@3 ~", R: "f2@3 ~ c2@3 ~", S: "bb1@5 ~@3 f1@6 ~@2",
  T: "bb1@5 ~@3 a1@3 ~ g1@3 ~", U: "f1@3 ~ c2@3 ~", V: "bb1@5 ~@3 bb2@8", W: "~@2 bb1@2 f1@3 ~", X: "c2@7 ~ f2@7 ~",
  Y: "c2@3 ~ f2@2 c2@2 eb2@8", Z: "bb1@4 ~@2 bb1 ~ bb1@7 ~", AA: "d2@4 eb2@4 f2@7 ~", AB: "c2@5 ~@3 f2@7 ~",
  AC: "c2@3 ~ f2@2 c2@2 eb2@7 ~", AD: "bb1@6 ~@2 bb1@7 ~", AE: "a1@4 g1@4 f1@7 ~", AF: "c2 f2", AG: "c2@5 ~ c2@2 bb1@8",
  AH: "f1 bb1", AI: "a1 g1 f1@2", AJ: "[c2@8 f2@15 ~ bb1@7 ~]/2", AK: "f1@6 ~@2 bb1@7 ~", AL: "f1@6 ~@2 a1@3 ~ g1@3 ~",
  AM: "bb1@6 ~@2 a1@3 ~ g1@4", AN: "f1@7 ~ c2@6 ~@2", AO: "bb1@5 ~@3 f1@7 ~", AP: "f2@6 ~@2 c2@7 ~",
  AQ: "bb1@6 ~@2 f1@7 ~", AR: "bb1@7 ~ a1@2 ~@2 g1@2 ~@2", AS: "[bb1@3 ~ bb2@5 ~ bb1@2 f1@3 ~]/2",
  AT: "c2@5 ~@3 f2@6 ~@2", AU: "c2@3 ~ f2@2 c2@2 eb2@6 ~@2", AV: "bb1@3 ~ bb1@3 ~", AW: "d2@3 ~ eb2@3 ~ f2@7 ~",
  AX: "c2@4 f2@3 ~", AY: "c2@3 ~ f2 ~ c2@2 eb2@6 ~@2", AZ: "a1@4 g1@3 ~ f1@7 ~", BA: "c2@3 ~ f2@3 ~",
  BB: "c2@3 ~ bb1@4", BC: "f1@7 ~ bb1@7 ~", BD: "a1@3 ~ g1@3 ~ f1@7 ~", BE: "[c2@5 ~@3 f2@14 ~@2 bb1@6 ~@2]/2",
  BF: "f1@5 ~ f1@2 bb1@8", BG: "f1@7 ~ a1@3 ~ g1@3 ~", BH: "bb1@6 ~@2 a1@3 ~ g1@3 ~", BI: "f1@4 c2@3 ~",
  BJ: "f2@7 ~ c2@3 ~ eb2@2 f2@2", BK: "bb1@7 ~ f1@5 ~ f1@2", BL: "bb1@7 ~ f1@6 ~@2", BM: "a1@3 ~ g1@3 ~ f1@6 ~@2",
  BN: "c2@3 ~ bb1@3 ~", BO: "f1@7 ~ bb1@5 ~@3", BP: "f1@3 ~ bb1@3 ~", BQ: "c2@7 ~ f2@6 ~@2", BR: "c2@3 ~ eb2@2 ~@10",
})).s("gm_fretless_bass").gain(0.33)

// chords · acoustic guitar steel · "Steel Guitar"
const acoustic_guitar_steel = note(`<
  ~ A B C D@2 E@2 D F G E D@2 E@2 D@2 E H D@2 E G D@2 I J D@2 I G D K L@2 M@2 L N M@2 L@2 M@2 L@2 M@2 L O@2 M P Q R M P
  Q S M T L S U@2 V W M X V W M@2 E@2 D@2 E@2 D@2 E@2 D@2 E Y Z@2 AA AB@2 Z AC AD AE Z AF AD AE Z AG Y AE AH@2 AI AJ AK
  AL AI AJ AK@2 AL AM AN AO AP AM AN AK AQ
>`.pickRestart({
  A: "~@12 [bb2,f3,bb3,eb4,f4,bb4]@3 ~", // Bbsus4
  B: "[bb2,f3,bb3,eb4,f4]@3 ~ [bb2,f3,bb3,eb4,f4,bb4]@3 ~ [bb2,f3,bb3,eb4,f4,bb4]@3 ~ [bb2,f3,bb3,d4,f4,bb4]@3 ~", // Bbsus4 Bb
  C: "[bb2,f3,bb3,d4,f4]@3 ~ [bb2,f3,bb3,d4,f4,bb4]@3 ~ [bb2,f3,bb3,eb4,f4,bb4]@3 ~ [bb2,f3,bb3,eb4,f4,bb4]@3 ~", // Bb Bbsus4
  D: "[c3,f3,c4,eb4,a4]@3 ~ [c3,f3,c4,eb4,a4]@3 ~ [c3,f3,c4,eb4,a4]@3 ~ [c3,f3,c4,eb4,a4]@3 ~", // F7
  E: "[bb2,f3,bb3,d4,bb4]@3 ~ [bb2,f3,bb3,d4,bb4]@3 ~ [bb2,f3,bb3,d4,bb4]@3 ~ [bb2,f3,bb3,d4,bb4]@3 ~", // Bb
  F: "[c3,f3,c4,eb4,a4]@3 ~ [c3,f3,c4,eb4,a4]@3 ~ [c3,f3,c4,eb4,a4]@3 ~ [f3,c4,eb4,a4]@3 ~", // F7
  G: "[bb2,f3,bb3,d4,bb4]@3 ~ [bb2,f3,bb3,d4,bb4]@3 ~ [bb2,f3,bb3,d4]@3 ~ [bb2,f3,bb3,d4,bb4]@3 ~", // Bb
  H: "[bb2,f3,bb3,d4,bb4]@3 ~ [bb2,f3,bb3,d4,bb4]@3 ~ [bb2,f3,bb3,d4,bb4]@3 ~ [bb2,f3,bb3,d4]@3 ~", // Bb
  I: "[bb2,g3,bb3,eb4,g4]@3 ~ [bb2,g3,bb3,eb4,g4]@3 ~ [bb2,g3,bb3,eb4,g4]@3 ~ [bb2,g3,bb3,eb4,g4]@3 ~", // Eb
  J: "[bb2,f3,bb3,d4,f4]@3 ~ [bb2,f3,bb3,d4,f4]@3 ~ [bb2,f3,bb3,d4,f4,bb4]@3 ~ [bb2,f3,bb3,d4,f4,bb4]@3 ~", // Bb
  K: "[c3,f3,c4,eb4,a4]@13 ~@3", // F7
  L: "[bb2,f3,bb3,d4,bb4] ~ [bb2,f3,bb3,d4,bb4] ~ [bb2,f3,bb3,d4,bb4] ~ [bb2,f3,bb3,d4,bb4] ~", // Bb
  M: "[c3,f3,c4,eb4,a4] ~ [c3,f3,c4,eb4,a4] ~ [c3,f3,c4,eb4,a4] ~ [c3,f3,c4,eb4,a4] ~", // F7
  N: "[bb2,f3,bb3,d4,bb4] ~ [bb2,f3,bb3,d4,bb4] ~ [bb2,f3,bb3,d4,bb4] ~ [bb2,f3,bb3,d4] ~", // Bb
  O: "[[bb2,f3,bb3,d4,bb4] ~ [bb2,f3,bb3,d4] ~ [bb2,f3,bb3,d4,bb4] ~ [bb2,f3,bb3,d4,bb4]@4 ~@2 [c3,f3,c4,eb4,a4] ~ [c3,f3,c4,eb4,a4] ~]/2", // Bb F7
  P: "[c3,f3,c4,eb4,a4] ~ [c3,f3,c4,eb4,a4] ~ [bb2,g3,bb3,eb4,g4] ~ [bb2,g3,bb3,eb4,g4] ~", // F7 Eb
  Q: "[bb2,g3,bb3,eb4,g4] ~ [bb2,g3,bb3,eb4,g4] ~ [bb2,f3,bb3,d4,bb4] ~ [bb2,f3,bb3,d4,bb4] ~", // Eb Bb
  R: "[bb2,f3,bb3,d4] ~ [bb2,f3,bb3,d4,bb4] ~ [c3,f3,c4,eb4,a4] ~ [c3,f3,c4,eb4,a4] ~", // Bb F7
  S: "[bb2,f3,bb3,d4,bb4] ~ [bb2,f3,bb3,d4,bb4] ~ [c3,f3,c4,eb4,a4] ~ [c3,f3,c4,eb4,a4] ~", // Bb F7
  T: "[c3,f3,c4,eb4,a4] ~ [c3,f3,c4,eb4,a4] ~ [bb2,f3,bb3,d4,bb4] ~ [bb2,f3,bb3,d4,bb4] ~", // F7 Bb
  U: "[[c3,f3,c4,eb4,a4] ~ [c3,f3,c4,eb4,a4] ~ [c3,f3,c4,eb4,a4]@6 ~@2 [bb2,f3,bb3,f4,bb4] ~ [bb2,f3,bb3,eb4,f4,bb4] ~]/2", // F7 Bb5 Bbsus4
  V: "[bb2,f3,bb3,eb4,f4,bb4] ~ [bb2,f3,bb3,eb4,f4,bb4] ~ [bb2,f3,bb3,eb4,f4,bb4] ~ [bb2,f3,bb3,d4,f4,bb4] ~", // Bbsus4 Bb
  W: "[bb2,f3,bb3,d4,f4,bb4] ~ [bb2,f3,bb3,d4,f4,bb4] ~ [bb2,f3,bb3,d4,f4,bb4] ~ [bb2,f3,bb3,d4,f4,bb4] ~", // Bb
  X: "[bb2,f3,bb3,f4,bb4] ~ [bb2,f3,bb3,f4,bb4] ~ [bb2,f3,bb3,f4,bb4] ~ [bb2,f3,bb3,eb4,f4,bb4] ~", // Bb5 Bbsus4
  Y: "[f3,bb3,d4,bb4]@3 ~ [f3,bb3,d4,bb4]@3 ~ [f3,bb3,d4,bb4]@3 ~ [f3,bb3,d4,bb4]@3 ~", // Bb
  Z: "[f3,c4,eb4,a4]@3 ~ [f3,c4,eb4,a4]@3 ~ [f3,c4,eb4,a4]@3 ~ [f3,c4,eb4,a4]@3 ~", // F7
  AA: "[f3,bb3,d4,bb4]@3 ~ [f3,bb3,d4]@3 ~ [f3,bb3,d4,bb4]@3 ~ [f3,bb3,d4,bb4]@3 ~", // Bb
  AB: "[[f3,bb3,d4,bb4]@3 ~ [f3,bb3,d4,bb4]@3 ~ [f3,bb3,d4,bb4]@3 ~ [f3,bb3,f4,a4]@9 ~@3 [f3,c4,eb4,a4]@3 ~ [f3,c4,eb4,a4]@3 ~]/2", // Bb Bbmaj7 F7
  AC: "[f3,c4,eb4,a4]@3 ~ [f3,c4,eb4,a4]@3 ~ [g3,bb3,eb4,g4]@3 ~ [g3,bb3,eb4,g4]@3 ~", // F7 Eb
  AD: "[g3,bb3,eb4,g4]@3 ~ [g3,bb3,eb4,g4]@3 ~ [f3,bb3,d4,bb4]@3 ~ [f3,bb3,d4,bb4]@3 ~", // Eb Bb
  AE: "[f3,bb3,d4,bb4]@3 ~ [f3,bb3,d4,bb4]@3 ~ [f3,c4,eb4,a4]@3 ~ [f3,c4,eb4,a4]@3 ~", // Bb F7
  AF: "[f3,c4,eb4,a4]@3 ~ [f3,c4,eb4,a4]@3 ~ [g3,bb3,eb4,g4,bb4]@3 ~ [g3,bb3,eb4,g4,bb4]@3 ~", // F7 Eb
  AG: "[f3,c4,eb4,a4]@3 ~ [f3,c4,eb4,a4]@3 ~ [f3,bb3,d4,bb4]@3 ~ [f3,bb3,d4,bb4]@3 ~", // F7 Bb
  AH: "[[f3,c4,eb4,a4]@3 ~ [f3,c4,eb4,a4]@3 ~ [f3,c4,eb4,a4]@13 ~@3 [f3,bb3,eb4,bb4]@2 ~@2 [f3,bb3,eb4,bb4]@2 ~@2]/2", // F7 Ebsus2
  AI: "[f3,bb3,eb4,bb4] ~ [f3,bb3,eb4,bb4] ~ [f3,bb3,eb4,bb4] ~ [f3,bb3,d4,bb4] ~", // Ebsus2 Bb
  AJ: "[f3,bb3,d4,bb4] ~ [f3,bb3,d4] ~ [f3,bb3,d4,bb4] ~ [f3,bb3,d4,bb4] ~", // Bb
  AK: "[f3,c4,eb4,a4] ~ [f3,c4,eb4,a4] ~ [f3,c4,eb4,a4] ~ [f3,c4,eb4,a4] ~", // F7
  AL: "[f3,bb3,d4,bb4] ~ [f3,bb3,d4,bb4] ~ [f3,bb3,eb4,bb4] ~ [f3,bb3,eb4,bb4] ~", // Bb Ebsus2
  AM: "[f3,bb3,eb4,bb4] ~ [f3,bb3,d4,bb4] ~ [f3,bb3,d4,bb4] ~ [f3,bb3,d4,bb4] ~", // Ebsus2 Bb
  AN: "[f3,bb3,d4,bb4] ~ [f3,bb3,d4,bb4] ~ [f3,c4,eb4,a4] ~ [f3,c4,eb4,a4] ~", // Bb F7
  AO: "[f3,c4,eb4,a4] ~ [f3,c4,eb4,a4] ~ [f3,bb3,f4,bb4] ~ [f3,bb3,f4,bb4] ~", // F7 Bb5
  AP: "[f3,bb3,f4,bb4] ~ [f3,bb3,eb4,bb4] ~ [f3,bb3,eb4,bb4] ~ [f3,bb3,eb4,bb4] ~", // Bb5 Ebsus2
  AQ: "[f3,c4,eb4,a4] ~ [f3,c4,eb4,a4] ~@5", // F7
})).s("gm_acoustic_guitar_steel").gain(0.08)

// chords · acoustic guitar steel · "Steel Guitar"
const acoustic_guitar_steel_2 = note(`<
  ~ A B C D@2 E@2 D F G E D@2 E@2 D@2 E H D@2 E G D@2 I J D@2 I G D ~ K@2 L@2 K M L@2 K@2 L@2 K@2 L@2 K N O L P Q R L P
  Q S L T K S U V W X L Y W X L@2 ~@32 Z AA AB L AC AA AB L@2 AC AD S AE AF AD S L AG
>`.pickRestart({
  A: "~@10 [bb2,f3,bb3,eb4,f4,bb4]@3 ~ [bb2,f3,bb3,eb4,f4,bb4]@2", // Bbsus4
  B: "~@2 [bb2,f3,bb3,eb4,f4]@3 ~ [bb2,f3,bb3,eb4,f4,bb4]@3 ~ [bb2,f3,bb3,eb4,f4,bb4]@3 ~ [bb2,f3,bb3,d4,f4,bb4]@2", // Bbsus4 Bb
  C: "~@2 [bb2,f3,bb3,d4,f4]@3 ~ [bb2,f3,bb3,d4,f4,bb4]@3 ~ [bb2,f3,bb3,eb4,f4,bb4]@3 ~ [bb2,f3,bb3,eb4,f4,bb4]@2", // Bb Bbsus4
  D: "~@2 [c3,f3,c4,eb4,a4]@3 ~ [c3,f3,c4,eb4,a4]@3 ~ [c3,f3,c4,eb4,a4]@3 ~ [c3,f3,c4,eb4,a4]@2", // F7
  E: "~@2 [bb2,f3,bb3,d4,bb4]@3 ~ [bb2,f3,bb3,d4,bb4]@3 ~ [bb2,f3,bb3,d4,bb4]@3 ~ [bb2,f3,bb3,d4,bb4]@2", // Bb
  F: "~@2 [c3,f3,c4,eb4,a4]@3 ~ [c3,f3,c4,eb4,a4]@3 ~ [c3,f3,c4,eb4,a4]@3 ~ [f3,c4,eb4,a4]@2", // F7
  G: "~@2 [bb2,f3,bb3,d4,bb4]@3 ~ [bb2,f3,bb3,d4,bb4]@3 ~ [bb2,f3,bb3,d4]@3 ~ [bb2,f3,bb3,d4,bb4]@2", // Bb
  H: "~@2 [bb2,f3,bb3,d4,bb4]@3 ~ [bb2,f3,bb3,d4,bb4]@3 ~ [bb2,f3,bb3,d4,bb4]@3 ~ [bb2,f3,bb3,d4]@2", // Bb
  I: "~@2 [bb2,g3,bb3,eb4,g4]@3 ~ [bb2,g3,bb3,eb4,g4]@3 ~ [bb2,g3,bb3,eb4,g4]@3 ~ [bb2,g3,bb3,eb4,g4]@2", // Eb
  J: "~@2 [bb2,f3,bb3,d4,f4]@3 ~ [bb2,f3,bb3,d4,f4]@3 ~ [bb2,f3,bb3,d4,f4,bb4]@3 ~ [bb2,f3,bb3,d4,f4,bb4]@2", // Bb
  K: "~ [bb2,f3,bb3,d4,bb4] ~ [bb2,f3,bb3,d4,bb4] ~ [bb2,f3,bb3,d4,bb4] ~ [bb2,f3,bb3,d4,bb4]", // Bb
  L: "~ [c3,f3,c4,eb4,a4] ~ [c3,f3,c4,eb4,a4] ~ [c3,f3,c4,eb4,a4] ~ [c3,f3,c4,eb4,a4]", // F7
  M: "~ [bb2,f3,bb3,d4,bb4] ~ [bb2,f3,bb3,d4,bb4] ~ [bb2,f3,bb3,d4,bb4] ~ [bb2,f3,bb3,d4]", // Bb
  N: "~ [bb2,f3,bb3,d4,bb4] ~ [bb2,f3,bb3,d4] ~ [bb2,f3,bb3,d4,bb4] ~@2", // Bb
  O: "~@5 [c3,f3,c4,eb4,a4] ~ [c3,f3,c4,eb4,a4]", // F7
  P: "~ [c3,f3,c4,eb4,a4] ~ [c3,f3,c4,eb4,a4] ~ [bb2,g3,bb3,eb4,g4] ~ [bb2,g3,bb3,eb4,g4]", // F7 Eb
  Q: "~ [bb2,g3,bb3,eb4,g4] ~ [bb2,g3,bb3,eb4,g4] ~ [bb2,f3,bb3,d4,bb4] ~ [bb2,f3,bb3,d4,bb4]", // Eb Bb
  R: "~ [bb2,f3,bb3,d4] ~ [bb2,f3,bb3,d4,bb4] ~ [c3,f3,c4,eb4,a4] ~ [c3,f3,c4,eb4,a4]", // Bb F7
  S: "~ [bb2,f3,bb3,d4,bb4] ~ [bb2,f3,bb3,d4,bb4] ~ [c3,f3,c4,eb4,a4] ~ [c3,f3,c4,eb4,a4]", // Bb F7
  T: "~ [c3,f3,c4,eb4,a4] ~ [c3,f3,c4,eb4,a4] ~ [bb2,f3,bb3,d4,bb4] ~ [bb2,f3,bb3,d4,bb4]", // F7 Bb
  U: "~ [c3,f3,c4,eb4,a4] ~ [c3,f3,c4,eb4,a4] ~ [c3,f3,c4,eb4,a4] ~@2", // F7
  V: "~@5 [bb2,f3,bb3,f4,bb4] ~ [bb2,f3,bb3,eb4,f4,bb4]", // Bb5 Bbsus4
  W: "~ [bb2,f3,bb3,eb4,f4,bb4] ~ [bb2,f3,bb3,eb4,f4,bb4] ~ [bb2,f3,bb3,eb4,f4,bb4] ~ [bb2,f3,bb3,d4,f4,bb4]", // Bbsus4 Bb
  X: "~ [bb2,f3,bb3,d4,f4,bb4] ~ [bb2,f3,bb3,d4,f4,bb4] ~ [bb2,f3,bb3,d4,f4,bb4] ~ [bb2,f3,bb3,d4,f4,bb4]", // Bb
  Y: "~ [bb2,f3,bb3,f4,bb4] ~ [bb2,f3,bb3,f4,bb4] ~ [bb2,f3,bb3,f4,bb4] ~ [bb2,f3,bb3,eb4,f4,bb4]", // Bb5 Bbsus4
  Z: "~@5 [bb2,f3,bb3,eb4,bb4] ~ [bb2,f3,bb3,eb4,bb4]", // Bbsus4
  AA: "~ [bb2,f3,bb3,eb4,bb4] ~ [bb2,f3,bb3,eb4,bb4] ~ [bb2,f3,bb3,eb4,bb4] ~ [bb2,f3,bb3,d4,bb4]", // Bbsus4 Bb
  AB: "~ [bb2,f3,bb3,d4,bb4] ~ [bb2,f3,bb3,d4] ~ [bb2,f3,bb3,d4,bb4] ~ [bb2,f3,bb3,d4,bb4]", // Bb
  AC: "~ [bb2,f3,bb3,d4,bb4] ~ [bb2,f3,bb3,d4,bb4] ~ [bb2,f3,bb3,eb4,bb4] ~ [bb2,f3,bb3,eb4,bb4]", // Bb Bbsus4
  AD: "~ [bb2,f3,bb3,eb4,bb4] ~ [bb2,f3,bb3,d4,bb4] ~ [bb2,f3,bb3,d4,bb4] ~ [bb2,f3,bb3,d4,bb4]", // Bbsus4 Bb
  AE: "~ [c3,f3,c4,eb4,a4] ~ [c3,f3,c4,eb4,a4] ~ [bb2,f3,bb3,f4,bb4] ~ [bb2,f3,bb3,f4,bb4]", // F7 Bb5
  AF: "~ [bb2,f3,bb3,f4,bb4] ~ [bb2,f3,bb3,eb4,bb4] ~ [bb2,f3,bb3,eb4,bb4] ~ [bb2,f3,bb3,eb4,bb4]", // Bb5 Bbsus4
  AG: "~ [c3,f3,c4,eb4,a4] ~@6", // F7
})).s("gm_acoustic_guitar_steel").gain(0.06)

// chords · sitar
const sitar = note(`<
  ~ A B C D@2 E ~@17 F G ~@2 F H ~@14 I J K L M N K O@2 P@2 ~@2 Q ~@8 A R S T U V W X Y Z@2 ~@8 I AA K AB I AA K AC@2
  AD@2 ~@2 AE@2 ~@7 AF AG AH AI AJ B C AK AL AM AN AO AP AQ AR AS AT AU
>`.pickRestart({
  A: "~@10 [eb5,f5] ~ [eb5,f5] ~ [eb5,f5] ~", // Ebsus2
  B: "[eb5,f5] ~ [eb5,f5] ~ [eb5,f5] ~ [eb5,f5] ~ eb5@2 [d5,f5] ~ [eb5,f5] ~ [c5,eb5] ~, ~@8 f5 ~@3 d5@2 ~@2", // Ebsus2 Dm Ebsus2 Cm
  C: "[d5,eb5] ~ [bb4,d5] ~ [c5,d5] ~ [a4,c5] ~ [bb4,c5] ~ [g4,bb4] ~ [a4,bb4] ~ [f4,a4] ~, c5 ~ bb4 ~ a4 ~ g4 ~", // Ebmaj7 Bb Csus2 Am Bbsus2 Gm Bbmaj7 F
  D: "[[f4,a4]@19 ~@5 [g4,bb4]@2 [bb4,d5]@2 [a4,c5] ~ [a4,c5] [bb4,eb5]]/2", E: "bb4, d5@13 ~@3",
  F: "~@8 [f4,a4] ~ [g4,bb4] ~ [a4,c5] ~ [a4,c5] [bb4,d5]", G: "[a4,c5] ~", H: "[a4,c5]@3 ~@5",
  I: "~@2 [a4,c5] ~ [a4,c5] ~ [a4,c5] ~ [a4,c5] ~ [g4,bb4] ~ [g4,bb4] ~ [g4,bb4] ~", // Am Gm
  J: "[g4,bb4] ~ [f4,a4] ~ [f4,a4]@9 ~@3", // Gm F
  K: "~@2 [bb4,d5] ~ [bb4,d5] ~ [bb4,d5] ~ [bb4,d5] ~ [bb4,d5] ~ [bb4,d5] ~ [bb4,d5] ~", // Bb
  L: "d5@2 [d5,f5] ~ [d5,f5] ~ [d5,f5] ~ [d5,f5] ~ [d5,f5] ~ [d5,f5] ~ [d5,f5] ~, f5 ~@15", // Dm
  M: "~@8 [a4,c5] ~ [g4,bb4] ~ [g4,bb4] ~ [g4,bb4] ~", N: "[g4,bb4] ~ [f4,a4] ~ a4@5 ~@7, ~@4 f4@3 ~@9",
  O: "[d5@2 [d5,f5] ~ [d5,f5] ~ [d5,f5] ~ [d5,f5] ~ [eb5,g5] ~ [f5,a5]@9 ~@11, f5 ~@31]/2", // Dm Eb F
  P: "[[f4,a4] ~ [g4,bb4] ~ [a4,c5] ~ [a4,c5] [bb4,d5] [a4,c5]@12 ~@12]/2", // F Gm Am Bb Am
  Q: "[f4,a4] ~ [g4,bb4] ~ [a4,c5] ~ [a4,c5] [bb4,d5] [a4,c5]@8", // F Gm Am Bb Am
  R: "[eb5,f5] ~ [eb5,f5] ~ [eb5,f5] ~ [eb5,f5] ~ [eb5,f5]@2 d5 ~ [d5,eb5,f5] ~ [c5,eb5] ~", // Ebsus2 Dm Cm
  S: "[d5,eb5] ~ [bb4,d5] ~ [bb4,d5]@2 [a4,c5] ~ [a4,bb4,c5] ~ [g4,bb4] ~ [g4,a4,bb4] ~ [f4,a4] ~, c5@2 ~@2 c5 ~@11", // Ebmaj7 Bb Am Gm F
  T: "[f4,a4]@6 ~@2 f4@2 [eb4,g4] ~ g4@2 [d4,f4] ~, ~@8 a4 ~@3 eb4 ~@3", // F Eb Dm
  U: "[d4,f4]@6 ~@4 [eb5,f5] ~ [eb5,f5] ~ [eb5,f5] ~", // Dm Ebsus2
  V: "[eb5,f5] ~ [eb5,f5] ~ [eb5,f5] ~ [eb5,f5] ~ [eb5,f5] ~ [d5,f5] ~ [d5,eb5,f5] ~ [c5,eb5] ~", // Ebsus2 Dm Cm
  W: "[c5,d5,eb5] ~ [bb4,d5] ~ [bb4,c5] ~ [a4,c5] ~ [a4,bb4,c5] ~ [g4,bb4] ~ [g4,a4,bb4] ~ [f4,a4] ~, ~@2 d5 ~@5", // Cm Bb Bbsus2 Am Gm F
  X: "[f4,a4]@6 ~@2 [g4,bb4] ~ [g4,bb4] ~ [g4,bb4] ~ [g4,bb4] [a4,c5]", // F Gm Am
  Y: "[a4,c5]@6 ~@2 [a4,c5] ~ [a4,c5] ~ [a4,c5] ~ [a4,c5] [bb4,eb5]", Z: "[[bb4,d5]@19 ~@13]/2",
  AA: "[g4,bb4] ~ [f4,a4] ~ [f4,a4]@5 ~@7", // Gm F
  AB: "[d5,f5] ~ [d5,f5] ~ [d5,f5] ~ [d5,f5] ~ [d5,f5] ~ [d5,f5] ~ [d5,f5] ~ [d5,f5] ~", // Dm
  AC: "[[d5,f5] ~ [d5,f5] ~ [d5,f5] ~ [d5,f5] ~ [d5,f5] ~ [eb5,g5] ~ [f5,a5]@10 ~@10]/2", // Dm Eb F
  AD: "[[f4,a4] ~ bb4@2 [a4,c5] ~ [a4,c5] [bb4,d5] [a4,c5]@15 ~@9, ~@2 g4 ~@29]/2", // F Am Bb Am
  AE: "[[f4,a4] ~ [g4,bb4] ~ [a4,c5] ~ [a4,c5] [bb4,d5] [a4,c5]@14 ~@10]/2", AF: "~@10 eb5 ~ [eb5,f5] ~ [eb5,f5] ~",
  AG: "[eb5,f5] ~ [eb5,f5] ~ [eb5,f5] ~ [eb5,f5] ~ eb5@2 [d5,f5] ~ [eb5,f5] ~ c5 ~, ~@8 f5 ~@3 d5@2 ~@2", // Ebsus2 Dm Ebsus2
  AH: "[d5,eb5] ~ [bb4,d5] ~ [c5,d5] ~ [a4,c5] ~ [bb4,c5] ~ [g4,bb4] ~ g4@2 [f4,a4] ~, c5@2 ~@2 bb4@2 ~@2 a4@2 ~@2 bb4 ~@3", // Ebmaj7 Bb Csus2 Am Bbsus2 Gm F
  AI: "[f4,a4]@6 ~@2 [f4,a4] ~ [eb4,g4] ~ [eb4,g4]@2 [d4,f4] ~", // F Eb Dm
  AJ: "f4@8 ~@2 [eb5,f5] ~ [eb5,f5] ~ [eb5,f5] ~, d4@3 ~@5", // Ebsus2
  AK: "[f4,a4]@5 ~@3 [g4,bb4] ~ [g4,bb4] ~ [g4,bb4] ~ g4@2, ~@14 bb4 ~", // F Gm
  AL: "[a4,c5]@6 ~@2 [a4,c5] ~ [a4,c5] ~ c5@2 [a4,d5] [bb4,eb5], ~@12 a4 ~@3", // Am D5 Eb5
  AM: "[bb4,d5] ~ [eb5,f5] ~ [eb5,f5] ~ [eb5,f5] ~ [eb5,f5] ~ [eb5,f5] ~ [eb5,f5] ~ [eb5,f5] ~", // Bb Ebsus2
  AN: "eb5@2 [d5,f5] ~ [eb5,f5] ~ [c5,eb5] ~ [d5,eb5] ~ [bb4,d5] ~ [c5,d5] ~ [a4,c5] ~, f5 ~@3 d5@2 ~@2 c5@2 ~@2 bb4@2 ~@2", // Dm Ebsus2 Cm Ebmaj7 Bb Csus2 Am
  AO: "[bb4,c5] ~ [g4,bb4] ~ [a4,bb4] ~ [f4,a4] ~ [f4,a4]@7 ~, a4 ~ g4 ~@5", // Bbsus2 Gm Bbmaj7 F
  AP: "a4@2 [eb4,g4] ~ [eb4,g4]@2 [d4,f4] ~ [d4,f4]@7 ~, f4 ~@15", // Eb Dm
  AQ: "~@2 [eb5,f5] ~ [eb5,f5] ~ [eb5,f5] ~ [eb5,f5] ~ [eb5,f5] ~ [eb5,f5] ~ [eb5,f5] ~", // Ebsus2
  AR: "eb5@2 d5 ~ d5@2 [c5,eb5] ~ [d5,eb5] ~ [bb4,d5] ~ [bb4,d5]@2 [a4,c5] ~, f5 ~@3 eb5 ~@3 c5@2 ~@2 c5 ~@3", // Cm Ebmaj7 Bb Am
  AS: "[bb4,c5] ~ [g4,bb4] ~ [a4,bb4] ~ [f4,a4] ~ f4@7 ~, a4 ~ g4 ~ a4@2 ~@2", // Bbsus2 Gm Bbmaj7 F
  AT: "[g4,bb4] ~ [g4,bb4] ~ [g4,bb4] ~ [g4,bb4] c5 a4@6 ~@2, ~@2 c5 ~", AU: "[a4,c5] ~ [a4,c5] ~ [a4,c5] ~@11",
})).s("gm_sitar").gain(0.2).pan(0.4)

// chords · string ensemble 2 · "Strings"
const string_ensemble_2 = note(`<
  ~@34 A@2 B@2 C@2 D@2 A@2 D@2 A@2 D@2 E@2 F@8 G@6 H@8 I J@2 K@2 L@2 M@2 N@2 O@2 N@2 O@2 P@6 Q@8 R@3 S T U V S T W X@2 Y
  Z AA@2 Y Z AB AC
>`.pickRestart({
  A: "[[bb3,d4,f4]@31 ~]/2", B: "[[a3,eb4,f4]@29 ~@3]/2", C: "[[bb3,d4,f4]@15 ~]/2", D: "[[a3,eb4,f4]@31 ~]/2",
  E: "[[bb3,d4,f4]@3 ~]/2", // Bb
  F: "[~@8 [a3,eb4,f4]@30 ~@2 [eb4,g4,bb4]@16 [f4,bb4,d5]@15 ~ [eb4,a4,c5]@31 ~ [eb4,g4,bb4]@15 ~ [f4,bb4,d5]@8]/8", // F7 Eb Bb Adim Eb Bb
  G: "[~@8 [eb4,f4,a4]@32 [bb3,d4,f4]@31 ~ [a3,eb4,f4]@24]/6", // F7 Bb F7
  H: "[~@10 eb5 ~ eb5 ~ eb5@2 eb5 ~ eb5 ~ eb5 ~ eb5 ~ eb5@2 d5 ~ d5@2 c5 ~ c5@2 bb4 ~ bb4@2 a4 ~ a4@2 g4 ~ g4@2 f4 ~ f4@8 a4@2 g4 ~ g4@2 f4 ~ f4@9 ~ eb5 ~ eb5 ~ eb5 ~ eb5@2 eb5 ~ eb5 ~ eb5 ~ eb5@2 d5 ~ d5@2 c5 ~ c5@2 bb4 ~ bb4@2 a4 ~ a4@2 g4 ~ g4@2 f4 ~ f4@8 g4 ~ g4 ~ g4 ~ g4@2, ~ f3@15]/8",
  I: "a4@7 ~ a4 ~ a4 ~ a4@2 bb4 ~", J: "[[d4,f4,bb4]@15 ~]/2", K: "[[a4,c5], eb4@15 ~]/2", L: "[[f4,bb4,d5]@31 ~]/2",
  M: "[eb4,a4,c5]/2", N: "[f4,bb4,d5]/2", O: "[f4,c5,eb5]/2",
  P: "[[f4,bb4,d5]@23 ~ [d5,f5]@2 [eb5,g5]@2 [f5,a5]@12 [a4,f5]@32 [g4,eb5]@16 [f4,d5]@8]/6", // Bb Dm Eb F Dm Cm Dm
  Q: "[~@4 [a4,f5]@8 [f4,c5]@8 [eb4,g4]@8 d4@7 ~ [eb4,c5]@16 [d4,bb4]@12, ~@5 bb4@4 ~@7, ~@56 f4@47 ~@25]/8", // Dm F5 Eb Cm Gm
  R: "[~@8 [eb4,f4,c5]@32 ~@2 eb5 ~ eb5 ~ eb5 ~]/3", S: "eb5 ~ eb5 ~ eb5 ~ eb5 ~ eb5@2 d5 ~ d5@2 c5 ~",
  T: "c5@2 bb4 ~ bb4@2 a4 ~ a4@2 g4 ~ g4@2 f4 ~", U: "f4@7 ~ a4@2 g4 ~ g4@2 f4 ~", V: "f4@9 ~ eb5 ~ eb5 ~ eb5 ~",
  W: "f4@7 ~ g4 ~ g4 ~ g4 ~ g4@2", X: "[a4@7 ~ a4 ~ a4 ~ a4@2 bb4@4 eb5 ~ eb5 ~ eb5 ~ eb5 ~ eb5 ~ eb5 ~ eb5 ~]/2",
  Y: "eb5@2 d5 ~ d5@2 c5 ~ c5@2 bb4 ~ bb4@2 a4 ~", Z: "a4@2 g4 ~ g4@2 f4 ~ f4@8",
  AA: "[a4@2 g4 ~ g4@2 f4 ~ f4@10 eb5 ~ eb5 ~ eb5 ~ eb5 ~ eb5 ~ eb5 ~ eb5 ~]/2", AB: "g4 ~ g4 ~ g4 ~ g4@2 a4@7 ~",
  AC: "a4 ~ a4 ~ a4@2 bb4@2 ~@8",
})).s("gm_string_ensemble_2").gain(0.15).pan(0.3)

// chords · pad poly · "Polysynth"
const pad_poly = note("<~@75 A@2 B C A@2 B@2 A@2 B@2 A@2 B@2 A D@2 E F G H E F G H E I J K L@2 ~@17>".pickRestart({
  A: "[bb3,d4,f4] ~ [bb3,d4,f4] ~@3 [bb3,d4,f4] ~ [bb3,d4,f4] ~ [bb3,d4,f4] ~ [bb3,d4,f4] ~ [bb3,d4,f4] ~", // Bb
  B: "[c4,eb4,f4] ~ [c4,eb4,f4] ~@3 [c4,eb4,f4] ~ [c4,eb4,f4] ~ [c4,eb4,f4] ~ [c4,eb4,f4] ~ [c4,eb4,f4] ~", // F7
  C: "[c4,eb4,f4] ~ [c4,eb4,f4] ~@3 [c4,eb4,f4] ~ [c4,eb4,f4] ~ [c4,eb4,f4] ~@3 [c4,eb4,f4] ~", // F7
// … 65 more lines

More by ABBA