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

// chords · piano · "A.PIANO 2"
const piano = note(`<
  A B C D A B E@2 A B C D A B C F G H I J G H J@2 G H I J G K J@2 L M N O P@2 O@2 G H I J G H J@2 G H I J G K J@2 L M N
  O P@2 O@2 Q R@2 S@2 Q T U V W@2 V X W@2 G H I J G H J@2 G H I J G K J@2 L M N O P@2 O@2 L M N O P@2 ~@2 Q R@2 S@2 Q T
  U V W@2 V X W@2 U V W@2 V X W@2 Y@2 ~
>`.pickRestart({
  A: "~@4 [ab3,c4,f4]@7 ~ [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,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
  F: "~@4 [ab3,db4,eb4,f4]@7 ~ [ab3,db4,eb4,f4]@4, eb3", G: "~@4 [f3,ab3,c4,f4]@5 ~@3 [f3,ab3,c4,f4]@4",
  H: "~@2 [eb3,g3,c4,eb4]@3 ~ [eb3,g3,c4,eb4]@2", I: "~@2 [ab3,c4,db4,f4]@3 ~ [ab3,c4,db4,f4]@2",
  J: "~@4 [ab3,db4,eb4,f4]@5 ~@3 [ab3,db4,eb4,f4]@4", K: "~@4 [eb3,g3,c4,eb4]@5 ~@3 [eb3,g3,c4,eb4]@4",
  L: "~@2 [f3,ab3,db4]@3 ~ [f3,ab3,db4]@2", M: "~@2 [g3,bb3,eb4]@3 ~ [g3,bb3,eb4]@2",
  N: "~@2 [g3,ab3,c4]@3 ~ [g3,ab3,c4]@2", O: "~@2 [f3,ab3,c4]@3 ~ [f3,ab3,c4]@2",
  P: "~@2 [gb3,bb3,db4]@3 ~ [gb3,bb3,db4]@2", Q: "[eb4,g4,bb4]", R: "[[db4,f4,ab4]@13 ~ [db4,f4,ab4]@2]/2",
  S: "[[eb4,ab4,c5]@23 ~ [eb4,ab4,c5]@3 ~ [eb4,g4,bb4]@3 ~]/2", T: "[db4,f4,ab4]", U: "~ [eb4,g4,bb4] ~ [eb4,g4,bb4]",
  V: "~@4 [eb4,g4,bb4]@5 ~@3 [eb4,g4,bb4]@4", W: "~@2 [db4,f4,ab4]@3 ~ [db4,f4,ab4]@2",
  X: "~@2 [eb4,g4,bb4]@3 ~ [eb4,g4,bb4]@2", Y: "[[db4,f4,ab4]@4 ~@2 [eb4,g4,bb4]@3 ~@3 [eb4,ab4,c5]@20]/2",
})).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 D K L M J N O P Q R S@2 A@2 B C D E F@2 G H I J D K L M J N O P Q R S@2 T U@2 V W X@2 Y Z
  AA@2 Y Z AA@2 A@2 B C D E F@2 G H I J D K L M J N O P Q R S@2 J N O P Q R AB@2 AC AD@2 AE AF AG@2 AH AI AJ AK AH AI AJ
  AK AH AI AJ AK AH AI AJ@2 AL@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: "c2@4 ~@2 c2 ~ c2@4 ~@2 c2@2", L: "eb2@5 ~ eb2@2 bb1@6 eb2 ~", M: "eb2@5 ~ eb2@2 bb1@8",
  N: "db2@4 ~@2 db2 ~ db2@8", O: "ab1@4 ~@2 ab1 ~ ab1@4 g1@4", P: "f1@5 ~ f1@2 c2@4 bb1@2 c2@2",
  Q: "gb1@4 ~@2 gb1@2 db2@5 ~ db2@2", R: "gb1@5 ~ gb1@2 db2@6 gb1@2", S: "f1@4 ~@2 f1@2 c2@3 ~ c2@4",
  T: "ab1@4 ~@2 ab1 ~ ab1@2 ~@2 ab1@4", U: "[db2@13 ~ db2 eb2]/2", V: "ab1@4 ~@2 ab1 ~ ab1@2 ~@2 ab1@2 ~@2",
  W: "ab1 ~ ab1 ~ ab1@4", X: "[db2@26 ~@2 db2 ~ db2@2]/2", Y: "eb2@6 bb2@7 ~ bb2@2", Z: "eb2@3 bb2@5",
  AA: "[db2@6 ab2 ~ ab2@6 db2@8 ab2 ~ ab2@8]/2", AB: "[ab1@15 ~]/2", AC: "ab1@5 ~ ab1@2", AD: "[db2@13 ~ db2@2]/2",
  AE: "ab1", AF: "ab2 ab1", AG: "[db2@13 ab2 bb2 ab2]/2", AH: "eb2@6 bb2 ~ bb2@6 eb2 ~", AI: "eb2@6 bb2 ~ bb2@6 eb2@2",
  AJ: "db2@6 ab2 ~ ab2@6 db2 ~", AK: "db2@6 ab2 ~ ab2@6 db2@2", AL: "[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 E@2 ~ F@2 G H@2 I@2 J@3 K L@3 ~@17 A B@2 C D E@2 ~ A B@2 C M@3 ~ F@2 G H@2 I@2 J@3 K
  J@3 K J@3 K J@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]@14 ~@5]/2", // Gb5 Db
  F: "[[bb3,eb4,g4,bb4]@14 [ab3,db4,f4,ab4]@6 [ab3,db4,f4,ab4]@7 ~@5]/2", G: "~@3 [ab3,ab4]",
  H: "[[db4,gb4,bb4,db5]@19 ~@5 [c4,eb4,ab4,c5]@4 [bb3,eb4,g4,bb4]@4]/2", I: "[[bb3,eb4,g4,bb4]@11 ~@3 [db4,f4]@2]/2",
  J: "[[bb3,eb4,g4]@14 [c4,eb4]@5 [db4,f4]@4 ~, ~@14 ab4@9 ~]/3", K: "~@3 [db4,f4]",
  L: "[[bb3,eb4,g4]@28 [c4,eb4]@10 [db4,f4]@9 ~, ~@28 ab4@19 ~]/3", // Eb Cm Db
  M: "[~ [db4,f4]@3 [c4,eb4] [c4,eb4,ab4]@5 ~@2, ~ ab4@4 ~@7]/3", // Db Cm Ab
})).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: "[~@23 c4, ~@2 f4@3 f4@5 f4@3 f4@5 f4@3 f4@5 f4@2 ~ f4@5 f4@3 f4@5 f4@3 f4@3, ~@3 c4@3 c4@5 c4@3 c4@5 c4@3 c4@5 c4@3 c4@5 c4@3 c4@5 c4@3 ~@2]/6",
  N: "[f4@2 ~ c4@2 ~@57 c4@2, ~@2 f4@3 f4@5 f4@3 f4@5 f4@3 f4@5 f4@3 f4@5 f4@3 f4@5 f4@3 f4@5 f4@3 f4@5 f4@3 f4@3, ~@6 c4@5 c4@3 c4@5 c4@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 P T O U P V W X ~@23 Y@2 Z@2 AA@2 AB@2 AC@2 AD@2 AE AF AG AH@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@3 ~", Q: "g4@3 bb4", R: "ab4 c5",
  S: "bb4@4 ab4@3 ~", T: "g4@10 f4@2 g4@3 ~", U: "db4@7 ~", V: "g4@9 ~@3 g4@3 ~", W: "g4@6 ~@2 g4@5 ~@3", X: "f4@3 ~@5",
  Y: "[~@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",
  Z: "[~@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",
  AA: "[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",
  AB: "[~@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",
  AC: "[~@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",
  AD: "[~@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",
  AE: "~@3 bb3, g3@8 g3@5 ~@3, ~@4 eb4@5 ~ eb4@5 ~, ~@6 bb3@5 ~@5",
  AF: "~@12 eb4@3 ~, eb4@2 g3@3 ~@3, ~@2 bb3@4 eb4@5 ~@5, ~@8 bb3@7 ~",
  AG: "~@5 db4@3, f3@7 ~, ~@2 db4@3 ~@3, ~@3 ab3@5",
  AH: "[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 F@2 B C D G B C H@2 ~@7 A B C D E B C F@2 B C D E B C H@2 ~@11 I@2 C J K@2 L@2 K@2
  M@2 ~@7 A B C D E B C H@2 N O@2 J P@2 Q@2 N O@2 J P@2 R@2 ~@15 S@2 T@2 S@2 T@2 U@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@29 ~@3]/2", I: "[eb5@24 c5@4 bb4@3 ~]/2", J: "[f4,ab4]@15 ~", K: "[g4,bb4]/2", L: "[[f4,ab4]@31 ~]/2",
  M: "[[f4,ab4]@7 ~]/2", N: "[db4,f4]", O: "[eb4,g4]@15 ~", P: "[f4@16 gb4@15 ~, db4@31 ~]/2",
  Q: "[[c4,f4,ab4]@31 ~]/2", R: "[[c4,eb4,ab4,c5]@29 ~@3]/2", S: "[[eb4,g4]@31 ~]/2", T: "[db4,f4]/2",
  U: "[~ f4@4 ~@2 [eb4,g4]@3 ~@3 [c4,eb4,ab4]@17 ~@2, db4@3 ~@29]/2", // Eb Ab
})).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@2 A F ~@31 A B C D E@2 A F A B C D E@2 ~@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",
  D: "[c5,f5] ~@3 [c5,f5] ~@3 [c5,f5] ~@3 [c5,f5]@2 ~@2", E: "[db5,f5] ~ [db5,f5] ~ f5 ~ f5 ~, ~@8 db5 ~@3 db5 ~@3",
  F: "[c5,f5] ~ [c5,f5] ~ [c5,f5] ~ f5 ~, ~@12 c5 ~@3", // F5
})).s("gm_synth_bass_1").gain(0.27).pan(1)

// other · vibraphone
const vibraphone = note(`<
  ~@40 A B A C B@2 D@2 B@2 E@2 B@2 F G ~@14 H I J K L M N O L B@2 P Q B R S@2 R@2 T Q B R S U ~@30 V W X Y Z AA AB AC AD
  AE@2 ~
>`.pickRestart({
  A: "f4", B: "c4@15 ~", C: "db4@8 g4 ab4@2 ~ g4@4", D: "[ab4@15 ~ [ab4,c5]@8 bb4@4 [ab4,c5]@4, f4@23 ~@9]/2",
  E: "db4@7 ~", F: "f4@15 ~", G: "f4@7 ~ db4@3 ~ f4@3 ~", H: "~@10 bb3 ~ c4 ~ db4 ~", I: "eb4 ~@5 eb4 ~@9",
// … 144 more lines