Strudelify

Trombone Sonata - Allegro vivace

L. Fauci

KeyF majorTempo130 bpm
0:00/0:00
// Trombone Sonata - Allegro vivace — L. Fauci
// 130 bpm, 4/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: sustain pedal (CC 64) lengthens the held notes
// note: Transcription provider: pdmx. https://musescore.com/score/4682086; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 189 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(130/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@2 B C D@5 E F@2 G H I ~@6 J@2 K@2 L@8 ~@14 M@2 ~@3 N O P Q R S T U V W X Y Z AA AB@2 ~@7 AC AD AC AD AE@2 AF AG AH
  AI@3 ~@14 AJ@2 ~@2 AK AL AM@3 ~@4 AN AO@7 AP@4 AQ AR@2 AS@2 AT@2 AU AV@2 ~@5 AW AX AY AZ BA BB BC@3 BD BE@2 BF@3 BG@3
  BH@3 BI@6 ~@19 BJ@2
>`.pickRestart({
  A: "[~@9 [d3,f3,a3,d4,d5,d6]@11 ~ [a4,a5]@9 [f4,f5]@3 [d2,f2,a2,d3,d4,d5]@6 ~@9, ~@21 [a2,db3,e3,g3]@11 ~@16]/2", // Dm A F Dm A7
  B: "[d4,d5]@3 [f4,f5]@3 [a4,a5]@3 [g2,g3]@3 [bb3,d4] ~@2 [bb3,d4] ~@2 [a4,a5]@3 [g4,g5]@3, ~@9 [bb4,bb5]@9 [bb3,d4] ~@2 [bb3,d4] ~@2", // D F A G Bb A G Bb
  C: "[f4,f5] [e4,e5] [g2,g3,d4,d5] [a2,a3,f4,f5]@2 [e2,e3] [db2,db3] [a1,a2], [bb3,d4] ~@2 [bb3,d4] ~@11 [e4,e5]@6 ~@3", // F E G5 Dm E Db A Bb …
  D: "[[db2,db3]@3 [e2,e3]@3 [f2,f3]@3 [g2,g3]@3 [bb3,d4] ~@2 [bb3,d4] ~@2 [bb3,d4] ~@2 [a1,a2]@3 [db3,e3] ~@2 [db3,e3] ~@2 [db4,db5]@3 [d2,d3]@3 [f3,a3] ~@2 [f3,a3] ~@2 [f3,a3] ~@2 [bb1,bb2]@3 [d3,f3] ~@2 [d3,f3] ~@2 [d4,d5]@3 [g2,g3]@3 [bb3,d4] ~@2 [bb3,d4] ~@2 [g4,g5]@3 [bb3,d4] ~@2 [bb3,d4] ~@2 [bb3,d4] ~@2 [f4,f5]@3 [g2,g3]@3 [bb3,d4] ~@2 [bb3,d4] ~@2 [g4,g5]@3 [e4,e5]@9 [f4,f5]@3 [g2,g3,bb4,bb5]@3 [d3,g4,g5]@3 [g2,g3,e4,e5]@3 [d3,g4,g5]@3 [g2,g3,bb4,bb5]@3, ~@9 [g4,g5]@11 ~ [e4,e5]@9 [db3,e3] ~@2 [a4,a5]@11 ~ [f4,f5]@9 [d3,f3] ~@2 [bb4,bb5]@9 [bb3,d4] ~@2 [e4,e5]@9 [bb3,d4] ~@2 [bb4,bb5]@9 [bb3,d4] ~@2 [bb3,d4]@11 ~@16]/5", // Db E F G Bb A Dbm Db …
  E: "[d3,g4,g5] [g2,g3,e4,e5] [d3,g4,g5] [a2,a3,bb4,bb5] [e3,a4,a5] [a2,a3,bb4,bb5] [e3,a4,a5] [a2,a3,bb4,bb5]", // G5 C G5 Bbmaj7 A5 Bbmaj7 A5 Bbmaj7
  F: "[[e3,a4,a5] [a2,a3,bb4,bb5] [e3,a4,a5] [a2,e3,a3,bb4,bb5] [a4,a5] [a2,e3,a3,g4,g5] [f4,f5] [a2,e3,a3] ~ [a2,db3,e3,a3,a4,db5,e5,a5]@2 ~@5, ~@7 [e4,e5]@2 ~@7]/2", // A5 Bbmaj7 A5 A A7 F A5 A …
  G: "[a1,a2]@3 [b1,b2]@3 [db2,db3]@3 ~@3 [f3,a3,d4] ~@2 [f3,a3,d4] ~@2 [f3,a3,d4] ~@2 [f3,a3,d4] ~@2, ~@3 [d2,d3]@2 ~@3", // A B Db Dm D
  H: "[f3,a3,d4] ~@2 [f3,a3,d4] ~@2 [a1,a2]@3 ~@3 [f3,a3,d4] ~@2 [f3,a3,d4] ~@2 [f3,a3,d4] ~@2 [f3,a3,d4] ~@2, ~@3 [d2,d3]@2 ~@3", // Dm A Dm D
  I: "[f3,a3,d4] ~@2 [f3,a3,d4] ~@2 [a1,a2]@3 ~@15", // Dm A
  J: "[~@9 [d2,d3,f3,a3,d4]@4 [d3,d4,f4,a4,d5] ~ [f4,a4,d5]@4 [d5,f5,a5,d6] ~ [d2,d3]@3 [c2,c3]@3 [bb1,bb2]@3 [a1,a2]@3 [g1,g2]@4 [g2,g3,g4,bb4,d5,g5] ~ [g2,g3,g4,bb4,d5,g5]@6 [a1,a2]@3, ~@5 [d3,d4]@2 [d5,f5,a5,d6]@2 ~@7]/2", // Dm D C Bb A G Gm A …
  K: "[~ [a2,a3,a4,db5,e5,a5] ~ [a2,a3,a4,db5,e5,a5]@6 [d2,d3,f3,a3,d4]@4 [d3,d4,f4,a4,d5] ~ [f4,a4,d5]@4 [d5,f5,a5,d6] ~ [d2,d3]@3 [c2,c3]@3 [bb1,bb2]@3 [a1,a2]@3 [g1,g2]@4 [g2,g3,g4,bb4,d5,g5] ~ [g2,g3,g4,bb4,d5,g5]@6 [a1,a2]@3, ~@5 [d3,d4]@2 [d5,f5,a5,d6]@2 ~@7]/2", // A Dm D C Bb A G Gm …
  L: "[~ [a2,a3,a4,db5,e5,a5] ~ [a2,a3,a4,db5,e5,a5]@6 ~@6 [d2,d3,f3,a3,d4]@4 [d2,d3,f3,a3,d4] ~ [d2,d3,f3,a3,d4]@6 ~@12 [d2,d3,f3,a3,d4]@4 [d2,d3,f3,a3,d4] ~ [d2,d3,f3,a3,d4]@6 ~@12 [d2,d3,d4,f4,a4,d5]@4 [d2,d3,d4,f4,a4,d5] ~ [d2,d3,d4,f4,a4,d5]@6 [d2,d3,d4,f4,a4,d5]@4 [d2,d3,d4,f4,a4,d5] ~ [c2,c3,c4,e4,g4,c5]@6 [c3,e3,g3,c4,c5,e5,g5,c6]@6 ~@3 [d3,d4,d5,d6]@3 [e3,e4,e5,e6]@3 [f3,f4,f5,f6]@3 ~@21 [f3,f4,f5,f6]@3 ~@22 [g1,g2,g4,g5]@4 [f4,f5]@4 c4@4 [f4,a4]@4 c4@4 [f4,a4]@4 c4@4 ~@4 [c2,c3]@4 ~@5, ~@93 [c2,e2,g2,c3]@11 ~ [g3,g4,g5,g6]@18 [g3,g4,g5,g6]@6 [g3,g6]@12 [c3,c4,c5,c6]@3 [bb1,bb2,bb4,bb5]@4 [a1,a2,a4,a5]@7 [f1,f2]@26 ~@11, ~@108 [a3,a4,a5,a6]@6 [a3,a4,a5,a6]@6 [a3,a4,a5,a6]@9 ~@3 [f3,f4,f5,f6]@24 ~@23 [f4,a4]@7 ~@6, ~@37 [bb3,bb4,bb5,bb6]@2 [bb3,bb4,bb5,bb6]@4 [g4,g5]@3 [d3,d4,d5,d6]@6 ~@12, ~@45 [e3,e4,e5,e6]@7 ~@12]/8", // A Dm C D E F G F …
  M: "[~@21 a4 bb4 [a4,bb4] a4 bb4 a4 ~@21, ~@21 a2@25 ~@2, ~@11 db3@12 ~, ~@23 e3@23 ~@2, ~@12 a3@11 ~]/2", // Bbmaj7
  N: "~ a4 bb4 a4 [bb3,bb4] [a3,a4] [bb3,bb4] [a3,a4]", // Bb A Bb A
  O: "[bb2,bb3,bb4,bb5] [a2,a3,a4,a5] [bb2,bb3,bb4,bb5] [a2,a3,a4,a5] [bb2,bb3,bb4,bb5] [a2,a3,a4,a5] [b2,b3,b4,b5] [db3,db4,db5,db6]", // Bb A Bb A Bb A B Db
  P: "[d3,f3,a3,d4,d5,d6]@11 ~ [a4,a5]@9 [f4,f5]@3, ~@12 [a2,db3,e3,g3]@11 ~", // Dm A F A7
  Q: "[d2,f2,a2,d3,d4,d5]@2 ~@3 [d4,d5] [f4,f5] [a4,a5]", // Dm D F A
  R: "[g2,g3]@3 [bb3,d4] ~@2 [bb3,d4] ~@2 [a4,a5]@3 [g4,g5]@3 [f4,f5]@3 [e4,e5]@3 [g2,g3,d4,d5]@3, [bb4,bb5]@9 [bb3,d4] ~@2 [bb3,d4] ~@2 [bb3,d4] ~@2 [bb3,d4] ~@5", // G Bb A G F E G5 Bb
  S: "[a2,a3,f4,f5]@2 [e2,e3] [db2,db3] [a1,a2] [db2,db3] [e2,e3] [f2,f3], ~ [e4,e5] ~@2", // Dm E Db A Db E F E
  T: "[g2,g3]@3 [bb3,d4] ~@2 [bb3,d4] ~@2 [bb3,d4] ~@2 [a1,a2]@3 [db3,e3] ~@2 [db3,e3] ~@2 [db4,db5]@3, [g4,g5]@11 ~ [e4,e5]@9 [db3,e3] ~@2", // G Bb A Dbm Db G E Dbm
  U: "[d2,d3]@3 [f3,a3] ~@2 [f3,a3] ~@2 [f3,a3] ~@2 [bb1,bb2]@3 [d3,f3] ~@2 [d3,f3] ~@2 [d4,d5]@3, [a4,a5]@11 ~ [f4,f5]@9 [d3,f3] ~@2", // D F Bb Dm D A F Dm
  V: "[g2,g3]@3 [bb3,d4] ~@2 [bb3,d4] ~@2 [g4,g5]@3 [bb3,d4] ~@2 [bb3,d4] ~@2 [bb3,d4] ~@2 [f4,f5]@3, [bb4,bb5]@9 [bb3,d4] ~@2 [e4,e5]@9 [bb3,d4] ~@2", // G Bb G Bb F Bb E Bb
  W: "[g2,g3]@3 [bb3,d4] ~@2 [bb3,d4] ~@2 [g4,g5]@3 [e4,e5]@9 [f4,f5]@3, [bb4,bb5]@9 [bb3,d4] ~@2 [bb3,d4]@11 ~", // G Bb G E F Bb
  X: "[g2,g3,bb4,bb5] [d3,g4,g5] [g2,g3,e4,e5] [d3,g4,g5] [g2,g3,bb4,bb5] [d3,g4,g5] [g2,g3,e4,e5] [d3,g4,g5]", // Gm G5 C G5 Gm G5 C G5
  Y: "[a2,a3,bb4,bb5] [e3,a4,a5] [a2,a3,bb4,bb5] [e3,a4,a5] [a2,a3,bb4,bb5] [e3,a4,a5] [a2,a3,bb4,bb5] [e3,a4,a5]", // Bbmaj7 A5 Bbmaj7 A5 Bbmaj7 A5 Bbmaj7 A5
  Z: "[a2,e3,a3,bb4,bb5] [a4,a5] [a2,e3,a3,g4,g5] [f4,f5] [a2,e3,a3] ~ [a2,db3,e3,a3,a4,db5,e5,a5]@2, ~@2 [e4,e5] ~", // A A7 F A5 A E
  AA: "~@5 [a1,a2] [b1,b2] [db2,db3]", // A B Db
  AB: "~@3 [f3,a3,d4] ~@2 [f3,a3,d4] ~@2 [f3,a3,d4] ~@2 [f3,a3,d4] ~@2 [f3,a3,d4] ~@2 [f3,a3,d4] ~@2 [a1,a2]@3, [d2,d3] ~@3", // Dm A D
  AC: "[d2,d3,f3,a3,d4]@4 [d3,d4,f4,a4,d5] ~ [f4,a4,d5]@4 [d5,f5,a5,d6] ~ [d2,d3]@3 [c2,c3]@3 [bb1,bb2]@3 [a1,a2]@3, ~ [d3,d4] [d5,f5,a5,d6] ~", // Dm D C Bb A D Dm
  AD: "[g1,g2]@4 [g2,g3,g4,bb4,d5,g5] ~ [g2,g3,g4,bb4,d5,g5]@6 [a1,a2]@4 [a2,a3,a4,db5,e5,a5] ~ [a2,a3,a4,db5,e5,a5]@6", // G Gm A
  AE: "~@6 [d2,d3,f3,a3,d4]@4 [d2,d3,f3,a3,d4] ~ [d2,d3,f3,a3,d4]@6 ~@6", // Dm
  AF: "~@6 [d2,d3,d4,f4,a4,d5]@4 [d2,d3,d4,f4,a4,d5] ~ [d2,d3,d4,f4,a4,d5]@6 [d2,d3,d4,f4,a4,d5]@4 [d2,d3,d4,f4,a4,d5] ~", // Dm
  AG: "[c2,c3,c4,e4,g4,c5]@2 [c3,e3,g3,c4,c5,e5,g5,c6]@2 ~ [d3,d4,d5,d6] [e3,e4,e5,e6] [f3,f4,f5,f6], ~@12 [c2,e2,g2,c3]@11 ~", // C D E F C
  AH: "~@7 [f3,f4,f5,f6], [g3,g4,g5,g6]@3 [g3,g4,g5,g6], ~ [a3,a4,a5,a6]@2 [a3,a4,a5,a6]@2 [a3,a4,a5,a6]@3, ~ [bb3,bb4,bb5,bb6] [bb3,bb4,bb5,bb6]@2", // F G A Bb
  AI: "[~@23 [g1,g2,g4,g5]@4 [f4,f5]@4 c4@3 [f4,a4]@4 c4@4 [f4,a4]@4 c4@4 ~@4 [c2,c3]@4 ~@14, [g3,g6]@12 [c3,c4,c5,c6]@3 [bb1,bb2,bb4,bb5]@4 [a1,a2,a4,a5]@8 [f1,f2]@26 ~@19, [g4,g5] [d3,d4,d5,d6]@2 ~@5, ~@3 [f3,f4,f5,f6]@24 ~@23 [f4,a4]@7 ~@15, ~@2 [e3,e4,e5,e6]@7 ~@15]/3", // G F C G C Bb A F …
  AJ: "[~@12 a4 bb4 a4 bb4 [a4,bb4] a4 ~@30, ~@12 a2@25 ~@11, ~@13 db3@24 ~@11, ~@14 e3@23 ~@11, ~@15 a3@22 ~@11]/2", // Bbmaj7
  AK: "~@6 a4 bb4", AL: "a4 [bb3,bb4] [a3,a4] [bb3,bb4] [a3,a4] [bb2,bb3,bb4,bb5] [a2,a3,a4,a5] [bb2,bb3,bb4,bb5]",
  AM: "[[a2,a3,a4,a5]@3 [bb2,bb3,bb4,bb5]@3 [a2,a3,a4,a5]@3 [b2,b3,b4,b5]@3 [db3,db4,db5,db6]@3 [d5,f5,bb5,d6]@23 ~ [f4,bb4,d5]@11 ~ [d4,f4,bb4]@11 ~@10, ~@15 [bb2,d3,f3,bb3]@46 ~@11]/3", // A Bb A B Db Bb
  AN: "~@7 bb4",
  AO: "[a4@3 bb4@3 a4@3 bb4@3 a4@3 bb3@2 d4@2 g4@2 bb3@2 d4@2 g4@2 bb3@2 d4@2 g4@2 bb3@2 d4@2 g4@2 bb3@2 eb4@2 g4@2 bb3@2 eb4@2 g4@2 bb3@2 eb4@2 g4@2 bb3@2 eb4@2 g4@2 eb4@2 g4@2 c5@2 eb4@2 g4@2 c5@2 eb4@2 g4@2 c5@2 a4@2 db5@2 e5@2 a4@2 d5@2 gb5@2 a4@2 d5@2 gb5@2 a4@2 d5@2 gb5@2 a4@2 d5@2 gb5@2 [g4,bb4,d5,g5]@3 [d4,d5]@3 [gb4,gb5]@3 [a4,a5]@3 [bb4,bb5]@3 [g2,g3]@3 [eb2,eb3]@3 [d2,d3]@3 ~@3 [eb4,eb5]@3 [g4,g5]@3 [bb4,bb5]@3 [c5,c6]@3 [bb4,bb5]@3 [a4,a5]@3 [g4,g5]@3 ~@3 [bb4,bb5]@3 [a4,a5]@3, ~@3 [d2,d3]@6 [d2,d3]@6 [g2,g3]@17 ~ [bb1,bb2]@6 [eb2,eb3]@17 ~ [d2,d3]@6 [c2,c3]@17 ~ [db2,db3]@6 [d2,d3]@17 ~ [d2,d3]@6 [g2,g3]@14 ~@10 [c2,c3]@23 ~ [c2,c3]@9]/7", // Gm D Gb A Bb G Eb D …
  AP: "[[g4,g5] ~ [a4,a5] [g4,g5] [gb4,gb5] ~ [gb4,gb5] [g4,g5] [a4,a5] [bb4,bb5] [a4,a5] [g4,g5] [gb4,gb5] ~ [bb4,bb5] [a4,a5] [g4,g5] ~ [bb4,bb5] [a4,a5] [bb4,bb5] ~ [eb4,eb5] [d4,d5] [c4,c5] ~ [bb3,bb4] [c4,c5] [d4,d5] [eb2,eb3,eb4,g4,bb4,eb5]@2 ~, ~@3 [d2,d3]@11 ~ [g1,g2]@6 [g2,g3]@11 ~ [d2,d3]@6 [g2,g3]@11 ~ [f2,f3]@11 ~ [eb2,eb3]@11 ~ [c2,c3]@11 ~@10]/4", // G A G Gb G A Bb A …
  AQ: "~ [d2,d3,d4,gb4,a4,d5]@2 ~@2 [g2,g3,g4,bb4,d5,g5]@2 [d2,d3,d4,d5]", // D Gm D
  AR: "[[eb2,eb3,eb4,eb5]@3 [d2,d3,d4,d5]@3 [c2,c3,c4,c5]@3 [bb1,bb2,bb3,bb4]@3 [a1,a2,a3,a4]@3 [g1,g2,g3,g4]@11 ~ [g2,g3,g4,bb4,d5,g5]@11 ~ [d2,d3,d4,gb4,a4,d5]@6 [d2,d3,d4,d5]@3]/2", // Eb D C Bb A G Gm D
  AS: "[[eb2,eb3,eb4,eb5]@3 [d2,d3,d4,d5]@3 [c2,c3,c4,c5]@3 [bb1,bb2,bb3,bb4]@3 [a1,a2,a3,a4]@3 [g1,g2,g3,g4]@11 ~ [g2,g3,g4,bb4,d5,g5]@11 ~ [f2,f3,f4,a4,c5,f5]@6 [f2,f3,f4,f5]@3]/2", // Eb D C Bb A G Gm F
  AT: "[[g2,g3,g4,g5]@3 [f2,f3,f4,f5]@3 [eb2,eb3,eb4,eb5]@3 [d2,d3,d4,d5]@3 [c2,c3,c4,c5]@3 [bb1,bb2,bb3,d4,f4,bb4]@11 ~ [bb2,bb3,bb4,d5,f5,bb5]@11 ~ [a2,a3,a4,db5,e5,a5]@6 [a2,a3,a4,a5]@3]/2", // G F Eb D C Bb A
  AU: "[bb2,bb3,bb4,bb5] [a2,a3,a4,a5] [g2,g3,g4,g5] [f2,f3,f4,f5] [e2,e3,e4,e5] [d2,d3,d4,d5]@3", // Bb A G F E D
  AV: "[[e2,e3,e4,e5]@3 [f2,f3,f4,f5]@9 [gb2,gb3,gb4,gb5]@3 [g2,g3,g4,g5]@3 [ab2,ab3,ab4,ab5]@3 [a2,a3,a4,db5,e5,a5]@23 ~@4]/2", // E F Gb G Ab A
  AW: "~@4 [a3,db4,e4] [a3,db4,e4]@3 ~@4", AX: "~@5 [a3,db4,e4,a4]@5 [a3,db4,e4,a4]@2 [a3,db4,e4,a4]@6 ~@6",
  AY: "~@7 [a2,a3,db4,e4,a4]@5 [a2,a3,db4,e4,a4]@2 [a2,a3,db4,e4,a4]@6 ~@4", // A
  AZ: "~@3 [d2,d3,d4,f4,a4,d5]@4 [c2,c3,c4,e4,g4,c5]@4 [bb1,bb2,bb3,d4,f4,bb4]@4 ~ [c2,c3,c4,e4,g4,c5]@4 [bb1,bb2,bb3,d4,f4,bb4]@4", // Dm C Bb C Bb
  BA: "[g1,g2,g3,bb3,d4,g4]@4 ~@7 [a2,a3,db4,e4,a4]@6 ~@7", BB: "[a1,a2,a4,db5,e5,a5]@6 ~ [d1,d2,d5,f5,a5,d6]@6 ~@11",
  BC: "[~@15 [d2,d3,f3,a3,d4]@5 [d2,d3,f3,a3,d4]@2 [d2,d3,f3,a3,d4]@6 ~@10 [bb3,d4,g4]@2 ~ [bb3,d4,g4]@2 ~ [bb3,d4,g4]@2 ~@2 [bb3,d4,g4]@2 ~ [g2,g3,bb3,d4,g4]@3 [g2,g3,bb3,d4,g4]@3 [g2,g3,bb3,d4,g4]@3 ~ [a2,a3,db4,e4,a4]@6 [e2,e3]@3 [db2,db3]@2, ~@35 [g2,g3]@15 ~@22]/3", // Dm Gm A E Db G
  BD: "~@2 [a1,a2]@3 [db2,db3]@3 [e2,e3]@3 [f2,f3]@3 ~ [g2,g3]@3 [bb3,d4,g4]@2 ~ [bb3,d4,g4]@2 ~", // A Db E F G Gm
  BE: "[[bb3,d4,g4]@2 ~@2 [a1,a2]@3 [db3,e3,a3]@2 ~ [db3,e3,a3]@2 ~ [db3,e3,a3]@2 ~@2 [d2,d3]@3 [f3,a3,d4]@2 ~ [f3,a3,d4]@2 ~ [f3,a3,d4]@2 ~@2 [bb1,bb2]@3 [f3,bb3,d4]@2 ~ [f3,bb3,d4]@2 ~ [f3,bb3,d4]@2 ~@2 [g1,g2]@3 [d4,e4]@2]/2", // Gm A D Dm Bb G Dsus2
  BF: "[~ [d4,e4]@2 ~ [d4,e4]@2 ~@2 [a1,a2,d4,e4]@3 [db4,e4]@3 [a1,a2,a3,db4,e4]@3 [a3,db4,e4]@3 ~ [d2,d3,f3,a3,d4]@4 [d3,d4,f4,a4,d5]@2 [d3,d4,f4,a4,d5]@5 [d5,f5,a5,d6]@2 [d2,d3]@3 [c2,c3]@3 [bb1,bb2]@3 [a1,a2]@3 ~ [g1,g2]@4 [g2,g3,g4,bb4,d5,g5]@2 [g2,g3,g4,bb4,d5,g5]@6 ~ [a1,a2]@4 [a2,a3,a4,db5,e5,a5]@2 [a2,a3,a4,db5,e5,a5]@6, ~@17 [d5,f5,a5,d6]@3 ~@16]/3", // Dsus2 Asus4 Dbm A Dm D C Bb …
  BG: "[~ [d2,d3,f3,a3,d4]@4 [d3,d4,f4,a4,d5]@2 [d3,d4,f4,a4,d5]@5 [d5,f5,a5,d6]@2 [d2,d3]@3 [c2,c3]@3 [bb1,bb2]@3 [a1,a2]@3 ~ [g1,g2]@4 [g2,g3,g4,bb4,d5,g5]@2 [g2,g3,g4,bb4,d5,g5]@6 ~ [a1,a2]@4 [a2,a3,a4,db5,e5,a5]@2 [a2,a3,a4,db5,e5,a5]@6 ~@7 [d2,d3,f3,a3,d4]@5 [d2,d3,f3,a3,d4]@2 [d2,d3,f3,a3,d4]@6, ~@7 [d5,f5,a5,d6]@3 ~@26]/3", // Dm D C Bb A G Gm A …
  BH: "[~@13 [d2,d3,f3,a3,d4,f4]@5 [d2,d3,f3,a3,d4,f4]@2 [d2,d3,f3,a3,d4,f4]@6 ~@13 [d2,d3,d4,f4,a4,d5]@5 [d2,d3,d4,f4,a4,d5]@2 [a2,a3,db4,e4,a4,db5]@6 [a2,a3,db4,e4,a4,db5]@5 [a2,a3,db4,e4,a4,db5]@2 [d2,d3,d4,f4,a4,d5]@3 ~@3 [d3,d4,d5,f5,a5,d6]@6 ~]/3", // Dm A Dm
  BI: "[~@3 [f3,f4,f5,f6]@3 [g3,g4,g5,g6]@3 [a3,a4,a5,a6]@3 ~@20 [f3,f4,f5,f6]@3 ~@24 [db2,db3,db5,db6]@4 ~@28 [a1,a2]@4 ~@3 a3@4 [d4,f4]@4 a3@4 [d4,f4]@4 a3@4 ~@4 [a1,a2]@4 ~@18, [d2,f2,a2,d3]@12 ~ [bb3,bb4,bb5,bb6]@11 [bb3,bb4,bb5,bb6]@5 [g3,g4,g5,g6]@6 ~@3 [g3,g4,g5,g6]@18 [d2,d3,d5,d6]@7 [d2,d3,d5,d6]@31 ~ [d2,d3]@26 ~@23, ~@16 [c4,c5,c6,c7]@5 [c4,c5,c6,c7]@14 ~@6 [f3,f4,f5,f6]@3 [e3,e5,e6]@4 [f3,f4,f5,f6]@16 ~@3 a3@8 a3@8 a3@12 ~@49, ~@18 [d4,d5,d6,d7]@17 ~@9 e4@20 ~@7 [d4,f4]@8 [d4,f4]@8 [d4,f4]@8 ~@23 [d4,f4]@7 ~@19, ~@27 [a3,a4,a5,a6]@8 [a3,a4,a5,a6]@17 [e2,e3,e5,e6]@12 ~@80]/6", // F G A F Db A Dm A …
  BJ: "[~@21 [d2,d3,d4,f4,a4,d5]@5 ~@5 [a1,a2,a3,db4,e4,a4]@5 ~@5 [d2,f2,a2,d3,f3,a3,d4]@5 ~@2]/2", // Dm A Dm
})).s("gm_piano").gain(0.3)

// chords · piano · soft notes
const piano_soft = note(`<
  ~@11 A ~@2 B C D E F G H I ~@10 J@3 K@8 L@5 M@5 ~@12 N ~@2 O@2 P Q R S T ~@11 U@3 V W@8 X@4 Y Z@4 ~@2 AA@7 ~@22 AB@3
  AC ~@25 AD@8 AE@7 AF@6 ~
>`.pickRestart({
  A: "~@9 [a1,a2,db3,e3,a3]@11 ~@4", // A
  B: "~@12 [f3,a3,d4] ~@2 [f3,a3,d4] ~@2 [f3,a3,d4] ~@2 [f3,a3,d4] ~@2, ~@3 [d2,d3]@2 ~@3", // Dm D
  C: "[f3,a3,d4] ~@2 [f3,a3,d4] ~@2 [a1,a2]@3 ~@3 [f3,a3,d4] ~@2 [f3,a3,d4] ~@2 [f3,a3,d4] ~@2 [f3,a3,d4] ~@2, ~@3 [d2,d3]@2 ~@3", // Dm A Dm D
  D: "[f3,a3,d4] ~@2 [f3,a3,d4] ~@2 [a1,a2]@3 [bb1,bb2]@3 [d3,g3,bb3] ~@2 [d3,g3,bb3] ~@2 [d3,g3,bb3] ~@2 [g1,g2]@3", // Dm A Bb Gm G
  E: "[bb2,d3,g3] ~@2 [bb2,d3,g3] ~@2 [bb2,d3,g3] ~@2 [a1,a2]@3 [db3,e3,a3] ~@2 [db3,e3,a3] ~@2 [db3,e3,a3] ~@2 [db3,e3,a3] ~@2", // Gm A
  F: "[db3,e3,a3] ~@2 [db3,e3,a3] ~@2 [a1,a2]@3 [g1,g2]@3 [bb2,d3,g3] ~@2 [bb2,d3,g3] ~@2 [bb2,d3,g3] ~@2 [a1,a2]@3, [a1,a2] [bb1,bb2] ~@6", // A G Gm A Bb
  G: "[db3,e3,a3] ~@2 [db3,e3,a3] ~@2 [db3,e3,a3] ~@2 [d2,d3]@3 [f3,a3,d4] ~@2 [f3,a3,d4] ~@2 [f3,a3,d4] ~@2 [bb1,bb2]@3", // A D Dm Bb
  H: "[f3,bb3,d4] ~@2 [f3,bb3,d4] ~@2 [f3,bb3,d4] ~@2 [g1,g2]@3 [d4,e4] ~@2 [d4,e4] ~@2 [d4,e4] ~@2 [a1,a2]@3, ~@21 [d4,e4] ~@2", // Bb G Dsus2 A Dsus2
  I: "[db4,e4] [a1,a2,a3,db4,e4] [a3,db4,e4] ~@5", // Dbm A
  J: "[~@22 c4@4 [f4,a4]@4 c4@4 [f4,a4]@4 c4@4 ~@4 [c2,c3]@4 [f4,a4]@4 c4@4 [f4,a4]@3 c4@4 [f4,a4]@4 c4@3, ~@19 [f2,f3]@26 ~@5 [f3,a3]@22, ~@42 [f4,a4]@7 ~@23]/3", // F C F
  K: "[~ [eb4,g4]@4 c4@4 ~@4 d4@4 [gb4,a4]@4 d4@4 [gb4,a4]@3 d4@4 [gb4,a4]@4 d4@4 ~@4 d4@4 [g4,bb4]@4 d4@4 [g4,bb4]@4 d4@4 [f4,bb4]@3 d4@4 ~@4 c4@4 [e4,g4]@4 c4@4 [e4,g4]@4 c4@4 [g4,bb4]@4 e4@4 [f4,a4]@3 c4@4 [f4,a4]@4 c4@4 [f4,a4]@4 c4@4 [e4,a4]@4 c4@4 [eb4,a4]@4 c4@4 [eb4,a4]@3 c4@4 [eb4,bb4]@4 c4@4 [gb4,a4]@4 d4@4 [g4,bb4]@4 d4@4 [g4,bb4]@4 d4@4 [g4,bb4]@3 d4@4 [g1,g2,bb4,d5]@4, ~ [c3,eb3,g3]@7 ~ [d3,gb3,a3]@22 ~ [d3,gb3,a3]@7 ~ [g3,bb3]@22 ~@2 [d3,f3,bb3]@7 [c3,e3,g3]@22 ~@2 [c3,e3,g3]@7 ~ [f3,a3]@15 [f2,f3]@8 [e2,e3]@8 [eb2,eb3]@22 ~ [gb2,gb3]@7 ~ [g2,g3]@22 ~@5]/8", // Eb Gbm Gm Bb5 Em Gm F A5 …
  L: "[g4@4 [bb4,c5]@4 e4@4 [bb4,c5]@4 e4@4 [a4,c5]@4 e4@4 [g4,c5]@3 e4@4 ~@8 bb4@4 a4@4 bb4@8 bb4@8 ~@6 c5@3 d5@3 ~ c5@6 g4@6 ~@7 g4@3 a4@3 bb4@6 a4@6 ~@3, ~@4 [c2,c3]@30 ~ f3@31 ~ [eb3,g3]@26 [c3,eb3]@25 ~@2, ~@35 a4@2 c4@29 ~@3 eb4@23 ~@3 c4@22 ~@3, ~@36 a3@30 ~@2 bb3@24 ~@2 g3@23 ~@3, ~@36 c5@2 f4@29 [g4,bb4]@6 ~@20 a4@6 ~@21]/5", // Bbsus2 Am C5 C Eb Cm Gm
  M: "[~@3 [a4,bb4] bb4 a4 [a4,bb4] bb4 a4 [a4,bb4] bb4 a4 bb4 [a4,bb4] a4 bb4 [a4,bb4] a4 bb4 [a4,bb4] a4 bb4 [a4,bb4] a4 bb4 a4 [a4,bb4] bb4 a4 [a4,bb4] bb4 a4 [a4,bb4] bb4 a4 bb4 [a4,bb4] a4 bb4 [a4,bb4] a4 bb4 [a4,bb4] a4 bb4 a4 [a4,bb4] bb4 a4 [a4,bb4] bb4 a4 [a4,bb4] bb4 a4 bb4 [a4,bb4] a4 bb4 [a4,bb4] a4 bb4 [a4,bb4] a4 bb4 [a4,bb4] a4 bb4 a4 [a4,bb4] bb4 a4 [a4,bb4] bb4 a4 [a4,bb4] bb4 a4 bb4 [a4,bb4] a4 bb4 [a4,bb4] a4 bb4 [a4,bb4] a4 bb4 [a4,bb4] a4 bb4 a4 [a4,bb4] bb4 a4 [a2,a3]@12 ~@13, ~@22 [db2,db3]@12 [db3,db4]@12 [a2,a3]@23 ~@2 [db2,db3]@12 [db3,db4]@12 bb4@3 ~@22]/5", // Bbmaj7 A Db A Db
  N: "[a1,a2,db3,e3,a3]@11 ~@13", // A
  O: "~@3 [f3,a3,d4] ~@2 [f3,a3,d4] ~@2 [f3,a3,d4] ~@2 [f3,a3,d4] ~@2 [f3,a3,d4] ~@2 [f3,a3,d4] ~@2 [a1,a2]@3, [d2,d3] ~@3", // Dm A D
  P: "[bb1,bb2]@3 [d3,g3,bb3] ~@2 [d3,g3,bb3] ~@2 [d3,g3,bb3] ~@2 [g1,g2]@3 [bb2,d3,g3] ~@2 [bb2,d3,g3] ~@2 [bb2,d3,g3] ~@2", // Bb Gm G Gm
  Q: "[a1,a2]@3 [db3,e3,a3] ~@2 [db3,e3,a3] ~@2 [db3,e3,a3] ~@2 [db3,e3,a3] ~@2 [db3,e3,a3] ~@2 [db3,e3,a3] ~@2 [a1,a2]@3, ~@5 [a1,a2] [bb1,bb2] ~", // A Bb
  R: "[g1,g2]@3 [bb2,d3,g3] ~@2 [bb2,d3,g3] ~@2 [bb2,d3,g3] ~@2 [a1,a2]@3 [db3,e3,a3] ~@2 [db3,e3,a3] ~@2 [db3,e3,a3] ~@2", // G Gm A
  S: "[d2,d3]@3 [f3,a3,d4] ~@2 [f3,a3,d4] ~@2 [f3,a3,d4] ~@2 [bb1,bb2]@3 [f3,bb3,d4] ~@2 [f3,bb3,d4] ~@2 [f3,bb3,d4] ~@2", // D Dm Bb
  T: "[g1,g2]@3 [d4,e4] ~@2 [d4,e4] ~@2 [d4,e4] ~@2 [a1,a2]@3 [db4,e4]@3 [a1,a2,a3,db4,e4]@3 [a3,db4,e4]@3, ~@12 [d4,e4] ~@11", // G Dsus2 A Dbm A Dsus2
  U: "[~@14 c4@4 [f4,a4]@4 c4@3 [f4,a4]@4 c4@4 ~@4 [c2,c3]@4 [f4,a4]@4 c4@4 [f4,a4]@4 c4@4 [f4,a4]@4 c4@3 [eb4,g4]@4 c4@4, ~@10 [f2,f3]@26 ~@5 [f3,a3]@22 ~ [c3,eb3,g3]@7 ~, ~@33 [f4,a4]@7 ~@32]/3", // F C F Eb F Cm F
  V: "~ d4 [gb4,a4] d4 [gb4,a4] d4, [d3,gb3,a3]@11 ~", // Gbm D
  W: "[[gb4,a4]@4 d4@3 ~@4 d4@4 [g4,bb4]@4 d4@4 [g4,bb4]@4 d4@4 [f4,bb4]@4 d4@4 ~@4 c4@3 [e4,g4]@4 c4@4 [e4,g4]@4 c4@4 [g4,bb4]@4 e4@4 [f4,a4]@4 c4@4 [f4,a4]@4 c4@3 [f4,a4]@4 c4@4 [e4,a4]@4 c4@4 [eb4,a4]@4 c4@4 [eb4,a4]@4 c4@4 [eb4,bb4]@4 c4@3 [gb4,a4]@4 d4@4 [g4,bb4]@4 d4@4 [g4,bb4]@4 d4@4 [g4,bb4]@4 d4@4 [bb4,d5]@4 g4@3 [bb4,c5]@4 e4@4 [bb4,c5]@4 e4@4 [a4,c5]@4 e4@4 [g4,c5]@4 e4, [d3,gb3,a3]@7 [g3,bb3]@22 ~@2 [d3,f3,bb3]@7 ~ [c3,e3,g3]@22 ~ [c3,e3,g3]@7 ~ [f3,a3]@15 [f2,f3]@8 [e2,e3]@8 [eb2,eb3]@22 ~ [gb2,gb3]@7 ~ [g2,g3]@22 ~@2 [g1,g2]@7 [c2,c3]@29]/8", // Gbm Gm Bb5 Em Gm F A5 Ebdim …
  X: "[~@10 bb4@4 a4@4 bb4@8 bb4@8 ~@6 c5@3 ~ d5@3 c5@6 g4@6 ~@7 g4@3 a4@3 bb4@6 a4@6 ~@6 bb4 [a4,bb4] a4 bb4 [a4,bb4] a4, ~@3 f3@31 eb3@26 c3@25 ~@11, ~@3 a4@2 f4@29 g4@2 [bb3,eb4]@24 ~@2 [g3,c4]@23 ~@11, ~@4 [a3,c4]@30 ~ g3@25 ~ eb3@24 ~@11, ~@4 c5@7 ~@24 bb4@6 ~@19 a4@6 ~@30]/4", // Bbmaj7 Eb5 C5 Am
  Y: "bb4 a4 [a4,bb4] bb4 a4 [a4,bb4] bb4 a4 [a4,bb4] bb4 a4 [a4,bb4] bb4 a4 bb4 [a4,bb4] a4 bb4 [a4,bb4] a4 bb4 [a4,bb4] a4 bb4, ~@13 [db2,db3]@11", // Bbmaj7 Db
  Z: "[a4 [a4,bb4] bb4 a4 [a4,bb4] bb4 a4 [a4,bb4] bb4 a4 bb4 [a4,bb4] a4 bb4 [a4,bb4] a4 bb4 [a4,bb4] a4 bb4 [a4,bb4] a4 bb4 a4 [a4,bb4] bb4 a4 [a4,bb4] bb4 a4 [a4,bb4] bb4 a4 bb4 [a4,bb4] a4 bb4 [a4,bb4] a4 bb4 [a4,bb4] a4 bb4 a4 [a4,bb4] bb4 a4 [a4,bb4] bb4 a4 [a4,bb4] bb4 a4 bb4 [a4,bb4] a4 bb4 [a4,bb4] a4 bb4 [a4,bb4] a4 bb4 [a2,a3]@12 ~@21, ~ [db3,db4]@12 ~ [a2,a3]@23 ~ [db2,db3]@12 [db3,db4]@12 ~ bb4@3 ~@30]/4", // Bbmaj7 A Db A Db
  AA: "[~@15 [g2,g3,bb3,d4,g4]@17 ~ [g2,g3,bb3,d4,g4]@6 [d2,d3]@6 [d2,d3]@6 [d2,d3]@6 [d2,d3]@6 ~@3 bb3@3 d4@3 bb3@3 d4@3 bb3@3 d4@3 bb3@3 ~@3 bb3@3 c4@3 bb3@3 c4@3 bb3@3 c4@3 bb3@3 ~@3 d4@3 f4@3 bb4@3 c5@3 bb4@3 a4@3 bb4@3 bb4@3 a4@3 ~@27, ~@39 [a3,d4,gb4,a4]@11 ~@13 [g2,g3]@11 ~ [f2,f3]@11 ~ [eb2,eb3]@17 ~ [eb2,eb3]@6 [bb1,bb2]@17 ~ [c2,c3]@6 [d2,d3]@11 ~@22]/7", // Gm D G F Eb Bb C D
  AB: "[~@13 g4@36 ~@23, ~@10 [eb1,g3]@39 ~@23, ~@11 [eb2,bb3]@38 ~@23, ~@12 eb4@37 ~@23]/3", // Eb Eb5
  AC: "~@3 [a3,db4,e4]@5 ~@16", // A
  AD: "[~@6 [d4,f4]@4 a3@4 [d4,f4]@3 a3@4 [d4,f4]@4 a3@4 [c4,e4]@4 a3@4 ~@4 bb3@4 [d4,g4]@4 bb3@4 [d4,g4]@3 bb3@4 [d4,g4]@4 bb3@4 ~@4 d4@4 [g4,bb4]@4 d4@4 [g4,bb4]@4 d4@4 [d4,g4]@3 bb3@4 ~@4 db4@4 [e4,g4]@4 db4@4 [e4,g4]@4 db4@4 [e4,a4]@4 db4@4 [f4,a4]@3 d4@4 [f4,a4]@4 d4@4 [f4,a4]@4 d4@4 [f4,a4]@4 d4@4 [f4,a4]@4 d4@4 [f4,a4]@3 d4@4 [e4,g4]@4 c4@4 [e4,g4]@4 c4@3, ~@6 [d3,f3]@22 ~ [c3,e3,g3]@7 ~ [bb2,d3,f3]@22 ~ [bb2,d3,f3]@7 ~ [bb2,d3,g3]@22 ~@2 [bb2,d3,g3]@7 [db3,e3,g3]@22 ~@2 [db3,e3,a3]@7 ~ [d3,f3,a3]@30 ~ [d2,d3]@15 [c2,c3]@15]/8", // Dm C G5 Gm G5 Em A5 F …
  AE: "[~ [d4,a4]@4 bb3@4 [d4,g4]@4 bb3@4 [d4,f4]@3 bb3@4 [d4,e4]@4 bb3@4 [d4,e4]@4 a3@4 [d4,e4]@4 a3@4 [d4,e4]@4 a3@4 [d4,e4]@4 a3@4 [db4,e4]@4 ~ a3@4 [db4,e4]@4 a3@4 ~@5 [a1,a2]@4 ~ [b1,b2]@4 [db2,db3]@4 ~@6 a3@4 [d4,f4]@4 ~ a3@4 [d4,f4]@4 ~ a3@4 ~@5 [a1,a2]@4 ~@5 a3@4 ~ [d4,f4]@4 ~ a3@4 [d4,f4]@4 ~ a3@5 [d4,f4]@3, ~ [bb1,bb2]@30 ~ [a1,a2]@50 [db4,e4]@17 ~ [d2,d3]@30 ~@7 [d2,d3]@31, ~@128 [d4,f4]@9 ~@31]/7", // D5 G5 Dm Dsus2 Dbm A B Db …
  AF: "[~ [a1,a2]@5 ~@5 a3@5 [d4,f4]@5 a3@5 [d4,f4]@5 a3@5 ~@5 [a1,a2]@5 ~@5 a3@5 ~ [d4,f4]@5 a3@5 ~ [d4,f4]@7 ~ a3@7 ~@8 a2@7 ~ [d3,f3,a3,d4]@30 ~@15, ~@6 [d2,d3]@33 ~@7 [d2,d3]@43 ~@55, ~@36 [d4,f4]@10 ~@37 [d4,f4]@15 ~@46]/6", // A Dm A Dm D Dm
})).s("gm_piano").gain(0.2)

stack(piano, piano_soft)