Strudelify
KeyF majorTempo162 bpm
0:00/0:00
// Waltzes Op.64 — Frédéric Chopin (sorry Fred)
// 162 bpm, 3/4, key F major. 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 5, 4/4 at bar 6, 3/4 at bar 10, ...) are rendered on a constant 3/4 grid of one bar per cycle
// note: ch 5 "Clarinette" named as a reed, played on clarinet (its slap bass 1 patch is not one); ch 1 "Basse" named as a bass, played on electric bass finger (its piano patch is not one)
// note: sustain pedal (CC 64) lengthens the held notes
// note: Transcription provider: pdmx. https://musescore.com/score/5919201; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 234 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(162/3)

// 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.

// other · acoustic bass · "Trompette"
const acoustic_bass = note(`<
  A@2 ~ B C D@2 ~ E F G@2 H@3 I J K L M@2 N O P@3 Q R S@2 T@2 U V@2 W X Y ~ Z AA AB AC AD AE AF AG Z AA AB AC AH AI AJ
  AK AL AM AL AN AL AN AL AM AO AP AQ AR AS AT AU AK AL AM AL AN AL AN AL AV ~@8 AW AX AY AZ AW AX BA BB ~@8 AL AM AL AN
  AL AN AL AM AO AP AQ AR AS AT AU AK ~@4 BC@4 BD@6 BE BF@2 BG@3 BH@5 BI@5 BJ@5 BK@2 BL@6 BM BN@2 BO@2 BP BQ BR BS BT@2
  BU BV@2 BW@2 BX@2 ~ BY BZ CA@2 ~ CB CC CD@2 CE CF@2 CG CH CI CJ CK@3 CL CM CN@2 CO CP CQ@2 CR CS@2 CT@2 CU CV CW ~ CX
  CY CZ DA DB DC DD DE DF CY CZ DA DG DH DI DJ ~
>`.pickRestart({
  A: "[~@5 eb5@19 ~ d5@2 ~@5]/2", B: "~@3 ab4@2 ~@6 d5@3 ~@2", C: "~@3 ab4@2 ~@6 c5@3 ~@2",
  D: "[~@3 c5@21 ~ b4@2 ~@5]/2", E: "~@3 f4@2 ~@6 bb4@3 ~@2", F: "~@3 f4@2 ~@6 ab4@3 ~@2",
  G: "[~@3 ab4@21 ~ g4 ~@4 g4@2]/2", H: "[~@5 ab4@3 ~ a4@2 ~@3 c5@21 bb4 ~@5 bb4@2 ~@5]/3",
  I: "c5@3 db5@2 ~@4 d5@2 ~@3 g5@2", J: "g5@3 gb5@2 gb5@3 ~@6 f5@2", K: "f5@3 e5@2 e5@3 ~@6 eb5@2",
  L: "eb5@3 d5@2 d5@3 ~@6 db5@2", M: "[db5@3 c5@2 b4@3 ~ bb4@2 eb5@21]/2", N: "d5 ~@15", O: "~@9 ab4@2 ~@3 d5@2",
  P: "[g4@3 ~@2 c5@3 ~@6 c5@21 b4 ~@12]/3", Q: "~@11 f4@3 ~@2", R: "bb4@3 eb4@2 ~@4 ab4@2 ~@5",
  S: "[~@3 ab4@18 ab4@3 ~ a4 ~@4 a4@2]/2", T: "[~@5 bb4@3 ~ b4@2 ~@3 d5@18]/2", U: "d5@3 f4 ~@5 f4@2 ~@5",
  V: "[g4@3 ab4@2 ~@4 c5@18 c5@3 bb4@2]/2", W: "~@3 eb4@2 ~@6 f4@3 gb4@2", X: "~@3 g4@2 ~@11",
  Y: "eb4@3 d4@2 ~@4 c4@2 ~@5", Z: "g5@3 ab5@2 g5@3 ~ f5@2 d5@3 ~@2", AA: "f5@3 g5@2 f5@3 ~ eb5@2 c5@3 ~@2",
  AB: "eb5@3 f5@2 eb5@3 ~ d5@2 b4@3 ~@2", AC: "d5@3 eb5@2 d5@3 ~ c5@2 ab4@3 ~@2", AD: "c5@3 d5@2 c5@3 ~ ab4@2 f4@3 ~@2",
  AE: "c5@3 d5@2 c5@3 ~ g4@2 eb4@3 ~@2", AF: "g4@3 ab4@2 g4@3 ~ gb4@2 g4@3 ~@2",
  AG: "gb4@3 g4@2 b4@3 ~ c5@2 eb5@3 f5@2", AH: "ab4@3 bb4@2 c5@3 ~ db5@2 eb5@3 ~@2",
  AI: "c5@3 db5@2 eb5@3 ~ f5@2 gb5@3 ~@2", AJ: "eb5@3 f5@2 gb5@3 ~ g5@2 ab5@3 g5@2", AK: "c5@3 ~@13",
  AL: "~@5 d5@3 ~@3 d5@3 ~@2", AM: "~@5 eb5@3 ~@3 eb5@3 ~@2", AN: "~@5 c5@3 ~@3 c5@3 ~@2",
  AO: "g5@3 ab5 g5 gb5@3 ~ g5@2 gb5@3 ab5@2", AP: "g5", AQ: "eb5@3 f5 eb5 d5@3 ~ eb5@2 g5@3 f5@2", AR: "eb5",
  AS: "c5@3 d5 c5 b4@3 ~ c5@2 d5@3 eb5@2", AT: "db5@8 ~ g5@2 f5@3 eb5@2", AU: "d5@3 c5@2 bb4@3 ~ ab4@2 gb4@3 g4@2",
  AV: "~@5 eb5@3 ~@8", AW: "~@3 d5@7 ~ d5@3 ~@2", AX: "~@3 eb5@7 ~ eb5@3 ~@2", AY: "~@3 f5@7 ~ f5@3 ~@2",
  AZ: "~@3 eb5@7 ~@6", BA: "~@3 b4@7 ~ b4@3 ~@2", BB: "~@3 c5@2 ~@11", BC: "[~@4 e4@6 e5@33 ~ d5@20]/4",
  BD: "[c5@6 b4@7 a4@7 e4@6 f4@13 ~@7 f5@13 e5@13 ~ d5@10 c5@3 b4@4 c5@3 e5@3]/6", BE: "~ d5@2 b4@4 a4@3 g4@6",
  BF: "[~@7 g5@13 ~ f5@8 e5@3]/2", BG: "[~@2 e5@13 d5@20 c5@13]/3",
  BH: "[b4@11 a4@3 b4@6 a4@7 ab4@7 g4@6 gb4@7 f4@7 e4@20 ~@6]/5",
  BI: "[~@7 e5@20 d5@13 c5@7 ab4@6 b4@7 a4@7 ~@4 e4@2 g4@4 gb4@3]/5",
  BJ: "[f4@4 ~@3 f5@13 ~@6 e5@17 ~ d5@9 c5 d5 c5@5 b4@6 a4@7 g4@7]/5", BK: "[~@6 g5@13 ~ f5@10 e5@2]/2",
  BL: "[~ e5@7 d5@6 a5@20 a5@23 ~@4 g5@7 gb5@7 f5@7 eb5@7 d5@7]/6", BM: "c5@6 b4@4 bb4@2 b4@3 ~",
  BN: "[c5@2 eb5@3 f5@2 g5@3 ab5@2 g5@3 f5@2 d5@3 ~@2 f5@3 g5@2 f5@3 eb5@2]/2",
  BO: "[c5@3 ~@2 eb5@3 f5@2 eb5@3 d5@2 b4@3 ~@2 d5@3 eb5@2 d5@3 c5@2 ab4@2]/2", BP: "~@3 c5@3 d5@2 c5@3 ab4@2 f4@3",
  BQ: "~@2 c5@3 d5@2 c5@3 g4@2 eb4@3 ~", BR: "~@2 g4@3 ab4@2 g4@3 gb4@2 g4@3 ~",
  BS: "~ gb4@3 g4@2 b4@3 c5@2 eb5@3 f5@2", BT: "[g5@3 ab5@2 g5@3 f5@2 d5@3 ~@2 f5@3 g5@2 f5@3 eb5@2 c5@3 ~@2 eb5@2]/2",
  BU: "~ f5@2 eb5@3 d5@2 b4@3 ~@2 d5@3",
  BV: "[eb5@2 d5@3 c5@2 ab4@3 ~@2 ab4@3 bb4@2 c5@3 db5@2 eb5@3 ~@2 c5@3 db5@2]/2",
  BW: "[eb5@3 f5@2 gb5@3 ~@2 eb5@3 f5@2 gb5@3 g5@2 ab5@3 g5@2 c5@3 ~@4]/2", BX: "[~@8 eb5@19 d5@2 ~@3]/2",
  BY: "~@3 ab4 ~@3 d5", BZ: "~@3 ab4 ~@3 c5", CA: "[~@6 c5@21 b4@2 ~@3]/2", CB: "~@3 f4 ~@3 bb4", CC: "~@3 f4 ~@3 ab4",
  CD: "[~@6 ab4@21 g4 ~@4]/2", CE: "~ g4@2 ~@5 ab4@3 a4@2 ~@3", CF: "[~ c5@21 bb4 ~@4 bb4@2 ~@3]/2",
  CG: "~@3 c5@3 db5@2 ~@3 d5@2 ~@3", CH: "~ g5@2 g5@3 gb5@2 gb5@3 ~@5", CI: "~ f5@2 f5@3 e5@2 e5@3 ~@5",
  CJ: "~ eb5@2 eb5@3 d5@2 d5@3 ~@5", CK: "[~ db5@2 db5@3 c5@2 b4@3 bb4@2 ~ eb5@21 d5 ~@12]/3", CL: "~@11 ab4@2 ~@3",
  CM: "~ d5@2 g4@3 ~@2 c5@3 ~@5", CN: "[~ c5@21 b4 ~@9]/2", CO: "~@7 f4", CP: "~@3 bb4@3 eb4@2 ~@3 ab4@2 ~@3",
  CQ: "[~@6 ab4@18 ab4@3 a4 ~@4]/2", CR: "~ a4@2 ~@5 bb4@3 b4@2 ~@3", CS: "[~ d5@18 d5@3 f4 ~@4 f4@2 ~@3]/2",
  CT: "[~@3 g4@3 ab4@2 ~@3 c5@18 ~ c5@2]/2", CU: "~ bb4@2 ~@3 eb4@2 ~@6 f4@2", CV: "~ gb4@2 ~@3 g4@2 ~@8",
  CW: "~@3 eb4@3 d4@2 ~@3 c4@2 ~@3", CX: "~@3 g5@3 ab5@2 g5@3 f5@2 ~ d5@2", CY: "~@3 f5@3 g5@2 f5@3 eb5@2 ~ c5@2",
  CZ: "~@3 eb5@3 f5@2 eb5@3 d5@2 ~ b4@2", DA: "~@3 d5@3 eb5@2 d5@3 c5@2 ~ ab4@2", DB: "~@3 c5@3 d5@2 c5@3 ab4@2 ~ f4@2",
  DC: "~@3 c5@3 d5@2 c5@3 g4@2 ~ eb4@2", DD: "~@3 g4@3 ab4@2 g4@3 gb4@2 ~ g4@2", DE: "~@3 gb4@3 g4@2 b4@3 c5@2 ~ eb5@2",
  DF: "~ f5@2 g5@3 ab5@2 g5@3 f5@2 ~ d5@2", DG: "~@3 ab4@3 bb4@2 c5@3 db5@2 ~ eb5@2",
  DH: "~@3 c5@3 db5@2 eb5@3 f5@2 ~ gb5@2", DI: "~@3 eb5@3 f5@2 gb5@3 g5@2 ~ ab5@2", DJ: "~ g5@2 c5@3 ~@10",
})).s("gm_lead_8_bass_lead").gain(0.25)

// other · tremolo strings · "Flûte"
const tremolo_strings = note(`<
  A@2 ~ B C D@2 ~ E F G@2 H@3 I J K L M@2 N O P@3 Q R S@2 T@2 U V@2 W X Y ~ Z AA AB AC AD AE AF AG Z AA AB AC AH AI AJ
  AK AL AM AN AO AP AQ AR AM ~ AS ~ AT ~ AU AV AW ~@32 AL AM AN AO AP AQ AR AM ~ AS AW AT ~ AU AV AW ~@4 AX@3 AY AZ@4
  BA@5 BB@5 BC BD BE BF@2 BG@5 BH BI@4 BJ BK@3 ~@2 BL BM@2 BN@2 BO BP BQ BR BS@2 BT BU@2 BV@2 BW@2 ~ BX BY BZ@2 ~ CA CB
  CC@2 CD CE@2 CF CG CH CI CJ@3 CK CL CM@2 CN CO CP@2 CQ CR@2 CS@2 CT CU CV ~ CW CX CY CZ DA DB DC DD DE CX CY CZ DF DG
  DH DI ~
>`.pickRestart({
  A: "[~@5 g5@18 ~@2 gb5@2 ~@5]/2", B: "~@3 d5@2 ~@6 f5@3 ~@2", C: "~@3 d5@2 ~@6 eb5@3 ~@2",
  D: "[~@3 eb5@20 ~@2 d5@2 ~@5]/2", E: "~@3 db5@2 ~@6 db5@3 ~@2", F: "~@3 db5@2 ~@6 c5@3 ~@2",
  G: "[~@3 f5@20 ~@2 f5 ~@4 eb5@2]/2", H: "[~@5 f5@3 ~ gb5@2 ~@3 ab5@22 ~@5 g5@2 ~@5]/3",
  I: "g5@3 gb5@2 ~@4 f5@2 ~@3 d5@2", J: "d5@3 db5@2 db5@3 ~@6 c5@2", K: "c5@3 b4@2 b4@3 ~@6 bb4@2",
  L: "bb4@3 a4@2 a4@3 ~@6 ab4@2", M: "[a4@3 c5@2 d5@3 ~ gb5@2 g5@20 ~]/2", N: "gb5 ~@15", O: "~@9 f5@2 ~@3 f5@2",
  P: "[eb5@3 ~@2 eb5@3 ~@6 eb5@20 ~ d5 ~@12]/3", Q: "~@11 db5@3 ~@2", R: "db5@3 c5@2 ~@4 c5@2 ~@5",
  S: "[~@3 f5@18 f5@3 ~ f5 ~@4 e5@2]/2", T: "[~@5 f5@3 ~ gb5@2 ~@3 a5@18]/2", U: "a5@3 ~@6 d5@2 ~@5",
  V: "[eb5@3 f5@2 ~@4 ab5@17 ~ ab5@3 ~@2]/2", W: "~@3 c5@2 ~@6 d5@3 eb5@2", X: "~@3 f5@2 ~@11",
  Y: "eb5@3 d5@2 ~@4 c5@2 ~@5", Z: "d5@3 eb5@2 d5@3 ~ eb5@2 d5@3 ~@2", AA: "c5@3 d5@2 c5@3 ~ d5@2 c5@3 ~@2",
  AB: "b4@3 c5@2 b4@3 ~ c5@2 b4@3 ~@2", AC: "ab4@3 bb4@2 ab4@3 ~ bb4@2 ab4@3 ~@2",
  AD: "g4@3 ab4@2 g4@3 ~ ab4@2 f4@3 ~@2", AE: "g4@3 ab4@2 g4@3 ~ ab4@2 g4@3 ~@2",
  AF: "d4@3 eb4@2 d4@3 ~ eb4@2 d4@3 ~@2", AG: "d4@3 eb4@2 g4@3 ~ ab4@2 c5@3 d5@2",
  AH: "f4@3 g4@2 ab4@3 ~ bb4@2 c5@3 ~@2", AI: "ab4@3 bb4@2 c5@3 ~ db5@2 eb5@3 ~@2",
  AJ: "c5@3 d5@2 eb5@3 ~ e5@2 f5@3 g5@2", AK: "c6@3 ~@13", AL: "g5@3 ab5 g5 gb5@3 ~ g5@2 bb5@3 ab5@2", AM: "g5@15 ~",
  AN: "eb5@3 f5 eb5 d5@3 ~ eb5@2 g5@3 f5@2", AO: "eb5@15 ~", AP: "c5@3 d5 c5 b4@3 ~ c5@2 eb5@3 f5@2",
  AQ: "g5@8 ~ g5@2 gb5@3 g5@2", AR: "f5@8 ~ f5@2 bb5@3 ab5@2", AS: "~@3 bb5@2 ab5@3 ~ g5@2 f5@3 eb5@2",
  AT: "~@3 g5@2 f5@3 ~ eb5@2 d5@3 c5@2", AU: "~@3 e5@2 f5@3 ~ eb6@2 db6@3 c6@2",
  AV: "bb5@3 ab5@2 g5@3 ~ f5@2 eb5@3 d5@2", AW: "eb5@3 ~@13", AX: "[~@10 g4@13 ~ g4@2 ~@4 g4@13 ~ ab4@2 ~@2]/3",
  AY: "~@2 a4@13 ~", AZ: "[a4@2 ~@4 a4@13 ~ a4@2 ~@4 a4@13 ~ a4@2 ~@4 a4@13 bb4@2 ~@3]/4",
  BA: "[~@2 b4@13 b4@2 ~@5 b4@13 b4@2 ~@5 b4@13 b4@2 ~@5 db5@13 db5@2 ~@3]/5",
  BB: "[~@2 d5@13 d5@2 ~@5 d5@13 d5@2 ~@5 eb5@13 eb5@2 ~@5 e5@6 e5@2 ~@10]/5", BC: "~ d5@3 d5 ~@3",
  BD: "~@3 c5@2 b4 c5@2", BE: "b4@3 c5@4 a4@3 g4@4 ~@2", BF: "[~@13 g4@13 ~ ab4@2 ~@3]/2",
  BG: "[~ ab4@13 ~ a4@2 ~@4 a4@13 ~ a4@2 ~@4 a4@13 ~ a4@2 ~@4 a4@13 bb4@2 ~@4]/5", BH: "~ bb4@13 b4@2",
  BI: "[~@5 b4@13 b4@2 ~@5 b4@13 b4@2 ~@5 db5@13 db5@2 ~@4]/4", BJ: "~ d5@13 d5@2",
  BK: "[~@5 eb5@4 eb5@6 gb5@3 gb5@6 ~ a5@4 a5@6 c6@3 c6@3 ~@7]/3", BL: "~@12 g4@3 ~",
  BM: "[ab4@2 c5@3 d5@2 d5@3 eb5@2 d5@3 eb5@2 d5@3 ~@2 c5@3 d5@2 c5@3 d5@2]/2",
  BN: "[c5@3 ~@2 b4@3 c5@2 b4@3 c5@2 b4@3 ~@2 ab4@3 bb4@2 ab4@3 bb4@2 ab4@2]/2", BO: "~@3 g4@3 ab4@2 g4@3 ab4@2 f4@3",
  BP: "~@2 g4@3 ab4@2 g4@3 ab4@2 g4@3 ~", BQ: "~@2 d4@3 eb4@2 d4@3 eb4@2 d4@3 ~",
  BR: "~ d4@3 eb4@2 g4@3 ab4@2 c5@3 d5@2", BS: "[d5@3 eb5@2 d5@3 eb5@2 d5@3 ~@2 c5@3 d5@2 c5@3 d5@2 c5@3 ~@2 b4@2]/2",
  BT: "~ c5@2 b4@3 c5@2 b4@3 ~@2 ab4@3",
  BU: "[bb4@2 ab4@3 bb4@2 ab4@3 ~@2 f4@3 g4@2 ab4@3 bb4@2 c5@3 ~@2 ab4@3 bb4@2]/2",
  BV: "[c5@3 db5@2 eb5@3 ~@2 c5@3 d5@2 eb5@3 e5@2 f5@3 g5@2 c6@3 ~@4]/2", BW: "[~@8 g5@18 ~ gb5@2 ~@3]/2",
  BX: "~@3 d5 ~@3 f5", BY: "~@3 d5 ~@3 eb5", BZ: "[~@6 eb5@20 ~ d5@2 ~@3]/2", CA: "~@3 db5 ~@3 db5",
  CB: "~@3 db5 ~@3 c5", CC: "[~@6 f5@20 ~ f5 ~@4]/2", CD: "~ eb5@2 ~@5 f5@3 gb5@2 ~@3", CE: "[~ ab5@22 ~@4 g5@2 ~@3]/2",
  CF: "~@3 g5@3 gb5@2 ~@3 f5@2 ~@3", CG: "~ d5@2 d5@3 db5@2 db5@3 ~@5", CH: "~ c5@2 c5@3 b4@2 b4@3 ~@5",
  CI: "~ bb4@2 bb4@3 a4@2 a4@3 ~@5", CJ: "[~ ab4@2 a4@3 c5@2 d5@3 gb5@2 ~ g5@20 ~ gb5 ~@12]/3", CK: "~@11 f5@2 ~@3",
  CL: "~ f5@2 eb5@3 ~@2 eb5@3 ~@5", CM: "[~ eb5@20 ~ d5 ~@9]/2", CN: "~@7 db5", CO: "~@3 db5@3 c5@2 ~@3 c5@2 ~@3",
  CP: "[~@6 f5@18 f5@3 f5 ~@4]/2", CQ: "~ e5@2 ~@5 f5@3 gb5@2 ~@3", CR: "[~ a5@18 a5@3 ~@5 d5@2 ~@3]/2",
  CS: "[~@3 eb5@3 f5@2 ~@3 ab5@17 ~@2 ab5@2]/2", CT: "~@3 c5 ~@3 d5", CU: "~ eb5@2 ~@3 f5@2 ~@8",
  CV: "~@3 eb5@3 d5@2 ~@3 c5@2 ~@3", CW: "~@3 d5@3 eb5@2 d5@3 eb5@2 ~ d5@2", CX: "~@3 c5@3 d5@2 c5@3 d5@2 ~ c5@2",
  CY: "~@3 b4@3 c5@2 b4@3 c5@2 ~ b4@2", CZ: "~@3 ab4@3 bb4@2 ab4@3 bb4@2 ~ ab4@2",
  DA: "~@3 g4@3 ab4@2 g4@3 ab4@2 ~ f4@2", DB: "~@3 g4@3 ab4@2 g4@3 ab4@2 ~ g4@2",
  DC: "~@3 d4@3 eb4@2 d4@3 eb4@2 ~ d4@2", DD: "~@3 d4@3 eb4@2 g4@3 ab4@2 ~ c5@2",
  DE: "~ d5@2 d5@3 eb5@2 d5@3 eb5@2 ~ d5@2", DF: "~@3 f4@3 g4@2 ab4@3 bb4@2 ~ c5@2",
  DG: "~@3 ab4@3 bb4@2 c5@3 db5@2 ~ eb5@2", DH: "~@3 c5@3 d5@2 eb5@3 e5@2 ~ f5@2", DI: "~ g5@2 c6@3 ~@10",
})).s("gm_tremolo_strings").gain(0.25)

// chords · slap bass 2 · "Alto"
const slap_bass_2 = note(`<
  A@2 ~ B C D@2 ~ E F G@2 H@3 I ~@3 J@2 K L M@3 N O P@2 Q@2 R S@2 T U V ~ W X Y Z AA AB AC ~ W X Y Z AD AE AF AG AH AI
  AH AJ AK AJ AH AI AL AM AN AO AP AQ AR AS AH AI AH AJ AK AJ AH AT ~@8 AU AV AU AW AX AV AU AY AU AV AU AW ~@4 AH AI AH
  AJ AK AJ AH AI AL AM AN AO AP AQ AR AS AZ BA BB@2 BC@3 BD@2 BE@3 BF@2 BG@3 BH@2 BI@3 BJ BK BL@2 BM BN@2 BO@2 BP BQ@2
  BR@2 BS BT@4 ~@3 BU@2 BV@2 BW BX BY ~ BZ@2 CA CB@2 CC@2 CD@2 ~ CE CF CG@2 ~ CH CI CJ@2 CK CL@2 CM ~@3 CN@3 CO CP CQ@2
  CR CS CT@2 CK CU@2 CV@2 CW CX CY ~ CZ DA DB DC DD DE DF ~ CZ DA DB DC DG DH DI DJ ~
>`.pickRestart({
  A: "[~@5 eb4@19 ~ d4@2 ~@5]/2", B: "~@3 ab4@2 ~@6 d5@3 ~@2", C: "~@3 ab4@2 ~@6 c5@3 ~@2",
  D: "[~@3 c4@21 ~ b3@2 ~@5]/2", E: "~@3 f4@2 ~@6 bb4@3 ~@2", F: "~@3 f4@2 ~@6 ab4@3 ~@2",
  G: "[~@3 ab3@21 ~ g3 ~@4 g3@2]/2", H: "[~@5 ab3@3 ~ a3@2 ~@3 c4@21 bb3 ~@5 bb3@2 ~@5]/3",
  I: "c4@3 db4@2 ~@4 d4@2 ~@5", J: "[~@11 eb4@21]/2", K: "d4 ~@15", L: "~@9 ab3@2 ~@3 d4@2",
  M: "[g3@3 ~@2 c4@3 ~@6 c4@21 b3 ~@12]/3", N: "~@11 f3@3 ~@2", O: "bb3@3 eb3@2 ~@4 ab3@2 ~@5",
  P: "[~@3 ab3@18 ab3@3 ~ g3 ~@4 g3@2]/2", Q: "[~@5 ab3@3 ~ a3@2 ~@3 c4@18]/2", R: "bb3@3 bb3 ~@5 bb3@2 ~@5",
  S: "[c4@3 db4@2 ~@4 db4@18 db4@3 ~@2]/2", T: "~@3 c4@2 ~@6 d4@3 eb4@2", U: "~@3 f4@2 ~@4 g3@2 ~@5",
  V: "g3@3 f3@2 ~@4 eb3@2 ~@5", W: "g4@3 ab4@2 g4@3 ~ f4@2 d4@3 ~@2", X: "f4@3 g4@2 f4@3 ~ eb4@2 c4@3 ~@2",
  Y: "eb4@3 f4@2 eb4@3 ~ d4@2 b3@3 ~@2", Z: "d4@3 eb4@2 d4@3 ~ c4@2 ab3@3 ~@2", AA: "c4@3 d4@2 c4@3 ~ ab3@2 f3@3 ~@2",
  AB: "c4@3 d4@2 c4@3 ~ g3@2 ~@5", AC: "g3@3 ab3@2 g3@3 ~ gb3@2 g3@3 ~@2", AD: "ab3@3 bb3@2 c4@3 ~ db4@2 eb4@3 ~@2",
  AE: "c4@3 db4@2 eb4@3 ~ f4@2 gb4@3 ~@2", AF: "eb4@3 f4@2 gb4@3 ~ g4@2 ab4@3 bb4@2", AG: "eb5@3 ~@13",
  AH: "~@5 [d4,f4]@3 ~@3 [d4,f4]@3 ~@2", AI: "~@5 [eb4,g4]@3 ~@3 [eb4,g4]@3 ~@2",
  AJ: "~@5 [eb4,ab4]@3 ~@3 [eb4,ab4]@3 ~@2", AK: "~@5 [c4,f4]@3 ~@3 [c4,f4]@3 ~@2",
  AL: "d5@3 eb5 d5 db5@3 ~ d5@2 eb5@3 f5@2", AM: "eb5", AN: "c5@3 d5 c5 b4@3 ~ c5@2 eb5@3 d5@2", AO: "c5",
  AP: "ab4@3 bb4 ab4 g4@3 ~ ab4@2 bb4@3 c5@2", AQ: "bb4@8 ~ eb5@2 db5@3 c5@2", AR: "bb4@3 ab4@2 g4@3 ~ f4@2 eb4@3 d4@2",
  AS: "eb4@3 ~@13", AT: "~@5 [eb4,g4]@3 ~@8", AU: "~@3 [d4,f4]@7 ~ [d4,f4]@3 ~@2",
  AV: "~@3 [eb4,g4]@7 ~ [eb4,g4]@3 ~@2", AW: "~@3 [eb4,ab4]@7 ~@6", AX: "~@3 [c4,f4]@7 ~ [c4,f4]@3 ~@2",
  AY: "~@3 [eb4,g4]@2 ~@11", AZ: "[e4,g4]@3 [e4,g4]@6 [e4,g4]@6 ~", BA: "~ [e4,ab4]@3 [e4,ab4]@6 [e4,ab4]@6",
  BB: "[~@3 [e4,a4]@4 [e4,a4]@6 [e4,a4]@7 ~@3 [e4,ab4]@4 [e4,ab4]@5]/2", // A5 E
  BC: "[~ [e4,ab4]@7 ~@2 [e4,g4]@4 [e4,g4]@7 [e4,g4]@7 ~@2 [e4,g4]@4 [e4,g4]@7 [e4,ab4]@7]/3", // E Em E
  BD: "[~@2 [e4,a4]@4 [e4,a4]@7 [e4,a4]@7 ~@2 [e4,a4]@4 [e4,a4]@6]/2", // A5
  BE: "[~ [db4,a4]@7 ~@2 [f4,a4]@4 [f4,a4]@7 [f4,a4]@7 ~@2 [f4,a4]@4 [f4,a4]@7 [f4,bb4]@7]/3", // Gbm F Bb5
  BF: "[~@2 [g4,b4]@4 [g4,b4]@7 [g4,b4]@7 ~@2 [g4,b4]@4 [g4,b4]@6]/2", // G
  BG: "[~ [g4,b4]@7 ~@2 [g4,b4]@4 [g4,b4]@7 [g4,b4]@2 [g4,b4]@4 ~@3 [a4,db5]@4 [a4,db5]@7 [a4,db5]@2 [a4,db5]@4 ~]/3", // G A
  BH: "[~@2 [a4,d5]@4 [a4,d5]@7 [a4,d5]@2 [a4,d5]@4 ~@3 [a4,d5]@4 [a4,d5]@6]/2", // D5
  BI: "[[a4,d5]@3 [a4,d5]@4 ~@3 [a4,eb5]@4 [a4,eb5]@6 [a4,eb5]@3 [a4,eb5]@4 ~@3 [g4,e5]@6 [g4,e5]@2 ~@10]/3", // D5 Adim C
  BJ: "~ [g4,d5]@3 [g4,d5] ~@3", BK: "~@3 [g4,c5]@3 [g4,c5] ~",
  BL: "[~@10 [e4,g4]@3 [e4,g4]@7 [e4,g4]@3 [e4,g4]@4 ~@2 [e4,g4]@3]/2", BM: "~ [e4,g4]@7 [e4,ab4]@3 [e4,ab4]@4 ~",
  BN: "[~ [e4,ab4]@4 [e4,ab4]@7 [e4,a4]@3 [e4,a4]@4 ~@2 [e4,a4]@4 [e4,a4]@7]/2", // E A5
  BO: "[[db4,a4]@3 [db4,a4]@4 ~@2 [f4,a4]@4 [f4,a4]@7 [f4,a4]@7 ~@2 [f4,a4]@3]/2", BP: "~ [f4,a4]@7 [f4,bb4]@7 ~",
  BQ: "[~ [f4,bb4]@4 [f4,bb4]@7 [f4,b4]@7 ~@2 [f4,b4]@4 [f4,b4]@7]/2", // Bb5 Fdim
  BR: "[[gb4,b4]@7 ~@2 [g4,b4]@4 [g4,b4]@7 [g4,b4]@7 ~@2 [g4,db5]@3]/2", BS: "~ [g4,db5]@7 [g4,db5]@7 ~",
  BT: "[~ [a4,d5]@4 [a4,d5]@7 [a4,d5]@7 ~@2 [a3,eb4]@4 [a3,eb4]@6 [c4,eb4]@3 [c4,eb4]@7 [eb4,gb4]@4 [eb4,gb4]@6 [gb4,a4]@3 [gb4,a4]@3 ~@7]/4", // D5 Adim Cm Ebm Gbm
  BU: "[~@7 g4@3 ab4@2 g4@3 f4@2 d4@3 ~@2 f4@3 g4@2 f4@3 eb4@2]/2",
  BV: "[c4@3 ~@2 eb4@3 f4@2 eb4@3 d4@2 b3@3 ~@2 d4@3 eb4@2 d4@3 c4@2 ab3@2]/2", BW: "~@3 c4@3 d4@2 c4@3 ab3@2 f3@3",
  BX: "~@2 c4@3 d4@2 c4@3 g3@2 ~@4", BY: "~@2 g3@3 ab3@2 g3@3 gb3@2 g3@3 ~",
  BZ: "[g4@3 ab4@2 g4@3 f4@2 d4@3 ~@2 f4@3 g4@2 f4@3 eb4@2 c4@3 ~@2 eb4@2]/2", CA: "~ f4@2 eb4@3 d4@2 b3@3 ~@2 d4@3",
  CB: "[eb4@2 d4@3 c4@2 ab3@3 ~@2 ab3@3 bb3@2 c4@3 db4@2 eb4@3 ~@2 c4@3 db4@2]/2",
  CC: "[eb4@3 f4@2 gb4@3 ~@2 eb4@3 f4@2 gb4@3 g4@2 ab4@3 bb4@2 eb5@3 ~@4]/2", CD: "[~@8 eb4@19 d4@2 ~@3]/2",
  CE: "~@3 ab4 ~@3 d5", CF: "~@3 ab4 ~@3 c5", CG: "[~@6 c4@21 b3@2 ~@3]/2", CH: "~@3 f4 ~@3 bb4", CI: "~@3 f4 ~@3 ab4",
  CJ: "[~@6 ab3@21 g3 ~@4]/2", CK: "~ g3@2 ~@5 ab3@3 a3@2 ~@3", CL: "[~ c4@21 bb3 ~@4 bb3@2 ~@3]/2",
  CM: "~@3 c4@3 db4@2 ~@3 d4@2 ~@3", CN: "[~@14 eb4@21 d4 ~@12]/3", CO: "~@11 ab3@2 ~@3",
  CP: "~ d4@2 g3@3 ~@2 c4@3 ~@5", CQ: "[~ c4@21 b3 ~@9]/2", CR: "~@7 f3", CS: "~@3 bb3@3 eb3@2 ~@3 ab3@2 ~@3",
  CT: "[~@6 ab3@18 ab3@3 g3 ~@4]/2", CU: "[~ c4@18 bb3@3 bb3 ~@4 bb3@2 ~@3]/2",
  CV: "[~@3 c4@3 db4@2 ~@3 db4@18 ~ db4@2]/2", CW: "~@3 c4 ~@3 d4", CX: "~ eb4@2 ~@3 f4@2 ~@3 g3@2 ~@3",
  CY: "~@3 g3@3 f3@2 ~@3 eb3@2 ~@3", CZ: "~@3 g4@3 ab4@2 g4@3 f4@2 ~ d4@2", DA: "~@3 f4@3 g4@2 f4@3 eb4@2 ~ c4@2",
  DB: "~@3 eb4@3 f4@2 eb4@3 d4@2 ~ b3@2", DC: "~@3 d4@3 eb4@2 d4@3 c4@2 ~ ab3@2", DD: "~@3 c4@3 d4@2 c4@3 ab3@2 ~ f3@2",
  DE: "~@3 c4@3 d4@2 c4@3 g3@2 ~@3", DF: "~@3 g3@3 ab3@2 g3@3 gb3@2 ~ g3@2", DG: "~@3 ab3@3 bb3@2 c4@3 db4@2 ~ eb4@2",
  DH: "~@3 c4@3 db4@2 eb4@3 f4@2 ~ gb4@2", DI: "~@3 eb4@3 f4@2 gb4@3 g4@2 ~ ab4@2", DJ: "~ bb4@2 eb5@3 ~@10",
})).s("gm_slap_bass_2").gain(0.25)

// chords · tenor sax · "Ténor"
const tenor_sax = note(`<
  A@2 ~ B C D@2 ~ E F G@2 H@3 I ~@3 J@2 K L M@3 N O P@2 Q@2 R S@2 T U V W X@2 Y Z AA AB X AC X@2 Y Z Y X@2 AD AE AF AE
  AF AG AF AE AF AE AF AE AF AG AH AE AI AJ AF AE AF AG AF AE AF AE AF AE AF AG AH AE AI AK AL AK AM AN AL AK AO AK AL
  AK AM AN AP AK AI AE AF AE AF AG AF AE AF AE AF AE AF AG AH AE AQ AR AS AT AU AV@3 AW@2 AX@3 AY@2 AZ@3 BA@2 BB@3 BC BD
  BE@2 BF BG@2 BH@2 BI BJ@2 BK@2 BL BM@4 ~@4 BN BO BP BQ BR@3 BS BT BU BV BW BX BY BZ@2 ~ CA CB CC@2 ~ CD CE CF@2 CG
  CH@2 CI ~@3 CJ@3 BU CK CL@2 CM CN CO@2 CP CQ@2 CR@2 CS CT CU CV@2 CW@2 CX BQ CY CZ DA CZ CW@2 CX BQ CX CW DA ~
>`.pickRestart({
  A: "[~@5 g3@19 ~ gb3@2 ~@5]/2", B: "g3@3 ab3@2 ~@4 g3@2 d4@3 ~@2", C: "g3@3 ab3 ~@5 g3@2 g3@3 ~@2",
  D: "[~@3 ab3@21 ~ f3@2 ~@5]/2", E: "eb3@3 f3@2 ~@4 eb3@2 g3@3 ~@2", F: "eb3@3 f3 ~@5 eb3@2 eb3@3 ~@2",
  G: "[~@3 f3@21 ~ f3 ~@4 eb3@2]/2", H: "[~@5 f3@3 ~ gb3@2 ~@3 ab3@22 ~@5 g3@2 ~@5]/3", I: "ab3@3 a3@2 ~@4 bb3@2 ~@5",
  J: "[~@11 g3@21]/2", K: "gb3 ~@15", L: "~@9 f3@2 ~@3 f3@2", M: "[eb3@3 ~@2 eb3@3 ~@6 eb3@21 d3 ~@12]/3",
  N: "~@11 db3@3 ~@2", O: "db3@3 c3@2 ~@4 c3@2 ~@5", P: "[~@3 f3@18 f3@3 ~ f3 ~@4 e3@2]/2",
  Q: "[~@5 f3@3 ~ gb3@2 ~@3 a3@18]/2", R: "a3@3 ~@6 f3@2 ~@5", S: "[g3@3 ab3@2 ~@4 ab3@18 ab3@3 ~@2]/2",
  T: "~@3 eb3@2 ~@6 f3@3 gb3@2", U: "~@3 g3@2 ~@4 g3@2 ~@5", V: "g3@3 f3@2 ~@4 eb3@2 ~@5", W: "g3", X: "~@7 g3",
  Y: "~@7 f3", Z: "~@7 eb3", AA: "~@7 d3", AB: "~@7 c3", AC: "c3@3 ~@11 c3@2", AD: "c3@3 ~@13",
  AE: "~@5 [f3,b3]@3 ~@3 [f3,b3]@3 ~@2", AF: "~@5 [eb3,c4]@3 ~@3 [eb3,c4]@3 ~@2",
  AG: "~@5 [f3,ab3]@3 ~@3 [f3,ab3]@3 ~@2", AH: "~@5 [f3,db4]@3 ~@3 [f3,db4]@3 ~@2", AI: "~@5 [eb3,c4]@3 ~@8",
  AJ: "~@5 b3@3 ~@3 [f3,b3]@3 ~@2", AK: "~@3 [f3,b3]@7 ~ [f3,b3]@3 ~@2", AL: "~@3 [eb3,c4]@7 ~ [eb3,c4]@3 ~@2",
// … 269 more lines