Strudelify

No Diggity Shout (medley)

Cher

KeyC minorTempo80 bpm
0:00/0:00
// No Diggity   Shout (medley) — Cher
// 80 bpm, 4/4, key C minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (4/4 at bar 1, 3/4 at bar 87, 4/4 at bar 88, 3/4 at bar 90, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: Full arrangement: all 140 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(80/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 · electric bass finger · "FINGERDBA"
const bass = note(`<
  A B C D A E F G H I J A E K L A E M N O P Q R S T U V W X Y Z AA AB AC AD AE AF AG R AH AI AJ AK AL AM AN AO AP AQ AR
  AS AT AU AV AW AX AY AZ BA BB BC BD BE BF BG BH BI BJ BK BL BM BN AS BO BP BQ BR BS BT@3 ~ BU BV@3 BW@4 BX@2 BY@2 BZ
  CA@3 CB@2 CC@2 CD CE CF@3 CG@3 CH@2 CI CJ CK@2 CL CM@3 CN@2 CO@2 CP@2 CQ CR CS@2 CT@4 ~@6
>`.pickRestart({
  A: "eb2@3 d2", B: "c2@36 bb1@11 ~", C: "ab1@20 ~ ab1@3", D: "bb1@37 ~@5 bb1@3 c2@3", E: "c2@3 bb1",
  F: "ab1@38 ~@4 bb1@3 c2@3", G: "bb1@43 ~@5", H: "db2 ab1", I: "eb2", J: "eb3@3 ~", K: "ab1",
  L: "bb1@40 ~@2 bb1@3 c2@3", M: "ab1@41 ~ ab1@3 a1@3", N: "bb1@17 ~ f2@6 ab2@24", O: "eb2@17 ~ f2@3 gb2@3 g2@12 g1@12",
  P: "c2@16 ~@2 c2@3 d2@3 eb2@12 g1@12", Q: "ab1@16 ~@2 ab1@5 ~ ab1@24", R: "bb1@17 ~ f2@3 bb2@3 ab2@18 bb2@6",
  S: "eb2@15 ~@3 eb2@5 ~ eb2@18 bb1@3 c2@3", T: "db2@23 ~ ab1@17 ~ bb1@3 c2@3", U: "~@3 e2 ~@38 bb2@6, eb2@41 ~@7",
  V: "eb3@7 ~", W: "eb2@14 ~@4 eb2@5 ~ eb2@12 d2@11 ~", X: "c2@2 c2 bb1", Y: "ab1@17 ~ ab1@24 ab1@6",
  Z: "bb1@28 ~@2 bb1@11 ~ bb1@3 c2@3", AA: "eb2@17 ~ eb2@18 d2@11 ~", AB: "c2@17 ~ c2@6 c2@12 bb1@12",
  AC: "ab1@17 ~ ab1@6 ab1@16 ~@2 ab1@3 a1@3", AD: "bb1@18 f2@6 ab2@17 ~ ab2@3 bb2@3",
  AE: "eb2@16 ~@2 eb2@3 f2@3 g2@9 d2@2 ~ g1@11 ~, ~@36 c2 ~@11", AF: "c2@16 ~@2 c2@3 d2@3 eb2@11 ~ g1@12",
  AG: "ab1@17 ~ ab1@5 ~ ab1@16 ~@2 ab1@3 a1@3", AH: "eb2@16 ~@2 eb2@5 ~ eb2@18 bb1@3 c2@3",
  AI: "db2@24 ab1@17 ~ ab1@3 bb1@3", AJ: "eb2@47 ~", AK: "eb3@30 bb2@12 g2@5 ~",
  AL: "c2@16 ~@2 c2@5 ~ c2@6 d2@6 eb2@6 c2@6", AM: "g1@5 ~ g1@9 ~@3 g2@6 c2@10 ~@2 c2@3 d2@3 eb2@6",
  AN: "g1@15 ~@3 g1@6 c2@16 ~@2 c2@6", AO: "g2@17 ~ g1@6 c2@18 eb2@3 e2@3", AP: "f2@18 f1@5 ~ f1@14 ~ f1@3 c2@3 d2@3",
  AQ: "f2@17 ~ f2@4 ~@2 f2@3 c2@3 f2@9 c2@2 ~ f2@3 c2@2 ~", AR: "f1@5 ~ f1@5 ~ g1@5 ~ g1@6 ab1@5 ~ ab1@6 a1@5 ~ a1@6",
  AS: "bb1@16 ~@2 f2@3 bb2@3 ab2@16 ~@2 ab2@6", AT: "eb2@17 ~ f2@3 gb2@3 g2@11 ~ g1@11 ~",
  AU: "c2@17 ~ c2@3 d2@3 eb2@12 g1@11 ~", AV: "ab1@16 ~@2 ab1@5 ~ ab1@11 ~ c2@3 eb2@3 ab2@5 ~",
  AW: "bb2@17 ~ bb2@6 ab2@16 ~@2 ab2@6", AX: "eb2@16 ~@2 eb2@5 ~ eb2@15 ~@3 bb1@3 c2@3",
  AY: "db2@17 ~ f1@3 g1@3 ab1@16 ~@2 ab2@6", AZ: "eb2@15 ~@3 eb2@5 ~ eb2@17 ~ bb1@3 c2@2 ~",
  BA: "db2@15 f1@3 gb1@3 g1@3 ab1@17 ~ bb1@6", BB: "eb2@23 ~", BC: "eb3@9 bb2@9 eb2@5 ~",
  BD: "eb2@16 ~@2 eb2@5 ~ eb2@12 d2@11 ~", BE: "c2@17 ~ c2@5 ~ c2@12 bb1@11 ~",
  BF: "ab1@15 ~@3 ab1@5 ~ ab1@16 ~@2 ab1@3 a1@3", BG: "bb1@16 ~@2 f2@6 bb2@9 f2@3 bb1@5 ~ bb1@2 ~ f2@3, ~@45 e2 ~@2",
  BH: "eb2@15 ~@3 eb2@5 ~ eb2@9 bb1@2 ~ d2@12", BI: "c2@16 ~@2 c2@5 ~ c2@11 ~ bb1@11 ~",
  BJ: "ab1@16 ~@2 ab1@5 ~ ab1@15 ~@3 ab1@3 a1@3", BK: "bb1@5 ~ bb1 f2 ab2@5 ~ ab2 bb2",
  BL: "eb2@16 ~@2 f2@3 gb2@3 g2@11 ~ g1@6 b1@5 ~", BM: "c2@16 ~@2 c2@3 d2@3 eb2@12 g1@11 ~",
  BN: "ab1@14 ~@4 ab1@4 ~@2 ab1@14 ~@4 ab1@3 a1@3", BO: "eb2@14 ~@4 eb2@5 ~ eb2@15 g1@2 ~ bb1@3 c2@3",
  BP: "db2@15 ~@3 db2@6 ab1@18 bb1@3 c2@2 ~", BQ: "eb2@15 ~@3 eb2@5 ~ eb2@17 ~ c2@3 g1@3",
  BR: "db2@16 ~@2 db2@6 ab1@17 ~ bb1@3 c2@2 ~", BS: "eb2@14 ~@4 eb2@5 ~ eb2@16 ~@2 c2@4 bb1@2",
  BT: "[~ db2@28 ab1@27 ~@6 eb2@48 ~@34]/3", BU: "~@6 a2@10 ~ e2@9 ~@2 a2@9 ~ e2@9 ~",
  BV: "[~ a1@10 ~ e2@6 ~@2 e2@2 ~ a1@7 ~ a1@2 ~ e2@3 g2@3 a2@2 e2 ~@2 a1@5 a1@8 ~@3 a1@2 ~ b1@3 c2@4 ~ c2@9 ~@2 c2@3 db2@2 ~ d2@5 d2@9 ~@2 d2@5 f2@16 ~ g1@2 ~ a1@2 c2@5 ~ c2@6, ~@55 e2 ~@16]/3",
  BW: "[~@5 c2@2 d2@3 e2@6 g2@2 e2@2 ~ a2@15 ~ a2@3 e2@3 a1@14 ~@2 a1@3 c2@3 d2@5 d2@10 ~ d2@3 a1@2 d2@3 a1@2 ~ d2@9 ~@2 [d2,f2]@3 gb2@2 g2@18 ~ d2@2 ~ g2@3 d2@2 ~ g1@4 ~ c2@14 ~@2 c2@2 ~ g1@3 c2@14 ~@2 c2@3 e2@2 ~ f2@7, ~@68 a1 ~@27]/4", // Dm
  BX: "[~ f2@3 c2@7 ~ c2@2 f2@7 ~@2 f2@2 c2@7 ~@2 c2@2 f1@6 ~@2 f1@3 c2@7 ~ c2@2 ~ f2@7 ~ f2@3 c2@7 ~ c2@2 ~ f1@7 ~ f1@2 ~ c2@5]/2",
  BY: "[~@3 c2@2 ~ f2@7 ~ f2@3 c2@8 f1@3 a1@16 g1@11 f1@40 ~]/2", BZ: "~@2 a2@10 ~ e2@10 ~ a1@10 ~ e2@8 a1 ~@2 a2@2",
  CA: "[~@4 a2@5 e2@4 ~ e2@4 ~@2 a1@4 ~ a1@4 ~@2 e2@3 ~@2 e2@3 a2@3 a1@4 ~ a1@10 ~ a1@3 b1@3 c2@5 c2@9 ~@2 c2@3 db2@2 d2@4 ~@2 d2@9 ~@4 e2@2 ~ f2@5 ~ f2@11 g1@2 a1@3 c2@4 ~ c2@9 ~, ~@51 d2@2 ~@19]/3",
  CB: "[~ c2@3 d2@3 e2@5 g2@3 e2@2 ~ a2@14 ~@2 a2@3 e2@3 a1@14 ~@2 a1@3 c2@2 d2@4 ~@2 d2@9 ~@2 d2@2 a1@3 d2@3 a1@3 d2@7]/2",
  CC: "[~ d2@2 ~ f2@2 gb2@2 ~ g2@4 ~ g2@13 ~ d2@2 ~ g2@3 d2@2 g1@4 ~@2 c2@14 ~@2 c2@3 g1@3 c2@4 ~ c2@7 ~@4 c2@3 e2@2 f2@7 ~@2 f2@2]/2",
  CD: "c2@6 ~@2 c2@2 ~ f2@7 ~ f2@3 c2@7 ~ c2@2 ~ f2@5 f2@2 ~ f2@2 ~ c2@4",
  CE: "~@4 c2@2 ~ f2@7 ~ f2@3 c2@7 ~ c2@2 ~ f1@6 ~@2 f1@2 ~ c2@7 ~",
  CF: "[c2@2 f2@7 ~@2 f2@2 c2@4 ~@2 c2@3 b1@2 a1@16 ~ g1@11 f1@41 ~@2 d2@5 ~@3 d2@3 c2@6 ~@2 c2@2 ~ d2@6 ~@2 d2@3 c2@6 ~@2 c2@2 ~ d2@5]/3",
  CG: "[~@3 d2@2 ~ c2@6 ~@2 c2@2 ~ d2@4 ~ d2 ~@2 d2@3 c2@6 ~@2 c2@2 d2@5 ~@4 d2@2 c2@6 ~@3 c2@2 d2@5 ~@3 d2@3 c2@6 ~@2 c2@2 ~ d2@5 ~@3 d2@3 c2@6 ~@2 c2@2 ~ d2@5 ~@3 d2@3 c2@4 ~ c2@5 ~ d2 ~@7 d2@3 c2@6 ~]/3",
  CH: "[~ c2@2 d2@4 ~@2 d2@4 ~ c2@6 ~@3 c2@2 g2@11 c2@6 ~@2 c2@3 g2@5 ~ c2@5 f2@7 ~ f2@3 c3@7 ~ c3@3 f2@7 ~ f2@2 ~ c3@5]/2",
  CI: "f2@5 ~ c2@7 ~ c2 ~@2 g2@7 ~ g2@2 c2@7 ~@2 c2@2 g2@6 c2@4",
  CJ: "~ f1@7 ~ f1@3 c2@7 ~ c2@3 f1@6 ~@2 f1@3 c2@5 c2@3 b1@3 a1@3",
  CK: "[~@2 a1@9 ~@2 a1@3 b1@2 ~ c2@5 c2@9 ~@2 c2@3 db2@3 d2@4 ~ d2@9 ~@2 d2@4 ~ f2@17 g1@2 a1@2 ~ c2@4 ~@2 c2@6]/2",
  CL: "~@5 c2@2 d2@3 e2@5 g2@3 e2@2 ~ a2@14 ~@2 a2@3 e2@2 ~ a1@5",
  CM: "[a1@9 ~@2 a1@2 ~ c2@3 d2@8 d2@10 ~ a1@2 d2@3 a1@2 ~ d2@8 ~@3 f2@2 gb2@2 ~ g2@7 ~ g2@9 ~@2 d2@2 ~ g2@3 d2@2 g1@4 ~@2 c2@14 ~@2 c2@3 g1@3 c2@6 ~@2 c2 ~@2 c2@4 ~ c2@2 ~ e2@2 ~ f2@7]/3",
  CN: "[~ f2@2 c2@6 ~@3 c2@2 f1@6 ~@3 f1@2 c2@7 ~ c2@3 f2@7 ~ f2@3 c2@6 ~@2 c2@2 ~ f1@7 ~ f1@2 ~ c2@2 ~ c2@2 g1@3 a1@3 f1@7 ~ f1@3 c2@5]/2",
  CO: "[~@3 c2@2 ~ f2@7 ~ f2@3 c2@4 ~ c2@3 b1@2 a1@17 g1@11 f1@41]/2",
  CP: "[~@2 a1@7 ~@2 a1@2 e2@6 ~@2 e2@2 ~ a2@6 ~@2 a2@3 e2@3 a2@3 e2@2 a1@2 ~ f2@7 ~ f2@2 ~ c2@7 ~ c2@2 ~ f1@6 ~@2 f1@2 ~ c2@7 ~ c2@2 ~ f2@6]/2",
  CQ: "~@2 f2@3 c2@6 ~@2 c2@2 f1@6 ~@3 f1@2 c2@2 ~ c2@3 d2@3 c2@2 f2@4 ~@2 f2@2 f2@3",
  CR: "c2@4 ~@2 c2@2 c2@2 ~ f1@4 ~@2 f1@5 c2@4 ~ c2@3 b1@3 a1@15, ~@11 g1 ~@36", CS: "[~ g1@11 f1@41 c2@3 f2@40]/2",
  CT: "[~@2 c2@2 f1@37 g1@13 a1@99 ~@39]/4",
})).s("gm_electric_bass_finger").gain(0.44)

// chords · harpsichord · "HARPSICHR"
const harpsichord = note(`<
  A B C D E F G H I J@2 K L M N O P Q R S T U V W X Y Z AA AB AC AD AE@3 AF AG AH AI AJ AK AL AM@2 AN AO AP AQ AR@2 AS
  AT AU AV AW AX AY AZ BA BB BC@2 BD@2 BE BF@4 BG BH BI BJ BK BL BM BN BO BP BQ@4 BR BS@2 BT@2 BU@3 BV@4 BW BX@2 BY@2
  BZ@3 CA@2 CB CC@2 CD CE@2 CF CG CH CI CJ CK@2 CL CM@2 CN@4 CO@3 CP CQ CR@4 ~@7
>`.pickRestart({
  A: "~@4 g4 bb3 ~ bb3, eb3@17 ~@7, eb4@6 bb3@7 ~@11, ~ g3@7, ~@18 eb4@17 ~ f4@12",
  B: "~@2 c4 d4 eb4 g3 ~ f3, c3@37 ~@11, eb4@13 ~@35, ~@3 g3@10 ~@5 [bb2,d4]@6", // Bb
  C: "c4@6 eb3@6 ab3@5 ~ c4@6 ~@6 c4@6 ~@6 c4@6, ab2@47 ~, ~@24 ab4@11 ~ g4@12",
  D: "f4 ~ eb4 ~ d4 ~ eb4 f4, bb2@3 ~, ~@6 bb3@19 ~@5 bb3@18, ~@6 f4@5 ~@5",
  E: "~@2 bb3 ~ g4 ~ f4 g3, eb3@3 d3, g4@7 ~@2 eb4@9 ~@6, ~ g3@5 ~@2, ~@5 bb3@3",
  F: "~@2 c4 d4 ~ g3 ~ f3, c3@3 [bb2,d4], eb4@13 ~@11 eb4@12 ~@12, ~@3 g3@10 ~@11", // Bb
  G: "c4 eb3 ab3 c4 ~ c4 ~ c4, ab2@23 ~, ~@12 ab4@5 ~ g4@6",
  H: "~@12 eb4@6 ~@6 d4@17 ~@7, bb2@7 ~, f4@2 ~ f4@4 ~, ~ bb3@6 ~", I: "[f3,ab3,db4]@21 ~@3 [ab3,c4,eb4]@22 ~@2",
  J: "[~@3 bb3 ~ bb3 ~ bb3 ~ bb3 eb4 bb3 bb4 bb3 ~ g3, eb3@36 eb4@12 eb3@43 ~@5, ~@12 eb4@12 g4@31 ~@29 eb4@12]/2",
  K: "~@2 bb3 eb4 g4 ~@2 g3, eb3@35 ~ f4@12, ~@6 g3@31 ~@11, ~@5 bb3@3",
  L: "~@3 d4 ~ g3 ~ f3, c3@47 ~, ~@6 eb4@11 ~@7 eb4@11 ~ d4@12, ~ g3 ~@2",
  M: "~@6 eb3@6 ab3@5 ~ c4@6 ~@6 c4@6 ~@6 c4@6, ab2@47 ~, c4 ~ ab4 g4",
  N: "~@2 eb4 ~ d4 ~ eb4 f4, bb2, f4@11 ~@7 f4@18 ~@12, ~@3 bb3@10 ~@2 f3@6 ~@3",
  O: "~@5 g3 ~ g3, eb3@37 ~@11, g4@6 bb3@13 ~@5, ~ g3@3 g4@2 ~@2, ~@3 eb4@2 ~ [d3,f4]@2", // Dm
  P: "~@12 c4@6 d4@5 ~@7 g3@6 ~@6 f3@6, c3@3 [bb2,d4], eb4@7 ~@5 eb4@6 ~@6, ~@3 g3@10 ~@11", // Bb
  Q: "~@6 eb3@6 ab3@5 ~ c4@6 ~@6 c4@6 ~@6 c4@6, ab2, c4@5 ~@7 ab4@5 ~ g4@6",
  R: "~@7 c4, bb2 f4, f4@9 c4@8 ~@7, ~@6 f3@21 ~@3 f3@17 ~, ~@12 bb3@17 ~@7 bb3@12",
  S: "~@3 g4 ~@3 d4, eb4@2 bb3@2 ~ b3@3, ~@6 g3@17 ~ g3@17 ~@7, ~@3 f4",
  T: "~@3 c4 ~@3 eb4, c3@21 ~@3 eb3@17 ~@7, ~@6 g3@19 ~@5 g3@18, ~@12 eb4@13 ~@11 bb3@12",
  U: "~@7 c4, ab2@3 bb3, ~@3 eb3@17 ~@4, ~ bb3 eb4@2, ~@3 c4@2 ab3@3",
  V: "~@7 f4, bb2@18 f4@17 ~ eb4@12, ~@6 f3@18 ab2@23 ~, ~@6 bb3@7 ~@2 f3@9",
  W: "~@42 eb4@5 ~, eb3@37 ~@11, ~@6 g3@18 g4@23 ~, ~@2 bb3@3 g3@3, ~@18 eb4@14 ~@4 bb3@11 ~",
  X: "~@12 db4@12 ~@12 eb4@11 ~, db3@23 ~ ab2@21 ~@3, ~@6 f3@18 ~@6 ab3@17 ~",
  Y: "~@2 eb4 ~@4 bb3, eb3@3 eb4, ~ g3@3 g4@4, ~@9 bb3@5 ~ g3@9",
  Z: "~@3 eb4 ~@3 eb4, eb3@12 bb3@18 g3@17 ~, ~ g3@3 g4@4, ~@3 bb3",
  AA: "~@2 bb3 eb4 ~ g3 ~ g3, eb3@34 ~@2 d3@11 ~, ~ g3@3 g4@4",
  AB: "~@2 c4 d4 ~ g3 ~ d4, c3@35 ~ bb2@11 ~, ~@6 g3@18 eb4@11 ~@13",
  AC: "~@3 ab3@3 c4@3 eb4@2 ~@4 c4@3 ~@3 c4@3, ab2, ~@2 ab4 g4",
  AD: "~@2 d4 ~ eb4 bb3 ~ f3, bb2@41 ~@7, f4@11 ~@7 f4@30, ~@6 bb3@19 ~@11 d4@12",
  AE: "[~@3 eb4 ~ bb3 ~@4 c4 d4 eb4 g3 ~ bb2 ~@3 eb4 ~ ab3 ~ ab3, eb3@33 ~@3 d3@12 c3@37 ~@11 ab2@46 ~@2, ~@6 g3@30 ~@6 f4@10 ~@2 g3@19 ~@29 eb3@32 ~@10, ~@12 bb3@12 g4@27 ~@33 d4@18 ~@6 ab3@12 ab4@11 ~ g4@12]/3",
  AF: "~@3 c4 ~@3 f3, f4@11 ~ d4@12, bb2@10 ~@2 bb3@15 ~@3 bb3@18, ~ f3@5 f4@2",
  AG: "~@3 bb3 ~@3 f4, eb3@17 ~@7 d3@15 ~@9, ~@6 g3@19 ~@5 f3@18, ~@12 eb4@13 ~@11 d4@12",
  AH: "~@3 c4 ~@3 db4, c3@19 ~@5 eb3@15 ~@9, ~@3 g3@10 ~@2 bb3@9, ~@12 eb4@13 ~@11 eb4@12",
  AI: "~@7 bb3, ab2@5 eb4@3, ~ eb3@3 c4@4, ~@12 ab3@20 ~@4 ab3@11 ~, ~@3 bb3@3 ~@2",
  AJ: "~@3 c4 ~@3 f4, bb2@21 ~@3 ab2@17 ~@7, ~@6 f3@19 ~@5 f3@18, ~@6 bb3@7 ~@5 d4@6",
  AK: "~@18 eb4@6 ~@18 bb3@5 ~, eb3@18 ~@6 g4@23 ~, ~@2 g3@7 ~ g3@6, ~@12 bb3@22 ~@2 eb4@11 ~",
  AL: "~@3 ab3 ~@3 c4, db3@2 db4@2 ab2@3 ~, ~@6 f3@19 ~@5 ab3@18, ~@3 eb4",
  AM: "[~@42 bb3@6 ~@30 g3@5 ~@7 g3@6, eb3@37 ~@11 eb3@38 ~@10, ~@6 g3@19 ~@5 g3@20 ~@4 g3@19 ~@23, ~@12 eb4@12 g4@31 ~@5 f4@11 ~ g4@24, ~@18 bb3@16 ~@2 eb4@13 ~@17 bb3@17 ~ [bb3,eb4]@12]/2", // Eb5
  AN: "~@7 eb4, c3@12 eb4@24 f4@11 ~, ~ g3@3 g4@2 ~@2, ~@3 c4@5, ~@5 g3@3",
  AO: "~@3 d4 ~@3 f4, g2@19 ~@17 eb4@10 ~@2, ~@6 d3@14 ~@4 c3@17 ~@7, ~@12 f3@13 ~@5 g3@18",
  AP: "~ d3 ~ d4 ~@3 eb4, g2@22 ~@2 c3@17 ~@7, ~@12 f3@12 eb4@11 ~ c4@12, ~@5 g3@3",
  AQ: "~@3 g3 ~@3 eb4, [g2,f4]@25 ~@5 g3@16 ~@2, ~@3 d3@8 ~ c3@11 ~, ~@12 b3@11 ~ eb4@12 c4@12", // G7
  AR: "[~@45 c3@2 ~@37 a3@6 c4@5 ~, f4@28 ~@2 c4@25 ~@5 c4@25 ~@11, a3@18 f3@23 ~@7 f2@14 ~@34, f3@12 a4@22 ~@2 f4@22 ~@8 a3@11 ~ f3@17 ~, ~@3 c4@8 ~ a3@7 ~@2 a3@3 ~@3 f3@9 f4@11 ~]/2",
  AS: "~@3 f3 f4 f3 ~ f3, c4@35 ~ [c4,f4]@11 ~, [f2,eb4]@12 ab3@11 ~@25, ~@6 f3@10 ~@26 f2@3 ~@3", // F5 F7
  AT: "~@7 c4, bb2 f4, d4@18 c4@13 ~@17, ~@3 f3@10 ~@2 f3@9, ~@12 bb3@17 ~@7 bb3@12",
  AU: "~@3 bb3 ~ d3 ~ [b3,f4], eb3@17 ~@7 g2@19 ~@5, ~@6 g3@19 ~@11 [f3,d4]@11 ~, ~@12 eb4@13 ~@23", // Bdim Dm
  AV: "~@2 c4 eb4 ~ g3 g2 g3, c3@23 ~ [eb3,g4]@12 ~@12, eb4@11 ~@25 eb4@12, ~ g3@3 bb3@4", // Eb
  AW: "~@42 bb3@5 ~, ab2@41 ~@7, ~@6 eb3@24 eb4@17 ~, ~@12 ab3@12 c4@23 ~, ~@9 bb3@9 ab3@5 ~",
  AX: "~@7 c4, bb2@3 f4@5, ~ f3@3 ab2@2 bb3@2, ~ d4@3, ~@5 f3@3",
  AY: "~@30 g3@6 bb3@6 g3@5 ~, eb3@3 bb3@2 ~@3, ~@6 g3@18 g4@19 ~@5, ~@4 eb4@11 ~",
  AZ: "~ [ab3,db4,f4] ~ [bb3,c4,eb4], db3@17 ~@7 ab2@15 ~@9, ~ f3@3 ~ ab3@3", // Db Cm7
  BA: "~@5 g3 ~ g3, eb3@11 ~, ~ g3@3 g4@4, ~@12 eb4@13 ~@11 eb4@12, ~@3 bb3@5",
  BB: "~@3 ab3 ~@3 ab3, db3@18 ~@6 ab2@19 ~@5, ~@6 f3@19 ~@5 eb3@12 ~@6, ~@12 db4@13 ~@11 [bb3,c4,eb4]@12", // Cm7
  BC: "[~@5 g3 ~ g3 ~@5 g3 ~ g3, eb3@43 ~@5 eb3@24 g4@22 ~@2, ~@6 g3@18 g4@41 ~ eb4@30, ~@12 eb4@14 ~@10 eb4@13 ~@11 bb3@36, ~@18 bb3@15 ~@21 g3@21 ~@9 f4@10 ~@2]/2",
  BD: "[~@3 eb4 ~@3 f4 ~@2 c4 d4 ~@3 f4, eb3@12 bb3@41 ~@43, ~@6 g3@18 g4@12 d4@10 ~@2 eb4@12 ~@12 eb4@11 ~ d4@10 ~@2, ~@30 g3@19 ~@5 g3@21 ~@3 g3@18]/2",
  BE: "bb3 ~ c4 bb3 ~@3 c4, eb4, ~@6 ab3@18 c4@12 ab3@11 ~, ~@15 eb3@7 ~@2",
  BF: "[~@9 c4@3 ~@6 c4@3 d4@2 ~@10 eb4@3 ~@3 g3@3 ~@3 f3@3 ~@9 d4@3 eb4@3 ~@3 d4@3 ~@12 bb3@3 ~@9 bb3@3, d4@20 ~@4 f4@36 ~@12 g4@12 f4@13 ~@5 g3@38 ~@4 c4@12 eb3@36, ~@6 f3@20 ~@4 f3@20 ~@4 g3@19 ~@23 eb4@12 ~@18 f4@18 ~@6 ab3@21 ~@3 ab3@10 ~@8, ~@12 bb3@23 ~@13 eb4@12 bb3@43 ~@5 c4@25 ~@5 eb4@20 ~@10 c4@24, ~@15 eb4]/4",
  BG: "~@2 c4 ~@4 f3, bb2@3 d4@5, ~ f3@3 f4@4, ~@5 ab3@3, ~@3 c4",
  BH: "~@3 bb3 ~@3 b3, eb3@4 eb4@4 g2@7 ~, ~@2 g3@7 ~ d3@5 ~, ~@3 f3",
  BI: "~@2 eb4 f4 ~ g3 ~ g3, c3@11 ~ bb3@12, ~ g3@3 g4@2 [g2,eb4]@2", // Cm
  BJ: "~@7 bb3, ab2@25 ~@5 eb4@18, ~ eb3@3 c4@4, ~@12 ab3@19 ~@5 ab3@12, ~@18 bb3@13 ~@17",
  BK: "~@3 d4 ~@3 f3, bb2@5 ~ ab2@4 ~@2, ~@6 f3@19 ~@11 bb3@12, ~@6 c4@7 ~@2 f4@9",
  BL: "~@10 g3@2 eb4@2 g3 ~, eb3@4 eb4@4 g4@7 ~, ~@3 g3@10 ~@11, ~@9 bb3@14 ~",
  BM: "[f3,ab3,db4]@19 ~@2 ab2 ~@2 [ab3,bb3,c4,eb4]@21 eb3@2 ~, db3 ~@47", // Db Ab
  BN: "[g3,bb3,eb4]@11 ~@31 g3@6, ~@12 [bb3,eb4]@9 g3@14 ~ eb4@10 ~@2, ~@9 eb3@11 ~@4, ~@12 g4@11 ~, ~@15 bb3@8 ~", // Eb Eb5
  BO: "~@3 ab3 ~@3 [ab3,c4], db3@18 ~@6 ab2@17 ~@7, ~ f3@3 ~ eb3@2 ~, ~@12 db4@13 ~@11 [bb3,eb4]@12", // Ab Eb5
  BP: "~@21 eb3 ~@8 g3@6 eb4@6 g3@3 ~ db3 ~, eb3@6 bb3@9 ~, ~@3 g3@9 g4@10 ~@2, ~@12 eb4@13 ~@23",
  BQ: "[~ [f3,ab3,db4]@21 ~@3 ab2@3 ~ eb3@3 ~ eb4@22 ~@3 eb2@3 ~ [bb2,eb3]@2 ~@50 c6@2 bb5@2 ~ c6@3 ~@3 c6@2 g5@3 c6@3 f5@2 c6@3 eb5@2 ~ c6@2 ~ d5@2 c6@3 eb5@2 ~@6 a5@3 g5@2 a5@3 f5@3 a5@2 e5@3 a5@3 d5@3 ~@2 c5@3 a5@3 b4@3 a5@2, ~@29 [ab3,bb3,c4]@25 ~@8 [g3,bb3]@93 ~@37, ~@31 eb4@24 ~@41, ~@65 g4@90 ~@37]/4", // Db Eb5 Ab Gm
  BR: "c5@3 ~@3 [c5,b5]@2 ~@3 [c5,g5,b5]@3 ~@3 c5@5 [c5,a5]@3 e5 ~@2 [c5,e5,b5]@3 ~@2 [c5,e5,b5]@3 ~@2 a5@3 e5@2 ~ a5@3 ~, ~@6 [e5,g5] ~@10 a5@2 ~@19 c5@9 ~", // Cmaj7 F Cmaj7 Em
  BS: "[~ [c5,e5,b5]@3 ~@3 [c5,e5,b5]@3 ~@2 c5@6 a5@3 ~@2 [c5,e5,b5]@2 ~@4 [c5,e5,b5]@3 ~@2 [c5,e5,a5]@3 ~@3 [c5,e5,a5] ~@4 [b3,c4]@10 ~ a3@8 ~@3 [g3,c4,d4]@10 ~ [c4,e4]@9 ~@2 [f4,a4]@7, ~@12 a5@3 ~@30 e4@20 ~@2 g4@20 ~@2 e4 ~@6, ~@78 g3@5 ~@13]/2", // Cmaj7 Am Cmaj7 Gsus4 C F
  BT: "[~@4 [d4,f4,a4]@9 ~ [c4,f4,a4]@10 ~ [c4,f4,a4]@9 ~@2 [d4,e4,g4]@9 ~@2 [c4,e4,g4]@6 g3@3 ~@2 [b3,e4,g4]@6 g3@2 ~@3 [c4,e4,b4]@2 ~@3 [c4,e4,b4]@3 ~@3 a4@3 e4@2 a4@3 e4 ~@2 [c4,e4,b4]@3 ~@2, ~@80 c4@9 ~@7]/2", // Dm F Em7 C Em Cmaj7
  BU: "[[c4,e4,b4]@4 ~@2 a4@2 e4@2 ~ a4@4 ~@7 a3@6 ~@5 a3@3 ~@2 [e4,f4]@10 ~ [d4,f4]@9 ~@2 [c4,f4,a4]@10 ~ [c4,d4,f4,a4]@9 ~@2 [d4,f4]@6 ~@5 [c4,e4]@11 [g3,c4,e4]@10 ~ c4@5 d4@4 ~@2 g3@5 ~@6 [c4,e4,a4]@7, ~@6 c4@9 ~@2 [d4,gb4]@20 ~@107, ~@28 a4@30 ~@35 g4@40 ~@11]/3", // Cmaj7 Fmaj7 Dm F Dm7 Dm C Am …
  BV: "[~@4 [d4,g4,b4]@10 [c4,a4,c5]@9 ~@2 [d4,g4,b4]@10 ~ a4@10 ~ [g4,b4]@10 ~ [c4,a4]@9 ~@2 [d4,e4,g4,b4]@7 ~@4 [c4,e4]@5 [c4,e4]@4 ~@2 [d4,g4,b4]@9 ~@2 [e4,a4,c5]@10 ~ [d4,g4,b4]@7 ~@4 [c4,e4]@16 [b3,d4,g4]@11 ~@41, ~@36 e4@5 ~@39 a4@10 ~@34 a3@13 ~@55]/4", // G F G F Em7 C G Am …
  BW: "~@2 [c4,e4,b4]@2 ~@4 [e4,b4]@3 ~@2 a4@3 e4@2 ~ a4@3 ~@2 [c4,e4,b4]@3 ~@3 [c4,e4,b4]@3 ~@2 a4@3 e4@2 ~ a4@3 ~@2 [c4,e4,b4]@2, ~@13 c4@10 ~@12 c4@9 ~@4", // Cmaj7 E5 Cmaj7
  BX: "[~@4 [c4,e4,b4]@3 ~@2 a4@3 ~@2 a4@3 ~@3 [c4,e4,b4]@3 ~@2 [c4,e4,b4]@4 ~@2 [c4,e4,a4]@4 ~ [c4,e4,a4]@3 ~@3 b3@10 ~ a3@9 ~@2 [c4,d4,e4,g4]@10 [c4,e4,g4]@8 ~@3 [e4,a4]@9 ~@2, ~@9 c4@10 ~@23 [c4,e4]@20 ~@34]/2", // Cmaj7 Am C A5 C
  BY: "[[d4,f4,a4]@10 ~ f4@9 ~@2 [c4,d4,f4,a4]@9 ~@2 [d4,e4,g4]@9 ~@2 [c4,e4,g4]@9 ~@2 [b3,d4,g4]@7 ~@4 [c4,e4,b4]@3 ~@2 [c4,e4,b4]@3 ~@3 a4@2 e4@2 ~ a4@3 ~@3 [c4,e4,b4]@3 ~@2 [c4,e4,b4]@3, ~@77 c4@9 ~@10]/2", // Dm Dm7 Em7 C G Cmaj7
  BZ: "[~@2 a4@3 e4@2 ~ a4@3 e4 ~ [d4,e4,gb4,a4]@10 ~ [e4,gb4,a4]@6 c4@3 ~@2 [e4,f4,a4]@9 ~@2 [e4,f4,a4]@8 ~@3 [f4,a4]@9 ~@2 [d4,f4]@8 ~@3 e4@3 d4@2 c4@2 ~@4 [c4,e4]@10 ~ d4@9 ~@7 g3@4 ~ [g3,c4,d4]@4 ~@7 [c4,e4,a4]@10 ~, ~@2 c4@8 ~@80 g3@19 ~@3 [c4,d4]@10 ~@22]/3", // D Gbm7 Fmaj7 F Dm C Gsus4 Am …
  CA: "[[d4,g4,b4]@10 ~ [c4,e4,c5]@9 ~@2 [g4,b4]@9 ~@2 [c4,e4,a4]@10 ~ [d4,e4,g4,b4]@10 ~ [c4,e4,a4]@5 [c4,e4,a4]@4 ~@2 [d4,g4]@4 ~ d4@2 ~@4 [c4,e4,a4]@9 ~@2 [d4,g4,b4]@8]/2", // G C G Am Em7 Am G5 Am …
  CB: "~@2 [e4,a4,c5]@9 ~@2 [d4,g4,b4]@7 ~@4 [a3,c4,e4]@15 ~@2 [b3,d4,g4]@7", // Am G Am G
  CC: "[~@47 [f4,d5]@2 ~@4 [f4,a4,d5]@3 ~@2 c5@3 g4@2 ~ c5@3 ~@2 [f4,a4,d5]@2 ~@3 [f4,a4,d5]@3 ~@3 c5@3 ~@2 c5@3 g4 ~@2 [f4,a4,d5]@2 ~@3, ~@80 e4@9 ~@7]/2", // Dm
  CD: "[f4,a4,d5]@2 ~@4 c5@3 ~@2 c5@3 g4@2 ~ [f4,d5]@2 ~@3 [f4,d5]@3 ~@3 c5@2 g4@2 ~ c5@3 g4@2 [f4,a4,d5]@2 ~@4 [f4,a4,d5]@3 ~, ~@6 e4@9 ~@13 e4@9 ~@11", // Dm
  CE: "[~ e4@6 c5@3 g4@2 [f4,a4,d5]@2 ~@4 [f4,a4,d5]@2 ~@3 e4@6 c5@2 g4 ~@2 [f4,d5]@2 ~@4 [f4,a4,d5]@3 ~@5 g4@2 c5@2 ~ g4 ~@2 [a4,d5]@2 ~@3 [f4,a4,d5]@3 ~@3 e4@8 g4 ~@2 [f4,a4]@2 ~@3 [f4,a4,d5]@2 ~@4 e4@5 c5@2, ~ c5@3 ~@19 c5@3 ~@8 a4 ~@10 e4@9 ~@13 c5@2 ~@20 c5@3 ~@4]/2", // Dm D5 Dm F Dm
  CF: "~ g4@2 [f4,a4,d5]@3 ~@3 a4@2 ~@37", // Dm
  CG: "~@13 a5@2 g5@2 ~ a5@3 f5@2 ~ a5@2 e5@2 ~ a5@3 d5@3 a5@2 c5@3 a5@3 b4@2 a5@3",
  CH: "c5@2 ~@4 e5@2 g5@3 f5@3 g5@3 e5@2 g5@3 d5@3 g5@2 c5@3 g5@3 b4@3 ~@2 c5@2 ~@4 c5@2 ~@2, ~@36 g5@11 ~",
  CI: "~@4 a5@3 g5@2 a5@3 f5@2 ~ a5@3 e5@2 a5@3 d5@2 ~ a5@3 c5@2 a5@3 b4@3 a5@2 c5@2 ~@7",
  CJ: "~@8 [c4,e4]@9 ~@2 [d4,e4,g4]@10 ~ [c4,e4,g4]@9 ~@2 [f4,a4]@7", // C Em7 C F
  CK: "[~@3 [f4,a4]@8 ~@3 [c4,f4,a4]@8 ~@3 [c4,f4,a4]@9 ~@2 [d4,e4,g4]@9 ~@2 [c4,e4,g4]@9 ~@2 [b3,e4,g4]@8 ~@3 [c4,e4,b4]@2 ~@3 [c4,e4,b4]@3 ~@3 a4@3 e4@2 a4@3 e4 ~@2 [c4,e4,b4]@3 ~@2, ~@80 c4@9 ~@7]/2", // F Em7 C Em Cmaj7
  CL: "[c4,e4,b4]@3 ~@3 a4@2 e4@2 ~ a4@3 e4 ~@2 [c4,e4,gb4,a4]@10 [c4,e4]@9 ~@2 [c4,e4,f4]@9 ~, ~@3 c4@4 ~@17", // Cmaj7 Gbm7b5 C Fmaj7
  CM: "[~ [c4,e4,f4]@8 ~@3 f4@9 ~@2 [d4,f4]@9 ~@2 [f4,a4]@5 d4@2 ~@4 [c4,e4,g4]@10 ~ c4@9 ~@13 d4@5 e4@2 ~@4 [c4,e4,a4]@7, ~@56 e4@21 ~@19, ~@67 g3@17 ~@12, ~@6 c4 ~]/2", // Fmaj7 Dm F C Am
  CN: "[~@3 [d4,g4,b4]@9 ~@2 [e4,a4,c5]@9 ~@2 [d4,g4,b4]@9 ~@2 [c4,e4,a4]@9 ~@2 [d4,g4,b4]@10 ~ [c4,e4,a4]@9 ~@2 [d4,g4,b4]@9 ~@2 [c4,e4,a4]@9 ~@2 [d4,g4,b4]@9 ~@2 [e4,a4,c5]@9 ~@2 [d4,g4,b4]@7 ~@3 [a3,c4,e4]@16 ~ [b3,d4,g4]@9 ~@4 a5@3 ~@3 a5@3 f5@2 a5@3 e5@3 a5@3 d5@2 a5@3 c5@3 a5@2 b4@3 a5@3 c5@2 ~]/4", // G Am G Am G Am G Am …
  CO: "[~@2 [e4,b4]@3 ~@3 [c4,e4,b4]@4 ~ [c4,e4,a4]@4 ~@2 [e4,a4]@3 ~@2 [e4,b4]@3 ~@3 [c4,e4,g4,b4]@3 ~@2 [c4,e4,a4]@4 ~@2 [c4,e4,a4]@3 ~@2 [c4,e4,a4]@9 ~@2 [d4,g4,b4]@8 d4@2 ~ [e4,a4]@5 e4@4 ~@2 d4@4 ~ d4@3 ~@3 [c4,e4,a4]@5 [e4,a4]@5 ~ [d4,g4,b4]@5 ~@5 [e4,a4,c5]@5 ~ [e4,a4]@4 ~ b4@9 ~@2 [c4,e4,a4]@8 c4 ~@2, ~@68 c5@8 ~@41 g4@13 ~@14, ~@68 g4 ~@10 [g4,b4]@9 ~@7 c4@3 ~@24 d4@4 ~@18]/3", // E5 Cmaj7 Am A5 E5 Cmaj7 Am G …
  CP: "[g4,b4]@8 d4@2 ~ [e4,c5]@3 ~@3 [e4,b4]@4 ~ [e4,a4]@9 ~@2 [c4,e4]@14 ~, d4@5 ~@43", // G C E5 A5 C
  CQ: "~ [b3,d4,g4]@9 ~@5 a5@3 ~@2 a5@3 f5@3 a5@3 e5@2 a5@3 d5@3 a5@3 ~@2 a5@3 b4@3", // G
  CR: "[a5@2 c5@3 ~@6 a5@2 g5@3 a5@3 f5@3 a5@2 e5@3 a5@3 d5@3 a5@2 c5@3 a5@3 b4@3 a5@3 c5@4 ~@4 a5@3 g5@3 a5@3 f5@3 a5@3 e5@3 a5@3 d5@3 a5@3 c5@3 ~ a5@3 b4@3 ~@3 c5@3 ~@7 [e5,a5]@87, ~@92 a5@6 ~@4 c5@89 ~]/4", // A5
})).s("gm_harpsichord").gain(0.24)

// chords · harpsichord · "HARPSICHR" · soft notes
const harpsichord_soft = note(`<
  ~@2 A ~@8 B ~@40 C ~@22 B ~@4 D E F G H ~@2 I J K L@2 ~@2 M N O P Q ~ R S T U ~ V@2 W X Y Z ~ AA AB@2 AC ~ AD AE AF
  ~@3 AG AH AI AJ AK AL ~@2 AM@2 ~@7
>`.pickRestart({
  A: "~@18 db4 ~@29", B: "~@24 bb3 ~@23", C: "~@36 f2 ~@11", D: "~@26 ab5@3 ~@19", E: "~@35 a5@3 ~@10",
  F: "~@3 a5 ~@7 e5@2 ~@6 e5@2 ~@26 e5", G: "~@15 e5 ~@4 e5 ~@27", H: "~@4 c4@5 ~@15", I: "~@17 c4 ~@30",
  J: "~@34 a4@6 c4@3 ~@5, ~@17 c4@2 ~@5",
  K: "~@2 g3@3 ~@14 g3@4 ~ g3@3 ~@3 d4 ~@4 c4 ~@12, ~@19 e4@17 ~@12, ~@12 c4@5 ~@7",
  L: "[~@14 [e4,g4]@9 ~@2 e4 ~@10 c4@4 ~@2 [c4,e4]@4 ~ [d4,e4]@8 ~@3 e4@9 ~@29]/2", M: "~@8 c4@3 ~@11 e4 ~@20 e4 ~@4",
  N: "~@12 e4@2 ~@3 e4 ~@30", O: "~@37 f4@8 ~@3", P: "~@11 [c4,a4]@9 ~@28", Q: "~@37 e4 ~@10",
  R: "~@4 d4@3 ~@2 [c4,d4]@8 ~@3 a4@16 ~@12, ~@5 c4@2 ~@5", S: "~@5 [c4,e4,g4]@10 ~ [e4,g4]@10 [e4,g4]@5 ~@17",
  T: "~@11 a4@9 ~@2 d4@8 ~@18, ~@22 e4 ~@25", U: "~@18 e4@4 ~ [e4,g4]@3 ~@22, ~@9 b4@4 ~@11",
  V: "[~@47 a4@2 ~@12 e4@2 ~@20 g4 ~@12]/2", W: "~@8 g4 ~@13 a4 ~@25", X: "~@4 g4@2 ~@20 g4@2 ~@17 c5@3",
  Y: "~@8 f4@2 ~@11 g4@2 ~ c5@3 ~@3 d5@2 ~@11 g4 ~@4", Z: "~@9 [f4,d5]@2 ~@37", AA: "~@3 a5@2 ~@43",
  AB: "[~@45 [c4,e4]@9 ~@37 e4 ~@4]/2", AC: "~@3 d4@8 ~@37", AD: "~@27 [gb4,a4]@9 ~@2 a4@9 ~",
  AE: "~ a4@9 ~@2 [c4,d4,a4]@9 ~@2 [c4,a4]@9 ~@2 c4@7 ~@7", AF: "~@13 g3@4 ~@31, ~@8 g4@23 ~@17", AG: "~@6 g5 ~@17",
  AH: "~@2 c4@3 ~@14 c4@9 ~@20", AI: "~@25 a4@4 ~@19", AJ: "~@10 [d4,g4]@4 ~ g4@5 ~ c5@3 ~@8 d4@2 ~@14, ~@5 b4 ~@18",
  AK: "~@11 [g4,a4]@3 ~@19 a4@15", AL: "~@18 g5@2 ~@19 c5@2 ~@7", AM: "[~ b4@15]/2",
})).s("gm_harpsichord").gain(0.12)

// chords · distortion guitar · "DISTORTIO"
const distortion_guitar = note(`<
  ~@8 A B@2 ~@12 C D E@2 ~@12 F G H@2 ~@4 I@3 J K L M N O P Q P R@2 ~@12 S P T U V W@4 ~@58
>`.pickRestart({
  A: "[db3,ab3,db4]@24 [ab2,eb3,ab3]@17 ~ [ab2,eb3,ab3]@2 ~ [ab2,eb3,ab3]@3", B: "[[eb3,bb3,eb4]@95 ~]/2",
// … 371 more lines

More by Cher