Strudelify

Concert Etude

Alexander Goedicke

KeyG minorTempo144 bpm
0:00/0:00
// Concert Etude — Alexander Goedicke
// 144 bpm, 4/4, key G minor. 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/5672304; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 130 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(144/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 ~@2 E F ~ G H I J ~@3 K L M N ~@5 O P Q R S T U ~@5 V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM ~@6 AN AO
  AP AQ AR AS AT AU AV AW AX ~@7 AY AZ BA BB BC BD BE BF AB BG BH BI BJ BK BL BM BN BO BH BP BQ BR ~@2 BS BT BU BV BW@4
  ~ BX ~@7 BY@2 BZ ~@7
>`.pickRestart({
  A: "[g2,d3,bb3,g4,bb4,d5,g5] ~@5 [g3,c4,eb4,gb4] ~ [g3,bb3,d4,g4]@2 ~@4 [d3,c4,gb4,a4] ~", // Gm Cm Gm D7
  B: "[g3,bb3,d4,g4] ~@2 [d3,c4] [g3,bb3]@2 ~ [d3,c4], ~@6 [gb4,a4] ~ [d4,g4]@2 ~@4 [eb4,gb4] ~", // Gm D7 Gm D7 Gbm G5 Ebm
  C: "[g3,bb3] ~ a4 g4 [f3,a3,d4,a4]@2 d4 db4, [d4,g4] ~@3 [e3,bb3,d4,bb4,d5]@4 ~@4 [a2,g3,a3]@4", // Gm Dm G5 Em7b5 A7
  D: "[f3,a3,d4]@2 [d2,bb3] e2 [f2,a3] ~ [bb2,g3] ~ [a2,f3] ~ [g2,e3] ~ [f2,d3] ~@3, d2 ~@15", // Dm Gm F Eb Dm C Dm
  E: "~@7 d3 e3 d3 db3 d3 gb3 d3 db3 d3, ~@2 [bb3,g4] [c4,d4,a4]", F: "[g2,d3,g3,bb3,d4,bb4] ~@7",
  G: "~@5 [g2,g3] [e2,e3] [f2,f3], ~@3 [g4,db5,e5]", // G E F Dbdim
  H: "[d2,d3] [f2,f3] [eb2,eb3] [f2,f3] [d2,d3] [eb2,eb3] [c2,c3] [d2,d3], [f4,d5,f5] [c4,f4,a4] [bb3,f4,bb4] [eb4,a4,c5]", // D F Eb F D Eb C D …
  I: "[bb1,bb2,d4,bb4,d5] ~ [bb3,f4,bb4]@2 [b3,f4,a4]@2 ab4 a4, ~ [d2,d3]@2 [eb2,eb3,c4,f4]", // Bb Bb5 Bm7b5 D F7
  J: "[e2,e3,a3,c4,e4]@2 e5 d5 c5 b4 a4 f4 e4 f4 e4 eb4 [e3,e4] [d3,d4] [c3,c4] [b2,b3], ~@2 [e3,ab3,d4] ~", // Am E D C B E7
  K: "~@12 [d3,b3] ~ [c3,c4] ~", // G C
  L: "g2 ~ g3 ~ eb3 ~ [f3,b3,d4] [b3,d4] d3 ~ eb3 ~ c3 ~ [d3,b3,d4] [b3,d4], [b3,d4]@3 ~ [b3,d4]@3 ~", // Bdim Bm G Bm
  M: "g2 ~ [b2,g4] ~ [c3,eb4] ~ [a2,f4] ~ [b2,d4] ~ [g2,eb4] ~ [a2,c4] ~ [d2,d4] ~, [b3,d4] ~", // Em Cm Dm Bm Cm Am D Bm
  N: "g3@2 ~@2 eb3 ~ [f3,g3,b3,g4] [g3,b3,g4] d3 ~ eb3 ~ c3 ~ [d3,g3,b3,g4] [g3,b3,g4], [b3,g4]@3 ~@5, g2 ~ g3@4 ~@2 [g3,b3,g4]@6 ~@2", // G7 G Em G
  O: "~@7 [g2,eb3,gb3,a3,c4]", P: "[g2,f3,ab3,b3]@3 [g2,f3,ab3,b3] [g2,f3,ab3,b3]@3 [b2,g3,f4,g4,d5]",
  Q: "[c3,g3]@2 d3@2 eb3@2 [c4,c5]!2 g3@2 f3@2 eb3@2 [d3,d4,f4,b4,d5]@2, [eb4,c5,eb5]@3 ab3 [c4,c5]@3 ~", // C5 C Bdim Cm C
  R: "c3@2 c3 d3 eb3@2 [c4,c5]!2 g3@2 f3@2 eb3@2 [d3,f4,b4,d5]@2, [eb4,g4,c5,eb5]@3 ab3 [c4,c5]@3 ~", // C Bdim Cm C
  S: "c3 bb2 a2 g2 gb2 g2 e2 gb2, [eb4,c5,eb5] [c4,eb4] [c4,d4] [c4,d4,a4]", // Cm Csus2 D7
  T: "g2 [f2,f3] [eb2,eb3] [bb1,bb2] [c2,c3] [a1,a2] d3 d2, [bb3,d4,g4,bb4] [g4,bb4,g5] [g4,a4] [gb4,d5,gb5]", // F Eb Bb C A Gm Gsus2 D
  U: "[d3,g4,bb4,d5,g5] ~@7", V: "~@4 eb3 d3 db3 d3 e3 d3 db3 d3 gb3 d3 db3 d3, ~ [c4,gb4] [bb3,g4] [c4,d4,a4]",
  W: "[g2,d3,g3,bb3,d4,bb4]@2 [g2,g3] [a2,a3] ~@8 [bb2,bb3] ~ [a2,a3] ~", // Gm G A Bb A
  X: "[g2,g3] ~ [eb2,eb3] ~ [d2,d3] ~ [c2,c3] ~ [bb1,bb2,d3,g3]@2 [a1,a2]@2 [g1,g2]@2 [c2,c3,g4,bb4,c5,e5]@2", // G Eb D C Gm A G C7
  Y: "[g1,g2,f4,ab4,c5,f5]@2 [f2,f3] [g2,g3] [ab2,ab3] ~ [db3,db4] ~ [c3,c4] ~ [bb2,bb3] ~ [ab2,ab3] [bb2,bb3] [g2,g3] [ab2,ab3]", // Fm F G Ab Db C Bb Ab …
  Z: "f2 [db2,db3] [c2,c3] [bb1,bb2,f3,db4,f4] [ab1,ab2,f3,c4,f4] [g1,g2] [f1,f2] [bb1,bb2,f4,ab4,bb4,d5], f3 ~@3", // Db C Bbm Fm G F Bb7
  AA: "[eb1,eb2] [c3,c4] [bb2,bb3] [ab2,ab3] [g2,g3] [f2,f3] [e2,e3,g4,g5] [eb2,eb3,a4,a5], [eb4,g4,bb4,eb5] [eb4,g4] [eb4,bb4] ~", // Eb C Bb Ab G F Em Ebdim …
  AB: "d6 a5 gb5 d5 bb5 g5 e5 db5 a5 gb5 d5 a4 g5 e5 db5 bb4, [d2,d3]@2 ~ [db4,e4,g4,bb4] [d4,gb4,a4]@2 ~ [bb3,db4,e4,g4]", // D Dbdim D Bbdim
  AC: "gb5 d5 a4 gb4 e5 db5 bb4 g4 [d3,a3,d4,gb4,a4,d5]@2 [bb1,bb2]@2 [c2,c3]@2 [db2,db3]@2, [a3,d4,gb4]@2 ~ [g3,bb3,db4,e4] ~@2 [eb4,g4]@2", // D Bb C Db D Gdim Eb
  AD: "d5 a4 gb4 d4 bb4 g4 e4 db4 a4 gb4 d4 a3 g4 e4 db4 bb3, [d2,d3]@2 ~ [db3,e3,g3,bb3] [d3,gb3,a3]@2 ~ [bb2,db3,e3,g3]", // D Dbdim D Bbdim
  AE: "gb4 d4 a3 gb3 e4 db4 bb3 g3 [d3,gb3,a3,d4]@2 [d2,d3]@2 [db2,db3]@2 [c2,c3]@2, [a2,d3,gb3]@2 ~ db3 ~@2 [gb4,a4]@2", // D Db C D Gbm
  AF: "~@3 bb3 ~@3 g3, [bb1,bb2,d4,f4,bb4]@2 ~ eb3, ~ d3@3 [g2,c4,eb4,bb4]@4, ~@2 f3@2 ~ bb2@3", // Bb Cm7
  AG: "~@3 f3 ~@3 eb3, [f2,d4,f4,bb4] [eb2,c4,g4,bb4], ~ bb2@3 ~ g2@3, ~ d3 ~ bb2", // Bb Cm7
  AH: "~@3 d3 [bb2,bb3,d4,bb4] [g2,g3,c4,eb4,c5] [f2,f3] [eb2,eb3], [d2,bb3,f4,bb4] ~, ~ f2@3 ~@4, ~ bb2 ~ [d4,f4,d5]", // Bb Cm F Eb Bb Dm
  AI: "[d2,d3] [c2,c3] [d2,d3,c5] [eb2,eb3,bb4] [f2,f3] [eb2,eb3] [d2,d3] [g2,g3], [f4,bb4,d5] f4 [f4,a4] [f4,g4,b4]", // D C D7 Eb5 F Eb D G …
  AJ: "~@3 c4 ~@3 ab3, [c2,c3,eb4,g4,c5]@2 ~ f3, ~ eb3@3 [ab2,d4,f4,c5]@4, ~@2 g3@2 ~ c3@3", // Cm Dm7b5
  AK: "~@3 g3 ~@3 f3, [g2,c4,eb4,c5] [f2,d4,ab4,c5], ~ c3@3 ~ ab2@3, ~ eb3 ~ c3", // Cm Dm7b5
  AL: "~@3 [g2,b4] [eb2,eb3,c5] [d2,d3,b4,d5] [c2,c3] g2, [eb2,a3,c4,c5] ~, g4 [c3,g4,a4] g4 [g4,eb5], ~ g2@2 ~@5", // G Cm G C Adim Am7 Cm
  AM: "[b1,b2] [c2,c3] [d2,d3,f4,d5] [eb2,eb3,eb4,c5] [f2,f3] [g2,g3] [a2,a3] [f2,f3], [c4,eb4,g4,eb5] g4 [d4,bb4] [c4,eb4,f4]", // B C Dm Cm F G A F …
  AN: "~@4 [f3,bb3,d4,f4]@2 ~ [f3,bb3,d4,f4]", // Bb
  AO: "[f3,bb3,c4,e4,g4]@2 ~ [f3,bb3,c4,e4,g4] [f3,bb3,c4,e4,g4]@2 ~ [f3,bb3,c4,e4,g4]", // C7
  AP: "[f3,a3,c4,f4,a4]@4 db6 bb5 g5 e5 c6 a5 f5 c5 bb5 g5 e5 db5, ~@3 [e4,g4,bb4,db5] [f4,a4,c5]@2 ~ [db4,e4,g4,bb4]", // F Edim F Dbdim
  AQ: "a5 f5 c5 a4 g5 e5 db5 bb4 [f3,a3,c4,f4,a4,c5,f5]@2 [f2,f3]@2 [g2,g3]@2 [ab2,ab3]@2, [c4,f4,a4]@2 ~ [bb3,db4,e4,g4] ~@4", // F G Ab F Bbdim
  AR: "a6 e6 db6 a5 f6 d6 b5 ab5 e6 db6 a5 e5 d6 b5 ab5 f5, [a2,a3]@2 ~ [ab4,b4,d5,f5] [a4,db5,e5]@2 ~ [f4,ab4,b4,d5]", // A Abdim A Fdim
  AS: "db6 a5 e5 db5 b5 ab5 f5 d5 [a3,db4,e4,a4,db5,e5,a5]@2 ~@2 [a4,c5,f5]@2 f4@2, [e4,a4,db5]@2 ~ [d4,f4,ab4,b4] ~@2 [f2,f3]@2", // A F A Ddim F
  AT: "[bb2,f3,bb4,d5] f4 [b4,d5,g5] f4 [c3,g3,c5,e5] g4 [db5,e5,a5] a4, ~ [g2,g3] ~ [a2,a3]", // Bb G C A G A
  AU: "[d3,a3,d5,f5] a4 [e5,g5,c6] c5 [f3,a3,c4,f4,f5,a5] ~ [db5,e5,f5] f4, ~ [c3,g3,bb3,e4] ~ [a2,f3,a3]", // Dm C F Db C7 Dm
  AV: "[bb2,f3,bb3,bb4,d5] f4 [d5,f5,g5] g4 [c3,g3,c4,c5,e5] g4 [e5,g5,a5] a4, ~ [b2,g3,b3] ~ [db3,a3,db4]", // Bb G7 C A7 Em Gbm
  AW: "[d3,a3,d4,d5,f5] a4 [b4,f5,g5] g4 [c2,c3] [bb1,bb2] [a1,a2] [d2,d3], ~ [g2,g3] [e4,g4,c5] [c4,d4,gb4,d5]", // Dm G7 C Bb A D G C …
  AX: "[g1,g2,bb3,d4,g4] ~@7", AY: "~@8 [e3,ab3] ~ e5@2 [eb3,ab3] ~ ab5@2, ~@2 db5 c5, ~@10 ab2 ~ ab5@2 ab2 ~",
  AZ: "[b3,eb4] ~ eb3 ~ [bb3,eb4] ~ eb3 ~ [ab3,bb3] ~ gb5@2 [f3,bb3] ~ bb5@2, ab4 g4 eb5 d5, ~@10 bb2 ~ bb5@2 bb2 ~", // B Eb5 Absus2 Bb5
  BA: "[b4,e5,b5] ab5 e5 [ab3,b3,e4,b4] ab5 e5 b4 [ab3,b3,e4,ab4], [ab3,b3,e4] ~ [ab3,b3,e4] ~", // E5 E
  BB: "e5 b4 db5 eb5 e5 gb5 ab5 a5 b5 e5 gb5 ab5 a5 b5 db6 d6, [ab3,b3,e4]@2 ~ [ab3,b3,e4]!2 b4 ab4 e4", // E
  BC: "eb6 c6 a5 [a3,c4,eb4,gb4,gb5] c6 a5 gb5 c5, [a3,c4,eb4,gb4] ~ [a3,c4,eb4,gb4] [a2,eb3,a3]", // Adim
  BD: "eb5 c5 a4 b4 c5 d5 eb5 f5 gb5 eb5 c5 d5 eb5 f5 gb5 a5, gb4 eb4 c4 a3 eb4 c4 a3 gb3",
  BE: "[bb2,f3,bb3,bb4,bb5]@2 f6 d6 gb6 eb6 c6 a5 f6 d6 bb5 f5 eb6 c6 a5 gb5, ~@3 [a4,c5,eb5,gb5] [bb4,d5,f5]@2 ~ [gb4,a4,c5,eb5]", // Bb5 Adim Bb Gbdim
  BF: "d6 bb5 f5 d5 c6 a5 gb5 eb5 [d4,f4,bb4,d5,f5,bb5]@2 [bb1,bb2]@2 [c2,c3]@2 [db2,db3]@2, [f4,bb4,d5]@2 ~ [eb4,gb4,a4,c5] ~@4", // Bb C Db Bb Ebdim
  BG: "gb5 d5 a4 gb4 e5 db5 bb4 g4 [d3,a3,d4,gb4,a4,d5]@2 db3@2 c3@2 a2@2, [a3,d4,gb4]@2 ~ [g3,bb3,db4,e4] ~@2 [c4,d4]@2", // D Gdim Csus2
  BH: "~@7 g4 ~@7 g4, g2@4 b3 d4 gb4@2 ~@3 e3 a3 c4 gb4@2, ~ b2@7 e2@8, ~@2 d3@6 ~ g2@7, ~@3 g3@5 ~@2 c3@6",
  BI: "~@7 g4 ~@7 a4, d2@4 g3 b3 d4@2 ~@3 c3 a3 e4 g4@2, ~ g2@7 c2@8, ~@2 b2@6 ~ e2@7, ~@3 d3@5 ~@2 a2@6",
  BJ: "~@7 b4 ~@7 b4, b1@4 b3 d4 g4@2 ~@3 e3 b3 e4 g4@2, ~ d2@7 e2@8, ~@2 g2@6 ~ g2@7, ~@3 b2@5 ~@2 b2@6",
  BK: "[c2,c3] [b1,b2,d4,g4,d5] [c2,c3,e4,g4,c5] [db2,db3,e4,g4,b4] [d2,d3] [c2,c3] [b1,b2] [e2,e3], ~@2 [gb4,a4] [d4,e4,ab4,b4]", // C G C Dbm7b5 D C B E …
  BL: "~@7 a4 ~@7 a4, a2@4 c4 e4 ab4@2 ~@3 f3 b3 d4 ab4@2, ~ c3@7 f2@8, ~@2 e3@6 ~ a2@7, ~@3 a3@5 ~@2 d3@6",
  BM: "~@7 a4 ~@7 ab4, e2@4 a3 c4 e4@2 ~@3 d3 ab3 b3 f4@2, ~ a2@7 d2@8, ~@2 c3@6 ~ f2@7, ~@3 e3@5 ~@2 b2@6",
  BN: "~@7 a4 ~@7 c5, c2@4 a3 c4 e4@2 ~@2 e3@2 c4 e4 a4@2, ~ e2@7 ~@3 a3@5, ~ a2@3 a2@4, ~@3 c3@5 ~ c3@7",
  BO: "[ab1,ab2] [a1,a2,e4,c5,e5] [b1,b2,d4,b4,d5] [c2,c3,c4,a4,c5] [db2,db3] [d2,d3] [e2,e3] [d2,d3], ~@2 [b3,g4,b4] [c4,d4,a4]", // Ab Am Bm F Db D E D …
  BP: "~@7 g4 ~@7 g4, d2@4 g3 b3 d4@2 ~ d4@3 [b3,d4,gb4]@4, ~ g2@7 [f2,f3]@8, ~@2 b2@6 ~@3 d5@2 g4@2 ~, ~@3 d3@5 ~@2 b4@4 [b4,d5,g5]@2", // Bm F G
  BQ: "~@7 g5 ~@7 g5, e3@4 g4 a4 d5@2 ~@3 d4 g4 b4 d5@2, ~ a3@7 d3@8, ~@2 c4@6 ~ g3@7, ~@3 e4@5 ~@2 b3@6",
  BR: "~@7 g5 ~@7 b4, eb3@4 g4 a4 e5@2 ~@2 eb5@3 gb4@3, ~ g3@7 [b1,b2]@8, ~@2 a3@6 ~@3 gb5@3 [eb5,gb5,b5]@2, ~@3 e4@5 ~ gb4@3 [a3,eb4,f4]@4", // B F7
  BS: "~@7 [d3,g3,b3,d4]", // G
  BT: "[d3,g3,a3,db4,e4]@2 ~ [d3,g3,a3,db4,e4] a3 [a3,a4] [b3,b4] [d3,g3,a3,db4,e4,db5], ~@2 [d3,g3,db4,e4] ~", // A7 A B A7 Dbdim
  BU: "[d3,gb3,a3,d4,gb4,d5] [c3,eb3,ab3,eb4,ab4,eb5] ~ [db3,g3,bb3,e4,g4,bb4,e5]", // D Ab Dbdim
  BV: "~@6 [d3,g3,bb3,d4,g4,bb4,d5,g5]@5 [eb3,g3,bb3,eb4,bb4,eb5,g5,bb5]@5", // Gm Eb
  BW: "[~ [a2,db3,e3,a3,a4,db5,e5,a5]@5 [d2,d3,d4]@6 [bb3,d4,d5,g5,bb5,d6]@6 [ab3,c4,eb4,eb5,ab5,c6,eb6]@6 [c2,c3,c4]@5 [bb1,bb2,bb3]@7 ~ [f3,bb3,d4,f4,bb4,d5,f5]@8 [d3,gb3,c4,d4,gb4,c5,d5,gb5]@9 [a1,a2,a3]@10]/4", // A D Gm Ab C Bb D7 A
  BX: "~@5 [g1,g2,g4,bb4,d5,g5]@2 ~@9", // Gm
  BY: "[~@13 [ab2,c5,gb5]@2 [g2,b4,g5]@2 [ab2,c5,gb5]@2 [g2,b4,g5]@2 [f2,f3,ab4,db5,ab5]@2 ~@2 [gb2,gb3,a4,c5,eb5]@2 ~@5]/2", // Ab7 G Ab7 G Db Gbdim
  BZ: "~ [g2,g3,d4,g4,bb4]@2 ~@13", // Gm
})).s("gm_piano").gain(0.35)

// chords · piano · soft notes
const piano_soft = note(`<
  ~@3 A B C D E F G ~@3 H I J K ~@3 L M N O P Q ~@5 R S T U V W X Y ~@16 Z AA AB AC AD@3 ~@9 R AE AF AG AH AI AJ AK AL
  ~@21 AM AN AO ~@8 AP AQ AR@2 AS AT AU AV@2 ~ AW AX AY AZ BA BB@2 BC
>`.pickRestart({
  A: "~@14 [e2,db3] ~", B: "[d2,d3] ~ [a1,f3] ~ db2 ~ a1 ~ d2 ~ a1 ~ db2 ~ a1 ~, ~ a3@2 ~, ~ e3 f3 [e3,a3]",
  C: "[d2,d3] ~ [a1,a2] ~ db2 ~ a1 ~ b1 ~ a1 ~ db2 ~ a1 ~, ~ a3@2 [g3,a3,e4], ~ e3 d3 ~", // D A A7
  D: "d2 d3 db3 d3 eb3 d3 db3 ~@9, [f3,a3,f4] ~ [c4,gb4]@2 ~@4", // F Cdim
  E: "~@6 [g3,db4,eb4,gb4] ~ [g3,bb3,d4,g4]@2 ~@4 [d3,db4,gb4,a4] ~", // Eb7 Gm Dmaj7
  F: "[bb3,d4,g4,bb4] ~ [eb3,eb4] ~ [d3,d4] ~ [c3,c4] ~ [bb2,bb3] [c3,c4] [a2,a3] [bb2,bb3] [g2,g3] ~ [d2,d3] ~", // Gm Eb D C Bb C A Bb …
  G: "[g2,g3] [bb2,bb3] [g2,g3] [a2,a3] [d4,a4,d5]@2 ~@2, ~@2 [e4,bb4,db5]@2 [f2,f3] ~@3", // G Bb G A D5 Bbdim F
  H: "a2 ~ f3 ~ e3 ~ [d3,a3] a3 c3 ~ b2 ~ a2 ~ [e2,a3] a3, a3@3 ~ a3@3 ~", // D5 A5
  I: "a2 ~ [d3,f4] ~ [c3,e4] ~ [b2,d4] ~ [a2,c4] ~ [e2,b3] ~ [c2,a3] ~ [e2,b3] ~, a3 ~@3", // Dm C Bm Am E5 F E5
  J: "a2 ~ f3 ~ eb3 ~ [d3,a3,c4] [a3,c4] c3 ~ bb2 ~ a2 ~ [bb2,a3,c4] [a3,c4], [a3,c4]@3 ~ [a3,c4]@3 ~", // D7 Am F Am
  K: "a2 ~ [eb3,g4] ~ [d3,f4] ~ [g3,eb4] ~ [f3,d4] ~ [eb3,c4] ~@5, [a3,c4]@3 ~@5", // Eb Dm Cm Dm Cm Am
  L: "~@2 d3 ~ c3 ~ [d3,g4] g4 eb3 ~ c3 ~ d3 ~ [bb2,g4] g4, g2@15 ~, [g3,g4]@3 ~ g4@3 ~", // G5 Eb G
  M: "c3 ~ eb3 ~ d3 ~ [eb3,g4] g4 f3 ~ d3 ~ eb3 ~ [c3,g4] g4, g2@15 ~, g4@3 ~ g4@3 ~", // Eb C5
  N: "d3 ~ f3 ~ eb3 ~ [f3,g4] g4 g3 ~ eb3 ~ f3 ~ [d3,g4] g4, g2@15 ~, g4@3 ~ g4@3 ~", // Fsus2 G5
  O: "[eb3,g4] [c3,eb5] [ab3,c5] [f3,ab4] [d3,f4] [bb2,d5] [g3,bb4] [eb3,g4], g2@15 ~", // Eb Cm Ab Fm Dm Bb Gm Eb
  P: "[c3,eb4] [ab2,c5] [f3,ab4] [d3,f4] [bb2,d4] bb4 [eb3,g4] [c3,eb4], g2@10 g2@5 ~", // Cm Ab Fm Dm Bb Eb Cm
  Q: "[g2,eb3,gb3,a3,c4]@3 [g2,eb3,gb3,a3,c4] [g2,eb3,gb3,a3,c4]@3 ~", // Am7b5
  R: "~@6 [g3,c4,eb4,gb4] ~ [g3,bb3,d4,g4]@2 ~@4 [d3,c4,gb4,a4] ~", // Cm Gm D7
  S: "[bb3,d4,g4]@2 ~@4 [d3,c4,gb4,a4] ~ [g3,bb3,d4,g4]@2 ~@4 [d3,c4,eb4,gb4] ~", // Gm D7 Gm Cdim
  T: "[g3,bb3]@4 a4@2 g4@2 f4 ~ e4 ~ d4@2 db4@2, [d4,g4] ~ [e3,bb3,d4,bb4,d5]@2 [a3,d4,a4]@2 [a2,g3,a3]@2", // Gm G5 Em7b5 D5 A7
  U: "[f3,a3,d4] ~ [d2,bb3] e2 [f2,a3] ~ [bb2,g3] ~ [a2,f3] ~ [g2,e3] ~ [f2,d3] ~ [e2,db3] ~, d3 ~@7", // Dm Gm F Eb Dm C Dm Dbm
  V: "[d2,d3] ~ [a1,a2] ~ [db2,db3] ~ [a1,a2] ~ [d2,d3] ~ [a1,a2] ~ [db2,db3] ~ [a1,a2] ~", // D A Db A D A Db A
  W: "[d2,d3] ~ [a1,f3] ~ db2 ~ a1 ~ f2 ~ d2 ~ db2 ~ a1 ~, bb2 [e3,a3] [d3,f3,a3] [g3,a3,e4]", // D Dm A5 Dm A7
  X: "d2 d3 db3 d3 ~@12, [f3,a3,f4] ~@7", Y: "~@4 [bb2,bb3] ~ [eb3,eb4] ~ [d3,d4] ~ [c3,c4] ~@5",
  Z: "~@3 bb3 ~@3 g3, [bb2,d4,f4,bb4] [g2,c4,eb4,bb4], ~ d3@3 ~ bb2@3, ~ f3 ~ eb3", // Bb Cm7
  AA: "~@3 f3 ~@3 [ab3,a4], [f2,bb3,d4,bb4]@2 ~ [f3,bb4], ~ bb2@3 [ab2,d4,f4,c5]@4, ~@2 d3@2 ~ d3@3", // Amaj7 Bb Bb5 Dm7b5
  AB: "~@3 g3 ~@3 f3, [g2,eb4,bb4] [f2,d4,ab4,bb4], ~ bb2@3 ~ bb2@3, ~ eb3 ~ d3", // Eb Bb7
  AC: "~@3 eb3 ~@3 [d3,a4], [eb2,eb4,g4,bb4] [d2,d4,gb4,c5], ~ g2@3 ~ gb2@3, ~ bb2 ~ [a2,bb4]", // D5 Eb D7 Bbmaj7
  AD: "[[g2,d4,g4,bb4]@2 ~@2 ab3 bb3 ab3 bb3 g3 bb3 g3 bb3 gb3 bb3 gb3 bb3 f3 bb3 f3 bb3 [ab3,bb4] [bb3,c5] [ab3,bb4] [bb3,c5] g3 bb3 [g3,bb4] [bb3,c5] [gb3,bb4] [bb3,c5] [gb3,bb4] c5 [f3,d4,bb4]@4 ~@2 [f3,bb3,d4,f4]@2 ~@8, ~@4 bb4@8 d5@8 ~@4 bb4@2 ~@5 bb3@5 ~@12, ~ f4 e4 eb4 d4 f4 e4 eb4 ~@4]/3", // Gm Absus2 Bbsus2 Absus2 Bbsus2 Gm Bbsus2 Gb …
  AE: "[g3,bb3,d4,g4]@2 ~@4 [g3,c4,eb4,gb4] ~ [g3,bb3,d4,g4]@2 ~@4 [d3,c4,gb4,a4] ~", // Gm Cm Gm D7
  AF: "[g3,bb3,d4,g4] ~ a4 g4 f4 e4 d4 db4, ~ [e3,bb3,d4,bb4,d5] [a3,d4,a4] [a2,g3,a3]", // Gm Em7b5 D5 A7
  AG: "[d2,f3,a3,d4] ~ [d2,bb3] e2 [f2,a3] ~ [bb2,g3] ~ [a2,f3] ~ [g2,e3] ~ [f2,d3] ~ [e2,db3] ~", // Dm Gm F Eb Dm C Dm Dbm
  AH: "[d2,d3] ~ [a1,f3] ~ db2 ~ a1 ~ d2 ~ a1 ~ db2 ~ a1 ~, ~ [a2,a3]@3, ~ e3 f3 e3", // D Dm A
  AI: "[c3,e3,a4] ~ [eb2,c5] ~ [b2,e3] ~ eb2 ~ [a2,e3,c5] d5 [eb2,e5] f5 [ab2,e3] ~ eb2 ~, ~ e5 ~ e5", // Am Cm E5 Am Emaj7 Dbm
  AJ: "e3 ~ b2 ~ eb3 ~ b2 ~ db3 ~ b2 ~ eb3 ~ b2 ~, [b3,b4]!2, g4 gb4 e4 gb4", // B
  AK: "[d3,gb3,b4] ~ [gb2,d5] ~ [db3,gb3] ~ gb2 ~ [b2,gb3,d5] e5 [gb2,gb5] g5 [bb2,gb3] ~ gb2 ~, ~ gb5 ~ gb5", // Bm D Gb5 Bm Gb Ebm
  AL: "db4 ~ db3 ~ [ab3,db4] ~ db3 ~@9, gb4 f4 ~@2", // Db5
  AM: "~@3 g4 ~@3 g3 ~@3 g3 ~@3 g3, e2@4 ~ g3@2 ~@2 g3@2 ~@2 g3@2 ~, ~ e3@3 f3@2 g4@4 g4@4 ~@2, ~ [b4,e5,g5] d4@2 db4@2 c4@2, ~@3 f3 e3!2 eb3 [eb3,g4]", // Em Eb
  AN: "~@3 [g3,a4] ~@3 [g3,a4] ~@3 [g3,a4] ~@3 [g3,a4], b3 d4 db4 c4, d3@2 [d3,g4]@2 ~ [g3,a4]@2 ~@2 [g3,a4]@2 ~@2 [g3,a4]@2 ~, ~ [g3,a4]@2 ~ [f3,g4]@2 [f3,g4]@2 [e3,g4]@2 [e3,g4]@2 [eb3,g4]@2 [eb3,g4]@2", // Gsus2 G5 Gsus2 Fsus2 Em Eb
  AO: "[d3,g3,b3,g4]@2 ~ [d3,g3,b3,d4] [d3,g3,b3,d4]@2 ~@2", AP: "~@11 [g3,c4,eb4,gb4] ~ [g3,bb3,d4,g4]@2 ~",
  AQ: "~@3 [d3,c4,gb4,a4] ~ [g3,bb3,d4,g4] ~ [eb3,g4] a4 [d3,bb4] ~ [c3,eb5] ~ [bb2,d5] ~ [a2,c5]", // D7 Gm Eb Gm Cm Bb Am
  AR: "[~ [g2,bb4] ~ [d2,gb4,a4] ~ g2 ~ [eb2,eb3] ~ [d2,d3] ~ [c2,c3,g4,bb4] [g4,bb4] [bb1,bb2] ~ [a1,a2] ~ [g1,g2] ~ [d4,gb4,a4]@2 [d4,g4,bb4]@2 [eb3,g3] a3 [d3,bb3] ~ [c3,eb4] ~ [bb2,d4] ~ [a2,c4], ~@5 [g4,bb4]@6 ~@2 [g4,bb4]@6 d2 ~ [g1,g2] ~@10]/2", // Gm D Eb D C7 Gm Bb A …
  AS: "~ [g2,bb3] ~ [gb3,a3,d4]@2 [g3,bb3,d4]@2 [g2,eb5] a2 [bb2,d5] ~ [eb3,c5] ~ [d3,bb4] ~ [c3,a4], ~@3 d2 ~ g2 ~@10", // Gm D Gm Cm Bb Cm Gm F
  AT: "~ [bb2,g4] ~ [d2,a3,d4,gb4] ~ [g2,bb3,d4,g4]@2 ~@2 [c3,g3,eb4,gb4,a4]@2 ~@2 [g2,g3,d4,g4,bb4]@2 ~", // Eb D Gm Am7b5 Gm
  AU: "~ [d2,d3,d4,gb4,a4,d5]@2 ~@2 [g2,bb3,d4,g4]@2 ~@2 [c3,g3,eb4,gb4,a4]@2 ~@2 [g2,g3,d4,g4,bb4]@2 ~", // D Gm Am7b5 Gm
  AV: "[~ [d2,d3,d4,gb4,a4]@2 ~@2 ab2@2 g2@2 [c4,gb4]@2 [b3,g4]@2 ab2@2 g2@2 [gb4,c5]@2 [g4,b4]@2 ab2@2 g2@2 [ab2,c5,gb5]@2 [g2,b4,g5]@2 ~@3]/2", // D Cdim Em Gbdim G Ab7 G
  AW: "~@9 [c4,eb4,ab4]@2 c3 ~ [bb3,d4,g4]@2 d3", // Ab Gm
  AX: "~ [a3,d4,gb4]@2 d2 ~ [g2,bb3,d4,g4]@2 ~@6 [c3,g3,a3,eb4,gb4]@2 ~", // D Gm Am7b5
  AY: "~@5 [g3,bb4,d5,g5]@2 ~@6 [c4,g4,a4,eb5,gb5]@2 ~", // Gm Am7b5
  AZ: "~@5 [g2,bb3,d4,g4]@2 ~@2 [c3,g3,a3,eb4,gb4]@2 ~@2 [g2,g3,bb3,d4,g4]@2 ~", // Gm Am7b5 Gm
  BA: "~ [c3,g3,a3,eb4,gb4]@2 ~@2 [g2,g3,bb3,d4,g4]@2 ~@2 [c3,g3,a3,eb4,gb4]@2 ~@2 [g2,g3,bb3,d4,g4]@2 ~", // Am7b5 Gm Am7b5 Gm
  BB: "[~ [c3,g3,a3,eb4,gb4]@2 ~@17 d6 g6 ~@7 [d2,d3,c4,d4,gb4,d5] ~@2, ~@5 g2@5 bb3 db4 d4 g4 bb4 db5 d5 g5 bb5 db6@2 ~@11, ~@5 [d4,g4]@4 g3@12 ~@11, ~@5 bb3@3 d3@13 ~@11, ~@7 db3@14 ~@11]/2", // Am7b5 D7 G5
  BC: "~@5 [g2,d3,g3,bb3,g4] ~@10", // Gm
})).s("gm_piano").gain(0.2)

stack(piano, piano_soft)