Strudelify
Adia cover art

1997 · Surfacing

Adia

Sarah McLachlan

KeyE♭ majorTempo119 bpm
0:00/0:00
// Adia — Sarah McLachlan
// 119 bpm, 4/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: duplicate parts dropped: ch 7 cello (copy of ch 9 synth strings 1)
// note: Full arrangement: all 157 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(119/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(`<
  A B C D A B E F G B H I@2 J@2 D@2 F@2 A B D@2 A B K F G B E L J M G N J O D P B F C D P@2 B@2 J Q E R P@2 J@2 E@2 A B
  G@2 A B K F D B R J@2 O D B J S D P B F C D P@2 N B J F E R P@2 L J E ~ T U V W X Y Z AA X Y AB F D G P@2 B L@2 Q E R
  AC P J AD AE O D@2 R E B@2 J F G@2 P AC B L@2 Q E@2 P AC J AF J F R A B C D A B E F ~
>`.pickRestart({
  A: "c2@7 ~ c2@8", B: "ab1@7 ~ ab1@8", C: "eb2@8 eb2@5 ~ eb2 ~", D: "eb2@7 ~ eb2@8", E: "g1@7 ~ g1@8",
  F: "bb1@7 ~ bb1@8", G: "eb2@5 ~ eb2 ~ eb2@8", H: "eb2@3 eb2 b1@4", I: "c2@5 ~ c2 ~ c2@8", J: "f1@7 ~ f1@8",
  K: "g1@2 g1 bb1", L: "f1@5 ~ f1 ~ f1@8", M: "bb1@4 bb1@3 bb1", N: "ab1@5 ~ ab1 ~ ab1@8", O: "bb1!2",
  P: "db2@7 ~ db2@8", Q: "bb1@5 ~ bb1 ~ bb1@8", R: "g1@5 ~ g1 ~ g1@8", S: "bb1@3 bb1 bb1@3 bb1", T: "c2!2",
  U: "c2@5 ~ c2@2 c2@8", V: "eb2 bb1", W: "eb2@6 eb2@2 bb1@7 ~", X: "bb1 f1", Y: "bb1@5 ~ bb1@2 f1@8", Z: "c2@8 g1@7 ~",
  AA: "f2@8 c2@7 ~", AB: "bb1@6 bb1@2 f1@5 ~ f1 ~", AC: "db2@5 ~ db2 ~ db2@8", AD: "f1!2", AE: "f1@4 f1@3 f1",
  AF: "f1@8 f1@5 ~ f1 ~",
})).s("gm_fretless_bass").gain(0.27)

// chords · piano
const piano = note(`<
  A B C@2 D E F G H I J D A K L M N O P A Q R S T U V P N W X Y Z AA M Q AB AC AD AE AF AG AH@2 AI AJ AK U AL G AM AN AO
  AP AL AQ AR AS T AT AU@2 D AK AV P R AW AX AY Z AZ R Q BA AC H BB BC P AH@2 AI AP AK E BD BE BF AM BG@2 AQ BH BI ~
  BJ@2 AU@2 BK@2 BL BM BN@2 BO BP AD H AI AP AT BQ@2 G BF AN AO BG BR BS@2 BT S H AM BU BV BW BD BO R S BG AP U BQ@2 BX
  AM BY AO BZ BR CA@2 G BI A B C@2 D E F G ~
>`.pickRestart({
  A: "[g3,c4]@13 ~@2 eb4, [c3,eb4,g4], ~@13 g3@3, ~@7 c4", // C5 Cm
  B: "[eb4,bb4,c5]@10 ~@3 c5@2 ~, ab2, ~@5 c4@3, ~@11 eb4@5, ~@12 bb4@3 ~", // Cm7
  C: "[bb3@13 ~@9 bb3@4 ~@2 eb5@4, eb2@13 bb3@3, [eb4,g4]@15 eb4@17, ~@13 g3@19, ~@7 bb3 g4@8]/2", // Eb
  D: "g4@2 eb5 g4, [c3,g3,c4,eb4]", E: "eb4 ~@5 [eb4,c5]@2, ab2, c5@3 ab4@5, ab4@2 eb4@3 c4@3, ~ c4@3 c5@2 ~@2",
  F: "[bb3,d4]@13 ~@2 g4, [g2,g4,bb4], ~@13 bb3@3, ~@7 d4", G: "[bb3,f4]@3 ~ [bb3,f4]@4, bb2, ~@3 f3@5",
  H: "[bb3,g4]@3 ~ [bb3,g4]@4, eb2, ~@3 g3@5", I: "[c4,g4,bb4]@3 ~ [c4,g4,bb4]@4, ab2, ~@3 ab3@5",
  J: "~@3 g4 [b1,b3,d4,g4,b4]@4, [eb2,eb4] ~, bb3!2 ~@2, ~ g3@3 ~@4", // G Eb
  K: "a3 ~@6 f4, f2, f4@3 [a3,eb4], eb4@2 a3@2 eb4 f3@3, c4 f3@2 c4@5", // Adim
  L: "[a3,c4]@13 ~@2 eb4, [f2,eb4,f4], ~@13 a3@3, ~@7 c4", M: "g4@2 eb5 g4, [eb2,g3,bb3,eb4]",
  N: "[g3,bb3]@13 ~@2 eb4, [eb2,eb4,g4], ~@13 g3@3, ~@7 bb3", O: "f4@2 d5 f4, [bb2,f3,bb3,d4]",
  P: "[bb3,d4,f4]@10 ~@3 f4@2 ~, bb2, ~@5 f3@3, ~@11 bb3@5, ~@12 d4@3 ~", // Bb
  Q: "ab4@5 ~@2 c5, [ab2,eb4], c5 ~@9 c4@6, ~@3 ab4", // Ab5
  R: "[bb3,eb4,g4]@10 ~@3 g4@2 ~, eb2, ~@5 g3@3, ~@11 bb3@5, ~@12 eb4@3 ~", // Eb
  S: "eb4@5 ~@2 g4, [eb2,bb3], g4 ~@9 g3@6, ~@3 eb4", // Eb5
  T: "c4 ~@5 [c4,g4]@2, c3, g4@3 eb4@5, eb4@2 c4@3 g3@3, ~ g3@3 g4@2 ~@2", // C5
  U: "[eb4,ab4,c5]@10 ~@3 c5@2 ~, ab2, ~@5 c4@3, ~@11 eb4@5, ~@12 ab4@3 ~", // Ab
  V: "~@3 f4 ~ d4 [bb2,f3,bb3,d4,f4]@2, [g2,d4]@2 [g2,g3,bb3,f4] ~, bb3!2 ~@2, ~ g3@3 ~@4", // Bb G5 Gm7
  W: "[c4,eb4,g4,bb4]@10 ~@4 bb4 ~, ab2, ~@5 ab3@3, ~@11 c4@5, ~@12 eb4 g4@2 ~", // Cm7
  X: "[g3,bb3]@13 ~@2 eb4, [g2,eb4,g4], ~@13 g3@3, ~@7 bb3", // Gm Cm
  Y: "bb3@3 ~@9 [bb3,f4]@4, f3@5 f3@3, f4@2 f4 ~, d4@3 d4@5, ~ bb3@2 ~", // Bb5
  Z: "c4 ~@5 [c4,ab4]@2, f2, ab4@3 f4@5, f4@2 c4@3 ab3@3, ~ ab3@3 ab4@2 ~@2", // Fm
  AA: "~@3 c4 [bb2,f3,bb3,d4,f4]@4, [bb2,d4,f4] ~, c4@3 ~@5, ~ f3 ~@2", AB: "ab4@2 f5 ab4, [f2,ab3,c4,f4]",
  AC: "~@3 c4 ~@3 bb3, [bb2,d4,f4]!2, c4@3 ~ bb3@3 ~, ~ f3 ~ f3", // Bb
  AD: "bb3 ~@5 [bb3,g4]@2, eb2, g4@3 eb4@5, eb4@2 bb3@3 g3@3, ~ g3@3 g4@2 ~@2", AE: "f4@2 db5 f4, [db3,f3,bb3,db4]",
  AF: "[c4,eb4]@13 ~@2 bb4, [ab2,bb4,c5], ~@13 c4@3, ~@7 eb4", // Cm Ab
  AG: "[f3,bb3]@13 ~@2 d4, [bb2,d4,f4], ~@13 f3@3, ~@7 bb3", // Bb5 Bb
  AH: "[bb5@15 ~@15 bb3@2, eb2, ~@15 g3@17, ~@25 bb3@3 g4@4, ~@13 eb4@3]/2",
  AI: "[bb3,db4]@13 ~@2 e4, [db3,e4,g4], ~@13 bb3@3, ~@7 db4", // Bbm Dbdim
  AJ: "[bb3,db4,e4,g4]@10 ~@4 g4 ~, db3, ~@5 g3@3, ~@11 bb3@5, ~@12 db4 e4@2 ~", // Bbdim
  AK: "[c4,eb4]@13 ~@2 ab4, [ab2,ab4,c5], ~@13 c4@3, ~@7 eb4", // Cm Ab
  AL: "ab3 ~@6 f4, f2, f4@3 [ab3,eb4], eb4@2 ab3@2 eb4 f3@3, c4 f3@2 c4@5", // Ab5
  AM: "[d4,bb4]@3 ~ [d4,bb4]@4, g2, ~@3 bb3@5", AN: "g4@5 ~@2 bb4, [g2,d4], bb4 ~@9 bb3@6, ~@3 g4",
  AO: "[bb3,e4,g4]@3 ~ [bb3,e4,g4]@4, db3, ~@3 g3@5", AP: "db4@5 ~@2 e4, [db3,bb3], e4@3 db4, g4 ~@9 g3@6",
  AQ: "eb4@2 c5 eb4, [f2,f3,ab3,c4]", AR: "b3 ~@6 g4, g2, g4@3 [b3,f4], f4@2 b3@2 f4 g3@3, d4 g3@2 d4@5",
  AS: "f4@2 d5 f4, [g2,g3,b3,d4]", AT: "[eb4,c5]@3 ~ [eb4,c5]@4, ab2, ~@3 c4@5",
  AU: "[bb3@7 ~ bb3@3 ~@3 g4@2, eb2, g4@13 g3@3, eb4@23 bb3@9, g3@13 ~ g3@8 g3@2 eb4@8]/2",
  AV: "[g2,bb3,d4,f4,g4]@4 ~ d4 [bb2,f3,bb3,d4,f4]@2, ~@2 [g2,g3,bb3,f4] ~", // Gm7 Bb Gm7
  AW: "c4 ~@6 bb4, ab2, bb4@3 [c4,g4], g4@2 c4@2 g4 ab3@3, eb4 ab3@2 eb4@5", // C5
  AX: "bb3 ~@5 [bb3,g4]@2, g2, g4@3 eb4@5, eb4@2 bb3@3 g3@3, ~ g3@3 g4@2 ~@2", AY: "f4@2 d5 f4, [f3,bb3,d4]",
  AZ: "~@3 f4 ~@3 bb3, [bb2,d4] [bb2,d4,f4], c4@2 c4@2 bb3@3 ~, ~ f3@3 ~@2 f3@2", // Bb
  BA: "[c4,ab4]@3 ~ [c4,ab4]@4, f2, ~@3 ab3@5", // Fm
  BB: "[bb3,db4,f4]@10 ~@3 f4@2 ~, db3, ~@5 f3@3, ~@11 bb3@5, ~@12 db4@3 ~", // Bbm
  BC: "bb4@5 ~@2 c5, [ab2,eb4], c5 ~@9 c4@6, ~@3 bb4", BD: "[ab3,eb4,f4]@3 ~ [ab3,eb4,f4]@4, f2, ~@3 f3@5",
  BE: "d4@5 ~@2 f4, [bb2,bb3], f4 ~@9 f3@6, ~@3 d4", BF: "bb4@2 g5 bb4, [g2,bb3,d4,g4]",
  BG: "bb3 ~@6 g4, db3, g4@3 [bb3,e4], e4@2 bb3@2 e4 g3@3, db4 g3@2 db4@5", // Bbdim
  BH: "[ab3,c4,eb4,f4]@10 ~@4 f4 ~, f2, ~@5 f3@3, ~@11 ab3@5, ~@12 c4 eb4@2 ~", // Fm7
  BI: "[b3,d4,f4,g4]@10 ~@4 g4 ~, g2, ~@5 g3@3, ~@11 b3@5, ~@12 d4 f4@2 ~", // G7
  BJ: "[a3@7 ~ a3@3 ~@4 f4, c2@7 eb4, f4@13 f3@3, eb4@3 c4, [f3,c4]@14 f3@8 f3 a3@9]/2", // F5
  BK: "[bb3@7 ~ bb3@3 ~@3 f4@2, bb2, f4@13 f3@3, d4@23 bb3@9, f3@13 ~ f3@8 f3@2 d4@8]/2",
  BL: "[c4,eb4,g4]@10 ~@3 g4@2 ~, c3, ~@5 g3@3, ~@11 c4@5, ~@12 eb4@3 ~", // Cm
  BM: "c4 ~@5 [c4,a4]@2, f2, a4@3 f4@5, f4@2 c4@3 a3@3, ~ a3@3 a4@2 ~@2", // F
  BN: "[bb3@13 ~@9 bb3@4 ~@2 d5@4, bb2@13 bb3@3, [d4,f4]@15 d4@17, ~@13 f3@19, ~@7 bb3 f4@8]/2", // Dm
  BO: "d4@2 bb4 d4, [bb2,f3,ab3,bb3]", BP: "ab3 ~@6 f4, bb2, f4@3 [ab3,d4], d4@2 ab3@2 d4 f3@3, bb3 f3@2 bb3@5",
  BQ: "[c6@15 ~@15 c4@2, f2, ~@15 ab3@17, ~@25 c4@3 f4@4, ~@13 eb4@3]/2",
  BR: "c4@5 ~@2 eb4, [f2,ab3], eb4@3 c4, f4 ~@9 f3@6", // Fm
  BS: "[ab3@13 ~@15 c5@4, f2@11 ab3 f4 ab3@3, f4 eb4, [c4,eb4]@14 ab3 c4@17, ~@13 f3@19]/2", // Cm
  BT: "~@3 bb3 [bb2,f3,bb3,d4,f4]@4, [bb2,eb4,f4] ~, bb3@3 ~@5, ~ f3 ~@2", // Bb Bbsus4
  BU: "d4@5 ~@2 f4, [g2,bb3], f4@3 d4, g4 ~@9 g3@6", BV: "eb4@5 ~@2 g4, [ab2,c4], g4@3 eb4, bb4 ~@9 ab3@6",
  BW: "g4@2 eb5 g4, [ab2,ab3,c4,eb4]", BX: "bb3 ~@5 [bb3,f4]@2, bb2, f4@3 d4@5, d4@2 bb3@3 f3@3, ~ f3@3 f4@2 ~@2",
  BY: "d4 ~@5 [d4,bb4]@2, g2, bb4@3 g4@5, g4@2 d4@3 bb3@3, ~ bb3@3 bb4@2 ~@2", BZ: "e4@2 db5 e4, [db3,g3,bb3,db4]",
  CA: "[ab3@7 ~ ab3@3 ~@4 f4, f2@7 eb4, f4@13 f3@3, eb4@3 c4, [f3,c4]@14 f3@8 f3 ab3@9]/2", // F5
})).s("gm_piano").gain(0.14).pan(0.4)

// chords · synth strings 2
const synth_strings_2 = note("<~@95 A@2 B@2 C@2 D E F@2 G ~@51>".pickRestart({
  A: "[~ c6@2 a5, [eb6,f6]]/2", B: "[~@3 g6, [g5,eb6]@31 ~]/2", C: "[~ bb5@2 f5, [d6,f6]]/2",
  D: "eb6@8 g6@4 eb6@3 ~, g5@15 ~", E: "f6@8 a6@4 f6@3 ~, a5@15 ~", F: "[~@16 f6@15 ~, [f5,d6]@31 ~]/2", G: "[ab5,d6]",
})).s("gm_synth_strings_2").gain(0.11)

// chords · acoustic guitar nylon
const acoustic_guitar_nylon = note(`<
  A B C@2 D E F G H I J D A K@2 L M G@2 D E H N O P Q R S T H U V W M X V Y L Z AA AB AC@2 AD AE X E AF U AG@2 AH AI AJ
  AK AL AM AN E AC@2 AO AP Q G M I H G AQ W M P V AR L AS AT AU AV@2 AD AH P E AW G AG AX AE AH AW AJ AY ~ AZ@2 AC@2
  BA@2 D BB BC@2 BD BE H M AE AH P BF@2 U AG@2 AD AE AJ BG@2 BH M@2 AG BI I@2 AK BJ L@2 AE AD P BF@2 AB F BK AD AI AJ
  BG@2 AU AL A B C@2 D E F BL ~
>`.pickRestart({
  A: "~@2 g3@2 ~@2 g3@2 ~@2 g3@2 ~@3 eb4, c3@3 ~ c3@2 eb3@2, ~ g4@3, ~@4 [c4,eb4]@9 g3@3, ~@7 c4", // Cm
  B: "~@2 c4@2 ~@2 c4@2 ~@5 bb4 ~ eb4, ab2@3 ~ ab2@4, ~@2 [eb4,c5]@3 c4@3, ~@6 eb4 c5", // Cm
  C: "[~ bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3 ~ bb3, eb3@7 ~ eb3@6 ~@2 eb3@6 ~@2 eb3@6 ~@2, ~@4 [eb4,g4]@6 ~@2 [eb4,g4]@6 ~@2 [eb4,g4]@5 ~@3 [eb4,g4]@4]/2", // Eb
  D: "~ g3 ~ g3 ~ g3 ~ g3, c3@3 ~ c3@3 ~, ~@4 [c4,eb4,g4]@7 ~ [c4,eb4,g4]@4", // Cm
  E: "~ eb3 ~ eb3 ~ eb3 ~ eb3, ab2@7 ~ ab2@6 ~@2, ~@4 [ab3,c4]@7 ~ [ab3,c4]@4", // Ab
  F: "~ d3 ~ d3 ~ d3 ~ d3, g2@3 ~ g2@3 ~, ~@4 [g3,bb3,d4]@7 ~ [g3,bb3,d4]@4", // Gm
  G: "~ f3 ~ f3 ~ f3 ~ f3, bb2@7 ~ bb2@6 ~@2, ~@2 [bb3,d4]@3 ~ [bb3,d4]@2", // Bb
  H: "~ bb3 ~ bb3 ~ bb3 ~ bb3, eb3@7 ~ eb3@6 ~@2, ~@2 [eb4,g4]@3 ~ [eb4,g4]@2", // Eb
  I: "~@2 ab3@2 ~@2 ab3@2 ~@5 eb4 ~ c4, ab2@3 ~ ab2@4, ~@2 [c4,g4]@3 ab3@3, ~@6 c4 g4", // C5
  J: "~@2 bb3@2 ~@3 g4 ~@2 d3@2 ~@3 b3, eb3 g2, ~ g3 ~ b2, ~@5 bb3@3 ~@5 d3@3, ~@3 eb4 ~@3 g3",
  K: "~ f3 ~ f3 ~ f3 ~ f3, f2@7 ~ f2@6 ~@2, ~@2 [a3,eb4]@3 ~ [a3,eb4]@2", // Adim
  L: "~ bb3 ~ bb3 ~ bb3 ~ bb3, eb3@7 ~ eb3@6 ~@2, ~@4 [eb4,g4]@7 ~ [eb4,g4]@4", // Eb
  M: "~ bb3 ~ bb3 ~@3 eb4, eb3@7 ~ eb3@8, g4@2 [eb4,g4]@3 bb3 g4@2, ~@11 eb4@3 ~@2", // Eb
  N: "~@2 bb3@2 ~@2 bb3@2 ~@2 bb3@2 ~@3 g4, eb3@7 ~ eb3@4 g3@4, ~@4 [eb4,g4]@9 bb3@3, ~@7 eb4", // Eb
  O: "~ g3 ~ g3 ~ g3 ~ g3, [eb4,g4]@5 ~ [eb4,g4]@2, c3@6 ~@2 c3@7 ~, ~ c4@3", // Eb
  P: "~ eb3 ~ eb3 ~@3 ab3, ab2@7 ~ ab2@8, c4@2 [ab3,c4]@3 eb3 c4@2, ~@11 ab3@3 ~@2", // Ab
  Q: "~@3 f4 [g2,d3,g3,bb3]@2 [bb2,f3,bb3,d4]@2, g2 ~, ~ g3@3 ~@4, ~ bb3 ~@2", // Gm Bb
  R: "~ f3 ~ f3 ~@3 bb3, bb2@7 ~ bb2@8, d4@2 [bb3,d4]@3 f3 d4@2, ~@11 bb3@3 ~@2", // Bb
  S: "~ bb3 ~ bb3 ~ bb3 ~ bb3, eb3@7 ~ eb3@8, ~@4 [eb4,g4]@7 ~ [eb4,g4]@4", // Eb
  T: "c4 ab3 ~ ab3 ~ ab3 ~ ab3, g4@5 ~@3, ab2@7 ~ ab2@6 ~@2, ~@4 c4@5 ~@3 [c4,g4]@4", // C5
  U: "~ f3 ~ f3 ~ f3 ~ f3, bb2@7 ~ bb2@6 ~@2, ~@4 [bb3,d4]@7 ~ [bb3,d4]@4", // Bb
  V: "~ c4 ~ c4 ~ c4 ~ c4, f3@3 ~ f3@3 ~, ~@4 [f4,ab4,c5]@7 ~ [f4,ab4,c5]@4", // Fm
  W: "~@4 d4@2 f4@2 ~@2 f3@2 ~@3 d4, bb2!2, ~ f3@3 ~@2 d3@2, ~@4 c4@4 ~@5 f3@3, ~@7 bb3",
  X: "~ eb3 ~ eb3 ~ eb3 ~ eb3, ab2@7 ~ ab2@6 ~@2, ~@2 [ab3,c4]@3 ~ [ab3,c4]@2", // Ab
  Y: "~@6 d4 ~@3 f3@2 ~@3 d4, bb2!2, f4@4 c4@4 ~@5 f3@3, ~ f3@3 ~@2 d3@2, ~@7 bb3",
  Z: "~ f3 ~ f3 ~ f3 ~ f3, [db4,f4]@5 ~ [db4,f4]@2, bb2@6 ~@2 bb2@7 ~, ~ bb3@3", // Db
  AA: "eb4 c4 ~ c4 ~ c4 ~ c4, c5@5 ~@3, ab2@7 ~ ab2@6 ~@2, ~@4 eb4@5 ~@3 [eb4,c5]@4", // Cm
  AB: "bb3 f3 ~ f3 ~ f3 ~ f3, f4@5 ~@3, bb2@7 ~ bb2@6 ~@2, ~@4 bb3@5 ~@3 [bb3,f4]@4", // Bb5
  AC: "[~@15 bb3, eb3@8 eb3@7 ~ eb3@7 ~ eb3@8, [eb4,g4] [eb4,g4]@2 [eb4,g4]@2 [eb4,g4]@2 [eb4,g4], ~ bb3@2 bb3@2 bb3@2 bb3@2 bb3@2 bb3@2 bb3@2 ~]/2", // Eb
  AD: "~@2 g3@2 ~@2 g3@2 ~@5 db4 ~ bb3, db3@3 ~ db3@4, ~@2 [bb3,e4]@3 g3@3, ~@6 bb3 e4", // Bbdim
  AE: "bb3 g3 ~ g3 ~ g3 ~ g3, e4@5 ~@3, db3@7 ~ db3@6 ~@2, ~@4 bb3@5 ~@3 [bb3,e4]@4", // Bbdim
  AF: "~ f3 ~ f3 ~ f3 ~ f3, f2@7 ~ f2@6 ~@2, ~@2 [ab3,eb4]@3 ~ [ab3,eb4]@2", // Ab5
  AG: "~ d3 ~ d3 ~ d3 ~ d3, [bb3,d4]@5 ~ [bb3,d4]@2, g2@6 ~@2 g2@7 ~, ~ g3@3", // Bb
  AH: "~ g3 ~ g3 ~ g3 ~ g3, db3@7 ~ db3@6 ~@2, ~@2 [bb3,e4]@3 ~ [bb3,e4]@2", // Bbdim
  AI: "[bb3,e4] g3 ~ g3 ~@3 g3, db3@7 ~ db3@8, ~@2 [bb3,e4]@3 g3 e4@2, ~@11 bb3@5", // Bbdim
  AJ: "ab3 f3 ~ f3 ~ f3 ~ f3, eb4@5 ~@3, f2@7 ~ f2@6 ~@2, ~@4 ab3@5 ~@3 [ab3,eb4]@4", // Ab5
  AK: "~@2 f3@2 ~@2 f3@2 ~@5 c4 ~ ab3, f2@3 ~ f2@4, ~@2 [ab3,eb4]@3 f3@3, ~@6 ab3 eb4", // Ab5
  AL: "~@2 g3@2 ~@2 g3@2 ~@5 d4 ~ b3, g2@3 ~ g2@4, ~@2 [b3,f4]@3 g3@3, ~@6 b3 f4", // Bdim
  AM: "b3 g3 ~ g3 ~ g3 ~ g3, f4@5 ~@3, g2@7 ~ g2@6 ~@2, ~@4 b3@5 ~@3 [b3,f4]@4", // Bdim
  AN: "c4@2 ~@12 eb4 ~, g4@7 ~, c3@3 eb4@2 g3@3, eb4@4 c4@7 ~ c4@4, ~ g3@3 c3@4",
  AO: "~ g3 ~ g3 ~@3 g3, c3@7 ~ c3@7 ~, [c4,eb4,g4]@2 [c4,eb4,g4]@3 g3 [eb4,g4]@2, ~@11 c4@5", // Cm Eb
  AP: "~@2 c4@2 ~@2 c4@2 ~@5 ab4 ~ eb4, ab2@3 ~ ab2@4, ~@2 [eb4,c5]@3 c4@3, ~@6 eb4 c5", // Cm
  AQ: "f4@2 ~@12 ab4 ~, c5@7 ~, f3@3 ab4@2 c4@3, ab4@4 f4@7 ~ f4@4, ~ c4@3 f3@4",
  AR: "~@3 f4 ~ f3 ~ f3, bb2@8 bb2@7 ~, ~ f3@3 ~@4, ~ c4 ~ [bb3,d4]", // Bb
  AS: "~ f3 ~ f3 ~@3 f3, bb2@7 ~ bb2@7 ~, [bb3,db4,f4]@2 [bb3,db4,f4]@3 f3 [db4,f4]@2, ~@11 bb3@5", // Bbm Db
  AT: "~ c4 ~ c4 ~ c4 ~ c4, ab2@7 ~ ab2@6 ~@2, ~@2 [eb4,c5]@3 ~ [eb4,c5]@2", // Cm
  AU: "~@2 f3@2 ~@2 f3@2 ~@5 d4 ~ bb3, bb2@3 ~ bb2@4, ~@2 [bb3,f4]@3 f3@3, ~@6 bb3 f4", // Bb5
  AV: "[~ bb3 ~ bb3 ~ bb3 ~ bb3 ~@3 bb3 ~@2 [eb4,g4]@2, eb3@7 ~ eb3@6 ~@2 eb3@6 ~@2 eb3@5 ~@3, ~@4 [eb4,g4]@7 ~ [eb4,g4]@6 g3@2 [eb4,g4]@7 ~@5, ~@19 bb3@3 ~@4 bb3@6]/2", // Eb
  AW: "[ab3,eb4] f3 ~ f3 ~@3 f3, f2@7 ~ f2@8, ~@2 [ab3,eb4]@3 f3 eb4@2, ~@11 ab3@5", // Ab5
  AX: "g3@2 ~@12 bb3 ~, d4@7 ~, g2@3 bb3@2 d3@3, bb3@4 g3@7 ~ g3@4, ~ d3@3 g2@4",
  AY: "~ g3 ~ g3 ~ g3 ~ g3, g2@7 ~ g2@6 ~@2, ~@2 [b3,f4]@3 ~ [b3,f4]@2", // Bdim
  AZ: "[~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~@2 a3 c2, eb4@5 ~ eb4 ~, c2@3 ~ c2@3 ~ c2@6 ~@2, ~@4 a3@6 ~@2 a3@7 ~ a3@4 ~@2 f3@6]/2",
  BA: "[~@15 f3, bb2@8 bb2@7 ~ bb2@7 ~ bb2@8, [bb3,d4] [bb3,d4]@2 [bb3,d4]@2 [bb3,d4]@2 [bb3,d4], ~ f3@2 f3@2 f3@2 f3@2 f3@2 f3@2 f3@2 ~]/2", // Bb
  BB: "~ c4 ~ c4 ~ c4 ~ c4, f3@7 ~ f3@6 ~@2, ~@4 [f4,a4]@7 ~ [f4,a4]@4", // F
  BC: "[~@15 f3, bb2@3 f3@2 d3@2 d3@2 d3@7, f3 bb3@2 [f3,bb3]@2 bb3@2 [bb3,d4], bb3@4 d4@10 ~@5 f3@3 f3@4 f3@4 ~@2, ~ d3@3 bb2@3 ~ bb2@4 bb2@4]/2", // Bb5 Bb
  BD: "ab3 f3 ~ f3 ~ f3 ~ f3, d4@5 ~@3, bb2@7 ~ bb2@6 ~@2, ~@4 ab3@5 ~@3 [ab3,d4]@4", // Abdim
  BE: "~ f3 ~ f3 ~ f3 ~ f3, bb2@7 ~ bb2@6 ~@2, ~@2 [ab3,d4]@3 ~ [ab3,d4]@2", // Abdim
  BF: "[~ f3 ~ f3 ~ f3 ~ f3 ~@3 f3 ~ f3 ~ f3, f2@7 ~ f2@6 ~@2 f2@6 ~@2 f2@7 ~, ~@4 [ab3,eb4]@6 ~@2 [ab3,eb4]@6 f3@2 eb4@7 ~@5, ~@19 ab3@8 ~ [ab3,eb4]@4]/2", // Ab5
  BG: "[~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~ f3 ~@2 ab3 f2, eb4@5 ~ eb4 ~, f2@3 ~ f2@3 ~ f2@6 ~@2, ~@4 ab3@6 ~@2 ab3@7 ~ ab3@4 ~@2 f3@6]/2",
  BH: "~@4 eb4@2 f4@2 ~@2 f3@2 ~@3 d4, bb2!2, ~ f3@3 ~@2 d3@2, ~@4 bb3@4 ~@5 f3@3, ~@7 bb3",
  BI: "~@2 g3@2 ~@2 g3@2 ~@5 d4 ~ bb3, g2@3 ~ g2@4, ~@2 [bb3,f4]@3 g3@3, ~@6 bb3 f4", // Bb5
  BJ: "~@2 f3@2 ~@2 f3@2 ~@5 bb3 ~ ab3, bb2@3 ~ bb2@4, ~@2 [ab3,d4]@3 f3@3, ~@6 ab3 d4", // Abdim
  BK: "~@2 d3@2 ~@2 d3@2 ~@2 d3@2 ~@3 bb3, g2@3 ~ g2@2 bb2@2, ~ d4@3, ~@4 [g3,bb3]@9 d3@3, ~@7 g3", // Gm
  BL: "~ f3 ~ f3 ~ f3 [bb3,d4]@2, bb2@7 ~ bb2@6 ~@2, ~@2 [bb3,d4]@3 ~@3", // Bb
})).s("gm_acoustic_guitar_nylon").gain(0.16).pan(0.6)

// chords · english horn
const english_horn = note("<~@53 A B ~@36 A B ~@26 A C ~@5 D@2 E F ~@27>".pickRestart({
  A: "[ab3,c4] [ab3,c4,eb4]", B: "[ab3,c4,eb4]@3 ~@5", C: "[ab3,c4,eb4] ~", D: "[~@3 [c4,eb4]@3 [c4,eb4]@2]/2",
  E: "[bb3,eb4] [c4,eb4]", F: "[ab3,c4,eb4]@2 [ab3,c4,eb4] ~",
})).s("gm_english_horn").gain(0.3).pan(0.3)

// chords · synth strings 1
const synth_strings_1 = note(`<
  A B@2 C D E@2 F G@2 H@3 I J@2 K@3 L@3 C M@4 N@2 O@2 P@2 Q@2 R@2 S@2 T U@2 V@2 W X Y@2 Z@2 AA AB AC AD@3 ~ L@3 C M@4
  N@2 O@2 P@2 Q@2 R@2 S@2 T U@2 V@2 W X Y@2 Z@2 AA AB AC AD@3 AE AF AG AH AI@2 AJ@4 AK AL U@2 V@2 W AM Y@2 Z@2 AA AB AC
  AN@3 AO AP AQ@2 AR@3 AS U@2 V@2 W AM Y@2 Z@2 AA AB AC AN@3 F AT A B@2 C D E@2 F ~
>`.pickRestart({
  A: "[g3,c4,eb4]@2 ab4 g4 [g3,c4,f4]@2 f4!2", // Cm Csus4
  B: "[[bb3,c4,eb4]@2 eb4 [bb3,c4,eb4]@2 eb4@2 [bb3,eb4,f4]@3 f4 [bb3,eb4,g4]@5]/2", // Cm7 Bbsus4 Eb
  C: "[d4,eb4] [c4,eb4] [bb3,eb4] [c4,eb4]", D: "[g3,c4,eb4]@2 ab4 g4 [g3,c4,f4] f4@2 f4",
  E: "[[ab3,c4,eb4] eb4@2 [ab3,c4,eb4]@2 g3@2 g3@5 [g3,bb3,d4]@4]/2", F: "[f3,bb3,d4]!2",
  G: "[[g3,bb3]@2 f4!2 [g3,bb3,f4] f4@2 [g3,c4,eb4]@2 eb4@2 [g3,c4,f4]@4 bb3]/2", // Gm Gm7 Cm Csus4
  H: "[[g3,bb3,eb4]@2 eb4 f4 eb4 eb4@2 [eb4,g4,c5]@11 g4@2 c5@2 d5@2, ~@3 [g3,b3]@2 ~@19]/3", I: "[a4,c5,eb5]@2 d5 ~",
  J: "[c5 g4 ~@2 [eb4,g4]@3 eb4, ~@3 bb4@4 ~]/2", // Eb
  K: "[[bb3,eb4,g4] [bb3,eb4,ab4]@2 ~ [bb3,d4]@3 [bb3,eb4,f4]@2 [bb3,d4,f4]@2 c4, ~@3 f4@4 ~@5]/3", // Eb Ebsus4 Bb Bbsus4 Bb
  L: "[[g3,c4,eb4]@2 ab4 g4 [g3,c4,f4] f4@2 [ab3,c4,f4]@2 eb4@2 [ab3,c4,eb4]@2 eb4@2 [bb3,eb4,f4]@2 f4 [bb3,eb4,g4]@4 [bb3,eb4]@2]/3", // Cm Csus4 Fm Ab Bbsus4 Eb Eb5
  M: "[~ g3 f4!2 [g3,c4,f4]@2 f4 [ab3,c4,f4]@2 eb4@2 [ab3,c4,eb4]@2 ab3@2 g3@3 [f3,bb3,d4]@5 [f3,bb3,d4]@3 [f3,bb3,d4]@3 [f3,bb3,d4]@2 bb3]/4", // Csus4 Fm Ab Bb
  N: "[[g3,bb3,f4] f4@2 [g3,bb3,f4]@2 c4@2 [g3,c4,eb4]@2 eb4 [g3,c4,f4]@4 ~ bb3]/2", // Gm7 Cm Csus4
  O: "[[g3,bb3,eb4]@2 eb4 [bb3,eb4,f4]@2 g4@2 [bb3,d4,f4]@5 [bb3,d4,f4]@3 f4]/2", // Eb Bbsus4 Bb
  P: "[[ab3,c4,g4] f4@2 [ab3,c4,f4]@2 eb4 [bb3,c4,eb4]@4 [bb3,d4,f4]@4 ~ bb3]/2", // Abmaj7 Fm Cm7 Bb
// … 80 more lines

More by Sarah McLachlan