Strudelify

Golden Brown

The Stranglers

KeyD♭ majorTempo120 bpm
0:00/0:00
// Golden Brown — The Stranglers
// 120 bpm, 4/4, key C# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 4 harpsichord (copy of ch 3 harpsichord)
// note: Full arrangement: all 111 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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@3 B@2 C D@3 E@3 F G H@8 I J K@5 L@6 M@2 N O P@8 Q@2 R@2 S@8 T@4 G U@6 V W@2 X Y@3 Z AA@8 AB@2 AC AD@8 AE AF AG AH@8
  AI@3
>`.pickRestart({
  A: "[~@30 bb2@15 f2@15 ~ gb2@15 db2@20]/3", B: "[bb2@15 ~ f2@15 gb2@15 db2@18]/2", C: "~@3 bb2@15 f2@14",
  D: "[~ gb2@15 db2@20 ~ bb2@15 f2@15 ab2@15 ~ gb2@13]/3",
  E: "[~@2 db2@5 eb2@14 ~ db2@15 ~ eb2@15 db2@15 eb2@15 db2@13]/3", F: "~@3 eb2@15 db2@14", G: "~ eb2@15 ~ db2@15",
  H: "[eb2@15 db2@15 eb2@15 ~ db2@15 eb2@15 db2@15 ~ eb2@15 db2@15 eb2@15 db2@15 ~ eb2@15 db2@15 eb2@15 ~ db2@15 eb2@15 db2@15 eb2@12]/8",
  I: "~@4 db2@15 eb2@13", J: "~@2 db2@15 ~ eb2@14",
  K: "[~ db2@15 eb2@15 db2@15 ~ eb2@15 db2@15 eb2@15 ~ db2@15 eb2@15 db2@15 ~ bb2@15 f2@6]/5",
  L: "[~@9 gb2@15 db2@20 ~ bb2@15 f2@15 gb2@15 ~ db2@20 bb2@15 f2@15 ~ gb2@15 db2@20 bb2@15]/6",
  M: "[~ f2@15 ab2@15 gb2@15 db2@5 ~ eb2@12]/2", N: "~@3 db2@15 eb2@14", O: "~ db2@15 ~ eb2@15",
  P: "[db2@15 eb2@15 db2@15 ~ eb2@15 db2@15 eb2@15 ~ db2@15 eb2@15 db2@15 ~ eb2@15 db2@15 eb2@15 db2@15 ~ eb2@15 db2@15 bb2@15 ~ f2@11]/8",
  Q: "[~@4 gb2@15 db2@20 bb2@15 ~ f2@9]/2", R: "[~@6 gb2@15 db2@20 ~ bb2@15 f2@7]/2",
  S: "[~@8 gb2@15 ~ db2@20 bb2@15 f2@15 ~ ab2@15 gb2@15 db2@5 eb2@14 ~ db2@15 ~ eb2@15 db2@15 eb2@15 ~ db2@15 eb2@15 db2@15 ~ eb2@15 db2@8]/8",
  T: "[~@7 eb2@15 db2@15 ~ eb2@15 db2@15 eb2@15 ~ db2@15 eb2@15 db2@14]/4",
  U: "[eb2@15 db2@15 ~ eb2@15 db2@15 bb2@15 f2@15 ~ gb2@15 db2@20 bb2@15 ~ f2@15 gb2@15 db2@19]/6",
  V: "~@2 bb2@15 f2@15", W: "[gb2@15 db2@20 ~ bb2@15 f2@13]/2", X: "~@2 ab2@15 ~ gb2@14",
  Y: "[~ db2@5 eb2@14 ~ db2@15 ~ eb2@15 db2@15 eb2@15 ~ db2@13]/3", Z: "~@2 eb2@15 db2@15",
  AA: "[eb2@15 ~ db2@15 eb2@15 db2@15 ~ eb2@15 db2@15 eb2@15 db2@15 ~ eb2@15 db2@15 eb2@15 ~ db2@15 bb2@15 f2@15 gb2@15 ~ ab2@15 bb2@11]/8",
  AB: "[~@4 f2@15 ~ gb2@15 ab2@15 bb2@14]/2", AC: "~ f2@15 ~ gb2@15",
  AD: "[ab2@15 bb2@15 ~ f2@15 gb2@15 ab2@15 ~ bb2@15 f2@15 gb2@15 ab2@15 ~ bb2@15 f2@15 gb2@15 ab2@15 ~ bb2@15 f2@15 gb2@15 ~ ab2@11]/8",
  AE: "~@4 bb2@15 f2@13", AF: "~@3 gb2@15 ab2@14", AG: "~ bb2@15 f2@15 ~",
  AH: "[gb2@15 ab2@15 bb2@15 ~ f2@15 gb2@15 ab2@15 bb2@15 ~ f2@15 gb2@15 ab2@15 ~ bb2@15 f2@15 gb2@15 ab2@15 ~ bb2@15 f2@15 gb2@12]/8",
  AI: "[~@4 ab2@17 bb2@57 ~@18]/3",
})).s("gm_fretless_bass").gain(0.31)

// chords · harpsichord
const harpsichord = note(`<
  ~ A B C D E F G@2 H I@2 J K L M N O P Q R S@2 T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ@2 AR AS
  AT AU AV AW AX AY AZ BA BB BC BD BE J K BF M BG BH BI BJ BK BL BM BN BO BP@2 BQ BF BR BS BT BU BV BW BX BY BZ CA CB CC
  CD CE CF CG CH CI@2 CJ CK CL CM CN CO CP CQ CR CS@3 ~
>`.pickRestart({
  A: "~ [db4,f4] ~@7 [db4,f4]@2 ~@5 [c4,f4] ~@7 [c4,f4]@2 ~@6", // Db F5
  B: "[db4,gb4] ~@6 [db4,gb4]@2 ~@6 [db4,f4] ~@4 [db4,f4] ~@4 [db4,f4] ~@4 [db4,f4] ~", // Gb5 Db
  C: "~@3 [db4,f4] ~@7 [db4,f4]@2 ~@6 [c4,f4] ~@6 [c4,f4]@2 ~@4", // Db F5
  D: "~@2 [db4,gb4] ~@6 [db4,gb4]@2 ~@6 [db4,f4] ~@4 [db4,f4] ~@4 [db4,f4] ~@4", // Gb5 Db
  E: "[db4,f4] ~@4 db4 f4 ~@6 [db4,f4]@2 ~@6 [c4,f4] ~@6 [c4,f4]@2 ~@2", // Db F5
  F: "~@4 [db4,gb4] ~@7 [db4,gb4]@2 ~@5 [db4,f4] ~@4 [db4,f4] ~@5 [db4,f4] ~", // Gb5 Db
  G: "[~@3 [db4,f4] ~@4 [db4,f4] ~@6 [db4,f4]@2 ~@6 [c4,f4] ~@7 [c4,f4]@2 ~@5 [c4,eb4] ~@7 [c4,eb4]@2 ~@6 [bb3,db4] ~@4 [bb3,db4] ~@4]/2", // Db F5 Cm Bbm
  H: "[bb3,db4] ~@4 [bb3,db4] ~@4 [gb3,bb3] ~@7 [gb3,bb3]@2 ~@8 [f3,ab3] ~@3", // Bbm Gb Fm
  I: "[~ [f3,ab3]@2 ~@6 [gb3,bb3] ~@6 [gb3,bb3]@2 ~@8 [f3,ab3] ~@5 ab3@2 ~@5 [gb3,bb3] ~@7 [gb3,bb3]@2 ~@8 [f3,ab3] ~@4 [f3,ab3]@2, ~@31 f3@2 ~@31]/2", // Fm Gb Fm Gb Fm
  J: "~@6 [gb3,bb3] ~@6 [gb3,bb3]@2 ~@9 [f3,ab3] ~@4 [f3,ab3]@2 ~", // Gb Fm
  K: "~@4 [gb3,bb3] ~@7 [gb3,bb3]@2 ~@8 [f3,ab3] ~@4 [f3,ab3]@2 ~@3", // Gb Fm
  L: "~@3 [gb3,bb3] ~@7 bb3@2 ~@8 [f3,ab3] ~@4 [f3,ab3]@2 ~@4, ~@5 gb3 ~@10", // Gb Fm
  M: "~ [gb3,bb3] ~@7 [gb3,bb3]@2 ~@8 [f3,ab3] ~@4 [f3,ab3]@2 ~@6", // Gb Fm
  N: "[gb3,bb3] ~@7 [gb3,bb3]@2 ~@8 [f3,ab3] ~@4 [f3,ab3]@2 ~@6 [gb3,bb3]", // Gb Fm Gb
  O: "~@6 [gb3,bb3]@2 ~@8 [f3,ab3] ~@5 [f3,ab3]@2 ~@5 [gb3,bb3] ~@2", // Gb Fm Gb
  P: "~@5 [gb3,bb3]@2 ~@8 [f3,ab3] ~@4 [f3,ab3]@2 ~@6 [gb3,bb3] ~@3", // Gb Fm Gb
  Q: "~@3 [gb3,bb3]@2 ~@9 [f3,ab3] ~@4 [f3,ab3]@2 ~@5 [gb3,bb3] ~@5", // Gb Fm Gb
  R: "~@2 [gb3,bb3]@2 ~@8 [f3,ab3] ~@4 [f3,ab3]@2 ~@6 [gb3,bb3] ~@6", // Gb Fm Gb
  S: "[~ bb3@2 ~@8 [f3,ab3] ~@4 [f3,ab3]@2 ~@5 [gb3,bb3] ~@7 [gb3,bb3]@2 ~@8 [f3,ab3] ~@4 [f3,ab3]@2 ~@6 [gb3,bb3] ~@7 [gb3,bb3]@2, gb3 ~@31]/2", // Fm Gb Fm Gb
  T: "~@8 [f3,ab3] ~@4 [f3,ab3]@2 ~@6 [gb3,bb3] ~@6 [gb3,bb3]@2 ~@2", // Fm Gb
  U: "~@6 [f3,ab3] ~@5 [f3,ab3]@2 ~@5 [gb3,bb3] ~@7 [gb3,bb3]@2 ~@3", // Fm Gb
  V: "~@5 [f3,ab3] ~@4 [f3,ab3]@2 ~@6 [gb3,bb3] ~@6 [gb3,bb3]@2 ~@5", // Fm Gb
  W: "~@4 [f3,ab3] ~@4 [f3,ab3]@2 ~@5 [gb3,bb3] ~@7 [gb3,bb3]@2 ~@6", // Fm Gb
  X: "~@2 [f3,ab3] ~@4 [f3,ab3]@2 ~@6 [gb3,bb3] ~@7 [gb3,bb3]@2 ~@7", // Fm Gb
  Y: "~ [f3,ab3] ~@4 [f3,ab3]@2 ~@5 [db4,f4] ~@7 [db4,f4]@2 ~@6 [c4,f4] ~@2", // Fm Db F5
  Z: "~@4 [c4,f4]@2 ~@6 [db4,gb4] ~@7 [db4,gb4]@2 ~@5 [db4,f4] ~@4", // F5 Gb5 Db
  AA: "[db4,f4] ~@4 db4 f4 ~@4 [db4,f4] ~@4 [db4,f4] ~@6 [db4,f4]@2 ~@6 [c4,f4]", // Db F5
  AB: "~@7 [c4,f4]@2 ~@5 [db4,gb4] ~@7 [db4,gb4]@2 ~@6 [db4,f4] ~", // F5 Gb5 Db
  AC: "~@3 [db4,f4] ~@4 [db4,f4] ~@4 [db4,f4] ~@4 [db4,f4] ~@7 [db4,f4]@2 ~@4", // Db
  AD: "~ [c4,f4] ~@7 [c4,f4]@2 ~@5 db4 gb4 ~@6 [db4,gb4]@2 ~@6", // F5 Gb5
  AE: "[db4,f4] ~@4 [db4,f4] ~@4 [db4,f4] ~@4 [db4,f4] ~@4 [db4,f4] ~@7 [db4,f4]@2 ~@2", // Db
  AF: "~@3 c4 f4 ~@6 [c4,f4]@2 ~@6 [c4,eb4] ~@6 [c4,eb4]@2 ~@4", // F5 Cm
  AG: "~@2 [bb3,db4] ~@4 [bb3,db4] ~@4 [bb3,db4] ~@4 [bb3,db4] ~@4 [gb3,bb3] ~@7 [gb3,bb3]@2", // Bbm Gb
  AH: "~@8 [f3,ab3] ~@4 [f3,ab3]@2 ~@6 [gb3,bb3] ~@7 [gb3,bb3]@2 ~", // Fm Gb
  AI: "~@7 [f3,ab3] ~@4 [f3,ab3]@2 ~@6 [gb3,bb3] ~@6 [gb3,bb3]@2 ~@3", // Fm Gb
  AJ: "~@5 [f3,ab3] ~@5 [f3,ab3]@2 ~@5 [gb3,bb3] ~@7 [gb3,bb3]@2 ~@4", // Fm Gb
  AK: "~@4 [f3,ab3] ~@4 [f3,ab3]@2 ~@6 [gb3,bb3] ~@6 [gb3,bb3]@2 ~@6", // Fm Gb
  AL: "~@3 [f3,ab3] ~@4 [f3,ab3]@2 ~@5 [gb3,bb3] ~@7 [gb3,bb3]@2 ~@7", // Fm Gb
  AM: "~ [f3,ab3] ~@4 [f3,ab3]@2 ~@6 [gb3,bb3] ~@7 [gb3,bb3]@2 ~@8", // Fm Gb
  AN: "[f3,ab3] ~@4 [f3,ab3]@2 ~@5 [gb3,bb3] ~@7 [gb3,bb3]@2 ~@8 [f3,ab3] ~", // Fm Gb Fm
  AO: "~@3 [f3,ab3]@2 ~@6 [gb3,bb3] ~@7 [gb3,bb3]@2 ~@8 [f3,ab3] ~@2", // Fm Gb Fm
  AP: "~@2 [f3,ab3]@2 ~@6 [gb3,bb3] ~@6 [gb3,bb3]@2 ~@8 [f3,ab3] ~@4", // Fm Gb Fm
  AQ: "[~ [f3,ab3]@2 ~@5 [db4,f4] ~@7 [db4,f4]@2 ~@5 [c4,f4] ~@7 [c4,f4]@2 ~@6 [db4,gb4] ~@6 [db4,gb4]@2 ~@6 [db4,f4] ~@4 [db4,f4] ~@4]/2", // Fm Db F5 Gb5 Db
  AR: "[db4,f4] ~@4 [db4,f4] ~@4 [db4,f4] ~@7 [db4,f4]@2 ~@6 [c4,f4] ~@5", // Db F5
  AS: "~ [c4,f4]@2 ~@6 [db4,gb4] ~@7 [db4,gb4]@2 ~@5 [db4,f4] ~@4 [db4,f4] ~@2", // F5 Gb5 Db
  AT: "~@2 [db4,f4] ~@5 [db4,f4] ~@4 [db4,f4] ~@6 [db4,f4]@2 ~@6 [c4,f4] ~@3", // Db F5
  AU: "~@4 [c4,f4]@2 ~@5 [db4,gb4] ~@7 [db4,gb4]@2 ~@6 [db4,f4] ~@4", // F5 Gb5 Db
  AV: "[db4,f4] ~@4 [db4,f4] ~@4 [db4,f4] ~@4 [db4,f4] ~@7 [db4,f4]@2 ~@5 [c4,f4] ~", // Db F5
  AW: "~@6 [c4,f4]@2 ~@5 [c4,eb4] ~@7 [c4,eb4]@2 ~@6 [bb3,db4] ~@2", // F5 Cm Bbm
  AX: "~@2 [bb3,db4] ~@4 [bb3,db4] ~@4 [bb3,db4] ~@4 [gb3,bb3] ~@7 [gb3,bb3]@2 ~@5", // Bbm Gb
  AY: "~@3 [f3,ab3] ~@4 [f3,ab3]@2 ~@6 [gb3,bb3] ~@6 [gb3,bb3]@2 ~@7", // Fm Gb
  AZ: "~@2 [f3,ab3] ~@4 [f3,ab3]@2 ~@5 [gb3,bb3] ~@7 [gb3,bb3]@2 ~@8", // Fm Gb
  BA: "[f3,ab3] ~@4 [f3,ab3]@2 ~@6 [gb3,bb3] ~@7 bb3@2 ~@8 [f3,ab3], ~@10 gb3 ~@5", // Fm Gb Fm
  BB: "~@4 [f3,ab3]@2 ~@5 [gb3,bb3] ~@7 [gb3,bb3]@2 ~@8 [f3,ab3] ~@2", // Fm Gb Fm
  BC: "~@2 [f3,ab3]@2 ~@6 [gb3,bb3] ~@7 [gb3,bb3]@2 ~@8 [f3,ab3] ~@3", // Fm Gb Fm
  BD: "~ [f3,ab3]@2 ~@6 [gb3,bb3] ~@6 [gb3,bb3]@2 ~@8 [f3,ab3] ~@5", // Fm Gb Fm
  BE: "[f3,ab3]@2 ~@5 [gb3,bb3] ~@7 [gb3,bb3]@2 ~@8 [f3,ab3] ~@4 [f3,ab3]@2", // Fm Gb Fm
  BF: "~@3 [gb3,bb3] ~@7 [gb3,bb3]@2 ~@8 [f3,ab3] ~@4 [f3,ab3]@2 ~@4", // Gb Fm
  BG: "[db4,f4] ~@7 [db4,f4]@2 ~@5 [c4,f4] ~@7 [c4,f4]@2 ~@6 [db4,gb4]", // Db F5 Gb5
  BH: "~@6 [db4,gb4]@2 ~@6 [db4,f4] ~@4 [db4,f4] ~@4 [db4,f4] ~@4 [db4,f4] ~@2", // Gb5 Db
  BI: "~@2 [db4,f4] ~@7 [db4,f4]@2 ~@6 [c4,f4] ~@6 [c4,f4]@2 ~@5", // Db F5
  BJ: "~ [db4,gb4] ~@7 gb4@2 ~@5 [db4,f4] ~@4 [db4,f4] ~@4 [db4,f4] ~@4 [db4,f4], ~@4 db4 ~@11", // Gb5 Db
  BK: "~@5 [db4,f4] ~@6 [db4,f4]@2 ~@6 [c4,f4] ~@6 [c4,f4]@2 ~@3", // Db F5
  BL: "~@3 [db4,gb4] ~@7 [db4,gb4]@2 ~@5 [db4,f4] ~@4 [db4,f4] ~@5 [db4,f4] ~@2", // Gb5 Db
  BM: "~@2 [db4,f4] ~@4 [db4,f4] ~@6 [db4,f4]@2 ~@6 [c4,f4] ~@7 [c4,f4]@2", // Db F5
  BN: "~@5 [c4,eb4] ~@7 [c4,eb4]@2 ~@6 [bb3,db4] ~@4 [bb3,db4] ~@4 [bb3,db4]", // Cm Bbm
  BO: "~@4 [bb3,db4] ~@4 [gb3,bb3] ~@7 [gb3,bb3]@2 ~@8 [f3,ab3] ~@4", // Bbm Gb Fm
  BP: "[[f3,ab3]@2 ~@6 [gb3,bb3] ~@6 [gb3,bb3]@2 ~@8 [f3,ab3] ~@5 [f3,ab3]@2 ~@5 [gb3,bb3] ~@7 [gb3,bb3]@2 ~@8 [f3,ab3] ~@4 [f3,ab3]@2 ~]/2", // Fm Gb Fm Gb Fm
  BQ: "~@5 [gb3,bb3] ~@6 [gb3,bb3]@2 ~@9 [f3,ab3] ~@4 [f3,ab3]@2 ~@2", // Gb Fm
  BR: "~@2 [gb3,bb3] ~@7 [gb3,bb3]@2 ~@8 [f3,ab3] ~@4 [f3,ab3]@2 ~@5", // Gb Fm
  BS: "gb3 bb3 ~@6 [gb3,bb3]@2 ~@8 [f3,ab3] ~@4 [f3,ab3]@2 ~@6 [gb3,bb3]", // Gb Fm Gb
  BT: "~@7 [gb3,bb3]@2 ~@8 [f3,ab3] ~@4 [f3,ab3]@2 ~@6 [gb3,bb3] ~", // Gb Fm Gb
  BU: "~@5 [gb3,bb3]@2 ~@8 f3 ab3 ~@4 [f3,ab3]@2 ~@5 [gb3,bb3] ~@3", // Gb Fm Gb
  BV: "~@4 [gb3,bb3]@2 ~@8 [f3,ab3] ~@4 [f3,ab3]@2 ~@6 [db4,f4] ~@4", // Gb Fm Db
  BW: "~@2 [db4,f4]@2 ~@9 [c4,f4] ~@4 [c4,f4]@2 ~@5 [bb3,db4] ~@6", // Db F5 Bbm
  BX: "~ [bb3,db4]@2 ~@6 [db4,eb4] ~@6 [c4,eb4]@2 ~@6 [db4,f4] ~@7", // Bbm Dbsus2 Cm Db
  BY: "[db4,f4]@2 ~@8 [c4,f4] ~@4 [c4,f4]@2 ~@5 bb3 db4 ~@6 [bb3,db4]@2", // Db F5 Bbm
  BZ: "~@6 [db4,eb4] ~@6 [c4,eb4]@2 ~@6 [db4,f4] ~@7 [db4,f4]@2 ~", // Dbsus2 Cm Db
  CA: "~@7 [c4,f4] ~@4 [c4,f4]@2 ~@6 [bb3,db4] ~@6 [bb3,db4]@2 ~@3", // F5 Bbm
  CB: "~@3 [db4,eb4] ~@7 [c4,eb4]@2 ~@5 [db4,f4] ~@7 [db4,f4]@2 ~@4", // Dbsus2 Cm Db
  CC: "~@4 [c4,f4] ~@4 [c4,f4]@2 ~@6 [bb3,db4] ~@6 [bb3,db4]@2 ~@6", // F5 Bbm
  CD: "[db4,eb4] ~@7 [c4,eb4]@2 ~@5 [db4,f4] ~@7 [db4,f4]@2 ~@7", // Dbsus2 Cm Db
  CE: "~ [c4,f4] ~@4 [c4,f4]@2 ~@6 [bb3,db4] ~@7 [bb3,db4]@2 ~@5 [db4,eb4] ~@2", // F5 Bbm Dbsus2
  CF: "~@5 [c4,eb4]@2 ~@6 [db4,f4] ~@6 [db4,f4]@2 ~@8 [c4,f4] ~", // Cm Db F5
  CG: "~@4 [c4,f4]@2 ~@5 [bb3,db4] ~@7 [bb3,db4]@2 ~@5 [db4,eb4] ~@5", // F5 Bbm Dbsus2
  CH: "~@2 [c4,eb4]@2 ~@6 [db4,f4] ~@6 [db4,f4]@2 ~@9 [c4,f4] ~@3", // Cm Db F5
  CI: "[~ [c4,f4]@2 ~@5 [bb3,db4] ~@7 [bb3,db4]@2 ~@6 [db4,eb4] ~@6 [c4,eb4]@2 ~@6 [db4,f4] ~@7 f4@2 ~@8 [c4,f4] ~@4 [c4,f4]@2, ~@23 db4 ~@8]/2", // F5 Bbm Dbsus2 Cm Db F5
  CJ: "~@5 [bb3,db4] ~@7 [bb3,db4]@2 ~@6 [db4,eb4] ~@6 [c4,eb4]@2 ~@2", // Bbm Dbsus2 Cm
  CK: "~@4 [db4,f4] ~@7 [db4,f4]@2 ~@8 [c4,f4] ~@4 [c4,f4]@2 ~@3", // Db F5
  CL: "~@3 [bb3,db4] ~@6 [bb3,db4]@2 ~@6 [db4,eb4] ~@7 eb4@2 ~@4, ~@25 c4@2 ~@5", // Bbm Dbsus2
  CM: "~ [db4,f4] ~@7 [db4,f4]@2 ~@8 [c4,f4] ~@4 [c4,f4]@2 ~@6", // Db F5
  CN: "[bb3,db4] ~@6 [bb3,db4]@2 ~@6 [db4,eb4] ~@7 [c4,eb4]@2 ~@5 [db4,f4] ~", // Bbm Dbsus2 Cm Db
  CO: "~@6 [db4,f4]@2 ~@8 [c4,f4] ~@4 [c4,f4]@2 ~@6 [bb3,db4] ~@2", // Db F5 Bbm
  CP: "~@5 [bb3,db4]@2 ~@5 [db4,eb4] ~@7 [c4,eb4]@2 ~@5 [db4,f4] ~@4", // Bbm Dbsus2 Cm Db
  CQ: "~@3 [db4,f4]@2 ~@8 [c4,f4] ~@4 [c4,f4]@2 ~@6 [bb3,db4] ~@5", // Db F5 Bbm
  CR: "~@2 [bb3,db4]@2 ~@5 [db4,eb4] ~@7 [c4,eb4]@2 ~@6 [db4,f4] ~@6", // Bbm Dbsus2 Cm Db
  CS: "[[db4,f4]@2 ~@8 [c4,f4] ~@5 [c4,f4]@2 ~@5 [bb3,db4] ~@7 [bb3,db4]@2 ~@5 [db4,eb4] ~@7 [c4,eb4]@3 ~@4 [db4,f4]@21 ~@22]/3", // Db F5 Bbm Dbsus2 Cm Db
})).s("gm_harpsichord").gain(0.41).pan(0.7)

// chords · harpsichord · soft notes
const harpsichord_soft = note(`<
  A B C D@2 E F G H I J@2 K L M@2 N O P Q@2 R S T U V W X Y Z AA AB AC AD AE AF AG AH AI AJ@2 AK AL AM AN AO AP AQ AR AS
  AT AU AV AW AX AY AZ BA@2 BB BC BD K L BE@2 BF BG BH BI BJ BK BL BM BN BO@2 BP BQ@2 BR BS BT BU BV BW BX BY BZ CA@2 CB
  CC CD CE CF CG CH CI CJ CK@2 CL CM CN CO CP CQ CR@2 ~
>`.pickRestart({
  A: "~@15 bb2", B: "~@6 f3 ~@4 bb2 ~@2 f2@2 ~@5 c3 ~@4 f2 ~@2 gb2@2 ~",
  C: "~@5 db3 ~@4 gb3 ~ f3 ~@4 eb3 ~@4 db3 ~@5 c3 ~@3",
  D: "[~ bb2@2 ~@5 f3 ~@4 bb2 ~@2 f2@2 ~@6 c3 ~@4 f2 ~ gb2@2 ~@6 db3 ~@4 gb3 ~@2 f3 ~@4 eb3 ~@4 db3 ~@4 c3 ~]/2",
  E: "~@3 bb2@2 ~@6 f3 ~@4 bb2 ~ f2 ~@7 c3 ~@4 f2", F: "~ gb2@2 ~@6 db3 ~@4 gb3 ~@2 f3 ~@4 eb3 ~@4 db3 ~@4",
  G: "c3 ~@4 bb2@2 ~@6 f3 ~@4 bb2 ~ f2@2 ~@6 c3 ~@3", H: "~ f2 ~@2 ab2@2 ~@5 eb3 ~@4 ab2 ~@2 gb2 ~@4 f2 ~@4 eb2 ~@2",
  I: "~@2 db2 ~@4 eb2@2 ~@6 gb2 ~@4 bb2 ~@2 ab2@2 ~@3 f2@2 ~@2",
  J: "[~ db2@2 ~@3 eb2@2 ~@6 gb2@2 ~@3 bb2 ~ ab2@2 ~@3 f2@2 ~@3 db2@2 ~@4 eb2@2 ~@5 gb2@2 ~@3 bb2 ~@2 ab2@2 ~@3 f2@2 ~@3 db2@2]/2",
  K: "~@3 eb2@2 ~@6 gb2@2 ~@3 bb2 ~ ab2@2 ~@4 f2@2 ~@3 db2@2 ~",
  L: "~@2 eb2@2 ~@5 gb2@2 ~@3 bb2 ~@2 ab2@2 ~@3 f2@2 ~@3 db2@2 ~@3",
  M: "[eb2@2 ~@6 gb2@2 ~@3 bb2 ~@2 ab2@2 ~@3 f2@2 ~@3 db2@2 ~@3 eb2@2 ~@5 gb2@2 ~@4 bb2 ~ ab2@2 ~@3 f2@2 ~@3 db2@2 ~@3 eb2@2 ~]/2",
  N: "~@5 gb2@2 ~@3 bb2 ~@2 ab2@2 ~@3 f2@2 ~@3 db2@2 ~@3 eb2@2 ~@2",
  O: "~@4 gb2@2 ~@3 bb2 ~ ab2@2 ~@3 f2@2 ~@3 db2@2 ~@4 eb2@2 ~@3",
  P: "~@2 gb2@2 ~@3 bb2 ~@2 ab2@2 ~@3 f2@2 ~@3 db2@2 ~@3 eb2@2 ~@5",
  Q: "[~ gb2@2 ~@3 bb2 ~ ab2@2 ~@4 f2@2 ~@3 db2@2 ~@3 eb2@2 ~@5 gb2@2 ~@3 bb2 ~@2 ab2@2 ~@3 f2@2 ~@3 db2@2 ~@3 eb2@2 ~@6 gb2@2]/2",
  R: "~@3 bb2 ~@2 ab2@2 ~@3 f2@2 ~@3 db2@2 ~@3 eb2@2 ~@6 gb2@2 ~",
  S: "~@2 bb2 ~ ab2@2 ~@3 f2@2 ~@3 db2@2 ~@3 eb2@2 ~@6 gb2@2 ~@3",
  T: "bb2 ~@2 ab2@2 ~@3 f2@2 ~@3 db2@2 ~@3 eb2@2 ~@6 gb2@2 ~@3 bb2",
  U: "~ ab2@2 ~@3 f2@2 ~@3 db2@2 ~@4 eb2@2 ~@5 gb2@2 ~@3 bb2 ~@2",
  V: "ab2@2 ~@3 f2@2 ~@3 db2@2 ~@3 eb2@2 ~@6 gb2@2 ~@3 bb2 ~ ab2@2",
  W: "~@4 f2@2 ~@3 db2@2 ~@3 eb2@2 ~@5 gb2@2 ~@3 bb2 ~@2 ab2@2 ~",
  X: "~@2 f2@2 ~@3 db2@2 ~@3 eb2@2 ~@6 gb2@2 ~@3 bb2 ~@2 ab2@2 ~@2",
  Y: "~ f2@2 ~@3 db2@2 ~@3 bb2@2 ~@6 f3 ~@4 bb2 ~ f2@2 ~@4",
  Z: "~@2 c3 ~@4 f2 ~ gb2@2 ~@6 db3 ~@4 gb3 ~@2 f3 ~@4 eb3 ~", AA: "~@3 db3 ~@4 c3 ~@4 bb2@2 ~@6 f3 ~@4 bb2 ~ f2@2 ~@2",
  AB: "~@4 c3 ~@4 f2 ~@2 gb2@2 ~@5 db3 ~@4 gb3 ~@2 f3 ~@4", AC: "eb3 ~@4 db3 ~@4 c3 ~@4 bb2@2 ~@6 f3 ~@4 bb2 ~@2 f2",
  AD: "~@6 c3 ~@4 f2 ~@2 gb2@2 ~@6 db3 ~@4 gb3 ~ f3 ~@2", AE: "~@2 eb3 ~@4 db3 ~@5 c3 ~@4 bb2@2 ~@5 f3 ~@4 bb2 ~",
  AF: "~ f2@2 ~@6 c3 ~@4 f2 ~ ab2@2 ~@6 eb3 ~@4 ab2 ~ gb2", AG: "~@5 f2 ~@4 eb2 ~@4 db2 ~@4 eb2@2 ~@6 gb2 ~@3",
  AH: "~ bb2 ~ ab2@2 ~@3 f2@2 ~@3 db2@2 ~@3 eb2@2 ~@6 gb2@2 ~@3 bb2",
  AI: "~@2 ab2@2 ~@3 f2@2 ~@3 db2@2 ~@3 eb2@2 ~@6 gb2@2 ~@3 bb2 ~",
  AJ: "[ab2@2 ~@3 f2@2 ~@3 db2@2 ~@4 eb2@2 ~@5 gb2@2 ~@3 bb2 ~@2 ab2@2 ~@3 f2@2 ~@3 db2@2 ~@3 eb2@2 ~@6 gb2@2 ~@3 bb2 ~ ab2@2 ~]/2",
  AK: "~@3 f2@2 ~@3 db2@2 ~@3 eb2@2 ~@5 gb2@2 ~@3 bb2 ~@2 ab2@2 ~@2",
  AL: "~ f2@2 ~@3 db2@2 ~@3 eb2@2 ~@6 gb2@2 ~@3 bb2 ~@2 ab2@2 ~@3",
  AM: "f2@2 ~@3 db2@2 ~@3 eb2@2 ~@6 gb2@2 ~@3 bb2 ~ ab2@2 ~@3 f2@2",
  AN: "~@3 db2@2 ~@3 eb2@2 ~@6 gb2@2 ~@3 bb2 ~@2 ab2@2 ~@3 f2@2 ~",
  AO: "~@2 db2@2 ~@3 eb2@2 ~@6 gb2@2 ~@3 bb2 ~ ab2@2 ~@3 f2@2 ~@3",
  AP: "~ db2@2 ~@3 bb2@2 ~@5 f3 ~@4 bb2 ~@2 f2@2 ~@6 c3 ~@2",
  AQ: "~@2 f2 ~ gb2@2 ~@6 db3 ~@4 gb3 ~ f3 ~@5 eb3 ~@4 db3 ~", AR: "~@3 c3 ~@4 bb2@2 ~@5 f3 ~@5 bb2 ~ f2@2 ~@6 c3",
  AS: "~@4 f2 ~ gb2@2 ~@6 db3 ~@4 gb3 ~@2 f3 ~@4 eb3 ~@4", AT: "db3 ~@4 c3 ~@4 bb2@2 ~@6 f3 ~@4 bb2 ~ f2 ~@6",
  AU: "~ c3 ~@4 f2 ~@2 gb2@2 ~@5 db3 ~@4 gb3 ~@2 f3 ~@4 eb3 ~@2",
  AV: "~@2 db3 ~@4 c3 ~@4 bb2@2 ~@6 f3 ~@4 bb2 ~@2 f2@2 ~@2",
  AW: "~@3 c3 ~@4 f2 ~@2 ab2@2 ~@6 eb3 ~@4 ab2 ~ gb2 ~@4 f2", AX: "~@4 eb2 ~@4 db2 ~@5 eb2@2 ~@5 gb2 ~@4 bb2 ~@2 ab2@2",
  AY: "~@3 f2@2 ~@3 db2@2 ~@3 eb2@2 ~@6 gb2@2 ~@3 bb2 ~ ab2@2 ~@2",
  AZ: "~@2 f2@2 ~@3 db2@2 ~@3 eb2@2 ~@5 gb2@2 ~@3 bb2 ~@2 ab2@2 ~@3",
  BA: "[f2@2 ~@3 db2@2 ~@3 eb2@2 ~@6 gb2@2 ~@3 bb2 ~@2 ab2@2 ~@3 f2@2 ~@3 db2@2 ~@3 eb2@2 ~@6 gb2@2 ~@3 bb2 ~ ab2@2 ~@3 f2@2 ~]/2",
  BB: "~@2 db2@2 ~@3 eb2@2 ~@6 gb2@2 ~@3 bb2 ~@2 ab2@2 ~@3 f2@2 ~@2",
  BC: "~ db2@2 ~@3 eb2@2 ~@6 gb2@2 ~@3 bb2 ~ ab2@2 ~@3 f2@2 ~@4",
  BD: "db2@2 ~@3 eb2@2 ~@5 gb2@2 ~@3 bb2 ~@2 ab2@2 ~@3 f2@2 ~@3 db2@2",
  BE: "[eb2@2 ~@6 gb2@2 ~@3 bb2 ~@2 ab2@2 ~@3 f2@2 ~@3 db2@2 ~@3 eb2@2 ~@6 gb2@2 ~@3 bb2 ~ ab2@2 ~@3 f2@2 ~@3 db2@2 ~@3 bb2@2 ~]/2",
  BF: "~@5 f3 ~@4 bb2 ~@2 f2@2 ~@5 c3 ~@5 f2 ~ gb2@2 ~@2", BG: "~@4 db3 ~@4 gb3 ~ f3 ~@4 eb3 ~@5 db3 ~@4 c3 ~@4",
  BH: "bb2@2 ~@5 f3 ~@4 bb2 ~@2 f2@2 ~@6 c3 ~@4 f2 ~ gb2@2", BI: "~@6 db3 ~@4 gb3 ~@2 f3 ~@4 eb3 ~@4 db3 ~@4 c3 ~@2",
  BJ: "~@2 bb2@2 ~@6 f3 ~@4 bb2 ~ f2 ~@7 c3 ~@4 f2 ~", BK: "~ gb2@2 ~@5 db3 ~@4 gb3 ~@2 f3 ~@4 eb3 ~@4 db3 ~@4 c3",
// … 257 more lines