Strudelify
Constant Craving cover art

Recollection

Constant Craving

k.d. lang

KeyA♭ majorTempo126 bpm
0:00/0:00
// Constant Craving — k.d. lang
// 126 bpm, 4/4, key G# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 137 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(126/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 · piano · "A.PIANO 2"
const piano = note(`<
  A B C D E B F@2 G B C D G H I J K L M N O L N P O L M P O Q N R S T U V W@2 V@2 K L M N O L P@2 O L M P O Q N@2 S T U
  V W@2 V@2 X Y@2 Z@2 X AA AB AC AD@2 AE AF AD@2 K L M N O L P@2 O L M P O Q N@2 S T U AG W@2 V@2 S T U V W@2 ~@2 X AH@2
  Z@2 X AA AB AC AD@2 AE AF AD@2 AB AC AD@2 AE AF AD@2 AI@2 ~
>`.pickRestart({
  A: "~@4 [ab3,c4,f4]@6 ~@2 [ab3,c4,f4]@3 ~, f1", B: "[g3,c4,eb4]@3 ~ [g3,c4,eb4,g4]@7 ~ [g3,c4,eb4,g4]@4, c2@15 ~",
  C: "~@4 [ab3,c4,db4,f4]@7 ~ [ab3,c4,db4,f4]@4, eb1@15 ~", D: "~@4 [ab3,db4,eb4,f4]@7 ~ [ab3,db4,eb4,f4]@4, db2@7 ~",
  E: "~@4 [ab3,c4,f4]@7 ~ [ab3,c4,f4]@3 ~, f1@15 ~", // Fm
  F: "[~@4 [ab3,c4,db4,f4]@7 ~ [ab3,c4,db4,f4]@4 ~@4 [ab3,db4,eb4,f4]@7 ~ [ab3,db4,eb4,f4]@4, eb1@15 ~, ~@4 eb3@3 ~]/2", // Dbmaj7 Db
  G: "~@4 [ab3,c4,f4]@7 ~ [ab3,c4,f4]@3 ~, f1", H: "[g3,c4,eb4]@3 ~ [g3,c4,eb4,g4]@7 ~ [g3,c4,eb4,g4]@4, c2@7 ~",
  I: "~@4 [ab3,c4,db4,f4]@7 ~ [ab3,c4,db4,f4]@4, eb1", J: "~@4 [ab3,db4,eb4,f4]@7 ~ [ab3,db4,eb4,f4]@4, eb3",
  K: "~@2 [f3,ab3,c4,f4]@3 ~ [f3,ab3,c4,f4]@2", L: "~@2 [eb3,g3,c4,eb4]@3 ~ [eb3,g3,c4,eb4]@2",
  M: "~@2 [ab3,c4,db4,f4]@3 ~ [ab3,c4,db4,f4]@2", N: "~@4 [ab3,db4,eb4,f4]@5 ~@3 [ab3,db4,eb4,f4]@4",
  O: "~@4 [f3,ab3,c4,f4]@5 ~@3 [f3,ab3,c4,f4]@4", P: "~@2 [ab3,db4,eb4,f4]@3 ~ [ab3,db4,eb4,f4]@2",
  Q: "~@4 [eb3,g3,c4,eb4]@5 ~@3 [eb3,g3,c4,eb4]@4", R: "~@4 [ab3,db4,eb4,f4]@5 ~@3 [ab3,db4,eb4,f4]@3 ~",
  S: "~@2 [f3,ab3,db4]@3 ~ [f3,ab3,db4]@2", T: "~@2 [g3,bb3,eb4]@3 ~ [g3,bb3,eb4]@2",
  U: "~@2 [g3,ab3,c4]@3 ~ [g3,ab3,c4]@2", V: "~@2 [f3,ab3,c4]@3 ~ [f3,ab3,c4]@2",
  W: "~@2 [gb3,bb3,db4]@3 ~ [gb3,bb3,db4]@2", X: "[eb4,g4,bb4]", Y: "[[db4,f4,ab4]@13 ~ [db4,f4,ab4]@2]/2",
  Z: "[[eb4,ab4,c5]@23 ~ [eb4,ab4,c5]@3 ~ [eb4,g4,bb4]@3 ~]/2", AA: "[db4,f4,ab4]", AB: "~ [eb4,g4,bb4] ~ [eb4,g4,bb4]",
  AC: "~@4 [eb4,g4,bb4]@5 ~@3 [eb4,g4,bb4]@4", AD: "~@2 [db4,f4,ab4]@3 ~ [db4,f4,ab4]@2",
  AE: "~@2 [eb4,g4,bb4]@3 ~ [eb4,g4,bb4]@2", AF: "~@4 [eb4,g4,bb4]@7 ~ [eb4,g4,bb4]@4",
  AG: "~@4 [f3,ab3,c4]@6 ~@2 [f3,ab3,c4]@3 ~", AH: "[[db4,f4,ab4]@26 ~@2 [db4,f4,ab4]@3 ~]/2",
  AI: "[[db4,f4,ab4]@4 ~@2 [eb4,g4,bb4]@3 ~@3 [eb4,ab4,c5]@20]/2", // Db Eb Ab
})).s("gm_piano").gain(0.25).pan(0.8)

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  ~@16 A@2 B C D E F@2 G H I J K L M N J O P Q R S T U A@2 B C D E F@2 G H I J K L M N J O P Q R S T U V W@2 X Y Z@2 AA
  AB AC@2 AA AB AC@2 A@2 B C D E F@2 G H I J K L M N J O P Q R S T U J AD P Q AE AF AG@2 AH AI@2 AJ AK AL@2 AM AN AO AP
  AM AN AO AP AM AN AO AP AM AN AO@2 AQ@2 ~
>`.pickRestart({
  A: "[f2@6 c3 ~ c3@6 c2@8 g2 ~ g2@6 c2@2]/2", B: "eb2@5 ~ eb2@2 bb1@6 eb2@2", C: "db2@5 ~ db2@2 ab1@6 eb2@2",
  D: "f2@5 ~ f2@2 c3@5 ~ f2@2", E: "c2@5 ~ c2@2 g2@8", F: "[eb2@4 ~@2 eb2@2 bb1@6 eb2@7 ~ eb2@2 bb1@8]/2",
  G: "f2@2 ~ f2@5", H: "c2@5 ~ c2 ~ c2 ~ c2@6", I: "eb2@2 ~ eb2 bb2@4", J: "db2@2 ~ db2 ab1@4", K: "f2@2 ~ f2 c3@3 f2",
  L: "c2@4 ~@2 c2 ~ c2@4 ~@2 c2@2", M: "eb2@5 ~ eb2@2 bb1@6 eb2 ~", N: "eb2@5 ~ eb2@2 bb1@8",
  O: "db2@4 ~@2 db2 ~ db2@8", P: "ab1@4 ~@2 ab1 ~ ab1@4 g1@4", Q: "f1@5 ~ f1@2 c2@4 bb1@2 c2@2",
  R: "gb1@4 ~@2 gb1@2 db2@5 ~ db2@2", S: "gb1@5 ~ gb1@2 db2@6 gb1@2", T: "f1@4 ~@2 f1@2 c2@3 ~ c2@4",
  U: "f1@2 ~ f1 c2 ~ c2@2", V: "ab1@4 ~@2 ab1 ~ ab1@2 ~@2 ab1@4", W: "[db2@13 ~ db2 eb2]/2",
  X: "ab1@4 ~@2 ab1 ~ ab1@2 ~@2 ab1@2 ~@2", Y: "ab1 ~ ab1 ~ ab1@4", Z: "[db2@25 ~@3 db2 ~ db2@2]/2",
  AA: "eb2@6 bb2@7 ~ bb2@2", AB: "eb2@3 bb2@5", AC: "[db2@6 ab2 ~ ab2@6 db2@8 ab2 ~ ab2@8]/2",
  AD: "db2@5 ~ db2 ~ db2@8", AE: "gb1@5 ~ gb1@2 db2@4 ~@2 db2@2", AF: "gb1@2 ~ gb1 db2@3 gb1", AG: "[ab1@15 ~]/2",
  AH: "ab1@5 ~ ab1@2", AI: "[db2@13 ~ db2@2]/2", AJ: "ab1", AK: "ab2 ab1", AL: "[db2@25 ~ ab2@2 bb2@2 ab2@2]/2",
  AM: "eb2@6 bb2 ~ bb2@6 eb2 ~", AN: "eb2@6 bb2 ~ bb2@6 eb2@2", AO: "db2@6 ab2 ~ ab2@6 db2 ~",
  AP: "db2@6 ab2 ~ ab2@6 db2@2", AQ: "[db1@4 ~@2 eb1@3 ~@3 ab1@20]/2",
})).s("gm_acoustic_bass").gain(0.38)

// chords · harpsichord · "HARPSICHRD"
const harpsichord = note(`<
  A B C@2 A B D E A B C@2 A B D E A B C@2 A B D E A B C@2 A B D E F G H@2 I J K L A B C@2 A B D E A B C@2 A B D E F G
  H@2 I J K L M N O P Q G R M G F S M G F S A B C@2 A B D E A B C@2 A B D E F G H@2 I J K L F G H@2 I J T@2 ~@7 M G F S
  M G F S M G F S M G F S U@2 ~
>`.pickRestart({
  A: "[ab3,c4,f4]@4 f4@2 ~@2 c4@2 ~@2 ab3@2 [ab3,c4] ~, ~ [ab3,c4] ab3 ~, ~@3 f4@2 [c4,f4]@2 f4", // Fm Ab F5
  B: "[c4,eb4,g4]@4 [eb4,g4]@2 ~@2 c4@2 [c4,g4]@2 [c4,g4]@2 [eb4,g4] ~, ~@2 c4@2 ~@3 c4, ~@3 eb4@4 ~, ~@3 g4@2 ~@3", // Cm Eb C5 Eb
  C: "[[db4,eb4,ab4]@2 ab4!2 [eb4,ab4] ab4!3 [db4,ab4]@2 [db4,eb4,ab4]@2 ab4 ~@2 g4, ~@2 db4@3 db4@3 ~@4 db4@2 db4@2, ~@2 eb4@2 ~ eb4@5 ~@2 eb4@3 ~, ~@13 ab4@2 ~]/2", // Dbsus2 Ab5 Db5 Dbsus2
  D: "[db4,eb4,ab4]@2 ab4!2 [eb4,ab4] ab4!3, ~@2 db4@3 [db4,eb4]@3, ~ eb4 ~@2", // Dbsus2 Ab5 Dbsus2
  E: "[db4,eb4,ab4]@2 [eb4,ab4]@2 ab4 ~ db4 ab4, ~ db4@2 ~, ~ eb4, ~@5 ab4@2 ~", // Dbsus2 Ab5
  F: "[ab3,db4,f4]@4 f4@2 ~@2 db4@2 ~@2 ab3@2 [ab3,db4] ~, ~ [ab3,db4] ab3 ~, ~@3 f4@2 [db4,f4]@2 f4", // Db Db5 Db
  G: "[bb3,eb4,g4]@4 [eb4,g4]@2 ~@2 bb3@2 [bb3,g4]@2 [bb3,g4]@2 [eb4,g4] ~, ~@2 bb3@2 ~@3 bb3, ~@3 eb4@4 ~, ~@3 g4@2 ~@3", // Eb
  H: "[[c4,eb4,g4]@2 g4!2 [eb4,g4] g4!3 [c4,ab4]@2 [c4,eb4,ab4]@2 ab4 ~@2 g4, ~@2 c4@3 c4@3 ~@4 c4@2 c4@2, ~@2 eb4@2 ~ eb4@5 ~@2 eb4@3 ~, ~@13 ab4@2 ~]/2", // Cm Eb Fm Ab
  I: "[bb3,db4,gb4]@4 gb4@2 ~@2 db4@2 ~@2 bb3@2 [bb3,db4] ~, ~ [bb3,db4] bb3 ~, ~@3 gb4@2 [db4,gb4]@2 gb4", // Gb Bbm Gb5
  J: "[bb3,db4,gb4]@4 [db4,gb4]@2 ~@2 bb3@2 [bb3,gb4]@2 [bb3,gb4]@2 [db4,gb4] ~, ~@2 bb3@2 ~@3 bb3, ~@3 db4@4 ~, ~@3 gb4@2 ~@3", // Gb Gb5 Ebm Gb5
  K: "[c4,eb4,ab4]@2 ab4!2 [eb4,ab4] ab4!3, ~@2 c4@3 [c4,eb4]@3, ~ eb4 ~@2", // Ab Ab5 Cm
  L: "[c4,eb4,ab4]@2 [eb4,ab4]@2 ab4 ~ c4 ab4, ~ c4@2 ~, ~ eb4, ~@5 ab4@2 ~", // Ab Ab5
  M: "[bb3,eb4,g4]@4 g4@2 ~@2 eb4@2 ~@2 bb3@2 [bb3,eb4] ~, ~ [bb3,eb4] bb3 ~, ~@3 g4@2 [eb4,g4]@2 g4", // Eb Eb5 Eb
  N: "[ab3,db4,f4]@2 [db4,f4] ~ ab3 [ab3,f4]!2 [ab3,db4,f4], ~ ab3 ~@2, ~@3 db4@4 ~, ~@3 f4@2 ~@3", // Db
  O: "[ab3,db4,f4]@2 f4!2 [db4,f4] f4!3, ~@2 ab3@3 [ab3,db4]@3, ~ db4 ~@2", // Db Db5
  P: "[c4,eb4,ab4]@2 [c4,eb4,ab4]@2 ab4 ~@2 ab4, ~ eb4, ~@2 c4!2, ~@5 ab4@2 ~", // Ab
  Q: "[c4,eb4,ab4]@4 ab4@2 ~@2 [c4,eb4]@2 ab4@2 ~@2 c4 ~, ~@2 [c4,eb4]@2 ~ c4@2 ~, ~@3 ab4@2 ~ [eb4,g4]@2", // Ab Cm Eb
  R: "[db4,f4,ab4]@2 ab4!2 [f4,ab4] ab4!3, ~@2 db4@3 [db4,f4]@3, ~ f4 ~@2", // Db Fm Db
  S: "[ab3,db4,f4]@4 [db4,f4]@2 ~@2 ab3@2 [ab3,f4]@2 [ab3,f4]@2 [db4,f4] ~, ~@2 ab3@2 ~@3 ab3, ~@3 db4@4 ~, ~@3 f4@2 ~@3", // Db
  T: "[~ ab4@19 ~@12, c4@13 ~@3, eb4@23 ~@9]/2", U: "[[ab3,db4,f4]@5 ~ [bb3,eb4,g4]@6 [ab3,c4,eb4]@20]/2",
})).s("gm_harpsichord").gain(0.2).pan(0.2)

// chords · string ensemble 2 · "SLOWSTRING"
const string_ensemble_2 = note(`<
  ~@32 A B@2 C D E@2 ~@17 A B@2 C D F@2 ~ G@2 H I@2 J@2 K@3 L M@3 ~@17 A B@2 C D F@2 ~ A B@2 C N@3 ~ G@2 H I@2 J@2 O@3 L
  O@3 L K@3 L O@3 ~@4
>`.pickRestart({
  A: "~ [db4,f4,ab4]@3", B: "~ [eb4,g4]@3", C: "[db4,gb4]@7 ~@9", D: "~@3 [db4,f4,ab4]@12 ~",
  E: "[[db4,gb4]@4 [db4,gb4]@8 ~ [ab3,f4]@15 ~@4]/2", F: "[[db4,gb4]@4 [db4,gb4]@8 ~ [ab3,f4]@14 ~@5]/2",
  G: "[[bb3,eb4,g4,bb4]@14 [ab3,db4,f4,ab4]@6 [ab3,db4,f4,ab4]@7 ~@5]/2", H: "~@3 [ab3,ab4]",
  I: "[[db4,gb4,bb4,db5]@19 ~@5 [c4,eb4,ab4,c5]@4 [bb3,eb4,g4,bb4]@4]/2", J: "[[bb3,eb4,g4,bb4]@11 ~@3 [db4,f4]@2]/2",
  K: "[[bb3,eb4,g4]@28 [c4,eb4]@10 [db4,f4]@9 ~, ~@28 ab4@19 ~]/3", L: "~@3 [db4,f4]",
  M: "[[bb3,eb4,g4]@14 [c4,eb4]@5 [db4,f4]@5, ~@7 ab4@5]/3", // Eb Cm Db
  N: "[~ [db4,f4]@3 [c4,eb4] [c4,eb4,ab4]@5 ~@2, ~ ab4@4 ~@7]/3", // Db Cm Ab
  O: "[[bb3,eb4,g4]@14 [c4,eb4]@5 [db4,f4]@4 ~, ~@14 ab4@9 ~]/3", // Eb Cm Db
})).s("gm_string_ensemble_2").gain(0.4).pan(0.6)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  A B C@2 A B D@2 E F G@2 E F H@2 A B C@2 A B D@2 A B C@2 A B D@2 I J K@2 L M N@2 A B C@2 A B D@2 A B C@2 A B D@2 I J
  K@2 L M N@2 O P Q R S J T U V I W U V I W A B C@2 A B D@2 A B C@2 A B D@2 I J K@2 L M N@2 I J K@2 L M X@2 ~@7 U V I W
  U V I W U V I W U V I W Y@2 ~
>`.pickRestart({
  A: "[f3,ab3,c4,f4]@4 f4@2 ~@6 ab3@2 [ab3,c4,f4] ~, c3@3 f4 ab3@2 ~@2, ~@2 f3@5 ~, ~@2 c4@3 [c4,f4]@2 ~, ~@4 ab3@4 c3@7 ~", // Fm F5
  B: "[g3,c4,eb4,g4]@4 [eb4,g4]@2 ~@2 c4@2 c4@2 [g3,c4]@2 [g3,c4,eb4,g4] ~, c3@3 g4@2 g4@2 ~, ~ g3@2 ~, ~ c4 c3@2, ~@3 eb4@4 ~", // Cm Eb C5 Cm
  C: "[[db4,eb4,ab4]@2 ab4 ~ ab3 [ab3,ab4] ab4!2 [db4,ab4]@2 [eb4,ab4]@2 ab4 ~ db4 g4, [eb3,ab3] eb3 db3!2, ~@2 [db4,eb4]@3 eb4@5 ~@2 eb4@3 ~, ~@3 ab4@2 db4@3 ~@2 db4@3 ab4@2 ~, ~@6 ab3@9 ~]/2", // Dbsus2 Ab Db5 Ab5 Dbsus2
  D: "[[db4,eb4,ab4]@2 ab4 ~ ab3 [ab3,ab4] ab4!2 [db4,ab4]@2 [eb4,ab4]@2 ab4 ~ db4 ab4, [eb3,ab3] eb3 eb3!2, ~@2 [db4,eb4]@3 eb4@5 ~@2 eb4@3 ~, ~@3 ab4@2 db4@3 ~@2 db4@3 ab4@2 ~, ~@6 ab3@9 ~]/2", // Dbsus2 Ab Db5 Ab5 Dbsus2
  E: "[f3,ab3,c4,f4]@4 f4@2 ~@6 ab3@2 [ab3,c4,f4] ~, ~@2 f3@5 ~, ~@2 c4@3 [c4,f4]@2 ~, ~ ab3!2 ~, ~@3 f4@2 ~@3", // Fm F5
  F: "[g3,c4,eb4,g4]@4 [eb4,g4]@2 ~@2 c4@2 c4@2 [g3,c4]@2 [g3,c4,eb4,g4] ~, ~ g3@2 ~, ~ c4 ~@2, ~@3 eb4@4 ~, ~@3 g4@2 g4@2 ~", // Cm Eb C5 Cm
  G: "[[db4,eb4,ab4]@2 ab4 ~ ab3 [ab3,ab4] ab4!2 [db4,ab4]@2 [eb4,ab4]@2 ab4 ~ db4 g4, ab3@4 ~ db4@3 ~@2 db4@4 ~@2, ~@2 [db4,eb4]@3 eb4@5 ~@2 eb4@3 ~, ~@3 ab4@2 ~ ab3@9 ~, ~@13 ab4@2 ~]/2", // Dbsus2 Ab Db5 Ab5 Dbsus2
  H: "[[db4,eb4,ab4]@2 ab4 ~ ab3 [ab3,ab4] ab4!2 [db4,ab4]@2 [eb4,ab4]@2 ab4 ~ db4 ab4, ab3@4 ~ db4@3 ~@2 db4@4 ~@2, ~@2 [db4,eb4]@3 eb4@5 ~@2 eb4@3 ~, ~@3 ab4@2 ~ ab3@9 ~, ~@13 ab4@2 ~]/2", // Dbsus2 Ab Db5 Ab5 Dbsus2
  I: "[f3,ab3,db4,f4]@4 f4@2 ~@6 ab3@2 [ab3,db4,f4] ~, db3@3 f4 ab3@2 ~@2, ~@2 f3@5 ~, ~@2 db4@3 [db4,f4]@2 ~, ~@4 ab3@4 db3@7 ~", // Db
  J: "[g3,bb3,eb4,g4]@4 [eb4,g4]@2 ~@2 bb3@2 bb3@2 [g3,bb3]@2 [g3,bb3,eb4,g4] ~, db3@3 g4@2 g4@2 ~, ~ g3@2 ~, ~ bb3 db3@2, ~@3 eb4@4 ~", // Eb Gm Eb
  K: "[[c4,eb4,g4]@2 g4 ~ ab3 [ab3,g4] g4!2 [c4,ab4]@2 [eb4,ab4]@2 ab4 ~ c4 g4, [eb3,ab3]@8 eb3@8 f3@8 [f3,eb4]@7 ~, ~@2 [c4,eb4]@3 eb4@5 ~@3 ab4@2 ~, ~@3 g4@2 c4@3 ~@2 c4@4 ~@2, ~@3 ab3 ~@4]/2", // Cm Abmaj7 Fm Ab5 F7 Cm
  L: "[gb3,bb3,db4]@2 db4 ~@3 bb3 [bb3,db4], db3@8 db3@7 ~, ~@2 gb3@5 ~, ~ bb3!2 ~, ~@3 db4@2 db4@2 ~", // Gb Bbm
  M: "[gb3,bb3,db4,gb4]@4 [db4,gb4]@2 ~@2 bb3@2 bb3@2 [gb3,bb3]@2 [gb3,bb3,db4,gb4] ~, db3@3 gb4@2 gb4@2 ~, ~ gb3@2 ~, ~ bb3 db3@2, ~@3 db4@4 ~", // Gb Gb5 Gb
  N: "[[c4,f4]@2 f4 ~ ab3 [ab3,f4] f4!2 [c4,f4]@2 f4@2 f4 ~ c4 f4, [f3,ab3] f3 f3!2, ~@2 c4@3 c4@3 ~@2 c4@4 ~@2, ~@3 f4@2 ~ ab3@9 ~, ~@13 f4@2 ~]/2", // F5 Db F5 Fm
  O: "[ab3,bb3,eb4,g4]@4 g4@2 ~@6 bb3@2 [bb3,eb4,g4] ~, ~@2 ab3@5 ~, ~@2 eb4@3 [eb4,g4]@2 ~, ~ bb3!2 ~, ~@3 g4@2 ~@3", // Eb
  P: "[ab3,db4,f4]@2 [db4,f4] ~ ab3!3 [ab3,db4,f4], f3!2, ~ ab3 ~@2, ~@3 db4@4 ~, ~@3 f4@2 f4@2 ~", // Db
  Q: "[ab3,db4,f4]@2 f4 ~ f3 [f3,f4] f4!2, f3@2 ~ f3, ~@2 [ab3,db4]@3 [ab3,db4]@3, ~@3 f4@2 ~@3", // Db F Db5
  R: "[c4,eb4,ab4]@2 [eb4,ab4]@2 ab4 ~ c4 ab4, ab3 [ab3,eb4], ~ c4@2 ~, ~@5 ab4@2 ~", // Ab Ab5
  S: "[ab3,c4,eb4,ab4]@2 ab4 ~@2 [eb4,ab4] [bb3,eb4,g4]@2, ~ ab3@2 ~, ~@2 eb4@3 ~@3, ~ c4!2 ~, ~@3 ab4@2 ~@3", // Ab Ab5 Eb
  T: "[db4,f4,ab4]@2 ab4 ~ ab3 [ab3,ab4] ab4!2, [db3,ab3] db3, ~@2 [db4,f4]@3 [db4,f4]@3, ~@3 ab4@2 ~ ab3@2", // Db Ab Db5 Db
  U: "[g3,bb3,eb4,g4]@4 g4@2 ~@6 bb3@2 [bb3,eb4,g4] ~, eb3@3 g4 bb3@2 ~@2, ~@2 g3@5 ~, ~@2 eb4@3 [eb4,g4]@2 ~, ~@4 bb3@4 eb3@7 ~", // Eb
  V: "[g3,bb3,eb4,g4]@4 [eb4,g4]@2 ~@2 bb3@2 bb3@2 [g3,bb3]@2 [g3,bb3,eb4,g4] ~, eb3@3 g4@2 g4@2 ~, ~ g3@2 ~, ~ bb3 eb3@2, ~@3 eb4@4 ~", // Eb Gm Eb
  W: "[f3,ab3,db4,f4]@4 [db4,f4]@2 ~@2 ab3@2 ab3@2 [f3,ab3]@2 [f3,ab3,db4,f4] ~, db3@3 f4@2 f4@2 ~, ~ f3@2 ~, ~ ab3 db3@2, ~@3 db4@4 ~", // Db Fm Db
  X: "[~ ab4@14 ~@17, ab3@7 ~, c4@21 ~@11, eb4@9 ~@7]/2",
  Y: "[[db3,f3,ab3,db4,f4]@5 ~ [eb3,g3,bb3,eb4,g4]@6 [ab2,eb3,ab3,c4,eb4]@20]/2", // Db Eb Ab
})).s("gm_acoustic_guitar_steel").gain(0.22).pan(0.2)

// chords · harpsichord · "HARPSICHRD"
const harpsichord_2 = note("<A B C D E F G H I J K@2 I J L@2 ~@63 M@6 N@8 O@2 ~@42>".pickRestart({
  A: "[f4,ab4,c5]@4 [f4,ab4,c5]@8 [f4,ab4,c5]@3 ~", // Fm
  B: "[eb4,g4,c5]@4 [eb4,c5]@6 c5@2 [g4,c5]@3 ~, ~ g4@2 ~, ~@10 eb4@5 ~", // Cm C5
  C: "[db4,f4]@2 [db4,f4]@3 [db4,f4] [db4,f4,ab4] ~, ab4@3 ~, ~@2 bb4@5 ~", // Db
  D: "[db4,eb4,ab4]@4 [db4,eb4,ab4]@8 [db4,eb4,ab4]@3 ~", E: "[ab4,c5]@4 [ab4,c5]@6 [ab4,c5]@2 [f4,ab4,c5]@3 ~, f4@3 ~",
  F: "[eb4,g4,c5]@4 c5@6 c5@2 [g4,c5]@3 ~, ~@4 [eb4,g4]@9 ~@3", // Cm C5 Eb
  G: "[db4,f4,ab4]@4 [db4,f4,ab4]@8 [db4,ab4,bb4]@3 ~, ~@4 bb4@7 ~@5", // Db Bbm7
  H: "[db4,f4]@4 [db4,f4,bb4]@6 [db4,f4]@2 [db4,f4]@3 ~, ab4@13 ~@3, ~@5 bb4@2 ~", // Db Bbm Db
  I: "[f4,ab4,c5]@2 c5 c5@2 c5!2 [ab4,c5], ~@4 f4@10 f4 ~, ~@2 ab4@3 ab4@2 ~", // Fm Ab
  J: "[eb4,g4,c5]@2 g4@2 g4 c5!2 [g4,c5], ~@4 eb4@10 eb4 ~, ~@2 c5@3 g4@2 ~", // Cm C5
  K: "[[db4,f4,ab4,bb4]@2 [ab4,bb4]@3 bb4!3 ab4@2 [db4,ab4]@2 ab4!2 [f4,ab4]@2, ~ db4@4 ~ db4@2, ~ f4@2 f4@2 f4@2 ~, ~@5 ab4@3 ~@8]/2", // Bbm7 Absus2 Db5 Fm
  L: "[[db4,f4,ab4,bb4]@2 [ab4,bb4]@3 bb4!3 bb4@2 [db4,bb4]@2 bb4 ~ [f4,ab4]@2, ~ db4@4 ~ db4@2, ~ f4@2 f4@2 [f4,ab4]@2 ~, ~@5 ab4@5 ~@3 bb4@3]/2", // Bbm7 Absus2 Gb Fm
  M: "[~@3 c4@2 ~@6 c4@2 ~@33 c4@2, ~@4 f4@6 f4@9 ~ f4@6 f4@9 ~ f4@6 f4@10 f4@4 ~@2 f4@10 f4@6 f4@10 f4@6 f4@6, ~@6 c4@5 ~@3 c4@5 c4@3 c4@5 c4@3 c4@5 c4@3 c4@5 c4@3 ~@2]/6",
  N: "[f4@2 ~ c4@2 ~@14 c4@2 ~@41 c4@2, ~@4 f4@6 f4@10 f4@6 f4@10 f4@6 f4@10 f4@6 f4@10 f4@6 f4@10 f4@6 f4@9 ~ f4@6 f4@9 ~ f4@6 f4@6, ~@6 c4@5 c4@3 c4@5 ~@3 c4@5 c4@3 c4@5 c4@3 c4@5 c4@3 c4@5 c4@3 c4@5 c4@3 ~@2]/8",
  O: "[~@3 c4@2 ~ c4@5 ~@3 c4@2, ~@4 f4@6 f4@14 ~@2 f4@5 ~, ~@11 c4@3 ~@2]/2",
})).s("gm_harpsichord").gain(0.2).pan(0.9)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel_2 = note(`<
  A B C D E F G H I J K@2 I J L@2 ~@63 M N O M P Q R S T U O V T W X Y ~@23 Z@2 AA@2 AB@2 AC@2 AD@2 AE@2 AF AG AH AI@3 ~
>`.pickRestart({
  A: "[c4,f4,ab4]@4 [c4,f4,ab4,c5]@8 [f4,ab4,c5]@3 ~", // Fm
  B: "[c4,eb4,g4]@4 [c4,eb4]@6 c4@2 [c4,g4]@3 ~, ~@4 [g4,c5]@9 ~@3, ~@10 eb4@5 ~", // Cm C5
  C: "[db4,f4]@2 [db4,f4]@3 [db4,f4] [ab3,db4,f4] ~, ab3@3 ~, ~@2 bb4@5 ~", // Db
  D: "[db4,eb4,ab4]@4 [db4,eb4,ab4]@8 [ab3,db4,eb4,ab4]@3 ~, ab3@3 ~", // Dbsus2 Absus4
  E: "[c4,ab4]@2 [ab4,c5]@3 [ab4,c5] [c4,f4,ab4] ~, f4@3 ~, ~ c4@2 ~", // Fm Ab Fm
  F: "[c4,eb4,g4]@4 c4@6 c4@2 [c4,g4,c5]@3 ~, c5@3 ~, ~@4 [eb4,g4]@9 ~@3", // Cm C5 Eb
  G: "[ab3,db4,f4]@4 [ab3,db4,f4]@8 [ab3,db4,bb4]@3 ~, ~@4 bb4@7 ~@5", // Db Bbm7
  H: "[db4,f4]@4 [db4,f4,bb4]@5 ~ [db4,f4]@2 [db4,f4]@3 ~, ab3@13 ~@3, ~@5 bb4@2 ~", // Db Bbm Db
  I: "[c4,f4,ab4]@2 c5 c5@2 c4!2 [c4,f4,ab4,c5], ~@2 f4@5 ~, ~@2 [c4,ab4]@3 [ab4,c5]@2 ~", // Fm Ab
  J: "[g3,c4,eb4,g4,c5]@4 g4@4 g4@2 c4@2 c4@2 [c4,eb4,g4,c5] ~, ~ g3@3, ~@2 eb4@5 ~, ~@2 [c4,c5]@3 [g4,c5]@2 ~", // Cm C C5
  K: "[[ab3,db4,f4,bb4]@2 [ab3,bb4]@3 bb4!3 ab4@2 [db4,ab4]@2 ab4 ~ [ab3,f4]@2, ~ db4@4 ~ db4@2, ~@2 f4@4 f4@4 ~@3 ab4@3, ~@5 ab3@5 [ab3,f4]@4 ~@2]/2", // Bbm7 Absus2 Db5 Db
  L: "[[ab3,db4,f4,bb4]@2 [ab3,bb4]@3 bb4!3 bb4@2 [db4,bb4]@2 bb4 ~ [ab3,f4]@2, ~ db4@4 ~ db4@2, ~@2 f4@4 f4@4 ~@3 bb4@3, ~@5 ab3@5 [ab3,f4]@4 ~@2]/2", // Bbm7 Absus2 Gb Db
  M: "c4@13 ~@3", N: "g4@8 ~@2 f4@2 g4@3 ~", O: "ab4@10 ~@2 c4@3 ~", P: "c4@11 ~@5", Q: "g4@3 bb4", R: "ab4 c5",
  S: "bb4@4 ab4@3 ~", T: "c4@3 ~", U: "g4@10 f4@2 g4@3 ~", V: "db4@7 ~", W: "g4@9 ~@3 g4@3 ~", X: "g4@6 ~@2 g4@5 ~@3",
  Y: "f4@3 ~@5",
  Z: "[~@7 eb4, ~@2 eb4@4 eb4@2 eb4@3 eb4@3 ~@2, ~@6 bb3@11 ~ bb3@6 bb3@6 ~@2, ~@4 g3@3 g3@3 g3@3 ~@3, ~@10 g4@21 ~]/2",
  AA: "[~@12 ab3@3 ~ bb3@2 ~@2 ab3@2 ~@6 f3@3 ~, f3@4 f3@3 ~@9, ~@4 db4@6 db4@8 db4@4 db4@4 db4@5 ~, ~@3 ab3@3 ~@6 g3@2 ~@2]/2",
  AB: "[g3@4 ~@20 bb3@4 eb4@3 ~, ~@2 eb4@3 g4@10 ~, ~@4 g3@4 g3@4 eb4@4 eb4@6 eb4@5 ~@5, ~@6 bb3@11 ~@15, ~@7 g3@3 g3@5 ~]/2",
  AC: "[~@24 g3@2 ~@2 f3@2 db4 ~, f3@3 ab3@5 bb3@2 ab3@2 ~@4, ~@2 db4@3 db4@4 db4@2 db4@2 db4@2 ~, ~@8 f3@5 ~@19]/2",
  AD: "[~@12 eb4@3 ~@13 eb4@3 ~, g3@8 g3@6 ~@6 g3@5 ~ g3@4 ~@2, ~@4 eb4@8 ~@4 eb4@5 ~ eb4@6 ~@4, ~@6 bb3@11 ~ bb3@6 bb3@5 ~@3, ~@5 g4@10 ~]/2",
  AE: "[~@16 bb3@2 ~@2 ab3@2 ~@6 f3@3 ~, f3@4 f3@3 ~@5 g3@2 ~@2, ~@4 db4@6 db4@8 db4@4 db4@4 db4@5 ~]/2",
  AF: "~@3 bb3, g3@8 g3@5 ~@3, ~@4 eb4@5 ~ eb4@5 ~, ~@6 bb3@5 ~@5",
  AG: "~@12 eb4@3 ~, eb4@2 g3@3 ~@3, ~@2 bb3@4 eb4@5 ~@5, ~@8 bb3@7 ~",
  AH: "~@5 db4@3, f3@7 ~, ~@2 db4@3 ~@3, ~@3 ab3@5",
  AI: "[bb3@2 ~@2 ab3@2 ~@2 g3@2 ~@2 f3@4 [f3,ab3]@3 ~@3 [g3,bb3]@3 ~@3 [ab3,c4]@20, ~@2 db4@4 db4@4 db4@9 ~@9 eb4@5 ~@15]/3", // Fm Gm Ab
})).s("gm_acoustic_guitar_steel").gain(0.33).pan(0.9)

// other · bandoneon · "BANDNEON"
const bandoneon = note(`<
  ~@7 A B C D E B C F@2 B C D G B C H@2 B C I G B C J@2 ~@7 A B C D E B C F@2 B C D E B C J@2 ~@11 K@2 C L M@2 N@2 M@2
  O@2 ~@7 A B C D E B C P@2 Q R S T U@2 V@2 Q R S L W@2 X@2 ~@15 Y@2 Z@2 AA@2 AB@2 AC@2 ~
>`.pickRestart({
  A: "~@14 c5 d5", B: "eb5", C: "bb4", D: "ab4", E: "f4@12 ~@2 c5 d5", F: "[ab4@29 ~ c5 d5]/2", G: "f4@14 c5 d5",
  H: "[ab4@30 c5 d5]/2", I: "ab4@15 ~", J: "[ab4@7 ~]/2", K: "[eb5@24 c5@4 bb4@3 ~]/2", L: "[f4,ab4]@15 ~",
  M: "[g4,bb4]/2", N: "[[f4,ab4]@31 ~]/2", O: "[[f4,ab4]@7 ~]/2", P: "[ab4@15 ~]/2", Q: "[db4,f4]", R: "[eb4,g4]@15 ~",
  S: "[eb4,g4]", T: "[f4,ab4]", U: "[f4@16 gb4@15 ~, db4@31 ~]/2", V: "[[c4,f4,ab4]@31 ~]/2",
  W: "[f4@15 ~ gb4@16, db4]/2", X: "[[c4,eb4,ab4,c5]@29 ~@3]/2", Y: "[[eb4,g4]@31 ~]/2", Z: "[db4,f4]/2",
  AA: "[eb4,g4]/2", AB: "[[db4,f4]@31 ~]/2", AC: "[~ f4@4 ~@2 [eb4,g4]@3 ~@3 [c4,eb4,ab4]@17 ~@2, db4@3 ~@29]/2",
})).s("gm_bandoneon").gain(0.27).pan(0.2)

// chords · synth bass 1 · "SYN BASS 1"
const synth_bass_1 = note("<~@56 A B C D E F G H ~@31 A B C D E F G H A B C D E F ~@28>".pickRestart({
  A: "[c5,f5] ~@3 f5@2 ~@2 f5@2 ~@2 [c5,f5]@2 ~@2, ~@4 c5 ~@3 c5 ~@7", // F5
  B: "~@2 [bb4,eb5] ~ bb4 ~ [bb4,eb5] ~, ~@8 eb5 ~@7", C: "~@4 [c5,f5] ~@3 [c5,f5] ~@3 [c5,f5] ~@3",
// … 157 more lines