Strudelify

Morceau symphonique Op.88

Alexandre GUILMANT

KeyG♭ majorTempo63 bpm
0:00/0:00
// Morceau symphonique Op.88 — Alexandre GUILMANT
// 63 bpm, 3/4, key Gb 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, 20/4 at bar 47, 4/4 at bar 54, 3/4 at bar 57, ...) are rendered on a constant 3/4 grid of one bar per cycle
// note: duplicate parts dropped: ch 3 "Easier" piano (copy of ch 2 "Piano" piano)
// note: Transcription provider: pdmx. https://musescore.com/score/5972228; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 137 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(63/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
const piano = note(`<
  ~@20 A B C D@2 E F@2 G@2 H I J K L@2 M N O@2 P@3 ~@13 Q@2 R S T@6 U@3 ~@2 V@2 ~ W@2 X@3 Y Z ~@5 AA@2 AB AC@5 ~@11 AD@2
  AE@2 AF ~@2 AG@6 AH AI AJ AK AL@3 AM AN@8 AO@3
>`.pickRestart({
  A: "~@4 [eb2,eb3,gb3,bb3,f4]@3 gb4 [db2,db3,b3,db4,f4,g4]@3 ab4", // Ebm Db7
  B: "[b1,b2,db4,f4,bb4]@3 b4 c5@2 db5@2 [d4,gb4,d5]@2 [eb4,gb4,eb5]@2, ~@16 [bb1,bb2,db4,gb4]@15 ~ [a1,a2]@15 ~", // Bbm D Ebm Gb A
  C: "[ab1,ab2,b3,db4,f4]@4 [eb4,gb4]@2 [f4,ab4]@2 [gb1,gb2,bb3,gb4,bb4]@2 [gb1,gb2,bb3] [ab1,ab2,b3], ~ [db1,db2,b3] ~", // Db7 Ebm Fm Gb Abm Db7
  D: "[[bb1,bb2,db4]@11 ~ [db2,db3,gb4]@4 [gb2,gb3,bb4]@15 ~ [gb4,gb5]@23 ~ [f4,f5]@8 [gb4,gb5]@8 [f4,f5]@8 [eb4,eb5]@8 [db4,db5]@8]/2", // Bbm Gb5 Gb F Gb F Eb Db
  E: "[b3,b4]@8 [bb3,bb4]@8 [ab2,ab3]@23 ~ [eb2,eb3]@8, ~@8 [b3,ab4,b4]@15 ~", // B Bb Ab Eb E
  F: "[[ab1,ab2,b3,ab4,b4]@15 ~ [gb1,gb2,b3,eb4,ab4]@15 ~ [f1,f2,ab4]@15 ~ [eb1,eb2,gb4]@15 ~ [db1,db2]@15 ~ [db2,db3]@15 ~, ~@16 b3@15 ~ [b3,f4]@15 ~]/2", // Abm Abm7 Fm Ebm Db Bdim
  G: "[[b3,db4,f4]@16 ~@8 [db2,db3]@8 ~@16 [bb3,db4]@15 ~ [gb3,bb4,bb5]@11 ~ [f3,ab4,ab5]@4 [eb3,gb4,gb5]@11 ~ [db3,f4,f5]@4, [gb1,gb2]@23 ~@9 [gb2,gb3]@30 ~@34, ~@8 [bb3,db4,gb4]@15 ~@25]/2", // Db7 Db Bbm Gb Fm Ebm Db Gb
  H: "[eb3,gb4,gb5]@11 ~ [db3,f4,f5]@4 [b2,eb4,eb5]@11 ~ [bb2,db4,db5]@4 [ab2,b3,ab4,b4]@12 eb2@4", // Ebm Db B Bbm Abm
  I: "[ab1,ab2,b3,eb4]@12 [gb1,gb2]@4 [f1,f2,b3,eb4,ab4]@15 ~ [ab1,ab2,b3,eb4,gb4]@15 ~", // Abm Gb Fm7b5 Abm7
  J: "[db2,db3,b3,db4,f4]@15 ~@17 [ab2,db3,f4,b4,db5]@15 ~", // Db7
  K: "~@16 [d2,a2,d3,gb4,a4,d5,gb5]@8 [gb2,a2,d3,gb3,d4,gb4,a4,d5]@15 ~ [a2,d3,f3,a3,d4,gb4,a4]@8", // D
  L: "[[gb2,a2,d3,f3,d4,gb4,a4,d5]@8 [a2,d3,f3,a3,d4,gb4,a4]@15 ~ [d3,f3,a3,d4,gb4]@8 ~@2 eb4@6 ~@8 [c4,eb4,gb4,ab4]@16 gb5@8 eb5@8 db5@8 c5@8, ~ gb5 ~, ~@4 [c3,gb4] ~@7, ~@33 [ab3,ab4]@7 ~@40 [gb3,ab3,eb4]@16]/2", // D Ab7 Cdim Ab Ab7
  M: "bb4@8 ~@16 ab4@8 [db3,ab3,db4,f4,ab4]@15 ~, [f3,ab3,db4]@16 [eb3,ab3,c4,gb4]@15 ~@17, ~@8 ab4@15 ~@25", // Db Ab7
  N: "[d3,ab3,b3,f4]@15 ~ [eb3,ab3,c4]@16 db4@8 d4@8, ~ gb4@2, ~@2 [db2,db3,bb3]", // Ddim Ab Gb
  O: "[[c2,c3,ab3,eb4,gb4]@15 ~ [gb2,gb3,ab3,eb4]@15 ~ [f2,f3]@15 ~ [eb2,eb3]@15 ~@9 g3@8 ab3@8 a3@8, ~@16 f4@23 ~@9, ~@32 c4@30 ~@2 [db2,db3,bb3]@15 ~ [c2,c3,eb4,f4]@15 ~, ~@48 f3@23 ~@25]/2", // Ab7 F Eb Gb F7
  P: "[[bb1,bb2,bb3,d4,f4]@30 ~@2 [bb2,gb3,bb3,db4,gb4]@30 ~@2 [bb3,d4,f4]@15 ~ [ab3,b3,d4]@15 ~ [c4,eb4]@8 c4@8 d4@8 eb4@8 ~@16, ~@32 [bb2,f3]@15 ~ [bb2,f3,a3]@15 ~@9, ~@80 f4@23 ~@41]/3", // Bb Gb Bb Abdim Cm Bb5 Bbmaj7
  Q: "[eb4@5 f4@2 g4@2 ~ ab4@2 bb4@2 ~ c5@2 d5@2 ~@5 [g2,g3,bb4]@2 ~@8 d5@5 f5@5 ~@9 ab4@5 [eb2,eb3]@5 [db2,db3]@5 [c2,c3,c4,eb4,ab4]@5 [bb1,bb2,db4,g4,bb4]@5 [ab1,ab2,eb4,ab4,c5]@4 [f1,f2,eb4,ab4,c5,eb5]@5 [bb1,bb2,bb3,eb4,f4,bb4]@9, [eb2,bb2,g3]@9 ~@10 eb5@15 ~@10 bb4@10 ~@4 [bb3,eb4,g4]@9 ~@29, ~@29 [f2,f3,f4,ab4]@10 ~@9 [d2,d3,bb3,f4]@10 ~@38]/2", // Gm Eb Db Ab Gdim Ab Fm7 Bbsus4 …
  R: "~ [bb2,f3,ab3,bb3,d4,f4,bb4]@9 ~@10 [eb2,bb2,eb3,g3,bb3,eb4]@9 ~@16 [g2,g3,bb3,eb4]@2 ~", // Bb7 Eb
  S: "~ [f3,ab3,bb3,ab4]@9 ~@11 [d3,bb3,f4,ab4]@9 [eb3,bb3,eb4,g4]@9 ~ [g1,g2,bb3,eb4]@8", // Bb7 Eb
  T: "[~@2 [ab1,ab2,ab3,c4,f4]@9 ~ [g3,bb3,eb4]@9 [f3,bb3,d4]@9 ~ ab2@10 [g2,bb3]@4 [gb2,a3]@5 [g2,bb3]@10 d2@10 ~@9 g3@5 bb3@5 eb4@5 f4@5 [b2,d4]@5 [bb2,db4]@4 [b2,d4]@9 ~ gb2@9 ~ g2@10 b3@4 [f3,d4]@5 [eb3,g4]@5 [d3,f4]@5 [c3,eb4]@5 [bb2,d4]@5 [a2,c4]@4 [g2,bb3]@5 [f2,a3]@5 [eb2,c4]@5 d2@5 d3@5 ~@5 d4@4 [f4,ab4]@5 [a2,eb4,g4]@2 ~ [b2,d4,f4]@2 c3@5 d3@5 eb3@5 [b2,d4]@4 [c3,c4,eb4]@5 [f2,a3,f4]@5 [bb2,c4,eb4]@10 ~@5 c3@2 d3@2 ~ eb3@2 f3@2 g3@2 ~ a3@2 [bb3,d4,f4,bb4]@9 ~@6, ~@6 [bb1,bb2]@9 ~@15 bb3@12 ~@17 d4@12 ~@22 d4@5 ~@46, ~@60 ab3@19 ~@39 c4@19 ~@78 [c4,eb4]@9 ~@30 [bb3,d4]@9 ~@25, ~@35 eb2@9 ~@54 g2@7 ~@39]/6", // Fm Eb Bb Gm Gbm Gm Bm Bbm …
  U: "[~@9 [d3,f4]@2 ~@3 [c3,eb4,f4]@9 ~@11 [a2,eb4,f4,c5]@9 [d4,f4,bb4]@5 c5@2 ~ d5@2 eb5@2 ~ f5@2 g5@2 a5@2 ~@6 [g3,bb3,e4]@2 ~@7 a5@5 c6@5 ~@10 eb5@5 ~@14 a4@5 bb4@5 g4@5 ~@13, ~@43 bb2@9 ~@11 bb5@15 ~@9 f5@10 ~@5 d5@15 ~@27, ~@72 [f3,c4,f4]@9 ~@11 [f3,c4,f4,c5]@10 ~@9 [gb3,a3,c4,d4]@10 [g3,bb3,d4]@10 ~@13]/3", // Dm F7 Bb Edim F5 D7 Gm
  V: "[~@46 eb2@9 [eb3,d4,eb4,gb4]@10 [c4,eb4,gb4,bb4]@10 g4@9 [eb3,f4]@9 ~@3, ~@65 eb2@19 ~@12, ~@75 [c4,eb4,a4]@19 ~@2]/2", // Ebm Cm7b5 Ebsus2 Adim
  W: "[~@37 g5@10 [eb3,c4,f4]@10 ~@5 bb4@5 ~@9 [eb2,eb3,c4,g4]@10 [d2,d3,d4,f4]@9 ~, ~@47 ab4@15 ~@34, ~@57 [d3,bb3,f4]@10 ~@29]/2", // F7 Cm Dm Bb
  X: "[[c2,c3,bb3,eb4,bb4]@28 ~ [f2,a3,f4,ab4]@9 [g2,bb3]@9 ~ [a2,c4]@9 ~ [d3,bb3,d4]@9 c3@10 [bb2,bb3]@10 [a2,c4]@9 [g2,bb3]@10 [f2,a3,c4,eb4]@10 [gb2,c4,d4]@10 [g2,bb3,eb4]@9 [a2,a3,c4,gb4]@9, ~@38 f4@28 ~@21 f4@19 ~@38, ~@19 eb4@9 ~@44]/3", // Cm7 F Gm Am Gm Bb Am Gm …
  Y: "~ [bb2,g3,d4,g4]@9 ~@20 [c3,c4,eb4,g4]@9 ~@9", Z: "~@21 [eb2,a3,f4]@9 [d2,bb3,f4,gb4]@10 ~@8",
  AA: "[~@14 [a3,d4]@5 e4@2 gb4@2 ~ g4@2 a4@2 b4@2 ~ db5@2 ~@5 [gb2,gb3,d4,a4]@2 ~@8 db5@5 e5@4 ~@10 g4@5 [d3,a3,d4,gb4]@9 ~@15, ~@14 [gb1,gb2]@9 ~@10 d5@10 [e2,e3,e4,g4]@9 ~@5 a4@10 ~@29, ~@31 [db3,a3,e4]@5 ~@12]/2", // D5 D Gb Em A
  AB: "[gb2,gb3,d4,a4]@2 ~@3 [e2,e3,g4]@9 ~@10 [db2,db3,a4]@9 ~ [d2,d3]@5 [gb2,gb3]@5 [a2,a3]@4, ~@34 d4@9 ~@5", // D Em Gbm D Gb A
  AC: "[~@10 [db2,c3]@5 [c2,c3]@5 [b1,b2]@5 ~@10 [b1,b2,d4,g4]@9 c4@5 e4@5 g4@5 ~@10 bb3@4 f2@3 ~ c3@3 f2@3 c3@3 f2@3 ~ c3@3 f2@3 c3@3 f2@3 c3@3 ~ f2@3 c3@3 f2@3 c3@2 ~@2 f2@3 c3@3 f2@3 c3@3 ~ f2@3 c3@3 f2@3 c3@3 f2@3 ~ c3@3 f2@3 c3@3 f2@3 ~ c3@3 f2@3 c3@3 eb5@4 ~@3 f2@3 bb2@3 c3@3 bb2@3 ~ a2@18 ~ bb3@19 ~@12, ~ [d2,d3]@9 ~@34 [c2,c3,g4]@9 ~@11 e2@9 f4@19 ~ e4@10 ~@9 e4@5 g4@5 c5@9 ~ [c5,f5]@19 [a4,e5]@10 ~@9 [g4,bb4]@10 c5@19 ~@41, ~@6 d4@9 [d4,g4]@9 ~@35 c4@7 g3@7 [a3,c4]@29 bb3@29 ~@39 f2@3 ~ c3@3 ~@63, ~@65 c3@9 ~@28 d4@10 ~@20 f4@29 [f4,bb4,d5]@10 ~@4 g5@5 [e4,g4]@10 ~@50]/5", // Dbmaj7 C B G D C5 F5 A5 …
  AD: "[[e2,b2,e3,g3,d4,e4]@15 ~ [a1,e2,e4,a4] [a2,db5] [a1,e2,e4,a4] [a2,db5] [a1,e2,e4,a4] [a2,db5] [a1,e2,e4,a4] [a2,db5] [a1,e2,e4,a4] [a2,db5] [a1,e2,e4,a4] [a2,db5] [a1,e2,e4,a4] [a2,db5] [a1,e2,e4,a4] [a2,db5] [a1,e2,e4,a4] [a2,db5] [a1,e2,e4,a4] [a2,db5] [a1,e2,e4,a4] [a2,db5] [a1,e2,e4,a4] [a2,db5] [a1,e2,e4,a4] [a2,db5] [a1,e2,e4,a4] [a2,db5] [a1,e2,e4,a4] [a2,db5] [a1,e2,e4,a4] [a2,db5], ~@32 db4@61 ~@3]/2", // Em7 A5 A A5 A A5 A A5 …
  AE: "[[e4,a4] db5 [e4,a4] db5 [e4,a4] db5 [e4,a4] db5 [e4,a4] db5 [e4,a4] db5 [e4,a4] db5 [e4,a4] db5 [e4,a4] db5 [e4,a4] db5 [e4,a4] db5 [e4,a4] db5 [e4,a4] db5 [e4,a4] db5 [e4,a4] db5 [e4,a4] db5 g1 g2 g1 g2 g1 g2 g1 g2 g1 g2 g1 g2 g1 g2 g1 g2, db4@61 ~@3 [db4,eb4,bb4,db5]@30 ~@2, [a1,e2,a2]@15 ~@17 [a1,a2]@15 ~ [ab1,ab2]@15 ~@33]/2", // A5 Eb7 A5 A Ab
  AF: "ab1 ab2 ab1 ab2 ab1 ab2 ab1 ab2 ab1 ab2 ~@14, [b3,eb4,b4]@5 ~@3, ab4@15 ~ gb4@15 ~@17", // B
  AG: "[~@16 [eb2,bb2,eb3,g3,bb3,eb4]@9 ~@16 [g3,bb3,eb4]@2 ~@3 [f2,bb2,f3,ab3,bb3,ab4]@9 ~@5 [bb1,bb2,d4,bb4]@5 [c2,c3,eb4]@5 [d2,d3,bb3,f4,ab4]@5 [eb2,eb3]@4 [d2,d3]@5 [eb2,eb3]@5 [c2,c3,c4,eb4,ab4]@5 [g1,g2,bb3,eb4,bb4]@5 [ab1,ab2,ab3,c4,eb4]@5 [bb1,bb2,g3,bb3]@5 [a1,a2,c4]@4 [bb1,bb2,f3,bb3,d4]@5 [ab1,ab2,c4]@5 [g1,g2,bb3]@5 [f1,f2,ab3,bb3,d4,ab4]@5 [eb1,eb2]@5 [bb1,bb2]@4 [eb2,eb3,g3,bb3]@9 ~ [d2,d3,ab3,bb3]@9 ~ [ab3,bb3,d4,gb4]@9 ~@5 [bb1,bb2]@5 [eb2,eb3]@5 [db2,db3]@5 [c2,c3]@5 [b1,b2]@5 [c2,c3,eb4]@9 [g1,g2,db4,eb4]@9 ~ [db4,f4,b4]@10 [c4,eb4,ab4]@9 [g1,g2]@9 ~ [a3,eb4,f4,a4]@10 ~@5 a4@4 ~@5 [f1,f2]@5 [bb1,bb2,ab3,d4,f4,bb4]@10, ~@75 [bb3,eb4,g4]@14 ~@15 eb4@10 ~@19 [g3,bb3,eb4,g4]@9 ~@20 [eb2,eb3]@10 [g3,bb3,eb4,g4]@9 [bb3,eb4,g4]@9 ~ [ab3,eb4,ab4]@9 ~@20 [ab1,ab2]@18 ~@11 [f1,f2]@9 ~ [f2,f3]@14 ~@15, ~@268 [a4,eb5,f5,a5]@9 ~@11]/6", // Eb Bb7 Bb Cm Bb7 Eb D Eb …
  AH: "~@5 bb4@5 ~@4 [bb1,bb2]@5 eb2@3 bb2@3 ~ eb2@3 bb2@3 eb2@3 bb2@3 ~ eb2@3 bb2@3 eb2@3, [bb2,bb3]@10 [ab4,d5,f5,bb5]@9 [eb4,g4,bb4,eb5]@18 ~@2 [eb4,g4,bb4,d5]@9", // Bb Bb7 Eb Ebmaj7
  AI: "bb2@3 ~ eb2@3 bb2@3 eb2@3 bb2@2 ~ eb2@3 ~ bb2@3 eb2@3 bb2@3 eb2@3 ~ bb2@3 eb2@3 bb2@3 eb2@3 ~ bb2@2, [eb4,ab4,c5]@9 ~ [f4,ab4,d5]@5 [eb4,f5]@5 [d4,ab4,bb4]@9 [eb4,g4,bb4]@18 ~", // Ab Ddim Ebsus2 Bb7 Eb
  AJ: "~ eb2@3 bb2@3 eb2@3 bb2@3 ~ eb2@3 bb2@3 eb2@3 bb2@2 ~@2 eb2@3 bb2@3 eb2@3 bb2@3 ~ [eb2,eb3,g4,bb4,eb5]@8, ~ [eb4,g4,b4]@9 [eb4,ab4,c5]@9 ~ [ab4,bb4]@9 ~@19, ~@20 f4@5 eb4@5 [d4,ab4,bb4]@9 ~@9", // Eb Ebaug Ab Absus2 Bb7
  AK: "~ [f2,f3,f4,ab4,d5]@9 ~ [g2,g3,eb4,bb4,db5]@9 ~ [ab2,ab3,eb4,ab4,c5]@9 [a2,a3,eb4,gb4,b4]@9 ~ [bb2,bb3,d4,f4,bb4]@8", // Ddim Eb7 Ab B7 Bb
  AL: "[~@2 [c3,c4]@5 [b2,b3]@4 [c3,c4]@9 ~@11 [f2,f3]@5 [e2,e3]@4 ~@5 [f4,f5]@5 [g4,g5]@5 [a4,a5]@5 [bb1,bb2,bb4,eb5,g5,bb5]@28 ~ [bb2,bb3,eb4,g4,bb4]@28 ~ bb1 bb2 bb1 ~ bb2 bb1 bb2 bb1 bb2 ~ bb1 bb2 bb1 bb2 bb1 ~ bb2 bb1 bb2 bb1 bb2 ~ bb1 bb2 bb1 bb2, ~@2 [eb4,f4,a4]@18 ~@11 [eb4,a4,c5,eb5]@14 ~@73 [f4,ab4,bb4,eb5]@10 [f4,ab4,bb4,d5]@10 ~@6, ~@40 [f2,f3]@9 ~@88 [eb4,g4,bb4,db5]@7]/3", // C B C F E F G A …
  AM: "~ bb1 bb2 bb1 bb2 bb1 ~ bb2 bb1 bb2 bb1 ~ bb2 bb1 bb2 bb1 bb2 ~ bb1 bb2 bb1 bb2 bb1 ~ bb2 bb1 bb2 bb1 bb2 ~ bb1 bb2 eb2@3 bb2@3 ~ eb2@3 bb2@3 eb2@3, ~@3 c5@19 ~@2 ab4@9 ~@15, ~@3 [e4,g4,bb4]@9 ~ [f4,ab4]@9 d4@10 [eb4,g4,bb4,eb5]@16, ~@25 bb4@7 ~@16, ~@13 f5@3 ~@8", // Edim Fm Eb
  AN: "[bb2@3 ~ eb2@3 bb2@3 eb2@3 bb2@3 eb2@2 ~@2 bb2@3 eb2@3 bb2@2 ~ eb2@3 ~ f2@3 bb2@3 f2@3 gb2@3 ~ db3@3 gb2@3 db3@3 gb2@3 db3@3 ~ gb2@3 db3@3 gb2@3 db3@3 ~ gb2@3 db3@3 gb2@3 db3@2 ~@2 gb2@3 db3@3 gb2@3 db3@3 [gb2,gb4,bb4]@9 ~ [ab1,ab2,b4]@9 ~ [bb1,bb2,gb4,db5]@9 ~ [b1,b2,gb4,b4]@9 [c2,c3,a4,d5]@9 ~ [db2,db3,ab4,db5]@9 ~ [d2,d3,f4,ab4,b4]@4 [eb2,eb3,gb4,bb4]@5 [f2,f3,f4,ab4]@5 [gb2,gb3,eb4,gb4]@5 [ab2,ab3,b3,f4]@5 [gb2,gb3,c4,eb4]@5 [bb3,d4]@5 bb3@2 c4@2 d4@2 ~ eb4@2 f4@2 ~ g4@2 ab4@2 ~ bb4@2 c5@2 d5@2 ~ eb5@5 f5@2 g5@2 ab5@2 ~ bb5@2 c6@2 ~ d6@2 eb6@2 ~ f6@2 g6@2 a6@2 ~ [bb1,bb2,eb6,g6,bb6]@5 ~@5 [bb2,eb3,g3,bb3,eb4,g4,bb4]@9 ~@10 [g1,bb2,bb3,d4]@5 [f3,f4]@5 [g3,g4]@4 [ab3,ab4]@5 [bb3,bb4]@5 ~@3 bb3@2 bb1 bb2 bb1 ~ bb2 bb1 bb2 bb1 bb2 ~ bb1 bb2 bb1 bb2 bb1 ~ bb2 bb1 bb2 bb1 ~ bb2 bb1 bb2 bb1 bb2 ~ bb1 bb2 bb1 bb2 bb1 ~ bb2 bb1 bb2 bb1 ~ bb2 bb1 bb2 bb1 bb2 ~ bb1 bb2 bb1 bb2 bb1 ~ bb2 bb1 bb2 bb1 bb2 ~ bb1 bb2 [eb2,bb3,eb4]@5 [f3,f4]@2 [g3,g4]@2 ~ [ab3,ab4]@2 [bb3,bb4]@2 ~ [c4,c5]@2 [d4,d5]@2 ~ [eb4,eb5]@2, ~@4 [eb4,g4,bb4,d5]@9 [ab4,c5]@9 ~@59 b4@9 ~@214 [ab3,eb4,f4]@28 ~ [ab3,bb3,d4,f4]@28 ~@23, ~@13 eb4@5 e4@5 [f4,ab4,d5]@5 [eb4,f5]@5 [d4,ab4,bb4]@9 [db4,e4,bb4]@18 ~@2 [d4,g4,bb4]@9 [eb4,gb4,b4]@9 ~ [f4,ab4]@5 [eb4,gb4]@5 [db4,f4,b4]@9 ~@88 [bb2,f3]@9 ~@10 [ab2,bb2,ab3]@5 ~@5 [g2,bb2,g3]@9 ~@10 [c2,c3]@5 ~@143]/8", // Gb Abm Gb B5 D7 Db5 Ddim Ebm …
  AO: "[~@2 [bb3,bb4]@2 ~@3 [eb4,eb5]@5 [d4,f5]@2 ~ [c4,g5]@2 [bb3,ab5]@2 [ab3,bb5]@2 ~ [g3,c6]@2 [f3,d6]@2 ~ [eb3,eb6]@2 ~@2 [bb2,bb5]@2 ~@3 [eb2,eb3,eb5,eb6]@18 ~@9 [eb3,bb3,eb4,g4,bb4,eb5,g5]@2 [eb3,bb3,eb4,g4,bb4,eb5,g5]@18 ~@9 [eb2,bb2,eb3,g3,bb3,eb4]@2 [eb2,bb2,eb3,g3,bb3,eb4]@28 ~@22]/3", // Bb Eb Dm C5 Bb7 Absus2 C5 Dm …
})).s("gm_piano").gain(0.4)

// chords · piano · soft notes
const piano_soft = note(`<
  A B@3 C@2 D@2 E@3 F G H@2 I J@4 K ~@21 L@2 M N@3 ~@5 O@3 ~@12 P@2 Q@5 ~@5 R S@4 T@2 ~@6 U@6 V@4 W@2 ~@4 X@2 Y@2 ~@24
>`.pickRestart({
  A: "[b2,b3] [a2,a3]@2", // B A
  B: "[[bb2,bb3]@8 [gb2,gb3]@8 [f2,f3]@12 [e2,e3]@8 [eb2,eb3]@4 [eb2,bb2,eb3,gb3,bb3]@15 ~ [ab2,d3,b3]@15 ~]/3", // Bb Gb F E Eb Ebm Abdim
  C: "[gb2@24 [f2,ab3]@8 [eb2,gb3]@16 [db2,f3]@15 ~ [b1,ab3]@24 [bb1,bb3]@8, bb3@32 eb4@15 ~]/2", // Fm Ebm Db E Bb
  D: "[ab1@8 gb2@8 f2@8 eb2@8 d2@15 ~@17 [ab3,bb3,f4]@15 ~ [f3,ab3,bb3,d4]@15 ~, [b3,eb4]@15 ~ [ab3,b3,e4]@15 ~@17, ~@8 d3@5 ~@3]/2", // Bb7 B E
  E: "[eb3@15 ~ db3@15 ~ [b2,eb4]@15 ~ [bb2,db4]@15 ~@33 b3@8 [g2,bb3]@8 [f2,a3,c4]@15 ~ [bb2,bb3,db4]@15 ~, [gb3,bb3,eb4]@15 ~ [gb3,gb4]@15 ~ c4@23 ~@17, ~@32 a2@19 ~@21]/3", // B Bbm Gm F Bbm Ebm Gb
  F: "[db2,f3]@15 ~ [eb2,g3]@15 ~ [f2,eb3,a3]@15 ~", // Db Eb F7
  G: "~ f4 g4 a4 ~ c3, bb1@2 [bb1,bb3,bb4], a3@15 ~ c4@16 ~@16, ~ f2@31 ~ f2@15, ~ eb3@15 db3@4 ~@4", // Bb
  H: "[[bb2,c4,c5]@8 [ab2,db4,db5]@8 [g2,eb4,bb4,eb5]@15 ~ [g2,bb3]@8 [f2,ab3]@8 [eb2,g3]@30 ~@2 ab3@8 bb3@8, ~@32 eb4@46 ~@2 [ab2,eb4]@15 ~]/2", // Bbsus2 Db5 Eb Gm Fm Eb Ab5
  I: "db4@8 e4@8 ~@8 ab4@8 [ab2,eb4]@15 ~, g4@23 ~@25, bb2@15 ~ [b2,eb4]@15 ~@17", // Ab5 B
  J: "[[d2,f4]@15 ~ [bb1,d4]@15 ~ [b1,eb4]@15 ~ [d2,f4]@15 ~ [eb2,bb3]@15 ~ [f2,ab3]@15 ~ [gb2,bb3]@15 ~@17 [ab1,ab2]@15 ~ gb3@16 [f3,ab3,bb3,d4]@32, [bb3,bb4]@61 ~@3 eb4@46 ~@18 [ab3,b3,eb4]@32 [bb1,bb2]@15 ~@17]/4", // Dm Bb B Dm Eb5 Fm Gb Ab …
  K: "[eb1,eb2,gb3,bb3,eb4]@3 eb4 ~@8", L: "[~@16 [bb1,bb2,f3,bb3,d4,f4]@15 ~ [e1,e2,gb3,bb3,db4,gb4]@15 ~]/2",
  M: "~ gb4@15 ~ gb4@15 ~ gb5@15, [eb1,eb2]@23 ~, [gb3,b3] [eb3,gb3,b3] [eb4,gb4,b4]", // Eb B5 B
  N: "[~@16 [f1,f2,c4,eb4,f4]@61 ~@3 [bb1,bb2,bb3,d4,f4]@30 ~@34]/3", // F7 Bb
  O: "[~@48 [f3,ab3,d4]@16 [ab3,d4,f4]@16 ~@2 c5@30 bb4@15 ~@17, ~@8 bb1@53 ~@11, ~@32 bb2@46 ~@2 [bb2,ab3,d4]@47 ~@17, ~@81 f4@46 ~@17]/3", // Ddim Bb7
  P: "[~@49 c5@5 d5@5 bb4@5 ~@9 [gb2,d3,c4,d4,a4]@5 ~@5 [bb2,f3,bb3,d4,g4]@5 ~@8, ~@35 f5@15 ~@46, ~@22 [a3,c4,eb4,f4]@5 [bb3,d4,f4]@5 ~@16]/2", // D7 Gm7 F7 Bb
  Q: "[~@6 [a2,f3,eb4,f4,eb5]@5 ~@5 [bb2,f3,d4,f4,bb4]@5 ~@15 [eb2,b3,eb4,gb4,b4]@9 [eb3,bb3,eb4,gb4,g4]@10 gb4@9 ~ [f4,a4]@4 gb4@5 f4@5 a4@5 [eb4,gb4]@18 ~@40 [d3,f4]@9 ~ [c3,eb4]@9 ~ [bb2,d4]@9 [a2,c4]@9 ~ [g2,bb3]@9 ~ [f2,a3]@9 [bb2,d4]@9 ~ [eb3,a3]@9 ~ [d3,bb3]@9 ~@11, ~@55 [eb2,c4,eb4]@18 ~@108 eb4@18 ~@41]/5", // F7 Bb B Eb F Ebm Dm Cm …
  R: "~@5 [db2,b3,f4,g4]", // Db7
  S: "[~@2 [c2,c4,eb4,ab4]@10 [b1,f2,eb4,a4]@9 bb1@3 f2@3 ~ bb1@3 f2@3 bb1@3 f2@3 ~ bb1@3 f2@3 bb1@3 f2@3 ~ bb1@3 f2@3 bb1@3 f2@2 ~ bb1@3 ~ f2@3 bb1@3 f2@3 bb1@3 ~ f2@3 bb1@3 f2@3 bb1@3 ~ f2@3 bb1@3 f2@3 bb1@3 f2@3 ~ bb1@3 f2@3 bb1@3 f2@2 ~@2 bb1@3 f2@3 bb1@3 f2@3 ~ gb1@3 db2@3 gb1@3 db2@3 gb1@3 ~ db2@3 gb1@3 db2@3 gb1@3 ~ db2@3 gb1@3 db2@3 [ab3,b3,f4]@4 ~@3 gb1@3 db2@3 gb1@3, ~@21 [bb3,d4,f4]@29 [bb3,eb4,g4]@10 [c4,eb4,a4]@5 [bb3,eb4,bb4]@5 [a3,eb4,f4]@9 [bb3,d4,f4]@28 ~ eb4@18 ~@12 gb4@19 f4@10 ~@9 gb1@3 ~ db2@3 ~@9, ~@21 bb4@19 ~ a4@10 ~@57 bb3@9 ~ c4@5 bb3@5 [a3,eb4,f4]@9 ~ [gb3,bb3,d4]@29 [g3,b3,eb4]@10 ~@4 [g3,b3,eb4,ab4]@5 [f3,b3,db4]@6]/4", // Ab B7 Fdim Bb Eb Adim Eb5 F7 …
  T: "[db2@3 ~ gb1@3 db2@3 gb1@3 db2@3 ~ gb1@3 db2@3 gb1@3 db2@3 ~ gb1@3 db2@3 gb1@3 db2@3 ab3@4 ~@3 gb1@3 db2@3 gb1@3 ~ db2@3 ~@34, ~@4 [gb3,bb3,db4]@28 ~ b3@14 gb3@5 [f3,b3,db4]@9 ~@35, ~@33 gb3@9 gb1@3 ~ db2@3 ~@47]/2", // Gb Db7
  U: "[~@7 c4@10 e2@9 ~@15 db3@5 d3@5 eb3@5 eb3@10 e3@9 [f3,d4,ab4]@9 ~ [d4,ab4]@10 ~@4 f3@5 gb3@5 g3@5 ab1@3 ab2@3 ab1@3 ~ ab2@3 ab1@3 ab2@3 ab1@3 ~ ab2@3 ab1@3 ab2@3 ab1@3 ~ ab2@3 ab1@3 ab2@3 ab1@3 ab2@3 ~ ab1@3 ab2@3 ab1@3 ab2@3 ~ ab1@3 ab2@3 ab1@3 ab2@3 ~ ab1@3 ab2@3 ab1@3 ab2@3 ab1@3 ~ ab2@3 ab1@3 ab2@2 ~ ab1@3 ~ ab2@3 ab1@3 ab2@3 ab1@3 ~ ab2@3 ab1@3 ab2@3 ab1@3 ab2@3 ~ ab1@3 ab2@2 ~ ab1@3 ab2@3 ~ ab1@3 ab2@3 ab1@3 ab2@3 ~@4 [ab2,gb3,c4,eb4,bb4]@9, ~@27 c3@15 ~@43 e3@15 ~@14 [ab3,db4,f4]@28 ~ [bb3,db4]@9 ~ [ab3,c4]@18 ~ [db4,f4,ab4]@29 [db4,gb4,bb4]@10 [db4,gb4,c5]@5 [db4,gb4,eb5]@5 [c4,gb4,ab4]@9 b3@19 ~@10 [gb3,c4,eb4,a4]@19 ~@10, ~@36 a3@9 ~@11 [db4,a4]@19 ~@20 [db4,a4]@9 ~@39 gb4@28 ~ db5@19 ~ c5@10 ~@28 [e4,b4]@10 e4@10 [e4,gb4]@5 [e4,ab4]@5 ~@16 ab1@12]/6", // Ddim Ab7 Db Bbm Ab Db Gb Ebm7 …
  V: "[[ab2,f3,ab3,db4,f4]@30 ~@2 [gb2,a3,c4]@30 ~@2 [f2,ab4]@24 [eb2,gb4]@8 [db2,f4]@16 [c2,eb4]@15 ~ [bb1,bb2,bb3,db4,gb4]@30 ~@2 [eb1,eb2,gb3,a3,db4,gb4]@30 ~@2, ~ ab3 ~]/4", // Db Gbdim Fm Ebm Db Cm Gb Ebm7b5
  W: "[[gb3,a3]@15 ~ ab3@15 ~ [eb2,eb3,gb3,ab3,c4,gb4]@30 ~@2 [ab2,db3,e3,g3,db4,e4]@30 ~@2, [ab1,ab2,db4,gb4]@5 ~@11]/2", // Gbm Ab7 Dbm Dbsus4
  X: "[~@10 ab1 ab2 ab1 ab2 ab1 ab2 b4@20 a4@8 bb4@4, ~ [g1,bb2,ab3,d4,f4]@2]/2", // Gm7
  Y: "[~@4 bb4@61 ~@31, [bb1,bb2,ab3]@2 ~, ~@2 d4@63 ~@31, ~@3 f4@62 ~@31]/2", // Bb7
})).s("gm_piano").gain(0.2)

stack(piano, piano_soft)