Strudelify

Danse macabre Op.40

Camille Saint-Saëns

KeyB♭ majorTempo186 bpm
0:00/0:00
// Danse macabre Op.40 — Camille Saint-Saëns
// 186 bpm, 3/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Transcription provider: pdmx. https://musescore.com/score/5948829; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 478 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(186/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.

// chords · piano · "Piano 2"
const piano = note(`<
  ~@25 A ~ B C@2 D E F ~@23 G H I J K L M N O@4 P Q@3 O@4 P Q@3 R S D T U V@3 W@4 X Y Z Y AA AB AC AD AE AF@5 AG AH AI
  AF AJ AK AL AM AN AO AP ~@3 AQ AR@3 ~@4 AS AT@3 AU S D AV AW AX AY AZ BA BB BC BD BE BF BG BH BI BJ BK BL BM BN BO BP
  BQ BR BS BT BU BV BW BX BT BY BZ CA CB CC CD CE CF ~@16 CG@4 CH@4 CI@3 CH CJ CH CK CL@4 CM@4 CL@4 CM@4 CL@3 CN@2 CO@2
  CL@4 CN@2 CO@2 CP CQ CR CS CT CQ CU CV CW CX CY CZ DA DB DC DD DE ~ DF DG DH ~ DI DJ DK DL DM DN DO DP DQ DP DQ DP@3
  DR ~ DR ~ DS ~ DT ~ DU DV DW DX ~@12 DY DZ EA ~@5 EB EC ED ~ C@2 EE D ~@33 EF EG EF EG EF EG@7 EH ~@7 EI EJ EK EL EM
  EN@5 EO EP EQ EN@5 ER ES ET ~@3 EU EV@3 EW EX EY EZ FA FB FC FD FE EX EY EZ FA FB FC FD FC FD FC FD FF FG FH FI FJ FK
  FL FM FN FO FP FQ FR FS FR FS FT@3 FU@5 ~@2 FV FW@4 ~@35
>`.pickRestart({
  A: "[d4,a4]", B: "[d4,a4]@11 [d4,a4]@3 ~@2", C: "~@11 [d4,a4]@3 ~@2", D: "~@5 [d4,a4]@3 ~@8",
  E: "[d4,a4]@3 ~@8 [d4,a4]@3 ~@2", F: "[g2,eb3,bb3,g4,bb4]@3 ~@13", G: "~@11 d4@5", H: "g4@10 ~ g4@5",
  I: "f4@10 ~ f4@5", J: "e4@10 ~ e4@5", K: "eb4@10 ~ eb4@5", L: "d4@5 g4@5 ~ bb4@5", M: "a4@5 gb4@5 ~ d4@5",
  N: "gb4@10 ~ e4@5", O: "[[d2,d3]@61 ~@3, d4@5 ~@59]/4", P: "[g2,c3,g3,eb4,bb4]@3 ~@2 [eb4,g4]@3 ~@3 [bb3,eb4]@3 ~@2",
  Q: "[c2,c3]@3 ~@2 [eb4,g4]@3 ~@3 [bb3,eb4]@3 ~@2", // C Eb Eb5
  R: "[d3,a3,gb4]@3 ~@2 [d4,a4] ~@2 [d4,a4] ~@2 [d4,a4] ~ [d4,a4] ~@2", // D D5
  S: "~@5 [d4,a4] ~@2 [d4,a4] ~@2 [d4,a4] ~ [d4,a4] ~@2", T: "[d4,a4]@3 ~@8 [d2,g2,d3,d4,a4,d5]@3 ~@2",
  U: "[g2,bb2,g3,g4,bb4,g5]@3 ~@13", V: "[g2,g3,g4,bb4,d5,g5]@3 ~@13", W: "[f2,f3,ab4,c5,eb5,ab5]@3 ~@13",
  X: "[g2,g3,g4,g5]@3 ~@2 g5 ~@2 bb5 ~@2 g5 ~ a5 ~@2", Y: "[g2,g3,bb5]@3 ~@2 a5 ~@2 bb5 ~@2 g5 ~ bb5 ~@2",
  Z: "a5 [a5,bb5] ~ g5 ~ g5 ~@2 bb5 ~@2 g5 ~ a5 ~@2, [g2,g3]@3 ~@13", // Bbmaj7 G
  AA: "[f2,f3,ab5]@3 ~@2 ab5 ~@2 c6 ~@2 ab5 ~ bb5 ~@2", AB: "[f2,f3,c6]@3 ~@2 bb5 ~@2 c6 ~@2 ab5 ~ c6 ~@2",
  AC: "bb5 [bb5,c6] ~ ab5 ~ ab5 ~@2 c6 ~@2 ab5 ~ bb5 ~@2, [f2,f3]@3 ~@13", // Bbsus2 F
  AD: "[f2,f3,c6]@3 ~@2 ab5 ~@2 c6 ~@2 bb5 ~ ab5 ~@2", AE: "g5@3 ~@2 [bb3,d4,bb4,d5,g5]@3 ~@3 [g3,bb3,g4,bb4,d5]@3 ~@2",
  AF: "~@5 [bb3,d4,bb4,d5,g5]@3 ~@3 [g3,bb3,g4,bb4,d5]@3 ~@2", AG: "~@5 [a3,d5,gb5]@3 ~@3 [a2,a4,d5]@3 ~@2",
  AH: "~@5 [a3,db5,e5]@3 ~@3 [a2,a4,db5]@3 ~@2", AI: "~@5 [d3,d5,gb5]@3 ~@3 [d2,a4,d5]@3 ~@2",
  AJ: "~@5 [bb3,d4,bb4,d5,g5,bb5]@3 ~@3 [g3,bb3,g4,bb4,d5,g5]@3 ~@2", // Gm
  AK: "~@5 [bb4,d5,g5,bb5,d6]@3 ~@3 [g4,bb4,d5,g5,bb5]@3 ~@2", AL: "~@5 [bb4,g5,bb5,g6]@3 ~@3 [g4,bb4,g5,bb5]@3 ~@2",
  AM: "~@5 [bb4,g5,bb5,bb6]@3 ~@3 [g4,bb4,g5,bb5,g6]@3 ~@2", // Eb Gm
  AN: "~@5 [d5,gb5,a5,d6,gb6,d7]@3 ~@3 [a4,d5,gb5,a5,d6,a6]@3 ~@2", // D
  AO: "~@5 [a4,d5,gb5,a5,d6,gb6,d7]@3 ~@3 [a4,db5,e5,db6,e6,db7]@3 ~@2", AP: "[a4,d5,gb5,d6,gb6,d7]@3 ~@13",
  AQ: "[c3,g3,bb4,g5]@3 ~@13", AR: "[c3,g3,eb4,bb4]@3 ~@13", AS: "[g3,eb4,bb4,g5]@5 [eb4,bb4,g5]@5 ~ [g3,eb4,bb4]@5",
  AT: "[g3,eb4,bb4]@5 [eb4,bb4,g5]@5 ~ [g3,eb4,bb4]@5", // Eb
  AU: "[d4,d5,d6]@5 [d4,a4] ~@2 [d4,a4] ~@2 [d4,a4] ~ [d4,a4] ~@2", AV: "[d4,a4]@3 ~@8 [d4,a4,d5,d6]@3 ~@2",
  AW: "[g5,bb5,d6,g6]@5 ~@6 d3@3 ~@2", AX: "g3@3 ~@8 g3@3 ~@2", AY: "f3@3 ~@8 f3@3 ~@2", AZ: "e3@3 ~@8 e3@3 ~@2",
  BA: "eb3@3 ~@8 eb3@3 ~@2", BB: "d3@3 ~@2 e3@3 ~@3 g3@3 ~@2", BC: "f3@3 ~@2 e3@3 ~@3 d3@3 ~@2",
  BD: "e3@3 ~@8 [e3,a3]@3 ~@2", BE: "[f3,d4]@3 ~@8 d4@3 ~@2", BF: "c4@3 ~@8 c4@3 ~@2", BG: "b3@3 ~@8 b3@3 ~@2",
  BH: "bb3@3 ~@8 bb3@3 ~@2", BI: "a3@3 ~@2 b3@3 ~@3 d4@3 ~@2", BJ: "c4@3 ~@2 b3@3 ~@3 a3@3 ~@2",
  BK: "c4@3 ~@8 [d3,a3,c4,d5]@3 ~@2", BL: "[g2,g3,g4,g5]@3 ~@8 [g4,g5]@3 ~@2", BM: "[f4,f5]@3 ~@8 [f4,f5]@3 ~@2",
  BN: "[e4,e5]@3 ~@8 [e4,e5]@3 ~@2", BO: "[eb4,eb5]@3 ~@8 [eb4,eb5]@3 ~@2",
  BP: "[d4,d5]@3 ~@2 [e4,e5]@3 ~@3 [g4,g5]@3 ~@2", BQ: "[f4,f5]@3 ~@2 [e4,e5]@3 ~@3 [d4,d5]@3 ~@2",
  BR: "[e4,e5]@3 ~@8 [a3,e4,a4,e5]@3 ~@2", BS: "[d4,f4,d5,f5]@3 ~@8 [d4,d5]@3 ~@2", BT: "[c4,c5]@3 ~@8 [c4,c5]@3 ~@2",
  BU: "[b3,b4]@3 ~@8 [b3,b4]@3 ~@2", BV: "[bb3,bb4]@3 ~@8 [bb3,bb4]@3 ~@2",
  BW: "[a3,a4]@3 ~@2 [b3,b4]@3 ~@3 [d4,d5]@3 ~@2", BX: "[c4,c5]@3 ~@2 [b3,b4]@3 ~@3 [a3,a4]@3 ~@2",
  BY: "[bb3,bb4]@3 ~@2 [g3,g4] ~@2 [a3,a4] ~@2 [bb3,bb4] ~ [c4,c5] ~@2", // Bb G A Bb C
  BZ: "[d4,d5] ~@2 [db4,db5] ~ [d4,d5] ~@2 [f4,f5] ~@2 [e4,e5] ~ [d4,d5] ~@2", // D Db D F E D
  CA: "[g4,g5] ~@2 [gb4,gb5] ~ [g4,g5] ~@2 [bb4,bb5] ~@2 [a4,a5] ~ [g4,g5] ~@2", // G Gb G Bb A G
  CB: "[c5,c6] ~@2 [b4,b5] ~ [c5,c6] ~@2 [eb5,eb6] ~@2 [d5,d6] ~ [c5,c6] ~@2", // C B C Eb D C
  CC: "[f5,f6] ~@2 [d5,d6] ~ [db5,db6] ~@2 [c5,c6] ~@2 [b4,b5] ~ [bb4,bb5] ~@2", // F D Db C B Bb
  CD: "[a4,a5] ~@2 [b4,b5] ~ [db5,db6] ~@2 [d5,d6] ~@2 [e5,e6] ~ [f5,f6] ~@2", // A B Db D E F
  CE: "[a4,a5] ~@2 [b4,b5] ~ [c5,c6] ~@2 [db5,db6] ~@2 [d5,d6] ~ [eb5,eb6] ~@2", CF: "[e5,e6]@3 ~@13",
  CG: "~@5 [ab4,ab5]@5 ~@6", CH: "~@5 [ab3,ab4,ab5,ab6]@5 ~@6", CI: "~@5 [ab3,ab4,ab5]@5 ~@6",
  CJ: "~@5 [ab4,ab5,ab6,ab7]@5 ~@6", CK: "~@11 [bb2,bb3,bb4,bb5]@5",
  CL: "~@3 gb3@2 b3@3 eb4@3 gb4@2 gb3@3, [b1,b2]@5 ~@11", CM: "~@3 g3@2 b3@3 d4@3 g4@2 g3@3, [b1,b2]@5 ~@11",
  CN: "~@3 e3@2 ab3@3 b3@3 e4@2 e3@3, [b1,b2]@5 ~@11", CO: "~@3 e3@2 bb3@3 db4@3 e4@2 e3@3, [b1,b2]@5 ~@11",
  CP: "[b1,b2,gb3,b3,eb4]@5 [b1,b2] ~@2 [eb2,eb3] ~@2 [b1,b2] ~ [db2,db3] ~@2", // B Eb B Db
  CQ: "[eb2,eb3,eb4]@3 ~@2 [db2,db3,db4]@3 ~@3 [b1,b2,b3]@3 ~@2", // Eb Db B
  CR: "~@5 [g1,g2,g3] ~@2 [b1,b2,b3] ~@2 [g1,g2,g3] ~ [a1,a2,a3] ~@2", // G B G A
  CS: "[b1,b2,b3]@3 ~@2 [a1,a2,a3]@3 ~@3 [g1,g2,g3]@3 ~@2", CT: "~@5 [b1,b2] ~@2 [eb2,eb3] ~@2 [b1,b2] ~ [db2,db3] ~@2",
  CU: "~@5 [ab1,ab2,ab3] ~@2 [b1,b2,b3] ~@2 [ab1,ab2,ab3] ~ [bb1,bb2,bb3] ~@2", // Ab B Ab Bb
  CV: "[b1,b2,b3]@3 ~@2 [bb1,bb2,bb3]@3 ~@3 [ab1,ab2,ab3]@3 ~@2", CW: "b2@5 ~@11",
  CX: "~@5 [eb4,eb5] ~@2 [gb4,gb5] ~@2 [eb4,eb5] ~ [f4,f5] ~@2", CY: "[gb4,gb5] ~@4 [f4,f5] ~@5 [eb4,eb5] ~@4",
  CZ: "~@5 [eb4,eb5,eb6] ~@2 [gb4,gb5,gb6] ~@2 [eb4,eb5,eb6] ~ [f4,f5,f6] ~@2", // Eb Gb Eb F
  DA: "[gb4,gb5,gb6] ~@4 [f4,f5,f6] ~@5 [eb4,eb5,eb6] ~@4", DB: "~@5 [c5,eb5]@3 [eb5,gb5]@3 [c5,eb5]@2 [d5,f5]@3",
  DC: "[eb5,gb5]@3 ~@2 [d5,f5]@3 ~@3 [c5,eb5]@3 ~@2", // Ebm Dm Cm
  DD: "~@5 [eb4,eb5,eb6]@3 [gb4,gb5,gb6]@3 [eb4,eb5,eb6]@2 [f4,f5,f6]@3", DE: "[g4,g5,g6]@3 ~@13", DF: "~@11 g4@5",
  DG: "c5@10 ~ c5@5", DH: "c5@5 ~@11", DI: "~@11 [e4,e5]@5", DJ: "[a4,db5,a5]@10 ~ [a4,db5,a5]@5",
  DK: "[f4,d5,d6]@5 ~@6 [f2,f3]@5", DL: "[bb2,bb3]@10 ~ [bb2,bb3]@5", DM: "[a2,a3]@10 ~ [a2,a3,c4,c5]@5",
  DN: "[g2,g3,bb4,bb5]@10 ~ [g2,g3,bb4,bb5]@5", DO: "[a4,a5]@5 [a2,a3]@3 ~@3 d3@3 ~@2, [gb2,gb3]@3 ~@13",
  DP: "[db3,db4]@3 [g5,g6] ~ [bb2,bb3]@3 [f5,f6] ~@2 [g2,g3,g5,g6]@3 ~@2, [eb5,eb6] ~@4 [eb5,eb6] ~@10", // Db G Bb F G Eb
  DQ: "[gb2,gb3]@3 ~@2 [a2,a3]@3 ~@3 d3@3 ~@2", DR: "[db3,db4,eb5,g5,bb5,eb6]@10 ~ [db3,db4,eb5,g5,bb5,eb6]@3 ~@2",
  DS: "[b2,b3,d5,f5,ab5,d6]@10 ~ [b2,b3,d5,f5,ab5,d6]@3 ~@2", // Bdim
  DT: "[a2,a3,c5,eb5,gb5,c6]@10 ~ [a2,a3,c5,eb5,gb5,c6]@3 ~@2", // Adim
  DU: "[c4,eb4,a4,c5,eb5,a5]@10 ~ [c4,eb4,a4,c5,eb5,a5]@3 ~@2", // Adim
  DV: "[bb3,d4,g4,bb4,d5,g5]@10 ~ [bb3,d4,g4,bb4,d5,g5]@3 ~@2", // Gm
  DW: "[a3,c4,f4,a4,c5,f5]@10 ~ [a3,c4,f4,a4,c5,f5]@3 ~@2", // F
  DX: "[g3,bb3,eb4,g4,bb4,eb5]@10 ~ [g3,bb3,eb4,g4,bb4,eb5]@3 ~@2", DY: "eb5@3 d5@2 db5@3 c5@3 b4@2 bb4@3",
  DZ: "a4@3 ab4@2 g4@3 gb4@3 f4@2 e4@3", EA: "[bb3,eb4]@3 [c4,d4]@3 ~@10",
  EB: "[eb5,g5]@3 [d5,gb5]@2 [db5,f5]@3 [c5,e5]@3 [b4,eb5]@2 [bb4,d5]@3", // Eb D Db C B Bb
  EC: "[a4,db5]@3 [ab4,c5]@2 [g4,b4]@3 [gb4,bb4]@3 [f4,a4]@2 [e4,ab4]@3", ED: "[eb4,g4]@3 [d4,gb4]@3 ~@10",
  EE: "~@3 [d4,a4]@3 ~@2 [d4,a4]@3 ~@2 [d4,a4]@3", EF: "~@5 [c5,c6]@3 [eb5,eb6]@3 [c5,c6]@2 [d5,d6]@3",
  EG: "[eb5,eb6]@3 [c5,c6]@2 [eb5,eb6]@3 [d5,d6]@3 [c5,c6]@2 [a4,a5]@3", EH: "[eb5,eb6]@5 ~@11", EI: "~@13 bb3@3",
  EJ: "a3@3 ab3@2 g3@3 gb3@3 f3@2 e3@3", EK: "eb3@3 d3@2 [db3,db4]@3 [c3,c4]@3 [a2,a3]@2 [g2,g3]@3",
  EL: "[gb2,gb3]@3 [eb2,eb3]@2 [d2,d3]@3 [c2,c3]@3 [bb1,bb2]@2 [a1,a2]@3", // Gb Eb D C Bb A
  EM: "[g1,g2,g5,bb5,d6,g6]@5 [g3,bb3,d4,g5,bb5,d6,g6]@3 [g3,bb3,d4,g5,bb5,d6,g6]@3 [g3,bb3,d4,g5,bb5,d6,g6]@2 [g3,bb3,d4,g5,bb5,d6,g6]@3", // Gm
  EN: "[g3,bb3,d4,g5,bb5,d6,g6]@5 [g3,bb3,d4,g5,bb5,d6,g6]@3 [g3,bb3,d4,g5,bb5,d6,g6]@3 [g3,bb3,d4,g5,bb5,d6,g6]@2 [g3,bb3,d4,g5,bb5,d6,g6]@3", // Gm
  EO: "[a3,d4,d5,gb5,a5,d6]@5 [d4,gb4,gb5,a5,d6,gb6]@3 [d4,gb4,gb5,a5,d6,gb6]@3 [d4,gb4,gb5,a5,d6,gb6]@2 [d4,gb4,gb5,a5,d6,gb6]@3", // D
  EP: "[a3,e4,e5,a5,e6]@5 [a2,a3,e5,a5,e6]@3 [bb2,bb3,e5,a5,e6]@3 [b2,b3,e5,a5,e6]@2 [db3,db4,e5,a5,e6]@3", // A5 A Esus4 A
  EQ: "[d3,d4,gb5,a5,d6,gb6]@5 [g3,bb3,g5,bb5,d6,g6]@3 [g3,bb3,g5,bb5,d6,g6]@3 [g3,bb3,g5,bb5,d6,g6]@2 [g3,bb3,g5,bb5,d6,g6]@3", // D Gm
  ER: "[a3,d4,gb5,a5,d6,gb6]@5 [d4,gb4,a4,d5,gb5,a5,d6,gb6]@3 [d4,gb4,a4,d5,gb5,a5,d6,gb6]@3 [d4,gb4,a4,d5,gb5,a5,d6,gb6]@2 [d4,gb4,a4,d5,gb5,a5,d6,gb6]@3", // D
  ES: "[d4,gb4,a4,d5,gb5,a5,d6,gb6]@5 [d4,gb4,a4,d5,gb5,a5,d6,gb6]@3 [d4,gb4,a4,d5,gb5,a5,d6,gb6]@3 [db4,e4,a4,db5,e5,g5,db6,e6]@2 [db4,e4,a4,db5,e5,g5,db6,e6]@3", // D A7
  ET: "[d4,gb4,a4,d5,gb5,a5,d6,gb6]@5 ~@11", // D
  EU: "~@5 [d3,d5,gb5,d6]@3 [d3,d5,gb5,d6]@3 [d3,d5,gb5,d6]@2 [d3,d5,gb5,d6]@3", // D
  EV: "[c3,gb5,a5,d6,gb6]@5 [d3,d5,gb5,d6]@3 [d3,d5,gb5,d6]@3 [d3,d5,gb5,d6]@2 [d3,d5,gb5,d6]@3", // D7 D
  EW: "[bb1,d2,g2,bb2,g5,bb5,d6,g6]@5 ~@11", EX: "[bb2,bb3,g4,d5,g5]@5 [bb2,bb3,g4,d5,g5]@5 ~@6",
  EY: "[c3,c4,g4,eb5,g5]@5 [c3,c4,g4,eb5,g5]@5 ~@6", EZ: "[gb2,gb3,d4,a4,d5]@5 [gb2,gb3,d4,a4,d5]@5 ~@6",
  FA: "[g2,g3,d4,bb4,d5]@5 [g2,g3,d4,bb4,d5]@5 ~@6", FB: "[c2,c3,c4,eb4,ab4]@5 [c2,c3,c4,eb4,ab4]@5 ~@6",
  FC: "[d2,d3,bb3,d4,g4]@5 [d2,d3,bb3,d4,g4]@5 ~@6", FD: "[d3,a3,d4,gb4,a4,d5]@5 [d3,a3,d4,gb4,a4,d5]@5 ~@6",
  FE: "[g4,bb4,d5,g5,bb5]@3 [g4,bb4,d5,g5,d6]@2 [g4,bb4,d5,g5,g6]@5 ~@6", // Gm
  FF: "[a2,d3,a3,d4,gb4,a4,d5]@5 [a2,d3,a3,d4,gb4,a4,d5]@5 ~@6", // D
  FG: "[a2,d3,gb3,a3,d4,gb4,a4,d5]@5 [a2,d3,gb3,a3,d4,gb4,a4,d5]@5 ~@6", // D
  FH: "[g4,bb4,g5,bb5,g6]@5 [f4,bb4,d5,f5,d6,f6]@5 ~ [eb4,g4,c5,eb5,g5,eb6]@5", // Gm Bb Cm
  FI: "[f4,a4,f5,a5,f6]@5 [eb4,a4,c5,eb5,c6,eb6]@5 ~ [d4,f4,bb4,d5,f5,d6]@5", // F Adim Bb
  FJ: "[eb4,g4,eb5,g5,eb6]@5 [d4,g4,bb4,d5,bb5,d6]@5 ~ [c4,eb4,ab4,c5,eb5,c6]@5", // Eb Gm Ab
  FK: "[c4,eb4,ab5,c6,eb6,ab6]@3 [c4,eb4,ab5,c6,eb6,ab6]@2 [c4,eb4,ab5,c6,eb6,ab6]@3 [c4,eb4,ab5,c6,eb6,ab6]@3 [c4,eb4,ab5,c6,eb6,ab6]@5", // Ab
  FL: "[d4,gb4,gb5,a5,d6,gb6]@3 [d4,gb4,gb5,a5,d6,gb6]@2 [d4,gb4,gb5,a5,d6,gb6]@3 [d4,gb4,gb5,a5,d6,gb6]@3 [d4,gb4,gb5,a5,d6,gb6]@5", // D
  FM: "[g3,bb3,g4,bb4,g5]@5 [f3,bb3,d4,f4,d5,f5]@5 ~ [eb3,g3,c4,eb4,g4,eb5]@5", // Gm Bb Cm
  FN: "[f3,a3,f4,a4,f5]@5 [eb3,a3,c4,eb4,c5,eb5]@5 ~ [d3,f3,bb3,d4,f4,d5]@5", // F Adim Bb
  FO: "[eb3,g3,eb4,g4,eb5]@5 [d3,g3,bb3,d4,bb4,d5]@5 ~ [c3,eb3,ab3,c4,eb4,c5]@5", // Eb Gm Ab
  FP: "[c3,eb3,ab4,c5,eb5,ab5]@3 [c3,eb3,ab4,c5,eb5,ab5]@2 [c3,eb3,ab4,c5,eb5,ab5]@3 [c3,eb3,ab4,c5,eb5,ab5]@3 [c3,eb3,ab4,c5,eb5,ab5]@5", // Ab
  FQ: "[d3,gb3,gb4,a4,d5,gb5]@3 [d3,gb3,gb4,a4,d5,gb5]@2 [d3,gb3,gb4,a4,d5,gb5]@3 [d3,gb3,gb4,a4,d5,gb5]@3 [d3,gb3,gb4,a4,d5,gb5]@5", // D
  FR: "[g4,g5]@5 [g5,g6]@5 ~@6", FS: "[gb4,gb5]@5 [gb5,gb6]@5 ~@6",
  FT: "[d4,g4,bb4,d5,g5,bb5,d6,g6]@5 [d4,g4,bb4,d5,g5,bb5,d6,g6]@5 ~@6", // Gm
  FU: "[d4,g4,bb4,d5,g5,bb5,d6,g6]@5 [d4,g4,bb4,d5,g5,bb5,d6,g6]@5 ~ [d4,g4,bb4,d5,g5,bb5,d6,g6]@5", // Gm
  FV: "eb5@3 ~@5 bb5 ~@2 bb5@3 ~@2", FW: "[eb5@3 ~@2 g5@59]/4",
})).s("gm_piano").gain(0.35)

// chords · piano · "Piano 2" · soft notes
const piano_soft = note(`<
  ~@4 A@4 ~@4 B@4 ~@16 C D@3 E@4 F@4 G@5 H I J K L M N ~@8 O P Q P ~@4 O P Q P ~@40 R S T S ~@4 R S T S ~@44 U V W X Y Z
  AA AB AC Z V W AC AD AE AF AG AH@4 AI@4 AJ@3 AI AK AI AL ~@79 AM AN AM AN AO ~@3 AP AQ@2 AR ~@2 AS AT AU AQ@2 AR ~@2
  AV AW AX ~@3 AY AZ BA BB BC BD BE BF BG ~ BH ~ BI BJ BK ~ BL BM BN ~ BO BP ~@2 BQ@8 ~@21 BR ~@108 BS BT@2 BU BV
>`.pickRestart({
  A: "[d4,d5] [gb4,a4] ~ [d4,d5] [gb4,a4] [d4,d5] ~ [gb4,a4] [d4,d5] [gb4,a4] ~ [d4,d5] [gb4,a4] [d4,d5] ~ [gb4,a4]", // D Gbm D Gbm D Gbm D Gbm …
  B: "[gb4,gb5] [a4,d5] ~ [gb4,gb5] [a4,d5] [gb4,gb5] ~ [a4,d5] [gb4,gb5] [a4,d5] ~ [gb4,gb5] [a4,d5] [gb4,gb5] ~ [a4,d5]", // Gb D5 Gb D5 Gb D5 Gb D5 …
  C: "~@5 [eb3,g3,bb3,d4]@3 ~@3 [bb2,d3,g3,bb3]@3 ~@2", D: "[g1,g2]@3 ~@2 [g3,bb3,d4]@3 ~@3 [d3,g3,bb3]@3 ~@2",
  E: "[f1,f2]@3 ~@2 [ab3,c4,eb4]@3 ~@3 [eb3,ab3,c4]@3 ~@2", // F Ab
  F: "[[g1,g2]@3 ~@13 [g2,g3]@3 ~@13 [g2,g3]@3 ~@13 [g2,g3]@3 ~@13, [bb3,d4]@61 ~@3]/4", // G Bb
  G: "[[f2,f3]@3 ~@13 [f2,f3]@3 ~@13 [f2,f3]@3 ~@13 [f2,f3]@3 ~@13 [g2,g3]@3 ~@13, [c4,eb4]@33 ~@7]/5", // F G Cm
  H: "~@5 [bb3,g4]@3 ~@3 [g3,d4]@3 ~@2", I: "~@5 [bb3,f4]@3 ~@3 [f3,d4]@3 ~@2", J: "~@5 [g3,e4]@3 ~@3 [e3,bb3]@3 ~@2",
  K: "~@5 [g3,eb4]@3 ~@3 [eb3,bb3]@3 ~@2", L: "~@5 [g3,d4]@3 ~@3 [d3,bb3]@3 ~@2",
  M: "~@5 [gb2,d4]@3 ~@3 [gb3,a3]@3 ~@2", N: "~@5 [a3,e4]@3 ~@3 [e3,db4]@3 ~@2", O: "~@5 d4@3 gb4@3 d4@2 e4@3",
  P: "gb4@5 e4@3 gb4@3 d4@2 gb4@3", Q: "e4@3 d4@2 d4@3 gb4@3 d4@2 e4@3", R: "~@5 d5@3 gb5@3 d5@2 e5@3",
  S: "gb5@5 e5@3 gb5@3 d5@2 gb5@3", T: "e5 [e5,gb5] [e5,f5] d5@2 d5@3 gb5@3 d5@2 e5@3",
  U: "~@11 [db4,e4,db5,e5,db6]@3 ~@2", V: "[b3,d4,b4,d5,b5]@3 ~@8 [db4,e4,db5,e5,db6]@3 ~@2",
  W: "[a3,db4,a4,db5,a5]@3 ~@8 [b3,d4,b4,d5,b5]@3 ~@2", X: "[ab3,b3,ab4,b4,ab5]@3 ~@8 [a3,db4,a4,db5,a5]@3 ~@2",
  Y: "[a3,db4,a4,db5,a5]@3 ~@8 [db4,e4,db5,e5,db6]@3 ~@2", Z: "[db4,e4,db5,e5,db6]@3 ~@8 [d4,f4,d5,f5,d6]@3 ~@2",
  AA: "[db4,e4,db5,e5,db6]@3 ~@2 [b3,d4,b4,d5,b5]@3 ~@3 [a3,db4,a4,db5,a5]@3 ~@2", // Dbm Bm A
  AB: "[db4,e4,db5,e5,db6]@3 ~@8 [b3,d4,b4,d5,b5]@3 ~@2", AC: "[b3,d4,b4,d5,b5]@3 ~@8 [d4,f4,d5,f5,d6]@3 ~@2",
  AD: "[d4,f4,d5,f5,d6]@3 ~@8 [e4,g4,e5,g5,e6]@3 ~@2", // Dm Em
  AE: "[d4,f4,d5,f5,d6]@3 ~@2 [db4,e4,db5,e5,db6]@3 ~@3 [b3,d4,b4,d5,b5]@3 ~@2", // Dm Dbm Bm
  AF: "[d4,f4,d5,f5,d6]@3 ~@8 [d4,f4,d5,f5,d6]@3 ~@2", AG: "[db4,e4,db5,e5,db6]@3 ~@13", AH: "~@11 [a4,a5]@5",
  AI: "~@11 [a3,a4,a5,a6]@5", AJ: "~@11 [a3,a4,a5]@5", AK: "~@11 [a4,a5,a6,a7]@5", AL: "~@5 [a2,a3,a4,a5]@5 ~@6",
  AM: "[gb3,a3,d4,gb4,a4,d5]@10 ~ [gb3,a3,d4,gb4,a4,d5]@3 ~@2", // D
  AN: "[g3,bb3,eb4,g4,bb4,eb5]@10 ~ [g3,bb3,eb4,g4,bb4,eb5]@3 ~@2", AO: "[gb3,a3,d4,gb4,a4,d5]@3 ~@13",
  AP: "~@5 a2@3 a2@3 a2@2 a2@3", AQ: "d3@5 a2@3 a2@3 a2@2 a2@3", AR: "d3@5 a2@5 ~ d3@5",
  AS: "~@5 [ab3,db4]@3 [g3,c4]@3 [gb3,b3]@2 [f3,bb3]@3", // Db5 C5 B5 Bb5
  AT: "[e3,a3]@3 [eb3,ab3]@2 [d3,g3]@3 [db3,gb3]@3 [c3,f3]@2 [bb2,eb3]@3", // A5 Ab5 G5 Gb5 F5 Eb5
  AU: "[d2,a2,d3,gb3]@3 ~@2 a2@3 a2@3 a2@2 a2@3", AV: "~@5 [db4,f4]@3 [c4,e4]@3 [b3,eb4]@2 [bb3,d4]@3",
  AW: "[a3,db4]@3 [ab3,c4]@2 [g3,b3]@3 [gb3,bb3]@3 [f3,a3]@2 [eb3,g3]@3", AX: "[d3,gb3] ~@15",
  AY: "~@11 [db4,g4,bb4]@3 ~@2", AZ: "[db4,g4,bb4,f5] ~@2 [db4,g4,bb4,f5] ~ [db4,g4,bb4,f5]@3 ~@3 [db4,g4,bb4]@3 ~@2",
  BA: "[db4,g4,bb4,f5] ~@2 [db4,g4,bb4] ~ [db4,g4,bb4,f5] ~@2 [db4,g4,bb4] ~@2 [db4,g4,bb4,f5] ~ [db4,g4,bb4] ~@2", // Gm7b5 Gdim Gm7b5 Gdim Gm7b5 Gdim
  BB: "[db4,g4,bb4,f5]@3 ~@2 [db4,g4,bb4,f5]@3 ~@8", BC: "~@11 [c4,ab4,c5,eb5]@3 ~@2",
  BD: "[c4,ab4,c5,eb5,ab5] ~@2 [c4,ab4,c5,eb5,ab5] ~ [c4,ab4,c5,eb5,ab5]@3 ~@8", BE: "~@11 [g4,bb4,db5,g5,db6]@3 ~@2",
  BF: "[g4,bb4,db5,g5,db6,gb6] ~@2 [g4,bb4,db5,g5,db6,gb6] ~ [g4,bb4,db5,g5,db6,gb6]@3 ~@3 [a4,db5,e5,g5,db6,e6]@3 ~@2", // Gb A7
  BG: "[d2,d3,d5,gb5,a5,d6]@3 ~@13", BH: "f4@3 ~@2 e4@3 ~@3 d4@3 ~@2", BI: "~@5 db4 ~@2 e4 ~@2 db4 ~ d4 ~@2",
  BJ: "e4@3 ~@2 d4@3 ~@3 db4@3 ~@2", BK: "eb4@3 ~@2 d4@3 ~@3 c4@3 ~@2", BL: "~@5 b3 ~@2 d4 ~@2 b3 ~ c4 ~@2",
  BM: "d4@3 ~@2 c4@3 ~@3 b3@3 ~@2", BN: "d4@3 ~@2 c4@3 ~@3 bb3@3 ~@2", BO: "~@5 a3 ~@2 db4 ~@2 a3 ~ b3 ~@2",
  BP: "db4@3 ~@2 b3@3 ~@3 a3@3 ~@2", BQ: "[d2,d3]/8", BR: "~@5 db4@3 c4@3 b3@3 ~@2",
  BS: "~@7 d4 ~ eb4 d4 eb4 ~ d4 eb4 d4", BT: "~ eb4 d4 eb4 ~ d4 eb4 d4 ~ eb4 d4 eb4 ~ d4 eb4 d4",
  BU: "~ eb4 d4 eb4 ~ d4 eb4 [gb3,a3,d4,d5,gb5]@5 ~@4", BV: "~@7 [g3,bb3,d5,g5]@5 ~@4",
})).s("gm_piano").gain(0.2)

// chords · piano · "Piano 3"
const piano_2 = note(`<
  ~@17 A B C D E C F A ~@6 G H I@3 J@4 K@4 L@4 M N@2 O@3 P Q R O S T U V W X Y@4 Z AA AB AC AD AE Y AE Z AA AB AC AF@4
  AG AH@3 AI@4 AJ AK AL AK AM AN AO AP AQ AR@5 AS AT AU AV@3 AW@2 AX AY AZ BA@3 BB@4 BC@4 BD BE BF BG BH@4 BI BJ BK BL
  BM BN BO BP BQ BR BS BT BU BV BW BX BY BZ CA CB CC@2 CD CE CF CG CH CI CJ CK CL CM CN CO CP CL CQ CR CS CT CU CV CW CX
  CY CV CR CS CY CZ DA DB DC DD DE DF DG DH DI DJ DK DH DD DE DK DL DM DN DO DP@3 DQ@4 DR DS DT DU DV DW DX DY DZ@2 DP
  EA@2 EB@2 EC ED EE EF EG EH EI EJ EK@8 EL EM EN EO EP EQ ER ES ET EU EV EW EX EY EZ FA FB FC FD FE FF FG FF FG FF FG@3
  FH FI FH FI FJ FI FK FI FL FM FN FO FP FO FP FO FQ FR@3 FS@4 FT FU FV FW FX FS@3 FT FU FV FW FY ~@2 FZ GA ~@5 GB GC
  GD@2 GE@2 GF@2 GG@2 GH@2 GI@2 GF@2 GJ@2 GK@9 GL GM GN GM GO@4 GP GQ@3 GR GS GT GS GU@4 ~@4 GV GW GX GY GZ HA HB HC HD
  HE GX GY GZ HF HG HH HI GO@3 HJ HK@3 HL HM HN HO HP HQ HR HS HT HU HV HW HX HQ HR HY HR HY HR HY HZ IA IB IC ID IE IF
  IB IC ID IG IH II IJ II IJ IK@3 IL@5 IM@7 IN IO IP IO IQ@2 IR@3 ~@3 IS@8 IT@2 ~@4 IU IV IW IX IY IZ JA JB JC
>`.pickRestart({
  A: "[d2,d3]@3 ~@13", B: "[a2,a3]@3 ~@13", C: "[c2,c3]@3 ~@13", D: "[gb2,gb3]@3 ~@13", E: "[a1,a2]@3 ~@13",
  F: "[eb2,eb3]@3 ~@13", G: "~@11 [d3,a3,d4,a4,d5]@3 ~@2",
  H: "[g1,g2,d4,bb4,d5]@3 ~@2 [g3,bb3,d4]@3 ~@3 [d3,g3,bb3]@3 ~@2", // Gm
  I: "[~@5 [g3,bb3,d4]@3 ~@3 [d3,g3,bb3]@3 ~@7 [g3,bb3,d4]@3 ~@3 [d3,g3,bb3]@3 ~@7 [g3,bb3,d4]@3 ~@3 [d3,g3,bb3]@3 ~@2, g2@23 ~]/3", // Gm
  J: "[~@5 [ab3,c4,eb4]@3 ~@3 [eb3,ab3,c4]@3 ~@7 [ab3,c4,eb4]@3 ~@3 [eb3,ab3,c4]@3 ~@7 [ab3,c4,eb4]@3 ~@3 [eb3,ab3,c4]@3 ~@7 [ab3,c4,eb4]@3 ~@3 [eb3,ab3,c4]@3 ~@2, f2@61 ~@3]/4", // Ab
  K: "[~@5 [g3,bb3,d4]@3 ~@3 [d3,g3,bb3]@3 ~@7 [g3,bb3,d4]@3 ~@3 [d3,g3,bb3]@3 ~@7 [g3,bb3,d4]@3 ~@3 [d3,g3,bb3]@3 ~@7 [g3,bb3,d4]@3 ~@3 [d3,g3,bb3]@3 ~@2, g2@61 ~@3]/4", // Gm
  L: "[~@5 [ab3,c4,eb4]@3 ~@3 [eb3,ab3,c4]@3 ~@7 [ab3,c4,eb4]@3 ~@3 [eb3,ab3,c4]@3 ~@7 [ab3,c4,eb4]@3 ~@3 [eb3,ab3,c4]@3 ~@7 [ab3,c4,eb4]@3 ~@3 [eb3,ab3,c4]@3 ~@2, f2@31 ~]/4", // Ab
  M: "g2@5 ~@11", N: "[g1,g2]@3 ~@2 d4@3 ~@3 bb3@3 ~@2", O: "[g1,g2]@3 ~@2 bb3@3 ~@3 g3@3 ~@2",
  P: "[a1,a2]@3 ~@2 a3@3 ~@3 d4@3 ~@2", Q: "[a1,a2]@3 ~@2 db4@3 ~@3 a3@3 ~@2", R: "[d2,d3]@3 ~@2 a3@3 ~@3 gb3@3 ~@2",
  S: "[g1,g2]@3 ~@2 bb3@3 ~@3 f3@3 ~@2", T: "[g1,g2]@3 ~@2 g3@3 ~@3 e3@3 ~@2", U: "[g1,g2]@3 ~@2 g3@3 ~@3 eb3@3 ~@2",
  V: "[g1,g2]@3 ~@2 g3@3 ~@3 d3@3 ~@2", W: "[a1,a2]@3 ~@2 a3@3 ~@3 gb3@3 ~@2", X: "[a1,a2]@3 ~@2 a3@3 ~@3 db4@3 ~@2",
  Y: "[d2,d3]@3 ~@2 [d4,gb4,a4]@3 ~@3 [a3,d4,gb4]@3 ~@2", Z: "[c2,c3]@3 ~@2 g4 ~@2 bb4 ~@2 g4 ~ a4 ~@2",
  AA: "bb4@3 ~@2 eb4 ~@2 g4 ~@2 eb4 ~ f4 ~@2", AB: "g4@3 ~@2 bb3 ~@2 eb4 ~@2 bb3 ~ d4 ~@2",
  AC: "eb4@5 eb4 ~@2 eb4 ~@2 eb4 ~ eb4 ~@2", AD: "[d2,d3]@3 ~@2 [d4,gb4,a4]@3 ~@3 [a3,d4,gb4]@3 ~@2, d4@5 ~@11",
  AE: "[d2,d3]@3 ~@2 [d4,gb4,a4]@3 ~@3 [a3,d4,gb4]@3 ~@2, gb4@5 ~@11", // D
// … 140 more lines

More by Camille Saint-Saëns