Strudelify

Piano Concerto No.1 Op.23

Peter Tchaikovsky

KeyD♭ majorTempo60 bpm
0:00/0:00
// Piano Concerto No.1 Op.23 — Peter Tchaikovsky
// 60 bpm, 6/8, key Db 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/5317610; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 123 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(60/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(`<
  ~@12 A B@8 ~ C D E F ~@2 G H@2 I@2 J@2 K L M N O P Q R@7 S T@6 U@4 V W X@2 Y Z AA AB AC AD AE AF AG AH AI AJ AK@2 AL@2
  AM AN AO AP AQ@3 AR AS@2 AT AU AV AW AX@3 AY@6 AZ BA BB BC BD BE ~ BF BG@3 BH@5 ~ BI@2 ~
>`.pickRestart({
  A: "~@7 [db3,ab5]", // Db5
  B: "[~@2 ab3@8 db4@8 eb5@15 ~ f5@8 ~@24 gb4@24 ~@24 [gb4,eb5]@16 eb5@8 ~@24 gb4@16 ~@24 db5@8 [c3,ab3,eb4,ab4,eb5]@15 ~ eb5@8 ~@24 gb5@16 gb5@8 ~@16 [ab4,ab5]@8 ~@19 [c5,c6]@9 ~@46 f5@4, ~@9 gb4@4 ~@8 [db3,ab5]@24 [db3,db5]@20 ~@4 db3@20 ~@4 [db3,ab3,db4,f4,ab4]@12 ~@12 [bb2,f3,bb3,f4,bb4]@24 [ab3,db4,f4,db5,f5]@12 [gb3,bb3,e4,bb4,e5,bb5]@14 [f3,a3]@5 f2@6 a3@2 b3@2 c4@2 f4@2 a4@2 c5@4, ~@50 ab3@40 ~@8 [ab3,c5]@32 ~@16 ab3@32 ~@72 f5@32 ~@33 [db5,db6]@19 [f5,c6]@50, ~@29 db4@16 ~@8 [db4,bb4]@12 ~@4 ab4@23 ~@5 bb4@8 ~@12 db5@12 [a2,gb3,db4,gb4,db5]@12 ~@26 [c4,f4]@7 c3@18, ~@77 db4@12 ~@32 eb5@20 ~@4 [gb4,gb5]@8 ~@14 c5@9 f3@16]/8", // Ebm Ab C Db5 Db Bb5 Db Gb7 …
  C: "~@5 [a4,f5]", D: "~@2 [gb4,c5] ~ [ab4,e5]@2 ~@2 [a3,c4,e4,g4] ~ [d4,f4]@2, [bb4,d5]@5 ~@3 [a4,c5]@5 ~@3",
  E: "[db4,e4,bb4]@2 [ab3,d4,f4] ~ [db4,e4,bb4]@2 [e3,g3,d4] ~ [bb3,c4]@2 [a2,e3,a3,db4]@2", F: "[d2,a2,d3,a3,d4] ~@5",
  G: "~@5 [g5,a5]", // Gsus2
  H: "[f5,a5,b5] [e5,g5,db6] [d5,gb5,d6] [e5,g5,db6] [f5,a5,d6] [d5,gb5,b5] db5 d5 b4 d5 c5 [db5,g5,a5], ~@24 [g5,a5]@11 ~ [g5,a5]@8 ~@4", // Bm7b5 Dbdim D Dbdim Dm Bm A7 Gsus2
  I: "[d5,gb5] [db5,e5,a5] [b4,d5] [a4,db5] [g4,b4] [gb4,a4] [db5,e5] [b4,d5,g5] [a4,db5] [g4,b4] [gb4,a4] [e4,g4], ~ b5 d5 ~ a5 db5", // D A Bm A G Gbm Dbm G …
  J: "[gb4,a4,d5] [e4,g4,db5] [d4,gb4,b4] [db4,e4,a4] [b3,d4,g4] [a3,db4,gb4] [g3,b3,e4] [a3,db4,gb4] [b3,d4,g4] [db4,e4,a4] [d4,gb4,b4] [e4,g4,db5]", // D Dbdim Bm A G Gbm Em Gbm …
  K: "[gb4,a4,d5]@2 [g4,b4,e5]@2 [a4,db5,gb5]@2 [b4,d5,g5]@2 [db5,e5,a5]@2 [d5,gb5,b5]@2 [e5,g5,db6]@2 [g5,db6,e6]@2 [e5,g5,db6]@2 [d5,g5,b5] ~ [db5,g5,a5] ~ [d5,g5,b5] ~", // D Em Gbm G A Bm Dbdim G …
  L: "[e5,g5,db6]@2 [g5,db6,e6]@2 [e5,g5,db6]@2 [d5,g5,b5] ~ [db5,g5,a5] ~ [d5,g5,b5] ~ [e5,g5,db6]@2 [g5,db6,e6]@2 [e5,g5,db6]@2 [d5,g5,b5] ~ [db5,g5,a5] ~ [d5,g5,b5] ~", // Dbdim G A7 G Dbdim G A7 G
  M: "[db5,g5,a5] ~ [db5,g5,b5] ~ [db5,g5,a5] ~ [db5,g5,b5] ~ [db5,g5,a5] ~ [db5,g5,b5] ~ [db5,g5,a5] ~ [db5,g5,b5] ~ [db5,g5,a5] ~ [db5,g5,b5] ~ [db5,g5,a5] ~ [db5,g5,b5] ~", // A7 Dbm7b5 A7 Dbm7b5 A7 Dbm7b5 A7 Dbm7b5 …
  N: "[gb5,a5] ~ [d5,gb5,b5] ~ [d5,gb5,a5] ~ [d5,gb5,b5] ~ [d5,gb5,a5] ~ [d5,gb5,b5] ~ [d5,gb5,a5]@2 [d4,gb4,b4] ~ [d4,gb4,a4] ~ [d4,gb4,b4] ~ [d4,gb4,a4] ~ [d4,gb4,b4] ~, d5@2 ~@10 [d4,gb4,a4] ~@11", // Gbm Bm D Bm D Bm D Bm …
  O: "[d3,gb3,a3,d4,gb4,a4] ~ [d3,gb3,b3] ~ [d3,gb3,a3] ~ [d3,gb3,b3] ~ [d3,gb3,a3] ~ [d3,gb3,b3] ~ [d2,gb2,a2,d3,gb3,a3] ~ [d2,gb2,b2] ~ [d2,gb2,a2] ~ [d2,gb2,b2] ~ [d2,gb2,a2] ~ [d2,gb2,b2] ~", // D Bm D Bm D Bm D Bm …
  P: "[d2,gb2,a2]@2 [d3,gb3,b3] ~ [d3,gb3,a3] ~ [d3,gb3,b3] ~ [d3,gb3,a3] ~ [d3,gb3,b3] ~ [d3,gb3,a3,d4,gb4,a4] ~ [d4,gb4,b4] ~ [d4,gb4,a4] ~ [d4,gb4,b4] ~ [d4,gb4,a4] ~ [d4,gb4,b4] ~, [d3,gb3,a3] ~@23", // D Bm D Bm D Bm D Bm …
  Q: "[d4,gb4,a4]@2 ~@2 [d4,gb4,b4]@2 ~@2 [d4,gb4,a4]@2 ~@2 [d4,gb4,b4]@2 ~@2 [d4,gb4,a4]@2 ~@2 [d4,gb4,b4]@2 ~@2 [eb4,gb4,ab4]@2 ~@2 [eb4,gb4,bb4]@2 ~@3 [eb4,gb4,ab4]@2 ~@2 [eb4,gb4,bb4]@2 ~@3 [eb4,gb4,ab4]@2 ~@2 [eb4,gb4,bb4]@2, db4@3 c4 ~@2", // D Bm D Bm D Bm Ab7 Ebm …
  R: "[~@3 [db4,f4,ab4]@2 ~@2 [db4,f4,bb4]@2 ~@2 [db4,f4,ab4]@2 ~@2 [db4,f4,bb4]@2 ~@2 [db4,f4,ab4]@2 ~@2 [db4,f4,bb4]@2 ~@2 [c4,gb4,ab4]@2 ~@2 [c4,gb4,bb4]@2 ~@2 [c4,gb4,ab4]@2 ~@2 [c4,gb4,a4]@2 ~@2 [eb4,gb4,bb4]@2 ~@2 [eb4,gb4,c5]@2 ~@2 [f4,ab4,db5]@2 ~@2 [f4,ab4]@2 ~@2 [f4,ab4,bb4]@2 ~@2 [f4,ab4,c5]@2 ~@2 [f4,ab4,db5]@2 ~@2 [f4,ab4,f5]@2 ~@2 [gb4,c5,eb5]@2 ~@2 [gb4,c5,d5]@2 ~@2 [gb4,c5,eb5]@2 ~@2 [gb4,c5,f5]@2 ~@2 [gb4,c5,d5]@2 ~@2 [gb4,c5,eb5]@2 ~@2 [f4,db5]@2 ~@2 [f4,g4]@2 ~@2 [db3,ab3]@4 [f4,a4]@2 ~@2 [db4,f4,bb4]@2 ~@2 [db4,f4,db5]@2 ~@2 [c4,gb4,ab4]@2 ~@2 [c4,gb4,g4]@2 ~@2 [c4,gb4,ab4]@2 ~@2 [c4,gb4,a4]@2 ~@2 [c4,gb4,bb4]@2 ~@2 [c4,gb4,c5]@2 ~@2 [f4,ab4,db5]@2 ~@2 [f4,ab4]@2 ~@2 [f4,ab4,bb4]@2 ~@2 [f4,ab4,c5]@2 ~@2 [f4,ab4,db5]@2 ~@2 [f4,ab4,f5]@2 ~@2 [gb4,c5,eb5]@2 ~@2 [gb4,c5,d5]@2 ~@2 [gb4,c5,eb5]@2 ~@2 [gb4,c5,f5]@2 ~@2 [gb4,c5,d5]@2 ~@2 [gb4,c5,eb5]@2 ~@2 [f4,db5,f5]@2 ~@2 [e4,db5,e5]@2 ~@2 [f4,db5,f5]@2 ~@2 [gb4,db5,gb5]@2 ~@2 [e4,db5,e5]@2 ~@2 [f4,db5,f5]@2 ~@2 [ab4,eb5,gb5,ab5]@2 ~@2 [g4,eb5,gb5,g5]@2 ~@2 [ab4,eb5,gb5,ab5]@2 ~@2 [bb4,eb5,gb5,bb5]@2 ~@2 [g4,eb5,gb5,g5]@2 ~@2 [ab4,ab5]@2 ~@2 [e4,ab4,db5,e5]@2 ~@2 [f4,ab4,db5,f5]@2 ~@2 [ab4,db5,ab5]@2 ~@2 [gb4,db5,gb5]@2 ~@2 [f4,db5,f5]@2 ~@2 [db4,ab4,db5]@2 ~@2 [eb4,gb4,db5,eb5]@2 ~@2 [gb4,db5,gb5]@2 ~@2 [db5,gb5,db6]@2 ~@2 [a4,db5,a5]@2 ~@2 [ab4,db5,ab5]@2 ~@2 [gb4,db5,gb5]@2 ~@2 [db5,db6]@2 ~@2 [eb5,eb6]@2 ~@2 [ab2,ab3]@4 [eb5,eb6]@2 ~@2 [db5,db6] ~ [eb5,eb6] ~@2 [db5,db6] ~@2 [eb5,eb6] ~ [db5,db6] ~@2 [eb5,eb6] ~@2 [db5,db6] ~ [eb5,eb6] ~@2 [db5,db6] ~@2 [eb5,eb6] ~ [db5,db6] ~@2, ~@11 [db3,ab3]@4 ~@4 [db2,ab2]@4 ~@12 [db3,ab3]@4 ~@4 [db2,ab2]@4 ~@12 [db3,ab3]@4 ~@4 [db2,ab2]@4 ~@12 [db3,ab3]@4 ~@4 [db2,ab2]@4 ~@12 [f4,ab4]@2 ~@6 [db2,ab2]@4 ~@12 [db3,ab3]@4 ~@4 [db2,ab2]@4 ~@12 [db3,ab3]@4 ~@4 [db2,ab2]@4 ~@12 [db3,ab3]@4 ~@4 [db2,ab2]@4 ~@12 [db3,ab3]@4 ~@4 [db2,ab2]@4 ~@12 [c3,ab3]@4 ~@4 [c2,ab2]@4 ~@12 [b2,ab3]@4 ~@4 [b1,ab2]@4 ~@12 [a2,gb3]@4 ~@4 [a1,gb2]@4 ~@12 [db5,db6]@2 ~@6 [ab1,ab2]@4 ~@12 [gb1,gb2]@4 ~@4 [g1,g2]@4 ~]/7", // Db Bbm Db Bbm Db Bbm Ab7 Cm7b5 …
  S: "[eb5,eb6] ~@2 [db5,c6]@4 [eb5,eb6]@4 [db5,db6]@2 [eb5,eb6]@2 [db5,db6]@2 [eb5,eb6]@2 [c5,c6]@2 ~@2 [db5,db6]@2 ~@2 [ab5,ab6] ~ [gb5,gb6] ~ [f5,f6] ~ [eb5,eb6] ~ [db5,db6] ~ [c5,c6] ~ [bb4,bb5] ~ [ab4,ab5] ~ [c5,c6] [bb4,bb5] [ab4,ab5] ~ [gb4,gb5]", // Eb Dbmaj7 Eb Db Eb Db Eb C …
  T: "[[f4,f5] [eb4,eb5] ~@5 [db4,f4,ab4,db5,f5,ab5]@8 [ab3,db4,f4,ab4,db5,f5]@8 [f3,ab3,db4,f4,ab4,db5]@4 ~@4 [c4,gb4,ab4,c5,gb5,ab5]@8 [ab3,c4,gb4,ab4,c5,gb5]@8 [gb3,ab3,c4,gb4,ab4,c5]@4 ~@4 [db4,f4,ab4,db5,f5,ab5]@8 [ab3,db4,f4,ab4,db5,f5]@8 [f3,ab3,db4,f4,ab4,db5]@4 ~@4 [c4,gb4,ab4,c5,gb5,ab5]@8 [ab3,c4,gb4,ab4,c5,gb5]@8 [gb3,ab3,c4,gb4,ab4,c5]@4 ~@4 [f4,ab4,f5,ab5]@8 [ab3,f4,ab4,f5]@8 [f3,ab3,db4,f4,ab4,db5]@4 ~@4 [c4,gb4,ab4,c5,gb5,ab5]@8 [ab3,c4,gb4,ab4,c5,gb5]@8 [gb3,ab3,c4,gb4,ab4,c5]@4 ~@4 [db4,f4,ab4,db5,f5,ab5]@8 [ab3,db4,f4,ab4,db5,f5]@8 [f3,ab3,db4,f4,ab4,db5]@4 ~@4 [c4,gb4,ab4,c5,gb5,ab5]@8 [ab3,c4,gb4,ab4,c5,gb5]@8 [gb3,ab3,c4,gb4,ab4,c5]@4 ~@4 [db4,f4,ab4,db5,f5,ab5]@8 [ab3,db4,f4,ab4,db5,f5]@8 [f3,ab3,db4,f4,ab4,db5]@4 ~@4 [eb4,gb4,ab4,eb5,gb5,ab5]@8 [ab3,eb4,gb4,ab4,eb5,gb5]@8 [gb3,ab3,db4,gb4,ab4,eb5]@4 ~@4 [db4,f4,ab4,db5,f5,ab5]@8 [ab3,db4,f4,ab4,db5,f5]@8 [f3,ab3,db4,f4,ab4,db5]@4 ~@4 [gb4,db5,gb5,db6]@8 [db4,gb4,db5,gb5]@8 [gb3,db4,gb4,db5]]/6", // F Eb Db Ab7 Db Ab7 Fm Db …
  U: "[~@7 [f4,ab4,db5,f5,ab5,db6]@8 [db4,ab4,db5,ab5]@8 [ab3,db4,ab4,db5]@4 ~@4 [e4,bb4,db5,e5,bb5,db6]@8 [bb3,e4,bb4,e5,bb5]@8 [bb3,c4,e4,bb4,c5,e5]@4 [a3,c4,f4,a4,c5,f5]@4 ~@24 c4@4 ~@20 f5@4 ~@8 c4@4 [f4,a4,c5]@4 [c5,f5]@4 [f5,a5]@5 [a5,c6]@5 [c6,f6]@5 [f6,a6]@6 [a6,c7]@6 [a6,c7,f7]@36 ~@2, ~@67 c3@16 ~@8 a4@8 e5@8 ~ f5@11 ~@4 a4@25 f6@42 ~@2, ~@71 f3@12 ~@4 f4@20 ~@4 a3@8 ~@13 f5@58 ~@2, ~@75 a3@8 e4@24 [f3,a4]@12 ~@18 a5@53 ~@2, ~@95 c5@12 ~@2 c6@10 ~@8 c5@15 c6@48 ~@2]/4", // Db Db5 Bbdim C7 F F5 F Am …
  V: "[f2,a2,b2]@2 [f2,a2,c3]@2 ~ [f3,ab3]@2 [f3,a3]@2 [c3,f3,ab3]@2 [c3,f3,a3]@2 ~ b3@2 c4@2 [a3,c4]@3 f4@2 [a4,f5]@2 [bb4,d5]@2 [gb4,c5]@2 ~ [ab4,e5]@2 [a4,c5]@2 [a3,c4,e4,g4]@2 ~ [d4,f4]@2 [db4,e4,bb4]@2 [gb3,c4,eb4]@2 [db4,e4,bb4]@2 ~ [db3,f3,b3]@2, ~@7 [f3,a3]@2 e4 ~@14", // Bm7b5 F Fm F Fm F Am Dm …
  W: "[b2,ab3,db4]@2 [c3,a3,c4]@2 ~ g3 ab3 e4 f4 g4 ab4 b4@2 f5 b4 c5 ab5 a5 g5 ab5 ~ e6 f6 g6 ab6 bb6 b6 [f5,c6,f6,a6,f7] ~@2 [a5,f6]@2 [bb5,d6]@2 [gb5,c6] ~@2 [ab5,e6]@2 [a5,c6]@2 [a4,c5,e5,g5] ~ [d5,f5]@2 ~ [db5,e5,bb5] ~, f2@5 [db3,f3]@2 b3@2 [db4,f4]@2 e5 ~@2 [f4,a4]@2 f5@2 [db5,f5]@2 ~ b5@2 db6@2 ~@23", // Db7 F Dm Bb Gbdim Dbm Am Am7 …
  X: "[[gb4,c5,eb5] ~ [db5,e5,bb5] ~@2 [db4,b4] ~ [b3,ab4,db5]@2 [c4,a4,c5]@2 [bb3,d4]@2 g4 eb5 e5 eb4 e4 c5 db5 ~ c4 db4 ab4 a4 f3 b3 d4@2 f4 [ab3,d4,f4] b4 e5 f5 eb5 e5 ~ a5@2 ~@11 [f5,f6]@2 ~@6 eb6 ~@6 [gb6,c7] [a3,d4,a4,b5,f6,b6]@2 ~ g5 ab5 g5 ab5 g5 ab5 b4@2 ab5!2 a5 b5 a5 gb5 e5 ~ db5 a4 gb4 e4 db4 a3 [a2,db3]@2 e3 ~@2, ~@7 f3@4 gb4 ~@2 [bb4,d5]@2 [a3,db4]@2 a4@2 ~ [e3,a3]@2 [e4,g4]@2 [ab2,d3]@2 e4 ~@4 d5@2 [a3,e4,a4,db5]@2 ~@5 [a4,a5]@5 [db5,db6]@3 e5@3 ~@2 f5@6 ~ d6@6 ~@29, ~@42 bb4@5 d5@6 ~@2 [g4,db5,e5]@5 ~@2 [e4,bb4,g5]@5 ~@2 [b4,d5]@4 bb4@2 ~@21, ~@43 [b4,b5]@5 [eb5,eb6]@5 ~@3 bb5 [gb4,c5,a5]@2 [f4,b4,ab5]@5 [eb4,a4,c6]@2 ~@7 [e4,d5]@4 ~ [bb3,e4,db5]@2 ~@11 gb3 ~@4, ~@45 c5@8 [ab4,b4,d5]@7 ~@3 [db6,g6]@3 ~@3 e5@2 f5@2 ~@2 g5 ~@20]/2", // Cdim Bbdim Db7 F Bb Ddim F Gbdim …
  Y: "~@9 [f4,f5]@2 ab3@2 ~@4 eb5 ~@6 [gb5,c6] [a2,d3,a3,b4,f5,b5]@2 e4@2 ab4 g4 ab4 g4 ab4 g4 ab4 ~ ab4 a4 b4 a4 gb4 e4 db4 ~ a3 gb3 e3, [a3,a4]@5 [db4,db5]@7 ~@2 [ab3,db4,e4]@5 ~@2 [e3,bb3,g4]@5 ~@6 [e3,d4]@4 ~@12, ~ bb3@5 d4 [eb4,eb5]@5 ~@3 bb4@3 ~ d5@4 [eb3,a3,c5]@2 ~@12 [a2,e3,db4]@2 ~@9, ~@2 [b3,b4]@6 e4@3 ~@2 f4@6 ~@3 [db5,g5]@3 ~@2 g4 ~@2 f4@2 ~@16, ~@3 c4@8 [b3,d4]@5 [gb3,c4,a4]@2 [f3,b3,ab4]@7 ~@2 [b3,d4]@4 ~ bb3@2 b3@2 ~@12", // F Gbdim Bm7b5 A Db Dbm Edim E7 …
  Z: "db3 a2 [a1,db2,gb2] e2 ~ d5 db5 a4 e4 d4 db4 b3 ~ a3 gb3 e3 db3 a2 gb5 e5 ~ db5 a4 gb4 e4 d4 db4 a3 ~ e3 db3 a2 b5 a5 g5 e5 ~ b4 a4 g4 e4 b3 a3 g3 ~ e3 d3 db3", // Gbm
  AA: "b2 a2 ab2 a2 ~ bb2 a2 b2 a2 bb2 ~ a2 ~@2 [d4,f4,ab4,d5,f5,ab5] [a4,a5] ~ [d4,f4,ab4,d5,f5,ab5] [a4,a5] ~@2 [d4,f4,ab4,d5,f5,ab5] ~ [a4,a5] [d4,f4,ab4,d5,f5,ab5] [a4,a5] ~@3 [ab4,ab5] [a4,a5] [ab4,ab5] [a4,a5] ~@3 [ab4,ab5] [a4,a5] [ab4,ab5] [a4,a5] ~@3 [ab4,ab5] [a4,a5] [e4,g4,e5,g5]@2 [a4,a5], ~@29 [e4,g4,e5,g5]@2 [e4,g4,e5,g5]@2 ~@3 [e4,g4,e5,g5]@2 [e4,g4,e5,g5]@2 ~@3 [e4,g4,e5,g5]@2 [ab4,ab5] ~@2", // Ddim A Ddim A Ddim A Ddim A …
  AB: "~@2 [ab4,ab5] [a4,a5] ~ [ab4,ab5] [a4,a5] ~@2 [d4,f4,d5,f5]@2 [a4,a5] [ab4,ab5] [a4,a5] ~@3 [ab4,ab5] [a4,a5] [ab4,ab5] [a4,a5] ~@3 [ab4,ab5] [a4,a5] [ab4,ab5] [a4,a5] ~@3 [ab4,ab5] [a4,a5] [d4,f4,d5,f5]@2 [a4,a5] ~@2 [ab4,ab5] [a4,a5] ~ [ab4,ab5] [a4,a5] ~@2 [e4,g4,e5,g5]@2 [a4,a5], ~@2 [e4,g4,e5,g5]@2 ~ [e4,g4,e5,g5]@2 ~@2 [ab4,ab5] ~@2 [d4,f4,d5,f5]@2 ~@3 [d4,f4,d5,f5]@2 [d4,f4,d5,f5]@2 ~@3 [d4,f4,d5,f5]@2 [d4,f4,d5,f5]@2 ~@3 [d4,f4,d5,f5]@2 [ab4,ab5] ~@4 [e4,g4,e5,g5]@2 ~ [e4,g4,e5,g5]@2 ~@2 [ab4,ab5] ~@2", // Ab A Ab A Dm A Ab A …
  AC: "[ab4,ab5] [a4,a5] ~@3 [ab4,ab5] [a4,a5] [ab4,ab5] [a4,a5] ~@3 [ab4,ab5] [a4,a5] [ab4,ab5] [a4,a5] ~@3 [ab4,ab5] [a4,a5] [d4,f4,d5,f5]@2 [a4,a5] ~@2 [ab4,ab5] [a4,a5] ~ [ab4,ab5] [a4,a5] ~@2 [b3,b4]@2 [gb4,gb5] [f4,f5] [gb4,gb5] ~@3 [a3,a4] [bb3,bb4] [db4,db5] [d4,d5] ~@3, [e4,g4,e5,g5]@2 ~@3 [e4,g4,e5,g5]@2 [e4,g4,e5,g5]@2 ~@3 [e4,g4,e5,g5]@2 [e4,g4,e5,g5]@2 ~@3 [d4,f4,d5,f5]@2 [ab4,ab5] ~@4 [d4,f4,d5,f5]@2 ~ [d4,f4,d5,f5]@2 ~@2 [f4,f5] ~@2 [b3,b4]@2 ~@3 [gb3,gb4]@2 [b3,b4]@2 ~@3", // Ab A Ab A Ab A Ab A …
  AD: "[c4,c5] [db4,db5] [c4,c5] [db4,db5] ~@3 [eb4,eb5] [e4,e5] [db4,db5]@2 [e4,e5] ~@2 [f4,f5] [gb4,gb5] ~ [f4,f5] [gb4,gb5] ~@2 [gb3,gb4]@2 [bb3,bb4] [db4,db5] [d4,d5] ~@3 [c4,c5] [db4,db5] [c4,c5] [db4,db5] ~@3 [eb4,eb5] [e4,e5] [eb4,eb5] [e4,e5] ~@3 [db4,db5] [d4,d5] [a3,a4]@2 [d4,d5], [gb3,gb4]@2 [gb3,gb4]@2 ~@3 [db4,db5]@2 [eb4,eb5] ~@4 [b3,b4]@2 ~ [b3,b4]@2 ~@2 [a3,a4] ~@2 [b3,b4]@2 ~@3 [gb3,gb4]@2 [gb3,gb4]@2 ~@3 [a3,a4]@2 [a3,a4]@2 ~@3 [a3,a4]@2 [db4,db5] ~@2", // C Db C Db Eb E Db E …
  AE: "~@2 [db4,db5] [d4,d5] ~ [f4,f5] [gb4,gb5] ~@2 [a3,a4]@2 [e4,e5] [eb4,eb5] [e4,e5] ~@3 [gb4,gb5] [g4,g5] [gb4,gb5] [g4,g5] ~@3 [db4,db5] [d4,d5] [db4,db5] [d4,d5] ~@3 [db4,db5] [d4,d5] [d4,d5]@2 [gb4,gb5] ~@2 [eb4,eb5] [e4,e5] ~ [eb4,eb5] [e4,e5] ~@2 [e4,e5]@2 [g4,g5], ~@2 [a3,a4]@2 ~ [d4,d5]@2 ~@2 [eb4,eb5] ~@2 [a3,a4]@2 ~@3 [e4,e5]@2 [e4,e5]@2 ~@3 [a3,a4]@2 [a3,a4]@2 ~@3 [a3,a4]@2 [f4,f5] ~@4 [a3,a4]@2 ~ [a3,a4]@2 ~@2 [gb4,gb5] ~@2", // Db D F Gb A E Eb E …
  AF: "[gb4,gb5] [g4,g5] ~ a4 ~ a5!2 a6 a5 ~@2 a3 a4!2 a5 a4 ~@2 a4 a5!2 a6 ~ a5 ~ a3 a4!2 ~ a5 a4 ~ [f3,f4] [e3,e4] ~ [eb3,eb4] [d3,d4] [d4,d5] [db4,db5] [d4,d5] ~ [d3,d4] [f3,f4] [bb3,bb4] [d4,d5] [eb4,eb5] ~ [b3,b4], [e4,e5] ~@23", // Gb G F E Eb D Db D …
  AG: "[c4,c5] [d4,d5] [eb4,eb5] [e4,e5] ~ [f4,f5] [e4,e5] [f4,f5] [d4,d5] [eb4,eb5] ~ [d4,d5] [eb4,eb5] [b3,b4] [c4,c5] [d4,d5] ~ [eb4,eb5] [e4,e5] [f4,f5] [e4,e5] [f4,f5] ~ [d4,d5] [eb4,eb5] [db4,db5] [eb4,eb5] [db4,db5] ~ [eb4,eb5] [d4,d5] [a3,a4] [bb3,bb4] [db4,d5] ~ [d4,eb5] [db4,d5] [d4,eb5] [a3,a4] [bb3,bb4] ~ [a3,a4] [ab3,ab4] [a3,a4] [f3,f4] [d3,d4] ~ [d4,d5]", // C D Eb E F E F D …
  AH: "[db4,db5] [d4,d5] [d3,d4] [f3,f4] ~ [bb3,bb4] [d4,d5] [eb4,eb5] [b3,b4] [c4,c5] ~ [d4,d5] [eb4,eb5] [e4,e5] [f4,f5] [e4,e5] ~ [f4,f5] [d4,d5] [eb4,eb5] [d4,d5] [eb4,eb5] ~ [b3,b4] [c4,c5] [d4,d5] [eb4,eb5] [e4,e5] ~ [f4,f5] [e4,e5] [f4,f5] [d4,d5] [eb4,eb5] ~ [db4,db5] [eb4,eb5] [db4,db5] [eb4,eb5] [d4,d5] ~ [a3,a4] [bb3,bb4] [db4,d5] [d4,eb5] [db4,d5] ~ [d4,eb5]", // Db D F Bb D Eb B C …
  AI: "[a3,a4] [bb3,bb4] [d4,d5] d3 ~ d5 d6 d4 d5!2 ~ d6 g4 g5!2 g6 ~ d5 d6!2 d7 d5 ~ d6!2 d7 d5 d6 ~ d6 d7 d4 d5!2 ~ d6 d4 d5!2 d6 ~ g4 g5!2 g6 d5 ~ d6", // A Bb D
  AJ: "d6 d7 d5 d6 ~ d6 d7 d5 d6!2 ~ d7 [g5,g6,g7]@2 ~@34", // G
  AK: "[~@19 [a4,f5]@2 [bb4,d5]@2 ~ [gb4,c5] ~ [ab4,e5]@2 ~ [a4,c5]@2 [a3,c4,e4,g4] ~ [d4,f4]@2 ~ [db4,e4,bb4]@2 [gb3,c4,eb4] ~@2 [db4,e4,bb4]@2 [db3,f3,b3] ~ [b2,ab3,db4]@2 ~ [c3,a3,c4]@2 g3 ab3 ~ e4 f4 g4 ab4 b4@2 f5 b4 c5 ab5 a5 ~ g5 ab5 e6 f6 db6@2 ab6 bb6 b6 [f5,c6,f6,a6,f7] ~@2 [a5,f6]@2 [bb5,d6]@2 [gb5,c6] ~@2 [ab5,e6]@2 [a5,c6]@2 ~ [a4,c5,e5,g5] ~ [d5,f5]@2 [db5,e5,bb5] ~@2, ~@45 f2@5 [db3,f3]@2 ~ b3@2 [db4,f4]@2 e5 ~@2 [f4,a4]@2 f5@2 ~ [db5,f5]@2 b5@2 g6 ~@26]/2", // Dm Bb Gbdim Dbm Am Am7 Dm Bbdim …
  AL: "[[gb4,c5,eb5] ~ [db5,e5,bb5] ~@2 [db4,b4] ~ [b3,ab4,db5]@2 [c4,a4,c5]@2 ~ gb4 g4 eb5 e5 ~ eb4 e4 c5 db5 [e3,a3]@2 db4 ab4 a4 f3 b3 ~ e4 f4 [ab3,d4,f4] b4 d5@2 f5 eb5 e5 a5@2 ~@13 [f5,f6]@2 ~@6 eb6 ~@6 [gb6,c7] [a3,d4,a4,b5,f6,b6]@2 ~ g5 ab5 g5 ab5 ~ g5 ab5 g5 ab5 [bb3,e4,db5]@2 a5 b5 a5 gb5 e5 ~ db5 a4 gb4 e4 db4 ~ a3, ~@7 f3@5 [bb3,d4]@2 [bb4,d5]@2 ~ [a3,db4]@2 a4@2 c4 ~@2 [e4,g4]@2 [ab2,d3]@2 ~ d4@2 ~@2 e5 ~@2 [a3,e4,a4,db5]@2 ~@5 [a4,a5]@5 [db5,db6] d5 [eb5,eb6] e5@4 ~ f5@4 [gb4,c5,a5]@2 [f4,b4,ab5]@5 [eb4,a4,c6]@2 ~@8 [e4,d5]@5 ~@14, ~@44 bb4@11 [ab4,b4,d5]@7 ~@4 [db6,g6]@4 ~@2 e5@2 f5@2 ~@5 ab5 ~@14, ~@45 [b4,b5]@10 ~@2 [g4,db5,e5]@5 ~@3 [e4,bb4,g5]@5 ~@2 [b4,d5]@5 bb4@2 b4@2 ~@15, ~@47 c5@8 ~@4 bb5@4 d6@6 ~@27]/2", // Cdim Bbdim Db7 F A5 Ddim F Gbdim …
  AM: "gb3 e3 ~@12 [f4,f5]@2 ~@5 [gb3,c4,a4]@2 eb5 ~@6 [gb5,c6] [a2,d3,a3,b4,f5,b5]@2 e4@2 ab4 g4 ab4 g4 ab4 ~ g4 ab4!2 a4 b4 ~ a4, [a2,db3]@2 ~@3 [a3,a4]@7 [eb4,eb5] e4@4 ~ f4@6 ~@3 [db5,g5]@4 ~@2 g4 ~@2 f4@2 ~@10, ~@6 bb3@11 ab3@2 [ab3,db4,e4]@5 [f3,b3,ab4]@5 [eb3,a3,c5]@2 ~@7 [e3,d4]@5 [a2,e3,db4]@2 ~@3, ~@7 [b3,b4]@10 [b3,d4]@7 ~@2 [e3,bb3,g4]@5 ~@2 [b3,d4]@5 bb3@2 ~ b3@2 ~@5, ~@8 c4 [db4,db5]@2 d4@6 ~@3 bb4@4 ~ d5@6 ~@17", // F Gbdim Bm7b5 A Eb Dbdim Dbm Fdim …
  AN: "gb4 e4 db4 a3 ~ gb3 e3 db3 a2 [a1,db2,gb2] ~ e2 d5 db5 a4 e4 ~ d4 db4 b3 a3 gb3 ~ e3 db3 a2 gb5 e5 ~ db5 a4 gb4 e4 d4 ~ db4 a3 e3 db3 a2 ~ b5 a5 e5 db5 b4 ~ a4", // Gbm
  AO: "e4 c4 a3 e3 ~ db3 a2 b4 a4 e4 ~ db4 b3 a3 e3 db3 ~ a2 e2 c2 a1 gb1@2 db2@2 eb2@2 a2@2 db3@2 eb3@2 gb3 a3 db4 eb4 gb4 a4 db5 eb5 gb5 a5 db6 eb6 [gb6,b6] a6 gb6", // B5
  AP: "eb6 db6 b5 a5 gb5 eb5 db5 ab6 gb6 eb6 db6 a5 ab5 e5 eb5 db5 a4 eb6 db6 a5 [gb5,ab5] eb5 db5 a4 ab4 gb4 b5 a5 gb5 eb5 db5 ~ b4 a4 gb4 eb4 db4 ab5 gb5 eb5 db5 a4 ab4 gb4 eb4 db4 a3 ~", // Gbsus2
  AQ: "[eb5 db5 a4 ab4 gb4 eb4 db4 a3 ab3 gb3 b4 a4 ~ gb4 eb4 db4 b3 a3 ~ gb3 eb3 db3 ab4 gb4 ~ eb4 db4 a3 ab3 ~ g3 e3 d3 ~ a2 eb4 db4 ~ a3 ab3 ~ gb3 e3@2 ~ a2@2 ab2@2 gb2@2 a2@2 db3@2 eb3@2 g3@9 ~ a3@2 db4@2 ~ eb4@2 gb4@2 ~ b4@29 ~ a4@9 ~@3 ab3@8 ~@17, ~@44 d3@2 ~@71 a4@27, ~@117 [ab2,eb3,db4]@10 ~@17, ~@118 [gb3,eb4]@9 ~@17]/3", // Absus4 Ebm
  AR: "~@2 d4@9 eb4@9 ~ a4@9 ~@2 [gb3,ab3]@8 ~@8, ~@5 bb4@3, ~@15 [ab2,c4]@5 ~@4, ~@31 [eb3,e4]@9 ~@8", // Gbsus2 Ab Emaj7
  AS: "[~@2 g4@27 ~ a4@27 ~@2 bb4@27 ~@2 b4@8]/2", AT: "~ c5@3 ~@3 db5@3 ~@3 eb5@3 ~@3 f5@3 ~@2",
  AU: "~ gb5@3 ~@3 g5@3 ~@3 c6@11", AV: "~@2 a5@11 ~ a5@11 ~ b5@11 ~ a5@10",
  AW: "~@3 a5@2 b5@2 a5@2 ~ a5@2 b5@2 ~ b5@2 a5 ~ b5 a5 b5 a5 ~ b5 a5 b5 ~ a5 b5 a5 ~ ab5 a5 db6 eb6 ~ gb6 b6 a6 ab6 ~ gb6 e6 eb6 db6 ~ c6, ~@2 b5@2 ~@5 b5@2 ~@3 a5@2 ~@32",
  AX: "[a5 ~ a5@2 ~ e5@2 eb5@2 d5@2 eb5@2 e5@2 f5@2 ~ gb5@2 g5@2 ~ a5@2 b5@34 ~@2 a5@4 ab5@23 ~ eb5@15 ~ bb5@8 ab5@2 bb5@2 ab5@2 bb5@2 ab5 bb5 ab5 bb5 ab5 bb5 ab5 bb5 ab5 bb5 ab5 bb5 ab5 bb5 ab5 bb5 ab5 bb5 ab5 bb5 ab5 bb5 ab5]/3",
  AY: "[bb5 ab5 bb5 ab5 bb5 ab5 bb5 ab5 bb5 g5@4 ab5@4 db5@8 c5@8 bb4@8 eb5@15 ~ eb5@8 ab4@46 ~@2 [ab3,ab4]@8 [bb3,bb4]@8 [db4,db5]@8 [eb4,eb5]@15 ~ [eb4,eb5]@8 [db4,db5]@8 [eb4,eb5]@8 [f4,f5]@8 [gb4,gb5]@15 ~ [gb4,gb5]@8 [f4,f5]@8 [gb4,gb5]@8 [ab4,ab5]@8 [a4,a5]@15 ~ [a4,a5]@8 [a3,a4]@4 [d4,d5]@4 [eb4,eb5]@4 [f4,f5]@4 [gb4,gb5]@4 [g4,g5]@4 [ab4,ab5]@3 [bb4,bb5]@2 [c5,c6]@2]/6", // Ab Bb Db Eb Db Eb F Gb …
  AZ: "~ [d5,d6]@3 [eb5,eb6]@2 [f5,f6]@3 [gb5,gb6]@3 [g5,g6]@2 [ab5,ab6]@3 [ab5,ab6]@2 [bb5,bb6]@2 [ab5,ab6]@2 [bb5,bb6]@2 [ab5,ab6] [bb5,bb6] [ab5,ab6] [bb5,bb6] [ab5,ab6] [bb5,bb6] [ab5,ab6] [bb5,bb6] [ab5,ab6] [bb5,bb6] [ab5,ab6] [bb5,bb6] [ab5,ab6] [bb5,bb6] [ab5,ab6] [bb5,bb6] [ab5,ab6] [bb5,bb6] [ab5,ab6] [bb5,bb6] [ab5,ab6] [bb5,bb6] [ab5,ab6]", // D Eb F Gb G Ab Bb Ab …
  BA: "[bb5,bb6] [ab5,ab6] [bb5,bb6] [ab5,ab6] [bb5,bb6] [ab5,ab6] [bb5,bb6] [ab5,ab6] [bb5,bb6] [ab5,ab6] [bb5,bb6] [ab5,ab6] [bb5,bb6] [ab5,ab6] [bb5,bb6] [ab5,ab6] [bb5,bb6] [ab5,ab6] [bb5,bb6] [ab5,ab6] [bb5,bb6] [ab5,ab6] [bb5,bb6] [ab5,ab6] [bb5,bb6] [ab5,ab6] [bb5,bb6] [ab5,ab6] [bb5,bb6] [ab5,ab6] [bb5,bb6] [ab5,ab6] [bb5,bb6] [ab5,ab6] [bb5,bb6] [ab5,ab6] [bb5,bb6] [ab5,ab6] [bb5,bb6] [ab5,ab6] [bb5,bb6] [ab5,ab6] [bb5,bb6] [ab5,ab6] [bb5,bb6] [ab5,ab6] [bb5,bb6] [ab5,ab6]", // Bb Ab Bb Ab Bb Ab Bb Ab …
  BB: "[bb5,bb6] [ab5,ab6] [bb5,bb6] [ab5,ab6] [bb5,bb6] [ab5,ab6] [bb5,bb6] [ab5,ab6] [bb5,bb6] [g5,g6]@4 [ab5,ab6]@4 [db6,db7]@2 [eb6,eb7]@2 [db6,db7]@2 [eb6,eb7]@2 [db6,db7] [eb6,eb7] [db6,db7] [eb6,eb7] [db6,db7] [eb6,eb7] [db6,db7] [eb6,eb7] [c6,c7]@4 [db6,db7]@4 [eb6,eb7]@4 [bb4,bb5]@3", // Bb Ab Bb Ab Bb Ab Bb Ab …
  BC: "~ [c5,c6]@4 [eb5,eb6]@4 [gb5,gb6]@4 [bb5,bb6]@4 [c6,c7]@4 [a5,a6]@4 [f5,f6]@4 [gb5,gb6]@4 [f5,f6]@4 [c5,c6]@4 [bb4,bb5]@4 [f5,f6]@3", // C Eb Gb Bb C A F Gb …
  BD: "~ [d5,d6]@4 [b4,b5]@4 [bb4,bb5]@4 [f4,f5]@4 [bb4,bb5]@4 [d5,d6]@4 [f5,f6]@4 [d5,d6]@4 [bb4,bb5]@4 [f4,f5]@4 [bb4,bb5]@4 [b4,b5]@3", // D B Bb F Bb D F D …
  BE: "~ [bb4,bb5]@4 [gb4,gb5]@4 [eb4,eb5]@4 [bb3,bb4]@4 ab4@8 ~@23, ~@17 ab3@4 ~@27", // Bb Gb Eb Bb
  BF: "~@23 db5@8 ~ [ab3,db4,f4]@9 ~ [db4,f4,ab4]@6, ~@11 ab5@13, ~@11 [db3,ab3,f4]@5 ~@8", // Db
  BG: "[~@4 c5@8 ~ [ab3,eb4,gb4]@9 [c4,gb4,ab4,ab5]@9 ~@2 [ab3,db5]@9 ~@2 [f4,f5]@7 ~@2 [f4,ab4,ab5]@8 ~@2 db6@7 ~@2 [a4,db5,db6,e6]@8 ~@2 [e5,a6]@8 ~ db5@8 [ab3,db4,f4]@9 ~ [db4,f4,ab4]@9 ~ c5@8 ~ [ab3,eb4,gb4]@9 ~ [c4,gb4,ab4,ab5]@6, ~@3 eb5@18 ~@11 [f4,ab5]@10 f3@19 ~ [db4,a4,a5]@8 e5@11 [a4,db5,db6,e6]@9 ab5@27 ~ eb5@18 ~@8, ~@3 [db3,ab3,gb4]@10 ~@19 db3@29 ~@9 db4@19 ~@55, ~@42 [ab3,ab4,ab5]@9 [ab3,db5,db6]@10 a3@29 [db3,ab3,f4]@9 ~@19 [db3,ab3,gb4]@10 ~@16, ~@43 [db4,db5]@9 [db4,f5]@9 [e4,db5,e5]@10 [e4,a5]@9 [e4,a5]@10 ~@54]/3", // Ab7 Db5 F Fm A A5 Db Ab7 …
  BH: "[~@4 [ab3,db5]@9 ~@2 [f4,f5]@7 ~@2 [f4,ab4,ab5]@8 ~@2 db6@8 ~@2 [db5,e6]@7 ~@2 [db5,e5,e6,a6]@8 ~@2 [f5,ab6]@7 ~@2 [f3,f4]@8 ~@2 [ab3,ab4]@8 ~@2 [db4,db5]@7 ~@2 [f4,f5]@8 ~@2 [ab4,ab5]@7 ~@2 [db5,db6]@9 ~@2 [f5,f6]@9 ~@2 [ab5,ab6]@9 [f5,ab5,db6,f6,ab6,db7]@10 ~@26 db6@9 ~@44, ~@3 db3@29 ~@10 db4@19 ~@9 ab3@12 ~@8 f4@10 [db4,db5]@9 [db4,db5]@10 [ab4,ab5]@10 ab4@22 ~@34 [db4,f5]@11 ~@44, ~@3 [f4,ab5]@10 f3@19 ~ [db4,a4,e5,a5]@9 [e4,e5,a5]@9 [e4,a5]@10 [f4,ab4,ab5,db6]@10 [db3,db4]@9 [db3,db4]@10 ~ [ab3,ab4]@8 ab3@19 f5@12 [db5,db6]@10 [db5,db6]@11 ~@35 [f4,ab5]@10 ~@44, ~@13 [ab3,ab4,ab5]@9 [ab3,db5,db6]@10 a3@29 ~@9 ab2@19 ~@10 ab4@11 [f4,f5]@8 f4@33 ~@33 [db3,ab3,ab4,db5]@12 ~@44, ~@14 [db4,db5]@9 [db4,f5]@9 [e4,db5]@11 [a4,db6]@9 [a4,db6]@9 ~ [db5,f6]@8 ~@11 [f3,f4]@9 f3@29 ~@10 ab5@12 [f5,f6]@10 ~@89]/5", // Db5 F Fm Dbm A Fm F Ab …
  BI: "[~@4 [db2,db3,f3,ab3,db4,f4]@23 ~@13 [db2,ab2,db3,f3,ab3,db4]@23 ~@33]/2", // Db
})).s("gm_piano").gain(0.15)

// chords · piano
const piano_2 = note(`<
  ~@4 A@7 B@2 ~@4 C@4 ~@3 D E F G H I J@3 K L M N@2 ~@4 O@2 P@2 Q@5 R@8 ~@3 S T U ~ V W X@2 Y Z@3 AA@2 AB ~ AC AD AE ~
  AF ~@12 AG@8 AH@8 ~@12
>`.pickRestart({
  A: "[~@36 ab5@23 ~ eb5@15 ~ f5@8 ab5@46 ~@2 db5@8 c5@8 bb4@8 eb5@15 ~ eb5@8 ab4@46 ~@2 ab4@8 bb4@8 db5@8 eb5@15 ~ eb5@8 db5@8 eb5@8 f5@8 gb5@15 ~ gb5@8 f5@8 gb5@4]/7",
  B: "[~@4 ab5@8 a5@15 ~ a5@8 a4@42 ~@3 ab4@8 ~@7]/2",
  C: "[~@17 c4@4 db4@8 db4@4 ~@8 [eb4,gb4]@4 ~@8 [f4,ab4]@4 [gb2,gb3,bb3,e4,bb4]@14 [f2,f3,c4,f4,a4]@13 ~@12, ~@13 bb3@8 [bb2,bb3,f4,bb4]@12 [a2,a3,db4,db5]@12 [ab2,ab3,db4,db5]@12 ~@39, ~@33 [eb4,gb4]@8 ~@8 gb4@8 ~@39, ~@37 f4@8 ab4@8 ~@43]/4", // Ebm Fm Gb7 F Bb5 A Db5 Ebm
  D: "~@5 [g5,a5]", // Gsus2
  E: "[gb5,a5,b5] [e5,g5,db6] [d5,gb5,d6] [e5,g5,db6] [gb5,a5,d6] [d5,gb5,b5] db5 d5 b4 d5 c5 db5, [d2,a2]@15 ~ [d2,a2]@15 ~ [d2,a2]@15 ~, ~@24 [g5,a5]@23 ~", // B7 Dbdim D Dbdim D Bm D5 Gsus2
  F: "[d5,gb5,b5] [e5,g5,db6] [gb5,a5,d6] [e5,g5,db6] [gb5,a5,d6] [d5,gb5,b5] db5 d5 b4 d5 c5 db5, [d2,a2]@15 ~ [d2,a2]@15 ~ [d2,a2]@15 ~, ~@24 [g5,a5]@23 ~", // Bm Dbdim D Dbdim D Bm D5 Gsus2
  G: "[d5,gb5] [db5,e5,a5] [b4,d5] [a4,db5] [g4,b4] [gb4,a4] [db5,e5] [b4,d5,g5] [a4,db5] [g4,b4] [gb4,a4] [e4,g4], [d2,a2]@15 ~ [d2,a2]@15 ~ [d2,a2]@15 ~, ~ b5 d5 ~ a5 db5", // D A Bm A G Gbm Dbm G …
  H: "[d4,gb4,b4]@2 [db4,e4,db5]@2 [b3,d4,d5]@2 [a3,db4,gb4]@2 [a3,db4,gb4]@2 [g3,b3,e4]@2 [g3,b3,e4]@2 [e4,g4,b4]@2 [e4,g4,b4] ~ [d4,e4]@2 [b3,g4]@2 [b3,db4]@2, [d2,a2]@15 ~ [d2,a2]@15 ~ [d2,a2]@15 ~", // Bm Dbm Bm Gbm Em Dsus2 Em Bsus2 …
  I: "[d2,a2]@15 ~ [d2,a2]@15 ~ [d2,a2]@15 ~, [a3,d4] ~@5", J: "[d2,a2]@15 ~ [d2,a2]@15 ~ [d2,a2]@15 ~",
  K: "a4@23 ~ e4@15 ~ b4@8, [d2,a2]@23 ~", L: "a5@23 ~ e5@15 ~ b5@8, [d2,a2]@23 ~, a4 ~@5",
  M: "a4@23 ~ e4@15 ~ b4@8, [d2,a2]@23 ~, a5 ~@5", N: "[a3@23 ~ e3@15 ~ b3@8 a3@8 ~@40, [d2,a2]@19 ~@5, a4 ~@11]/2",
  O: "[~@43 bb4@8 ab4@45, ~ ab4@16 ~@15, ~@9 eb4@8 ~@15]/2",
  P: "[~@19 bb3@8 eb4@16 eb4@8 ab3@45, ~ db4@8 ~@23, ~@11 c4@16 ~@69]/2",
  Q: "[~@19 db4@8 eb4@16 eb4@8 ~@16 f4@8 gb4@16 gb4@8 ~@16 [f3,ab4]@8 [gb2,gb3,a4]@15 ~ [g2,e3,a4]@8 ~@8 [g2,e3,db4]@8 [g2,e3,db4]@8 ~@8 [ab2,eb3,c4]@8 [ab2,eb3,c4]@8 db3@8 [db3,ab3]@8 [db3,ab3]@8 ~@8 [db3,ab3]@8 [db3,ab3,bb5]@5, ~@3 ab3@48 ~@8 eb4@16 ~@32 [eb3,gb4]@16 ~@117, ~ db3@8 c3@8 [b2,ab3]@8 [a2,gb3]@8 [ab2,ab3,f4]@8 ~@24 [db2,ab2,f3,ab5]@8 ~@7, ~@11 bb3@16 ~@24 db4@48 db4@46 ~@2 a3@24 ab3@24 ~@24 eb5@15 ~@6]/5", // Fm Gbm A7 Dbdim Ab Db5 Bbm7 Ebm …
  R: "[~@11 [db3,ab3]@8 [db3,ab3,db4]@8 ~@8 [db3,ab3]@8 [db3,ab3,eb4]@8 ~@8 [db3,ab3]@8 [db3,ab3,bb4]@8 ~@8 [db3,ab3]@8 [db3,gb3,ab3,eb5]@8 ~@8 [db3,ab3]@8 [db3,ab3,db4]@8 ~@8 [db3,ab3]@8 [db3,ab3,eb4]@8 ~@8 db3@8 [db3,db5]@8 ~@16 [c4,eb5]@8 ~@16 [db4,f5]@8 ~@16 [gb4,gb5]@8 [ab3,ab4,db5]@8 ~@8 [f4,ab5]@8 [gb3,e5]@8 ~@8 [c5,c6]@8 f4@56 [c4,f4,a4]@8 ~@29, ~@3 ab5@48 ~@8 c5@16 eb5@16 ~@40 d4@16 [ab3,ab4]@24 [c3,ab3]@24 [b2,ab3,db5]@24 [a2,gb3,eb4]@24 [ab2,f5]@24 [gb2,bb4,bb5]@24 ~@93, ~@3 f3@24 eb4@16 ~@8 [f4,db5]@24 gb4@24 ab4@48 ~@8 bb4@16 eb5@16 ~@16 eb5@16 gb5@16 ~@149, ~@35 d4@16 ~@48 f3@24 eb4@16 ~@40 bb3@16 db4@16 ~@16 f4@16 ~@8 [ab3,db4,gb4,ab4,db5,gb5]@16 ~@8 [gb3,bb3,e4,db5,e5,db6]@16 [f3,a3,c5,f5,c6]@64 ~@29]/8", // Db5 Dbsus2 Db5 Bbm7 Db5 Dbsus4 Db5 Dbsus2 …
  S: "~@39 [a3,d4,f4,b4,d5,f5,b5]@2 ~@7", T: "~@9 [a3,d4,f4,b4,d5,f5,b5] ~@13 [a2,d3,f3,b3,d4,f4,b4]",
  U: "~@25 [a2,d3,f3,b3,d4,f4,b4]@2 ~@21", // Bm7b5
  V: "~@9 [gb4,gb5]@2 ~ [d3,e4,e5]@5 [d4,d5]@2 [db4,db5]@2 [d4,d5]@2 ~ [b3,b4]@2 [db3,b3,b4]@5 [e3,e4]@2 [a2,db4,db5]@5 [b3,b4]@2 ~ [db3,b3,b4]@4 [e3,e4]@2 ~, ~@19 a2@5 ~@24", // Gb Dsus2 D Db D B Db7 E …
  W: "[a2,db4,db5]@5 [b3,b4]@2 [d3,b3,b4]@5 [gb3,gb4]@2 [b3,b4]@2 ~ [a3,a4]@2 [gb4,gb5]@2 [d3,e4,e5]@5 [d4,d5]@2 ~ [db4,db5]@2 [d4,d5]@2 [b3,b4]@2 ~ [db3,b3,b4]@5 [e3,e4]@2 [a2,db4,db5]@5, ~@14 a2@5 ~@10 a2@5 ~@14", // A B G Gb B A Gb Dsus2 …
  X: "[[b3,b4]@2 [db3,b3,b4]@5 [e3,e4]@2 [a2,db4,db5]@5 [b3,b4]@2 ~ [d3,b3,b4]@4 [gb3,gb4]@2 ~ [b3,b4]@2 [a3,a4]@2 ~ [gb4,gb5]@2 [b2,e4,e5]@5 [d4,d5]@2 [gb2,db4,db5]@5 [b3,b4,g5,g6]@2 [b3,b4]@2 ~ [a3,a4]@2 [bb3,bb4,e5,e6]@2 ~ [d5,d6]@2 [ab4,ab5]@2 [gb4,bb4,gb5,bb5]@2 ~ [b2,e4,e5]@5 [d4,d5]@2 [gb2,db4,db5]@5 [b3,b4,g5,g6]@2 [b3,b4]@2 ~ [a3,a4]@2 [gb2,bb3,bb4,e5,e6]@2 [b3,b4,d5,d6]@2 ~ [a3,a4,b4,b5]@2 [a4,db5,a5,db6]@2 ~ [d3,g4,g5]@4 [gb4,gb5]@2 ~, ~@24 d2@5 ~@16 [db3,gb5,ab6]@5 ~@3 [gb2,gb3,gb4]@5 ~@2 [bb4,bb5]@2 ~@12 [db3,gb5,gb6]@5 ~@2 a2@5 ~@3 [d5,d6]@2 ~@5]/2", // B Db7 E A B G Gb B …
  Y: "[a2,e4,e5]@5 [d4,b4,d5,b5]@2 [d4,d5]@2 [c4,c5]@2 ~ [db4,g4,db5,g5]@2 [gb4,gb5]@2 ~ [b3,b4]@2 [db4,a4,db5,a5]@2 [d3,d4,g4,d5,g5]@5 [gb4,gb5]@2 ~ [a2,e4,e5]@4 [d4,b4,d5,b5]@2 ~ [d4,d5]@2 [c4,c5]@2 ~ [db4,g4,db5,g5]@2 [gb4,gb5]@2 [b3,b4]@2 ~, ~@7 [e3,a4,a5]@5 ~@2 [a2,a3,a4]@5 ~@17 [e3,a4,a5]@5 ~@2 [a2,a3,a4]@5", // A5 G D C Dbdim Gb B Gbm …
  Z: "[[db4,a4,db5,a5]@2 [d3,g4,a5]@5 [gb4,gb5]@2 [a2,e4,e5]@5 [d4,d5,gb5,gb6]@2 ~@5 [f5,f6]@2 ~ [g3,g4]@2 [gb3,gb4]@2 ~ [f3,f4,a4,d5,a5,d6]@2 [bb2,a4,c5,a5,c6]@5 [bb4,bb5]@2 [a4,a5]@2 ~ [bb4,bb5]@2 [g4,g5]@2 [a2,g4,g5]@5 [c4,c5]@2 ~ [f2,a4,a5]@4 [g4,g5]@2 ~ [a2,g4,g5]@5 [c4,c5]@2 [f2,a4,a5]@5 [g4,g5]@2 [g2,g4,g5]@5 [d4,d5]@2 [g4,g5]@2 ~ [f4,f5]@2 [d5,d6]@2 ~ [bb2,c5,c6]@4 [bb4,bb5]@2 ~ [a4,a5]@2 [bb4,bb5]@2 ~ [g4,g5]@2 [a2,g4,g5]@5 [c4,c5]@2 [f2,a4,a5]@5 [g4,g5]@2 [a2,g4,g5]@5 [c4,c5]@2 ~ [f2,a4,a5]@4 [g4,g5]@2 ~ [bb2,g4,g5]@5 [d4,d5]@2 [g4,g5]@2 [f4,f5]@2 ~, ~@2 [d4,d5]@2 ~@13 [c3,eb4,eb5,g5,g6]@7 [f2,eb5,eb6]@5 ~@2 f3@27 ~@2 f3@27 ~@2 f3@27 ~ f3@27, ~@38 f2@5 ~@38 f2@5 ~@10 f2@5 ~@38 bb1@5]/3", // Gbm Dsus4 Gb A5 D F G Gb …
  AA: "[[d5,d6]@2 [g3,c5,d5,c6]@5 [bb4,bb5]@2 [g3,d5]@2 ~ c5@2 [g4,bb4,g5,eb6]@2 ~ [g4,g5]@2 [f4,f5]@2 [gb4,gb5,c6]@2 ~ [e4,bb5]@2 [g4,e5]@2 ~ [d5,gb5,d6]@2 [g2,g3,c5,d5,c6]@5 [bb4,bb5]@2 d5@2 ~ c5@2 [g4,bb4,g5,eb6]@2 [g4,g5]@2 ~ [f4,f5]@2 [gb4,gb5,c6]@2 ~ [e4,bb5]@2 [g4,e5]@2 [d5,gb5,d6]@2 ~ g3@2 ~@3 [d4,bb4,bb5]@2 ~@5 [d4,g4,g5]@2 ~@5 [eb4,g4,g5]@2 ~@5 [eb4,eb5]@2 ~@5 [e4,db5]@2 ~, ~@9 [a4,a5]@5 ~@3 [a2,a3,a4,d6]@7 [d2,d3,d4,d5]@5 ~@2 g5@2 ~@5 [d2,d3,a4,a5]@5 ~@2 [a2,a3,a4,d6]@7 ~ [d2,d3,d4,d5]@5 ~@2 [g2,c5,c6]@7 ~@2 [g3,bb3,eb4]@5 ~@3 [g3,bb3,d4]@5 ~@2 [g3,bb3,d4]@5 ~@2 [gb3,bb3,eb4]@5, ~@62 [g3,bb3,eb4]@5 [a4,a5]@7 [bb4,bb5]@7 [f4,f5]@7 ~ [bb4,bb5]@7]/2", // D Gsus4 Bb G5 Eb G F Gbdim …
  AB: "~@5 [e4,bb4]@2 ~@5 [db4,bb4]@2 ~@5 [f2,a3,f4]@2 ~@27, c5@7 a4@7 ~@3 e4@5 ~@26, ~@2 [gb3,bb3,eb4]@5 ~@2 [db3,gb3,c4]@5 [gb2,c3,bb3,eb4]@7 ~@27", // Edim Gb F Ebm Gb Cm7b5
  AC: "~@41 [a3,d4,f4,b4,d5,f5,b5]@2 ~@5", AD: "~@21 [a3,d4,f4,b4,d5,f5,b5]@2 ~@25",
  AE: "~@2 [a2,d3,f3,b3,d4,f4,b4]@2 ~@27 [a2,d3,f3,b3,d4,f4,b4]@2 ~@15", // Bm7b5
  AF: "~@21 [gb2,db3,eb3,gb3,a4,db5,eb5,a5]@8 ~@19", // Ebm7b5
  AG: "[~@17 ab3@8 ~@32 [eb4,c5]@8 ~@40 [bb3,gb4]@8 [ab3,f4]@8 [gb3,eb4]@8 [f3,db4]@8 [eb3,c4]@8 bb3@8 [eb3,c4]@8 [f3,db4]@8 [gb3,eb4]@8 [ab3,f4]@8 [bb3,gb4]@8 [c4,ab4]@8 [bb3,gb4]@8 [ab3,f4]@8 [gb3,eb4]@8 [f3,db4]@8 ~@8 [bb3,g4]@8 [c4,gb4]@8 [ab3,db4,f4]@8 [gb3,eb4]@8 [f3,db4]@8 [eb3,gb4]@8 [f3,f4]@8 [gb3,eb4]@8 ab3@8 [gb3,eb4]@8 [f3,f4]@8 [eb3,gb4]@8 [f3,f4]@8 [gb3,eb4]@8 [db3,gb3,a3,eb4,a4]@23 ~ [c3,gb3,ab3,eb4,ab4]@7, ~@17 [db3,f3]@32 [db4,bb4]@16 ab4@24 [c4,ab4]@8 [b3,g4]@16 ~@271, ~@17 db4@24 [c4,ab4]@24 ~@8 [eb4,c5]@40 ab4@80 ~@191, ~@17 ab4@16 [bb3,gb4]@32 ~@16 [db4,bb4]@32 ~@192 [db4,db5]@46 ~@33, ~@25 [ab3,f4]@40 [db3,ab3,f4,db5]@48 db3@32 db3@59 ~@5 [db3,ab4]@24 [c3,ab3,ab4]@24 [b2,ab4]@24 [a2,db4,db5]@24 ab2@24 gb2@24 ~@31]/8", // Cm Ebm Db Ebm Db Cm Db Ebm …
  AH: "[~@25 [ab3,db4,f4]@8 [db4,f4,ab4]@8 ~@8 [ab3,eb4,gb4]@8 [eb4,gb4,ab4,bb5]@8 ~@8 [ab3,db4,f4]@8 [db4,f4,ab4]@8 ~@8 [ab3,db4,f4]@8 [db4,f4,ab4]@8 db5@8 [gb3,db4,eb4,eb5]@8 [db4,eb4,gb4,f5]@8 ~@8 [gb3,c4,eb4]@8 [c4,eb4,gb4,gb5]@8 c5@8 [f3,c4,eb4,db5]@8 [c4,eb4,f4,eb5]@8 ~@8 [f3,ab3,d4]@8 [bb3,d4,f4,f5]@8 d5@8 [f3,bb3,d4,c5]@8 [bb3,d4,f4,d5]@8 eb5@8 [gb3,bb3,f5]@8 [bb3,eb4,gb4,bb4,gb5]@8 ab5@8 [ab3,db4,f4,bb5]@8 [db4,f4,c6]@8 bb4@8 [bb3,db4,gb4]@8 [db4,eb4,gb4,bb4]@8 db6@4 ab5@4 ~ bb5@4 ab5@4 f5@4 db5@4 ~ ab4@4 g4@4 ~ ab4@4 ~ bb4@4 ~@35, ~@17 [db3,ab5]@24 c3@23 ~ [b2,ab5]@48 bb2@48 a2@24 ab2@24 [ab2,bb4]@24 gb2@24 [f2,ab4]@24 [eb2,db6]@24 f2@26 ab2@28 ~@25, ~@41 eb5@16 ~@80 gb5@16 ~@32 f5@16 ~@32 eb4@15 ~@57 f4@8 ~ [ab3,db4,f4]@8 [db4,f4,ab4]@8 ~ f4@18 ~@35, ~@340 [ab3,c4]@9 ~@35]/8", // Db Ab7 Ebm Db Ebm7 Cdim F7 Ddim …
})).s("gm_piano").gain(0.15)

// chords · piano · soft notes
const piano_soft = note("<A B C B C B C D E F G H I@6 ~@2 J K L ~@87 M N@2 ~ O@5 P@4>".pickRestart({
  A: "~@9 [db4,f4,ab4]@2 ~", B: "~@3 [db4,gb4,ab4]@2 ~@4 [db4,f4,ab4]@2 ~",
  C: "~@3 [db4,eb4,gb4,ab4]@2 ~@4 [db4,f4,ab4]@2 ~", D: "~@3 [db4,gb4,ab4]@2 ~@4 [db4,f4]@2 ~",
  E: "~@3 [db4,eb4,gb4]@2 ~@4 [db4,f4]@3", F: "~@12 [c4,eb4,gb4,ab4]@15 ~@9 [b3,db4,f4,ab4]@8 ~@4",
  G: "~@3 [a3,db4,gb4]@2 ~@4 [ab3,db4,f4]@2 ~", H: "~@12 [gb3,db4,eb4]@8 ~@16 [db4,eb4,gb4]@9 ~@3",
  I: "[~@15 [c4,eb4,gb4]@9 ~@34 [db4,f4,bb4]@8 [c4,eb4,gb4,ab4]@23 ~@17 [db4,f4,bb4]@8 [c4,eb4,gb4,ab4]@23 ~@17 [db4,f4,bb4]@8 [c4,eb4,gb4,ab4]@23 ~ [f4,ab4,db5]@8 [eb4,gb4,c5]@8 [db4,f4,bb4]@8 [c4,eb4,ab4]@15 ~ [bb3,db4,gb4]@8 [db3,ab3,db4,f4]@23 ~ [c3,ab3,eb4,ab4]@24 ~@6, ~@21 [db3,ab3,ab4,db5]@12 ~@12 [db3,ab3,ab4,db5]@12 ~@12 [db3,ab3,ab4,db5]@12 ~@12 [db3,ab3]@23 ~@28, ~@21 f4@8 ~@16 f4@8 ~@16 f4@8 ~@67, ~@25 [eb4,gb4,c5]@8 ~@16 [eb4,gb4,c5]@8 ~@16 [eb4,gb4,c5]@8 ~@63]/6", // Cdim Bbm Ab7 Bbm Ab7 Bbm Ab7 Db …
  J: "~@5 [a4,f5]", K: "~@2 [gb4,c5] ~ [ab4,e5]@2 ~@2 [a3,c4,e4,g4] ~ [d4,f4]@2, [bb4,d5]@5 ~@3 [a4,c5]@5 ~@3",
  L: "[db4,e4,bb4]@2 [gb3,c4,eb4] ~ [db4,e4,bb4] ~ [db3,f3,b3] ~ [b2,ab3,db4]@2 [c3,a3,c4]@2, ~@32 f2@15 ~", // Bbdim Cdim Bbdim Db7 F
  M: "~@13 b4@4 ~ c5@4 [db3,f3,ab3,db4,ab4,db5]@19 ~@7, ~@13 [gb3,ab3,eb4]@9 ~@26", // Db Ab7
  N: "[~@32 [db3,ab3,db4,f4,ab4,db5]@27 ~@2 g4@18 ~ db5@9 ~ [db3,ab3,db4,f4,ab4,db5]@6, ~@61 [a2,a3,db4,e4]@27 ~@8]/2", // Db A
  O: "[~@3 [db3,ab3,db4,f4,ab4,db5]@27 ~@2 g4@18 ~ db5@9 ~ [db5,f5,ab5]@27 ~@2 [db5,f5]@18 ~ [db5,f5,ab5]@9 [db5,f5,ab5]@41 ~@3 [db6,f6,ab6]@5 ~@6 [ab5,db6,f6]@5 ~@6 [f5,ab5,db6]@6 ~@6 [db5,f5,ab5]@6 ~@6 [db5,f5]@6 ~@6 [ab4,db5]@11 ~ [db4,ab4]@8, ~@32 [a2,a3,db4,e4]@27 ~@2 [db4,f4,ab4]@55 ~@2 [db4,f4,ab4]@62 ~@4 [db3,ab3]@56, ~@23 db4@6 ~, ~@92 ab4@17 ~ f4@10]/5", // Db Db5 A Db Db5
  P: "[~@4 [ab3,db4,f4,ab4]@11 ~ [db3,f3,ab3,db4]@96 ~@12 [db2,db3]@36 [db2,db3]@24 ~@8, ~ [db5,f5,ab5]@10 ~]/4", // Db
})).s("gm_piano").gain(0.1)

stack(piano, piano_2, piano_soft)

More by Peter Tchaikovsky