Strudelify

monody

Kim Hoang Huy

KeyE♭ majorTempo107 bpm
0:00/0:00
// monody — Kim Hoang Huy
// 107 bpm, 4/4, key Eb 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/3946551; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 164 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(107/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.

// chords · piano
const piano = note(`<
  A B C D E F G H I J K L M N O P Q R S@2 T U V W X Y V W Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ ~@8 AR AS
  AT AU AV AW AX AY AZ BA BB BC AZ BA BB BD BE BF BG BH BI BJ BK BL BM ~@4 BN@2 BO BP BQ ~@38 BR BS BT BU BV BW BX BY BZ
  CA CB CC CD CE CF V W X CG CH CI CJ CK CL CM CN CO CP CQ CR CS@8
>`.pickRestart({
  A: "[c1,c2]@15 ~", B: "[c4,g4,c5]@3 c5 eb5@2 f5@2 [c4,g4,c5]@3 c5 eb5@2 f5@2",
  C: "[c4,g4,c5]@2 ~ c5 eb5@2 f5@2 [c4,g4,c5]@2 ~ c5 eb5@2 f5@2, ~ c4 ~@3 c4 ~@2", // C5
  D: "c5@2 c4 c5 eb5@2 f5@2 c5@2 c4 c5 eb5@2 f5@2, [eb4,g4] ~ [eb4,g4] ~", // Eb
  E: "c5@2 c4 [c3,c5] [eb3,eb5]@2 [f3,f5]@2 c5@2 c4 [c3,c5] [eb3,eb5]@2 [f3,f5]@2, [c3,eb4,g4] ~ [c3,eb4,g4] ~", // C Eb F C Eb F Cm
  F: "c5@2 c4 [c4,c5] [eb4,eb5]@2 [f4,f5]@2 c5@2 c4 [c4,c5] [eb4,eb5]@2 [f4,f5]@2, [c3,eb4,g4] ~ [c3,eb4,g4] ~", // C Eb F C Eb F Cm
  G: "c5@2 c4 [c4,c5] [eb4,eb5]@2 [f4,f5]@2 c5@2 c4 [c4,c5] [eb4,eb5]@2 [f4,f5]@2, [c2,c3,eb4,g4] ~ [c2,c3,eb4,g4] ~", // C Eb F C Eb F Cm
  H: "[bb4,d5,g5] ~ [eb5,g5,bb5] ~ [d2,d3] d4 [eb2,eb3] d4 [g5,c6]@4 g5@2 bb5@2, [g1,g2] [bb1,bb2] [f4,d5,f5,bb5] [g4,d5,g5,bb5] [c2,c3] ~@3", // Gm Eb D Eb C5 G Bb Gm …
  I: "[ab2,ab3] eb3 [ab3,c6] [bb3,bb5] eb2 bb2 [eb3,f5] [g3,eb5], [ab5,c6] ~ g5 ~", // Ab Bb Ebsus2 Cm Ab
  J: "[bb2,bb3] f3 [bb3,f5] [f3,eb5] [ab2,ab3] eb3 [ab3,bb4] [eb3,c5], f5 ~ c5 ~", // Bb Bb5 F7 Ab Absus2 Cm
  K: "[c3,c4] g3 [c4,f5] [g3,g5] [ab2,ab3] eb3 [ab3,g5] [eb3,eb5], eb5 ~ ab5 ~", // C F5 G Ab Abmaj7 Eb
  L: "[bb2,bb3]@4 f3@4 bb3@4 c4@4 d4@4 f4@4 ~ g5@3 ~ bb5@3, f5@23 ~ g4@4 bb4@4", // Bb
  M: "~@7 d6 ~ c6@3 bb5 bb5@3 ~@4 bb4@4 ~ f6@3 ~ eb6@3, [ab3,c5] eb5 ~@2 eb3 ~@3, ~ c6@5 d5@2 [c5,ab5]@4 bb4@4 g4@8 ~@8, ~@17 g5@7 [eb5,f5]@4 [eb5,g5]@4", // Ab Fm Ebsus2 Eb
  N: "~@7 g6 ~ f6@3 ~ eb6@3 ~@4 c5@4 ~ bb5@3 ~ c6@3, [bb3,f5] f4 [bb4,f5] [f4,eb5] [f3,c5] ~@3, ~ f6@5 g5@2 ~@9 c6@7 [bb4,f5]@4 c5@4", // Bb5 F7 F5 Bb5
  O: "~@4 eb5@4 ~ f6@3 ~ g6@3 ~@4 f4@4 ~ eb6@3 ~ c6@3, [ab2,eb5] ~@3 bb2 ~@3, ~ eb6@7 [f5,ab5]@4 [g5,c6]@4 f5@8 [bb4,eb5]@4 [f4,c5]@4, ~@17 f6@7 ~@8", // Ab5 Fm C5 Eb5 F5
  P: "~@3 c2 eb2@2 f2@2 [c1,c2]@3 c2 eb2@2 f2@2, eb5, [c1,c2]@3 ~@13, ~ eb6@31", // C
  Q: "~@3 c2 eb2@2 f2@2 [c1,c2]@3 c2 eb2@2 f2@2, c4, [c1,c2]@3 c5@29, ~ eb4@31, ~ g4@15", // C
  R: "[c1,c2]@3 c2 eb2@2 f2@2 [c1,c2]@3 c2 eb2@2 f2@2", // C
  S: "[c1,c2,g3,c4,eb4]@3 c2 eb2@2 f2@2 [c1,c2,g3,c4,eb4]@2 [g3,c4,eb4] [c2,g3,c4,eb4] eb2@2 f2@2, ~ [g3,c4,eb4] ~ [g3,c4,eb4]", // Cm
  T: "[c1,c2,eb4]@2 [c1,c2] c2 [eb2,eb4]@2 [f2,c4,eb4,g4]@2 [c1,c2,eb4]@2 [c1,c2,c4,eb4,g4] [c2,c4,eb4,g4] [eb2,eb4]@2 [f2,c4,eb4,g4]@2, ~ [c4,eb4,g4] ~@6", // Cm C Eb Cm Eb Cm
  U: "[c1,c2,g4]@2 [c1,c2] c2 [eb2,c5]@2 [f2,bb4,d5,f5]@2 [c1,c2,eb5]@2 [c1,c2,c4,eb4,g4] [c2,c4,eb4,g4] [eb2,eb3,ab4,c5,eb5]@2 [f2,f3,f5,bb5,d6]@2, ~ [eb4,g4,c5] ~@6", // C5 C Cm Bb Cm Ab Bb Cm
  V: "[c2,c3,eb5,g5,c6]@2 ~ [eb5,g5,c6] [c4,g5,c6,eb6]@2 [g3,bb5,d6,f6]@2 ~@3 [eb5,ab5,c6] [ab3,ab5,c6,eb6]@2 [eb3,bb5,d6,f6]@2, ~ g3 ~@2 [ab1,ab2] eb3 ~@2, ~@9 [eb5,ab5,c6]@2 ~@5", // Cm Gm7 Ab Bb Ab
  W: "[eb1,eb2,bb5,eb6,g6]@2 [bb2,bb5,eb6,g6]@2 [bb5,eb6,g6] [bb5,d6,f6] [g5,bb5,eb6] [bb5,eb6,g6] [bb0,bb1,bb5,d6,f6]@2 [g5,bb5,eb6] ~ [bb1,bb2]@2 [f2,bb5,eb6,g6]@2, ~@2 [eb2,bb2,eb3] bb2 ~ f2 ~@2, ~@11 [bb5,d6,f6]@3 ~@2", // Eb Bb Eb Bb Eb Bb Eb Eb5 …
  X: "~@3 [eb5,g5,c6] [c4,g5,c6,eb6]@2 [g3,bb5,d6,f6]@2 ~@3 [eb5,g5,c6] [ab3,ab5,c6,eb6]@2 [eb3,eb6,g6,c7]@2, [c2,c3] g3 ~@2 [ab1,ab2] eb3 ~@2, ~ [eb5,g5,c6]@2 ~@6 [eb5,g5,c6]@2 ~@5", // Cm Gm7 Cm Ab Cm C Ab Cm
  Y: "[eb1,eb2,eb6,g6,bb6]@2 [bb2,bb5,eb6,g6]@2 [bb5,eb6,g6] [bb5,d6,f6] [g5,bb5,eb6] [bb5,eb6,g6] [bb0,bb1,d6,f6,bb6]@2 [bb5,eb6,g6] ~ [bb1,bb2]@2 [f2,bb5,eb6,g6]@2, ~@2 [eb2,bb2,eb3] bb2 ~ f2 ~@2, ~@11 [bb5,d6,f6]@3 ~@2", // Eb Bb Eb Bb Eb Bb Eb Eb5 …
  Z: "~@3 [eb5,g5,c6] [c4,g5,c6,eb6]@2 [g3,bb5,d6,f6]@2 ~@3 [eb5,ab5,c6] [ab3,ab5,c6,eb6]@2 [eb3,eb6,g6,c7]@2, [c2,c3] g3 ~@2 [ab1,ab2] eb3 ~@2, ~ [eb5,g5,c6]@2 ~@6 [eb5,ab5,c6]@2 ~@5", // Cm Gm7 Ab Cm C Ab Cm Ab
  AA: "[eb1,eb2,eb6,g6,bb6]@2 [bb2,bb5,eb6,g6]@2 [bb5,eb6,g6] [bb5,d6,f6] [g5,bb5,eb6] [bb5,eb6,g6] [bb1,bb2,d6,f6,bb6]@2 [bb5,eb6,g6] ~ [bb2,bb3]@2 [f3,g5,bb5,eb6]@2, ~@2 [eb2,bb2,eb3] bb2 ~ f3 ~@2, ~@11 [bb5,d6,f6]@3 ~@2", // Eb Bb Eb Bb Eb Bb Eb Eb5 …
  AB: "~@2 eb4@2 c5 d5 eb5 f5 ~@2 c4@2 c5 d5 eb5 f5, g4@2 g4 ~ ab4@2 eb4 ~, c4 ~@3 ab3 ~@3, ~ c5@7 ~@4 c5@4 ~ c5@7 ~@4 ab4@4",
  AC: "[eb4,bb4,g5]@2 [g4,bb4,g5]@2 g5 f5 ~ g5 [bb3,bb4,f5]@2 [bb4,eb5] [bb4,f5] [bb4,g5] [bb4,f5] [bb4,g5]@2, ~@2 bb4 eb5 ~ d4 f4 ~", // Eb Gm Bb5 Eb5 Bb5 Eb Bb5 Eb
  AD: "~@4 eb4@4 c5@2 d5@2 eb5@2 f5@2 ~@4 c4@4 c5@2 d5@2 eb5@2 ~ c6, g4@4 g4@2 ~@2 ab4@4 eb4@2 ~ c5, c4 ~@3 ab3 ~@3, ~ c5@7 ~@4 c5@4 ~ c5@7 ~@4 ab4@4",
  AE: "~ bb5@3 ~ g5@3 g5@2 f5@2 ~@2 f5@2 [bb3,bb4,bb5]@4 g5@2 f4@2 f4@4 ~ eb5@3, [eb4,bb4] g4 bb4 eb5 ~ d4 ~ [eb4,bb4], ~@22 f5@5 ~@5", // Bb Eb5
  AF: "f6 eb6 d6 ~ [c4,eb4,g4]@4 c6@2 d6@2 eb6@2 f6@2 ~@4 [ab3,c4,eb4]@4 c6@2 d6@2 eb6@2 f6@2, g5 ~ ab5 ~, c3 ~ c3 [c4,eb4,g4] ab2 ~ ab2 [ab3,c4,eb4], ~ c6@7 ~@9 c6@7 ~@8", // Cm Ab Cm Ab
  AG: "~ g6@3 [eb4,g4,bb4,bb5,g6]@4 [bb5,g6]@2 f6@2 eb6@2 g6@2 ~ f6@3 [bb5,eb6]@2 [bb5,f6]@2 [bb5,g6]@2 [bb5,f6]@2 [bb3,d4,f4,bb5,g6]@4, [eb3,bb5] ~ eb3 [eb4,g4,bb4] [bb2,bb5] [bb3,d4,f4] bb2 ~", // Eb Eb5 Bb5 Eb Bb5 Gm7 Eb5 Eb …
  AH: "f6 eb6 d6 ~ [c4,eb4,g4]@4 c6@2 d6@2 eb6@2 f6@2 ~@4 [ab3,c4,eb4]@4 c6@2 d6@2 eb6@2 ~ c7, g5 ~ ab5 ~, c3 ~ c3 [c4,eb4,g4] ab2 ~ ab2 [ab3,c4,eb4], ~ c6@7 ~@9 c6@7 ~@6 c6@2", // Cm Ab Cm Ab
  AI: "~ bb6@3 ~ g6@3 ~ g6 f6@2 eb6@2 f6@2 ~@3 bb6@5 g5@4 bb5@4, [eb3,bb5] [eb4,g4,bb4,g5] eb3 [eb4,g4,bb4] [bb1,bb2,bb5]@2 ~@2, ~@8 g5@2 ~@7 d6@7 ~@8, ~@9 f6@3 ~@4", // Eb5 Eb Bb
  AJ: "~@2 eb4@2 eb6 c6 [bb4,bb5]@2 eb3@2 bb3@2 [eb4,d6]@2 g5 eb5, eb5@2 ab4 ~@4 g4, ab3 ~@7, ~ ab5@7 ~@8 g5@8 ~@8, ~ c6@3 ~@12", // Bb Ebmaj7
  AK: "bb3 f4 [bb4,f6] [f4,c6] ab3 eb4 [ab4,g5] [eb4,c5], f5 ~ c5 ~", // Bb5 F5 Abmaj7 Cm
  AL: "[c3,c4]@2 g4@2 [c5,c6]@2 [g4,g5]@2 ~@2 eb4@2 [ab4,eb6]@2 c6 eb5, eb5@2 ~@2 c5@2 ~ eb4, ~@4 [ab2,ab3] ~@3, ~@17 ab5@7 ~@8", // C G Ab5 Ab
  AM: "[bb2,bb3,f5]@4 [f3,d6]@4 [bb3,f6]@4 [c4,bb6]@4 ~ d7@15, ~ bb6, ~@2 [bb1,bb2] ~", // Bb5 Dm Bb5 C7 Bb
  AN: "ab5 eb6 ab5 eb6 eb5 bb5 eb5 bb5", AO: "bb4 f5 bb4 f5 f4 c5 f4 c5", AP: "ab4 eb5 ab4 eb5 bb4 f5 bb4 f5",
  AQ: "c5 g5 c6 eb6 g6 c7 g6 eb6",
  AR: "[g4,c5] [ab4,d5] [g4,c5]@4 c5@2 eb5@4 f5@4 [ab4,c5] [bb4,d5] [ab4,c5]@2 c5@2 d5@2 eb5@2 f5@2 g5@2 ab5@2", // C5 Abdim C5 Ab Bb Ab
  AS: "[bb4,g5] [c5,ab5] [bb4,g5]@4 [bb4,g5]@2 [bb4,g5]@2 f5@2 eb5@2 g5@2 [bb4,f5] [c5,g5] [bb4,f5]@2 [bb4,eb5]@2 [bb4,f5]@6 [bb4,g5]@4", // Eb Fm Eb Bb5 C5 Bb5 Eb5 Bb5 …
  AT: "~@2 [g4,c5] [ab4,d5] [g4,c5]@2 [g4,c5]@2 eb5@4 f5@4 [ab4,c5] [bb4,d5] [ab4,c5]@2 ab5@2 bb5@2 c6@2 d6@2 eb6@2 f6@2", // C5 Abdim C5 Ab Bb Ab
  AU: "[bb5,eb6] [c6,f6] [bb5,eb6]@2 g5@4 g5@2 f5@2 eb5@2 f5@2 [bb5,d6] [bb5,c6,d6,eb6] c6@2 bb5@2 ab5@4 g5@2 f5@4", // Eb5 F5 Eb5 Bb Cm7
  AV: "[c5,eb5] [d5,f5] [c5,eb5]@4 eb5@2 d5@4 c5@4 [c5,eb5] [d5,f5] [c5,eb5]@2 ab6@2 g6@2 f6@2 eb6@2 d6@2 c6@2", // Cm Dm Cm Dm Cm
  AW: "[g5,bb5] [g5,ab5,bb5,c6] f6@2 eb6@2 d6@2 c6@2 bb5@2 ab5@2 g5@2 [bb4,f5] [c5,g5] [bb4,f5]@2 [bb4,eb5]@2 [bb4,f5]@6 [bb4,d5]@4", // Gm C7 Bb5 C5 Bb5 Eb5 Bb5 Bb
  AX: "[c5,eb5] [d5,f5] [c5,eb5]@4 [c5,eb5]@2 f5@4 g5@4 [eb5,ab5] [f5,bb5] [eb5,ab5]@2 c6@2 d6@2 eb6@2 f6@2 g6@2 ab6@2", // Cm Dm Cm Ab5 Bb5 Ab5
  AY: "[eb6,g6] [f6,ab6] [eb6,g6]@2 ab6@2 f6@2 eb6@2 d6@2 c6@2 d6@2 [f6,bb6] [f6,g6,bb6,c7] f6@2 eb6@2 d6@4 c6@2 bb5@4", // Eb Fm Eb Bb5 Fsus4
  AZ: "[eb5,g5,c6]@3 [eb5,g5,c6] [g5,c6,eb6]@2 [bb5,d6,f6]@2 ~ [eb5,ab5,c6]@2 [eb5,ab5,c6] [ab5,c6,eb6]@2 [bb5,d6,f6]@2", // Cm Bb Ab Bb
  BA: "[bb5,eb6,g6]@2 [bb5,eb6,g6]@2 [bb5,eb6,g6] [bb5,d6,f6] [g5,bb5,eb6] [bb5,eb6,g6] [bb5,d6,f6]@2 [g5,bb5,eb6] [bb5,d6,f6]@3 [bb5,eb6,g6]@2", // Eb Bb Eb Bb Eb Bb Eb
  BB: "~ [eb5,g5,c6]@2 [eb5,g5,c6] [g5,c6,eb6]@2 [bb5,d6,f6]@2 ~ [eb5,ab5,c6]@2 [eb5,ab5,c6] [ab5,c6,eb6]@2 [eb6,g6,c7]@2", // Cm Bb Ab Cm
  BC: "[eb6,g6,bb6]@2 [bb5,eb6,g6]@2 [bb5,eb6,g6] [bb5,d6,f6] [g5,bb5,eb6] [bb5,eb6,g6] [d6,f6,bb6]@2 [bb5,eb6,g6] [bb5,d6,f6]@3 [g5,bb5,eb6]@2", // Eb Bb Eb Bb Eb Bb Eb
  BD: "[eb6,g6,bb6]@2 [bb5,eb6,g6]@2 [bb5,eb6,g6] [bb5,d6,f6] [g5,bb5,eb6] [bb5,eb6,g6] [d6,f6,bb6]@4 [bb4,eb5,g5]@2 [eb5,g5,bb5]@2", // Eb Bb Eb Bb Eb
  BE: "[eb5,ab5,c6]@2 [eb5,ab5,c6] [eb5,g5,bb5] [bb4,eb5,g5]@2 [bb4,d5,f5] [g4,bb4,eb5]", // Ab Eb Bb Eb
  BF: "[bb4,d5,f5]@2 [bb4,d5,f5] [ab4,c5,eb5] [eb4,ab4,c5]@2 [eb4,g4,bb4] [eb4,ab4,c5]", // Bb Ab Eb Ab
  BG: "[g4,c5,eb5]@2 [ab4,c5,f5] [c5,eb5,g5] [c5,eb5,ab5]@2 [c5,eb5,g5] [ab4,c5,eb5]", // Cm Fm Cm Ab Cm Ab
  BH: "[bb4,d5,f5] [d4,f4] [f4,bb4] [ab4,c5] [bb4,d5] [d5,f5] [d5,g5] [g5,bb5]", // Bb Dm Bb5 Ab Bb Dm G5 Gm
  BI: "[ab3,ab5,c6]@2 ~ [ab5,d6] [ab4,ab5,c6]@2 [bb4,g5,bb5]@2 eb3@2 bb3@2 [eb4,d5,f5]@2 [g4,bb4,eb5]@2, ~ eb4 ~@2 [eb5,g5]@2 ~@2", // Ab Abdim Ab Eb Dm Eb
  BJ: "[bb2,d5,f5]@2 ~ [d5,g5] [bb3,d5,f5]@2 [f3,bb4,eb5]@2 [ab4,c5]@4 bb4@2 [ab4,c5]@2, ~ f3 ~@2 f2 ~@3", // Bb G5 Bb Ebsus2 Ab
  BK: "[c5,eb5]@2 [c5,f5] [eb5,g5] bb2 f3 [bb3,bb4,eb5] [f3,ab4,c5], ab2 ~@3 [d5,f5]@2 ~@2", // Cm F5 Eb Eb5 Fm Dm
  BL: "c3 g3 c4 eb4 g4 c5 eb5 g5, [c5,eb5] ~@3", BM: "c5@4 eb5@4 g5@4 c6@4 eb6@15 ~",
  BN: "[~@4 c4@8 eb4@8 ~@4 [c3,g3]@4 c4@27 ~ eb4@4 f4@4, ~@10 f4@4 [c3,eb3,ab3]@17 ~]/2", // C5 Ab
  BO: "g4 g4@2 g4 [f3,bb3,d4,f4]@2 [eb3,g3,bb3,eb4]@2, [eb3,g3,bb3] ~", // Bb Eb
  BP: "[bb2,d3,f3,bb3,f4]@15 ~@4 d5@13, ~ [bb1,d2,f2,bb2,d4], ~@17 f4@15, ~@9 bb4@7", // Bb
  BQ: "[eb4,g4,c5,eb5]@8 [g4,bb4,d5,g5]@8 [ab1,c2,eb2,ab2]@15 ~, [g1,bb1,eb2,g2]@15 ~ [c5,eb5,ab5,c6]@8 ~@8", // Cm Gm Ab Eb Ab
  BR: "~@2 [eb5,g5,bb5] ~ [d2,d3] d4 [eb2,eb3] d4 eb5 eb4 g4 c5 eb5 g5 bb5 eb6, ~ [bb1,bb2] [f4,d5,f5,bb5] [g4,d5,g5,bb5] [c2,c3] ~@3", // Eb D Eb Bb Gm C
  BS: "c7 g6 eb6 c6 g5 eb5 c5 g4 ab6 eb6 c6 ab5 eb5 c5 ab4 eb4, [c2,c3]@15 ~ [ab1,ab2]@15 ~", // C Ab
  BT: "eb6 bb5 g5 eb5 bb4 g4 eb4 bb3 bb5 f5 d5 bb4 f4 d4 bb3 f3, [eb2,bb2,eb3]!2 [bb1,bb2]!2", // Eb5 Bb
  BU: "c4 eb4 g4 c5 eb5 g5 c6 eb6 ab3 c4 eb4 ab4 c5 eb5 ab5 c6, [c2,c3]@15 ~ [ab1,ab2]@15 ~", // C Ab
  BV: "eb4 g4 bb4 eb5 g5 bb5 eb6 g6 bb3 d4 f4 bb4 d5 f5 bb5 d6, [eb2,bb2,eb3]!2 [bb1,bb2]!2", // Eb5 Bb
  BW: "c5 eb5 g5 c6 eb6 c6 g5 eb5 ab4 c5 eb5 ab5 c6 ab5 eb5 c5, [c2,c3] g3 c4 g3 [ab1,ab2] eb3 ab3 eb3", // C Ab
  BX: "eb5 g5 bb5 eb6 g6 eb6 bb5 g5 bb4 d5 f5 bb5 d6 bb5 f5 d5, [eb1,eb2] bb2 [eb2,bb2,eb3] bb2 [bb0,bb1] f2 [bb1,bb2] f2", // Eb Eb5 Bb
  BY: "c4 d4 eb4 f4 g4 ab4 bb4 c5 d5 eb5 f5 g5 ab5 bb5 c6 d6 eb6 d6 c6 bb5 ab5 g5 f5 eb5 d5 c5 bb4 ab4 g4 f4 eb4 d4, [c2,c3] g3 c4 g3 [ab1,ab2] eb3 ab3 eb3", // C Ab
  BZ: "[eb1,eb2,g3,bb3,eb4]@2 ~ [ab3,c4,f4] [eb2,bb2,eb3,bb3,eb4,g4]@2 [bb2,d4,g4,bb4]@2 ~@3 [bb3,d4,f4] [bb1,bb2,bb3,eb4,g4]@2 [f2,d4,f4,bb4]@2, ~ bb2 ~@2 [bb0,bb1] f2 ~@2, ~@9 [bb3,d4,f4]@2 ~@5", // Eb Fm Eb Gm Bb Eb Bb
  CA: "[c2,c3,eb4,g4,c5]@2 ~ [eb4,g4,c5] [c4,g4,c5,eb5]@2 [g3,c5,eb5,g5]@2 ~@3 [c4,eb4,ab4] [ab3,eb4,ab4,c5]@2 [ab4,c5,eb5] [bb4,d5,f5], ~ g3 ~@2 [ab1,ab2] eb3 ~ eb3, ~@9 [c4,eb4,ab4]@2 ~@5", // Cm Ab Bb Ab
  CB: "[eb1,eb2,d5,g5,bb5]@2 [bb2,d5,g5,bb5]@2 [d5,g5,bb5] [d5,f5,ab5] [bb4,d5,g5] [d5,g5,bb5] [bb0,bb1,bb4,d5,f5]@2 [bb4,eb5,g5] ~ [bb1,bb2]@2 [f2,d5,g5,bb5]@2, ~@2 [eb2,bb2,eb3] bb2 ~ f2 ~@2, ~@11 [bb4,d5,f5]@3 ~@2", // Ebmaj7 Gm Ddim Gm Bb Eb Bb Gm7 …
  CC: "[c2,c3,g4,c5,eb5]@2 ~ [g4,c5,eb5] [c4,f4,ab4,d5]@2 [g3,eb4,g4,c5]@2 ~@3 [eb4,ab4,c5] [ab3,d4,f4,bb4]@2 [eb3,ab4,c5,eb5]@2, ~ g3 ~@2 [ab1,ab2] eb3 ~@2, ~@9 [eb4,ab4,c5]@2 ~@5", // Cm Dm7b5 Cm Ab Bb7 Ab
  CD: "[eb1,eb2,bb4,eb5,g5]@2 [bb2,bb4,eb5,g5]@2 [bb4,eb5,g5] [bb4,d5,f5] [g4,bb4,eb5] [bb4,eb5,g5] [bb0,bb1,bb4,d5,f5]@2 [g4,bb4,eb5] ~ [bb1,bb2]@2 [f2,g4,bb4,eb5]@2, ~@2 [eb2,bb2,eb3] bb2 ~ f2 ~@2, ~@11 [bb4,d5,f5]@3 ~@2", // Eb Bb Eb Bb Eb Bb Eb Eb5 …
  CE: "~@3 [eb4,g4,c5] [c4,g4,c5,eb5]@2 [g3,bb4,d5,f5]@2 ~@3 [eb4,ab4,c5] [ab3,ab4,c5,eb5]@2 [eb3,eb5,g5,c6]@2, [c2,c3] g3 ~@2 [ab1,ab2] eb3 ~@2, ~ [eb4,g4,c5]@2 ~@6 [eb4,ab4,c5]@2 ~@5", // Cm Gm7 Ab Cm C Ab Cm Ab
  CF: "[eb1,eb2,eb5,g5,bb5]@2 [bb2,bb4,eb5,g5]@2 [bb4,eb5,g5] [bb4,d5,f5] [g4,c5,eb5] [bb4,eb5,g5] [bb0,bb1,d5,f5,bb5]@2 [bb4,eb5,g5] ~ [bb1,bb2]@2 [f2,eb4,g4,bb4]@2, ~@2 [eb2,bb2,eb3] bb2 ~ f2 ~@2, ~@11 [bb4,d5,f5]@3 ~@2", // Eb Bb Cm Eb Bb Eb Bb Eb …
  CG: "[eb1,eb2,eb6,g6,bb6]@2 [bb2,bb5,eb6,g6]@2 [bb5,eb6,g6] [bb5,d6,f6] [g5,bb5,eb6] [bb5,eb6,g6] [bb1,bb2]@2 f3@2 g5 bb4 bb5 bb4, ~@2 [eb2,bb2,eb3] bb2 [d6,f6,bb6]@2 [bb2,bb3] f3", // Eb Bb Eb Bb Eb5 Bb
  CH: "c6 eb5 ab5 eb5 c6 eb5 bb5 eb5 g5 bb4 eb5 bb4 f5 bb4 eb5 bb4, ab3 eb4 ab4 eb4 eb3 bb3 eb4 bb3",
  CI: "f5 bb4 d5 bb4 f5 bb4 eb5 bb4 c5 eb4 ab4 eb4 bb4 eb4 c5 eb4, bb3 f4 bb3 f4 ab2 eb3 ab3 eb3",
  CJ: "eb5 g4 c5 g4 f5 g4 g5 g4 ab5 ab4 c5 ab4 g5 ab4 eb5 ab4, c3 g3 c4 g3 ab2 eb3 ab3 eb3",
  CK: "f5 bb4 d5 bb4 bb5 d5 f5 d5 d6 f5 bb5 f5 [bb3,g4] bb3 bb4 bb3, bb2 f3 bb3 f3 bb2 f3 ~ f3", // Eb
  CL: "c5 eb4 ab4 d5 c5 eb4 bb4 eb4 g4 bb3 eb4 bb3 f4 bb3 eb4 bb3, ab2 eb3 ab3 eb3 eb2 bb2 eb3 bb2",
  CM: "f4 bb3 d4 g4 f4 bb3 eb4 bb3 c4 f3 ab3 f3 bb3 f3 c4 f3, bb1 f2 bb2 f2 f1 c2 f2 c2",
  CN: "eb4 ab3 c4 ab3 f4 ab3 g4 ab3 f4 bb3 d4 bb3 eb4 g3 c4 g3, ab1 eb2 ab2 eb2 bb1 f2 bb2 f2",
  CO: "eb4 g3 c4 g3 g4 c4 eb4 c4 c5 eb4 g4 eb4 eb5 g4 c5 g4, c2 g2 c3 g2 c2 g2 c3 g2",
  CP: "eb5 ab4 c5 ab4 f5 ab4 g5 ab4 f5 bb4 d5 bb4 eb5 g4 c5 g4, ab2 eb3 ab3 eb3 bb2 f3 bb3 f3",
  CQ: "eb5 g4 c5 g4 g5 c5 eb5 c5 c6 eb5 g5 eb5 eb6 g5 c6 g5, c3 g3 c4 g3 c3 g3 c4 g3",
  CR: "eb6@2 ab5@2 c6@2 ab5@2 ~ f6@2 ab5@2 g6@2 ab5@2 f6@2 bb5@2 f4@3 bb5@2 eb6@2 g5@2 [f4,c6]@2, ab3@4 eb4@4 ~ ab4@4 eb4@4 bb3@4 d6@2 ~@3 bb4@4 ~@2", // F5
  CS: "[g5@2 eb6@2 ~ g5@2 c6@2 g5@2 ~ g6@2 c6@2 ~ eb6@2 c6@2 c7@2 ~ eb6@2 g6@2 eb6@2 ~ eb7@2 g6@2 ~ c7@2 g6@2 eb7@3 ab6@3 c7@2 ab6@3 f7@3 ab6@2 g7@3 ab6@3 f7@2 bb6@3 d7@3 bb6@2 d6@3 g6@3 ab6@2 f6@3 c5@11 g5@10 c6@10 ~@2 eb6@4 ~ [d5,d6]@5 ~ eb6@20 c2@20 ~@2 eb2@10 f2@10 ~ [c1,eb1,g1,c2]@61 ~@5, ~@2 c4@5 g4@4 ~ c5@4 ~ g4@4 c4@5 g4@5 c5@5 g4@4 ab4@5 ~ eb5@5 ab5@5 eb5@5 ~ bb4@5 f5@5 bb5@5 ~ f5@5 eb7@41 ~@132, ~@115 eb5@5 ~@6 eb5@21 c1@41 ~@68]/8", // D Cm
})).s("gm_piano").gain(0.3)

// chords · piano · soft notes
const piano_soft = note(`<
  ~@46 A B C D E F G H ~@25 I@2 J K L ~@3 M N O P@2 Q R S T U V W X U@2 Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN AO
  AP@2 AQ@2 AR AS AT AU ~@37
>`.pickRestart({
  A: "[c5,c6] g6 c7 g6 [c5,ab5] eb6 ab6 eb6", B: "g5 bb5 [g5,bb5,eb6] bb5 f5!2 [bb4,bb5] f5",
  C: "[c5,c6] g6 c7 g6 [ab4,ab5] eb6 ab6 eb6", D: "bb5!2 [g5,bb5,eb6] bb5!2 f5 [bb4,bb5] f5",
  E: "[g4,c5]@3 c5 eb5@2 f5@2 c5@3 c5 eb5@2 f5@2", F: "g5@2 g5@2 g5 f5 eb5 g5 f5@2 eb5 f5@3 g5@2",
  G: "~ [g4,c5]@2 c5 eb5@2 f5@2 ~ c5@2 c5 eb5@2 c6@2", // C5
  H: "bb5@4 g5@4 g5@2 f5@2 eb5@2 g5@2 f5@6 g5@2 f5 [f5,g5] eb5@2 c5@2 bb4@2", // Fsus2
  I: "[c4@4 c4@8 eb4@8 ~@4 [c3,g3]@4 c4@27 ~ bb3@8, eb3@7 ~@9, [c3,g3]@12 ~@2 [c3,eb3,ab3]@17 ~, ~@5 f4@2 ~@9]/2", // C5 Ab
  J: "g4@2 g4 g4@3 eb4@2, [eb3,g3,bb3]@15 ~", K: "f4@8 eb4@4 f4@8 g4@11 ~, [bb2,d3,f3,bb3]@15 ~",
  L: "[c3,g3]@3 ~, eb3@7 ~, c4 ~@7", M: "~@24 bb5@3 eb6@2 f6@3",
  N: "bb4@3 eb5@2 f5@3 [bb4,g6]@3 ~@2 f5@3 bb4@3 eb5@2 f5@3 bb4@3 eb5@2 f5@3, g6@8 ~@3 eb5@3 ~@18, ~@3 g6@3 eb6@2", // Eb
  O: "bb4@3 eb5@2 f5@3 [bb4,eb6]@3 ~@2 f5@3 bb4@3 ~@2 f5@3 bb4@3 eb5@2 f5@3, f6@8 ~@3 eb5@3 ~@5 eb5@3 ~@10, ~@12 f6@8 g6@11 ~", // Eb5
  P: "[[c5,g6]@3 ~@2 g5@3 c5@3 ~@2 g5@3 c5@3 ~@2 g5@3 c5@3 ~@2 g5@3 f5@3 ~@2 c6@3 f5@3 ab5@2 c6@3 f5@3 ab5@2 c6@3 [c5,eb6]@3 ~@2 ab5@3, ~@3 eb5@3 ~@5 eb5@3 ~@5 eb5@3 ~@5 eb5@3 ~@5 ab5@3 ~@21 eb5@3 ~@2, ~@4 g6@8 f6@8 bb6@8 g6@8 f6@19 ~@5 f6@4]/2", // C5 Cm
  Q: "eb5@3 g5@2 bb5@3 eb5@3 g5@2 bb5@3 eb5@3 g5@2 bb5@3 ab5@3 c6@2 eb6@3, g6!3 ab6",
  R: "d5@3 f5@2 bb5@3 d6@3 bb5@2 f5@3 d5@3 g5@2 bb5@3 g5@3 bb5@2 d6@3, f6@15 ~ g6@8 bb6@8",
  S: "c7 ~ eb6@2 ab6@2 eb6@2 c7 ~ eb6@2 ab6@2 eb6@2", T: "g6 ~ bb5@2 eb6@2 bb5@2 g6 ~ bb5@2 eb6@2 bb5@2",
  U: "f6 ~ bb5@2 d6@2 bb5@2 f6 ~ bb5@2 d6@2 bb5@2", V: "c6 ~ eb5@2 ab5@2 eb5@2 c6 ~ eb5@2 ab5@2 eb5@2",
  W: "eb6 ~ g5@2 c6@2 g5@2 f6 ~ g5@2 g6@2 g5@2", X: "ab6 ~ ab5@2 c6@2 ab5@2 g6 ~ ab5@2 eb6@2 ab5@2",
  Y: "[ab5,c6,c7]@3 [ab4,c5,eb5]@2 [ab4,c5,eb5]@3 [c5,eb5,ab5]@3 [c5,eb5,ab5] [d6,d7] [eb5,ab5,c6]@3 [ab5,c6,c7]@3 [ab5,c6,eb6]@2 [ab5,c6,eb6]@3 [g5,bb5,bb6]@3 [bb5,eb6,g6]@2 [eb6,g6,bb6]@3, [ab1,ab2] eb4 ab4 eb4", // Ab D Ab Gm Eb Ab
  Z: "[eb5,g5,g6]@3 [eb4,g4,bb4]@2 [eb4,g4,bb4]@3 [g4,bb4,eb5]@3 [g4,bb4,eb5]@2 [bb4,eb5,g5]@3 [eb5,f5,f6]@3 [eb5,g5,bb5]@2 [eb5,g5,bb5]@3 [bb4,eb5,eb6]@3 [g5,bb5,eb6]@2 [bb5,eb6,g6]@3, [eb1,eb2] bb3 eb4 bb3", // Eb Ebsus2 Eb Eb5 Eb
  AA: "[d5,f5,f6]@3 [d4,f4,bb4]@2 [d4,f4,bb4]@3 [f4,bb4,d5]@3 [f4,bb4,d5] [g5,g6] [bb4,d5,f5]@3 [d5,f5,f6]@3 [d5,f5,bb5]@2 [d5,f5,bb5]@3 [bb4,eb5,eb6]@3 [eb5,g5,c6]@2 [bb5,eb6,g6]@3, [bb1,bb2] f3 bb3 f3", // Dm Bb G Bb Dm Bb Eb5 Cm …
  AB: "[ab4,c5,c6]@3 [ab3,c4,f4]@2 [ab3,c4,f4]@3 [c4,f4,ab4]@3 [c4,f4,ab4]@2 [f4,ab4,c5]@3 [ab4,bb4,bb5]@3 [ab4,c5,f5]@2 [ab4,c5,f5]@3 [ab4,c5,c6]@3 [c5,f5,ab5]@2 [f5,ab5,c6]@3, [f1,f2] c3 f3 c3", // Ab Fm Absus2 Fm Ab Fm F
  AC: "[c5,eb5,eb6]@3 [c4,eb4,ab4]@2 [c4,eb4,ab4]@3 [eb4,ab4,c5]@3 [eb4,ab4,c5]@2 [ab4,c5,eb5]@3 [eb5,f5,f6]@3 [bb4,eb5,g5]@2 [bb4,eb5,g5]@3 [eb5,g5,g6]@3 [f5,g5,bb5]@2 [g5,bb5,eb6]@3, [ab1,ab2] eb3 ab3 eb3", // Cm Ab Ebsus2 Eb Gm7 Eb Ab
  AD: "[d5,f5,f6]@3 [d4,f4,bb4]@2 [d4,f4,bb4]@3 [f4,bb4,d5]@3 [f4,bb4,d5]@2 [bb4,d5,f5]@3 [c5,eb5,eb6]@3 [eb5,g5,c6]@2 [eb5,g5,c6]@3 [ab4,c5,c6]@3 [g5,c6,eb6]@2 [c6,eb6,g6]@3, [bb1,bb2] f3 bb3 f3", // Dm Bb Cm Ab Cm Bb
  AE: "[c5,eb5,eb6]@3 [c4,eb4,g4] g5 [c4,eb4,g4]@3 [g4,c5,c6]@3 [eb4,g4,c5] eb6 [g4,c5,eb5]@3 [f4,bb4,g6]@3 [c5,eb5,g5] c6 [c5,eb5,g5]@3 [c5,eb5,eb6]@3 [g5,c6,eb6] g6 [g5,c6,eb6]@3, [c2,c3] g3 c4 g3", // Cm C5 Cm Gm7 Cm C
  AF: "[c1,c2,c6,eb6,g6]@15 ~ g5@8 bb5@8", AG: "[ab4,eb5]@2 ~ d6 [ab5,c6]@2 [eb5,bb5]@2, [ab5,c6]@11 ~@21, ~ eb5 ~@2",
  AH: "eb4 bb4 [eb5,f5] [bb4,eb5], g5@15 ~@17", AI: "bb3@2 ~ g5 [bb4,f5]@2 [f4,eb5]@2, f5@11 ~@21, ~ f4 ~@2",
  AJ: "f3 c4 [f4,bb4] [c4,c5], c5@15 ~@17", AK: "ab3 eb4 [ab4,f5] [eb4,g5], eb5@15 ~@17",
  AL: "bb3 f4 [bb4,eb5] [f4,c5], f5@15 ~@17", AM: "~ g3 c4 eb4, g4, c3 ~@3, ~ c5@31, ~ eb5@15",
  AN: "~ g4@15, c4, ~ eb4@31", AO: "c5@3 c5 eb5@2 f5@2 c5@3 c5 eb5@2 f5@2",
  AP: "c5@2 c4 c5 [c4,eb5]@2 f5@2 c5@2 c4 c5 [c4,eb5]@2 f5@2", // Cm
  AQ: "c5@2 c4 c5 [c5,eb5]@2 f5@2 c5@2 c4 c5 [c5,eb5]@2 f5@2", // Cm
  AR: "[c3,eb4,g4,c5]@2 c4 [c3,c5] [eb3,eb5]@2 [f3,f5]@2 [c3,eb4,g4,c5]@2 c4 [c3,c5] [eb3,eb5]@2 [f3,f5]@2", // Cm C Eb F Cm C Eb F
  AS: "[c3,eb4,g4,c5]@2 c4 [c4,c5] [eb4,eb5]@2 [f4,f5]@2 [c3,eb4,g4,c5]@2 c4 [c4,c5] [eb4,eb5]@2 [f4,f5]@2", // Cm C Eb F Cm C Eb F
  AT: "[c2,c3,eb4,g4,c5]@2 [eb4,g4] [c4,c5] [eb4,eb5]@2 [f4,f5]@2 [c2,c3,eb4,g4,c5]@2 [eb4,g4] [c4,c5] [eb4,eb5]@2 [f4,f5]@2", // Cm Eb C Eb F Cm Eb C …
  AU: "[bb4,d5,g5] ~@15, [g1,g2] ~@7", // Gm G
})).s("gm_piano").gain(0.15)

stack(piano, piano_soft)