Strudelify
KeyG♭ majorTempo178 bpm
0:00/0:00
// Turandot SC 91 — Giacomo PucciniPiano Reduction by Guido Zuccoli
// 178 bpm, 9/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, 3/2 at bar 3, 2/2 at bar 6, 9/4 at bar 12, ...) are rendered on a constant 9/4 grid of one bar per cycle
// note: sustain pedal (CC 64) lengthens the held notes
// note: Transcription provider: pdmx. https://musescore.com/score/5914759; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 58 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(178/9)

// 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.

// other · piano
const piano = note("<~@34 A B C D E F G H@3 I@2 J@3 ~@9>".pickRestart({
  A: "~@11 [gb4,gb5]@5 [f4,f5]@10 ~ [db4,db5]@5 [eb4,eb5]@10 ~ [gb4,gb5]@5", // Gb F Db Eb Gb
  B: "[f4,f5]@10 ~ [db4,db5]@5 [eb4,eb5]@10 ~ [gb4,gb5]@5 [f4,f5]@5 [eb4,eb5]@5 ~ [db4,db5]@5", // F Db Eb Gb F Eb Db
  C: "[eb4,eb5]@13 [gb4,gb5]@3 [ab4,ab5]@26 ~ [b3,b4]@5", // Eb Gb Ab B
  D: "[bb3,bb4]@10 ~ [gb3,gb4]@5 [ab3,ab4]@10 ~ [b3,b4]@5 [bb3,bb4]@10 ~ [gb3,gb4]@5", // Bb Gb Ab B Bb Gb
  E: "[ab3,ab4]@10 ~ [b3,b4]@5 [bb3,bb4]@5 [ab3,ab4]@5 ~ [gb3,gb4]@5 [ab3,ab4]@13 [bb3,ab4,bb4,d5]@3", // Ab B Bb Ab Gb Ab Bb7
  F: "[eb4,gb4,bb4,eb5]@41 ~@2 [db4,f4,ab4,db5]@2 [b3,eb4,gb4,b4]@3", // Ebm Db B
  G: "[gb4,a4,db5,gb5]@41 ~@2 [e4,ab4,b4,e5]@2 [d4,gb4,a4,d5]@3", // Gbm E D
  H: "[[a4,db5,e5,a5]@112 ~@7 [gb3,gb4]@16 ~ [gb3,gb4]@8]/3", // A Gb
  I: "[[a3,a4]@8 [b3,b4]@8 [d4,d5]@8 [d4,d5]@8 [b3,b4]@8 ~ [a3,a4]@28 [gb3,a3,d4,gb4,a4,d5]@2 [gb3,a3,d4,gb4,a4,d5]@2 [g3,c4,e4,g4,c5,e5]@23]/2", // A B D B A D C
  J: "[~@10 [gb3,gb4]@16 ~ [gb3,gb4]@8 [a3,a4]@8 [b3,b4]@8 [d4,d5]@8 [d4,d5]@8 [b3,b4]@8 ~ [a3,a4]@28 [gb3,a3,d4,gb4,a4,d5]@2 [gb3,a3,d4,gb4,a4,d5]@2 [g3,c4,e4,g4,c5,e5]@23 ~@13]/3", // Gb A B D B A D C
})).s("gm_piano").gain(0.5)

// chords · piano
const piano_2 = note("<A B@2 C@8 D@3 E F@8 G@6 H I J K L@2 M N O P Q R S ~ T U@2 V@3 W@8 X>".pickRestart({
  A: "~@11 bb4@30 ~@2 bb4@5, ~@11 bb3@37",
  B: "[~@3 bb4@8 [bb3,bb4]@16 [gb3,gb4]@6 [ab3,ab4]@6 ~@2 bb4@55, ~@5 bb3@7]/2", // Bb Gb Ab
  C: "[~@5 [ab3,ab4]@3 ~@16 b4@16 [b4,eb5]@8 [ab4,b4,eb5,ab5]@8 ~@30 bb2 ~@8 f5@8 ~@8 [b4,gb5]@8 [f4,f5]@39 ~@20 [f4,b4,f5]@4 f5@40 ~@19 [f5,f6]@4 ~@45 bb4@3 ~@13 [gb3,gb4]@3 eb4@13 eb4@2 db4@13 ~ db4@2 ~@3 gb3 [bb3,eb4] ~@4 [bb3,eb4] gb3 ~@3 [bb3,eb4] gb3 ~@4 gb3 [bb3,eb4] ~@3 gb3 [bb3,eb4] ~@3 gb3 [bb3,eb4] ~@4 [bb3,gb4] gb3 ~@2 gb3 [db4,f4] ab3!2, [ab3,ab4]@5 ~@3 ab4@8 f4@2 ab4@2 b4@2 eb5@2 f5@16 [gb4,gb5]@16 [gb5,bb5]@32 ~@15 [db5,f5]@16 bb4@32 ~@7 eb5@24 ~@40 [f5,f6]@19 ~@4 [f5,f6]@47 ~@92, ~@3 [gb3,gb4]@5 ~@2 ab3@46 ~@7 f4@4 bb4@2 eb5@2 f5@12 eb3 db3 b2@2 ab2@32 ~@51 db5@12 ~@48 [bb5,bb6]@16 ~@15 [eb5,eb6]@32 ~@79 bb3@2 [bb3,gb4]@2 ~ [bb3,gb4]@2 [bb3,gb4]@2 ~@3, ~@12 b3@44 ~@5 eb4@26 ~@79 [ab4,ab5]@16 bb4@32 ~@45 [db5,db6]@34 ~@31 [ab3,f4]@16 [bb3,eb4]@2 [bb3,eb4]@2 ~ [bb3,eb4]@2 [bb3,eb4]@2 ~ [bb3,eb4]@2 [bb3,eb4]@2 ~ [bb3,eb4]@2 [bb3,eb4]@2 [bb3,eb4]@2 ~ [bb3,eb4]@2 [bb3,eb4]@2 ~ [bb3,eb4]@2 [bb3,eb4]@2 ~ eb4@8 ~@2 [db4,f4]@2, ~@14 eb4@42 bb4@9 gb4@22 ~@8 [f4,eb5]@24 ~@39 [f4,f5]@20 ~@4 f4@63 ~@48 [b3,eb4,ab4,b4]@16 [ab3,b3,ab4]@16 ~@16 gb3@2 ~ gb3@2 gb3@2 gb3@2 ~ gb3@2 gb3@2 ~ gb3@2 gb3@2 ~ gb3@2 gb3@2 ~ gb3@2 gb3@2 ~ gb3@2 gb3@2 gb3@2 ~ gb3@2 ~@4]/8", // Ab B Abm B5 F Fdim F Gb …
  D: "[~@2 [db4,f4] ab3 ~@3 [db4,f4] ab3!2 ~@3 f3 [ab3,db4] ~ f3 ~ gb3 [bb3,eb4] ~@3 gb3 [bb3,eb4] ~@4 bb3 gb3 ~@3 [bb3,gb4] gb3!2 ~@2 [db4,f4] ab3 ~@4 ab3 [db4,f4] ~@3 ab3 [ab3,db4] ~@3 f3!2 ~@4 [bb3,eb4] gb3 ~@3 [bb3,eb4] gb3 ~@3 [bb3,gb4] gb3 ~@4 gb3 db4 ~@3 ab3 db4 ~@3 ab3 db4 ~ ab3 ~ f3 ab3 ~@3 f3 [bb3,eb4] gb3 ~@3 [bb3,eb4] gb3 ~@3 [bb3,eb4] gb3!2 [bb3,eb4]@3 ~ [bb3,eb4,gb4]@3 ~ b3 [eb4,ab4] ~@3 b3 [eb4,ab4] ~@3 b3 [eb4,ab4] ~@3 b3 [eb4,ab4] ~@4 [eb4,ab4] b3 ~ [eb4,ab4], [db4,f4]@2 ~ [db4,f4]@2 [db4,f4]@2 ~ f4@8 ~@13 eb4@8 [db4,f4]@2 ~ [db4,f4]@2 [db4,f4]@2 [db4,f4]@2 ~ [db4,f4]@2 f4@8 ~@12 eb4@8 ~ f4@20 ~@20 [eb4,ab4]@2 ~ [eb4,ab4]@2 [eb4,ab4]@2 ~ [eb4,ab4]@2 [eb4,ab4]@2 ~ [eb4,ab4]@2 [eb4,ab4]@2 ~ [eb4,ab4]@2 [eb4,ab4]@2 ~ [eb4,ab4]@2 ~, ~ ab3@2 ~ ab3@2 ab3@2 db4@2 [ab3,db4]@2 [ab3,db4]@2 ~ [ab3,db4]@2 [bb3,eb4]@2 ~ [bb3,eb4]@2 [bb3,eb4]@2 ~ [bb3,eb4]@2 [bb3,eb4]@2 ~ [bb3,gb4]@2 [bb3,gb4]@2 ~ [bb3,gb4]@2 ~ ab3@2 ~ ab3@2 ab3@2 ~ ab3@2 ab3@2 ~ f3@2 f3@2 ~@2 [bb3,eb4]@2 [bb3,eb4]@2 ~ [bb3,eb4]@2 [bb3,eb4]@2 ~ [bb3,eb4]@2 bb3@2 ~ [bb3,gb4]@2 [bb3,gb4]@2 [bb3,gb4]@2 ab3@2 ab3@2 ~ ab3@2 ab3@2 ~ ab3@2 ~ ab3@2 f3 ab3 f3@2 ~@3 gb3@2 gb3@2 ~ gb3@2 gb3@2 ~@2 gb3@7 ~@26, ~@11 f3@2 ~ f3@2 ~@3 gb3@2 gb3@2 ~ gb3@2 gb3@2 gb3@2 ~ gb3@2 gb3@2 ~@14 db4@2 ~ [ab3,db4]@2 [ab3,db4]@2 [ab3,db4]@2 gb3@2 gb3@2 ~ gb3@2 gb3@2 ~ gb3@2 gb3@2 ~ gb3@2 gb3@2 ~@2 db4@2 db4@2 ~ eb4@12 ab3@2 ~ [bb3,eb4]@2 [bb3,eb4]@2 ~ [bb3,eb4]@2 [bb3,eb4]@2 ~ [bb3,eb4]@2 ~@9 b3@2 b3@2 ~ b3@2 b3@2 ~ b3@2 b3@2 ~ b3@2 b3@2 b3@2 ~ b3@2, ~@84 db4@2 db4@2 ~ db4@2 db4@7 ~@46]/3", // Db Db5 Eb5 Ebm Db Db5 Eb5 Ebm …
  E: "~@2 b3 [eb4,ab4] ~@3 b3 [eb4,b4] ~@3 b3 ~@5 [gb4,bb4] eb4 ~@3 [gb4,bb4] eb4 ~@2 eb4 [eb4,gb4] bb3 ~@3 eb4 bb3 ~@4 b3 [eb4,ab4] ~@3 b3 [eb4,ab4] ~ b3, b3@2 ~ b3@2 b3@2 ~ b3@2 b3@2 ~ [b3,b4]@22 b3@2 b3@2 ~ b3@2 b3@2 ~ b3@2 ~, ~ [eb4,ab4]@2 ~ [eb4,ab4]@2 [eb4,ab4]@2 ~ [eb4,b4]@2 [eb4,b4]@2 eb4@2 eb4@2 eb4@2 ~ eb4@2 eb4@2 ~ eb4@2 ~@2 [eb4,gb4]@2 [eb4,gb4]@2 gb4@2 ~@13, ~@14 [gb4,bb4]@2 [gb4,bb4]@2 ~ [gb4,bb4]@2 [gb4,bb4]@2 ~ [gb4,bb4]@2 bb4@8 ~@14, ~@26 gb4@2 ~@2 bb3@2 bb3@2 [eb4,ab4]@2 [eb4,ab4]@2 [eb4,ab4]@2 ~ [eb4,ab4]@2 [eb4,ab4]@2 ~ [eb4,ab4]@2", // Ab5 Abm Gb Ebm Ab5 B Ab5 Abm …
  F: "[~ b3 [eb4,b4] ~@3 b3 [gb4,bb4] eb4 ~@3 [gb4,bb4] eb4 ~@3 [gb4,bb4] eb4!2 ~@3 bb3 [eb4,gb4] ~ bb3 ~ b3 [eb4,ab4] ~@3 b3 [eb4,ab4] ~@4 eb4 b3 ~@3 [eb4,b4] b3!2 ~@2 gb4 eb4 ~@2 eb4 ~ bb3 eb4 ~@3 bb3 eb4 ~@3 bb3 [bb3,eb4] ~@4 [eb4,ab4] b3 ~@3 [eb4,ab4] b3 ~@6 [ab4,bb4,d5]@3 gb4@31 ~ [gb4,gb5]@6 [f4,ab4,db5]@12 [db4,f4,ab4,db5]@6 gb4@11 [gb4,gb5]@6 [ab4,db5]@12 [db4,ab4,db5]@6 gb4@11 [gb4,gb5]@6 ~@11 [db4,db5]@6 [gb4,bb4,eb5]@14 [gb4,bb4,eb5,gb5]@3 ~@28 [b4,eb5,b5]@5 ~@8 gb5@3 ~@3 eb5@3 ~@5 [b4,eb5]@5 [b4,eb5,ab5,b5]@5 ~@8 gb5@3 ~@3 eb5@2 ~@5 [b4,eb5]@5 ~ [b4,eb5,ab5,b5]@5 ~@12 bb4@2 ~@11 [eb5,gb5]@3 ~ [d5,ab5,bb5,d6]@5 [eb5,gb5,bb5,eb6]@5 ~@9 bb3@2 eb4@2 f4@2 ~ bb4@2 eb5, [eb4,b4]@2 b3@2 b3@2 ~@3 eb4@2 eb4@2 ~ eb4@2 eb4@2 gb4@2 [eb4,gb4]@2 [eb4,gb4]@2 ~ [eb4,gb4]@2 [eb4,ab4]@2 ~ [eb4,ab4]@2 [eb4,ab4]@2 ~ [eb4,ab4]@2 [eb4,ab4]@2 ~ [eb4,b4]@2 [eb4,b4]@2 ~ [eb4,b4]@2 gb4@2 ~ gb4@2 gb4@7 eb4@2 gb4@7 b3@2 b3@2 ~ b3@2 b3@2 ~ b3@2 b3@8 ~@185 [gb4,f5,gb5]@6 ab4@16 ~@10 [gb4,f5,gb5]@5 ab4@16 ~@3 eb5@4 bb4@5 ~@3 [b4,eb5]@5 b4@9 ~@29, ~@3 [eb4,b4]@2 [eb4,b4]@2 ~ [gb4,bb4]@2 [gb4,bb4]@2 ~ [gb4,bb4]@2 [gb4,bb4]@2 ~ bb4@8 ~@13 ab4@8 bb4@20 ~@20 [bb4,eb5]@38 f5@18 ~@86 [b4,eb5]@11 [b4,eb5]@17 ~@5 gb5@8 ~@11 [bb4,db5]@13 [bb4,bb5]@16 [b4,eb5]@5 ~@11 bb4@5 [ab4,f5,ab5]@10 [ab4,ab5]@14 ~@18 gb3@2 ~@9, ~@21 bb3@2 ~ bb3@2 ~@3 b3@2 b3@2 ~ b3@2 b3@2 b3@2 ~ b3@2 b3@2 ~@3 eb4@2 ~ eb4@2 ~ ab4@13 ~@12 ab4@5 ~@76 [f4,f5]@17 ~@18 [f4,ab4,f5]@17 ~@17 [ab4,ab5]@33 ~@6 ab5@11 ab5@10 ~@5 gb5@8 ~@11 [db5,f5]@13 gb5@10 [gb4,eb5,gb5]@5 ~@2 bb4@11 ~@26 gb4@2 ~@2, ~@54 eb4@2 bb3 eb4 bb3@2 ~ bb3 eb4 bb3 eb4@2 ~ [eb4,ab4]@2 [eb4,ab4]@2 ~ [eb4,ab4]@2 [eb4,ab4]@2 ~ [eb4,ab4]@2 eb4@8 ~@56 [eb4,bb4,eb5]@18 ~@17 [eb4,bb4,eb5]@17 ~@6 [eb4,eb5]@11 eb4@17 ~@5 [bb4,db5]@17 [bb4,db5]@11 [bb4,bb5]@17 [b4,eb5]@5 ~@16 ab5@10 ab5@11 ~@5 bb5@15 ~@2 d5@3 eb5@2 [d5,f5]@6 ~@30]/8", // Abm Gb Ebm Ab5 Abm Eb5 Ab5 Bb7 …
  G: "[~ [f4,eb5,f5]@11 [f4,db5,f5]@11 [gb4,b4,gb5]@11 ~@22 bb4@2 eb5 [f4,eb5,f5]@10 db5@10 ~@5 [f4,f5]@5 [f4,bb4,f5]@12 gb4 ~ bb4 eb5 ~ f5 gb5 ~ bb5 eb6 ~ [f5,f6]@9 ~ [bb5,bb6]@14 [bb5,db6]@2 ~ [ab5,b5]@2 ~@18 [eb5,bb5]@33 [bb4,bb5]@3 b4@15 [gb4,gb5]@2 ~@16 [eb4,b4,eb5]@4 [f4,ab4,db5]@20 [db4,f4,ab4,db5]@4 ~@3 bb3@2 ~@16 eb5@3 gb5@3 bb4@2 eb5@3, ~@35 f5@18 f4@2 gb4@4 ~@10 [ab4,ab5]@15 ~@57 bb5@18 eb6@36 b5@18 ~@45 eb5@11 eb5@8 ~@6 gb5@5, ~@35 bb4@17 eb4@7 ~@20 b4@10 ~@23 [b5,eb6]@23 ~ [f5,f6]@5 [f5,f6]@53 ~@38 f5@24 ~ gb4@7 gb4@8 gb4@10 ~@6, ~@35 f4@15 bb3@9 ~@97 [db5,db6]@39 ~@15 [b4,eb5]@18 ~@29 bb4@9 ~ bb4@8 bb4@7 ~@6, ~@49 gb3@10 ~@133 [eb5,gb5]@18 ~@2 [ab4,ab5]@20 ~@24 eb4@5 eb4@21 ~@6]/6", // F7 Db B5 F7 F Bb5 F Bb …
  H: "~ db5 ~ db5@2 bb4@3 f4@3 bb4@2 eb4@3 ~@2 bb4 bb3@2 eb4@3 gb4@3 bb4@2 eb5@3 ~ db5 ~ db5@2 bb4@3 f4@3 bb4@2 f4@3, [f4,f5]@2 f5@9 ~@5 eb5@11 gb5@5 ~@2 f5@9 ~@5, ~ bb4@2 ~@8 db5@5 eb4@3 ~@14 bb4@2 ~@8 db5@5, ~@17 gb4@2 ~@13 [f4,f5]@3 ~@13", // F
  I: "~@2 bb4 bb3@2 eb4@3 gb4@3 bb4@2 eb5@3 db5@3 f4@2 b4@3 f4@3 bb4@2 f4@3 ~@2 bb4 eb4@2 gb4@3 bb4@3 eb5@2 [bb4,eb5,gb5]@3, eb5@11 gb5@5 f5@5 eb5@5 ~ db5@5 eb5@11 ~@5, eb4@3 ~@29 eb4@3 ~@13, ~ gb4@2 ~@30 gb4@2 ~@13", // Ebm
  J: "~ eb5 ~ eb5@2 b4@3 ab4@3 eb4@2 b3@3 eb4@3 b3@2 eb4@3 ab4@3 b4@2 ab5@3 ~@2 gb5 eb5@2 bb4@3 gb4@3 bb4@2 gb4@3, [ab4,ab5]@2 ab5@25 b5@5 bb5@11 ~@5, ~ b4@2 ~@29 bb4@3 ~@13, ~@33 eb5@2 ~@8 gb5@5", // Ab
  K: "~@13 ab5@3 ~@13 gb4@3 ~@13 ab5@3, ab5@8 ab4@3 [b4,b5]@5 bb4@5 bb4@3 gb4@5 ~@3 ab4@3 b3@8 [b4,b5]@5, ab4@3 b3@13 ~@2 gb5@9 [bb4,gb5]@5 ~ b4@4 eb4@11, ~ b4@4 eb4@11 ~ eb5@2 eb5@13 ~@2 eb5@14, ~ eb5@7 bb5@8 ab5@4 ab4@4", // B Ebm
  L: "[~@13 bb4@3 [ab4,b4,eb5]@3 bb4@2 b4@3 eb5@3 ab5@2 [f5,ab5,bb5,d6]@3 ~@21 gb5@5 ~ [gb5,bb5,gb6]@5 ~@11 [db5,f5,db6]@5 ~@5 gb5@5 ~ [gb5,bb5,gb6]@5, bb5@16 ab5@11 ~@5 bb5@27 ~@5 [bb5,f6]@16 ~@16, gb5@11 [eb5,gb5]@5 ~@16 [eb5,eb6]@32 ~@16 [eb5,ab5,eb6]@16, ~@3 bb4@5 bb4@5 ~@24 gb5@11 ab5@16 ~@5 ab5@11 ~@16, ~@5 [f5,ab5]@11 ~@16 ab5@11 f5@21 f5@11 ~@21]/2", // Abm Bb7 Gb Db Gb Bb5 Ebm Eb …
  M: "~@11 [db5,f5,db6]@5 ~@5 gb5@5 ~ [gb5,bb5,gb6]@5 ~@11 [db5,db6]@5, [bb5,f6] ~@2, f5@11 ~@5 [eb5,ab5,eb6]@16 [f5,f6]@16, ~@5 ab5@11 ~@21 [eb5,eb6]@11", // Db Gb Db Bb5 Ab5 F Eb
  N: "eb6@13 [gb5,bb5,eb6,gb6]@3 ~@29 b6@3, eb5@16 ab6@11 ab5@2 b5@3 eb6@3 ab5@2 b5@3 eb6@3 ab6@5, ~@2 eb6 f5@3, ~@16 b5@5 b4@27, ~@16 ab5@3 ab4@29", // Ebm
  O: "eb6@3 eb6@2 ~@3 bb5@3 bb5@2 bb5@3 ~@13 b6@3 ~@3 eb6@2 ~@3 bb5@3 bb5@2 bb5@3, bb6@16 ~@2 ab6@9 ab6@5 ~ gb6@9 ~@6, gb6@11 ~@6 b5@4 b5@11 bb5@8 ~@3 [gb5,eb6,gb6]@5, bb5@8 ~@3 [gb5,eb6,gb6]@5 ab5@3 ab5@13 ~@2 bb6@14, ~@5 eb6@5 ~@7 eb6@7 eb6@8 ~ eb6@2 ~@2 eb6@5 ~@6", // Ebm
  P: "ab5@3 ~@10 b6@3 ~@13 bb5@3 ~@3 ab4@2 [ab4,b4]@3 [b4,eb5]@3 ab5@2 [f5,ab5,bb5,d6]@3, ab6@11 ab6@5 bb6@16 ~@5 eb4@6 [b4,eb5]@5, eb6@8 eb6@8 gb6@11 [eb6,gb6]@5 ~ [b5,eb6]@15, b5@5 b5@11 eb6@5 ab6@11 ~@2 ab6@14, ~@3 ab5@13 ~@3 bb5@2 eb6@3 bb5@5 ~@3 ab5@8 ab4@8", // Abm B Bb7 B Ebm B
  Q: "[eb5,gb5,bb5,eb6]@3 ~@29 [eb5,gb5,bb5,eb6]@5 ~@11", R: "~@32 [gb5,a5,db6,gb6]@5 ~@11",
  S: "~@32 [a5,db6,e6,a6]@5 ~@11", T: "~@26 gb5@13 ~ [gb4,gb5]@8, ~@23 gb4@16 ~@9, ~@8 a4@5 ~@3, ~@25 d5@14 ~@9",
  U: "[[a4,a5]@8 ~@2 b5@6 d5@8 d5@8 b4@8 ~ [a4,d5,gb5,a5]@27 ~ [a4,a5]@2 [b4,b5]@2 [c5,e5,a5]@2 a4@2 [c5,e5,a5]@2 ~ a4@2 [c5,e5,a5]@2 a4@2 [c5,e5,a5]@2 a4@2 [c5,e5,a5]@2 a4@2 [c5,e5,a5]@2, ~ b4 ~@10, ~@9 [e5,g5]@7 ~@80]/2", // A D A B Am Em
  V: "[a4@2 [c5,e5,a5]@2 a4@2 [c5,e5,a5]@2 a4@2 ~@3 gb5@13 ~ [gb4,gb5]@8 [a4,a5]@8 ~@2 b5@6 d5@8 d5@8 b4@8 ~ [a4,d5,gb5,a5]@27 ~ [a4,a5]@2 [b4,b5]@2 [c5,e5,a5]@2 a4@2 [c5,e5,a5]@2 a4@2 [c5,e5,a5]@2 ~ a4@2 [c5,e5,a5]@2 a4@2 [c5,e5,a5]@2 a4@2 [c5,e5,a5]@2 a4@2 [c5,e5,a5]@2 a4@2 [f5,ab5,bb5,d6]@4 [gb5,bb5,eb6]@2 eb5, ~@5 gb4@8 ~@59, ~@11 a4@15 ~@17 b4@8 ~@93, ~@12 d5@14 ~@18 [e5,g5]@7 ~@93]/3", // Am Gb A D A B Am Bb7 …
  W: "[~@13 [gb5,bb5,eb6]@8 ~@6 gb4@2 f4@13 ~ db4@2 ~@10 gb4@5 f4@5 ~ eb4@5 db4@5 eb4@14 gb4@2 ~@16 [ab5,b5,eb6,ab6]@30 ~ [bb4,bb5]@13 ~ [gb4,gb5]@2 [ab4,ab5]@10 ~ [b4,b5]@5 [bb4,bb5]@5 [ab4,ab5]@5 ~ [gb4,gb5]@5 [ab4,ab5]@14 [f5,ab5,bb5,d6]@2 ~@22 eb5@2 ~@5 eb5@16 [f5,ab5,bb5,d6]@2 ~@4 [gb5,bb5,eb6]@3 ~@14 [gb5,bb5,eb6]@3 ~@8 eb5@17 [f5,ab5,bb5,d6]@2 ~@6 eb5@3 ~@14 eb5@3 ~@6 eb5@17 [f5,ab5,bb5,d6]@2 ~@10 eb5@3 ~@10 eb5@2 [gb5,bb5,eb6]@2 eb5@2 [gb5,bb5,eb6]@2 ~, ~ [gb5,bb5,eb6]@4 [gb5,bb5,eb6]@4 [gb5,bb5,eb6]@4 ~@190 [gb5,bb5,eb6]@4 [gb5,bb5,eb6]@4 [gb5,bb5,eb6]@4 [gb5,bb5,eb6]@4 [gb5,bb5,eb6]@4 [gb5,bb5,eb6]@4 [gb5,bb5,eb6]@3 [gb5,bb5,eb6]@18 ~@2 [gb5,bb5,eb6]@4 ~@5 [gb5,bb5,eb6]@4 [gb5,bb5,eb6]@4 [gb5,bb5,eb6]@4 ~@5 [gb5,bb5,eb6]@4 [gb5,bb5,eb6]@19 ~@2 [gb5,bb5,eb6]@4 [gb5,bb5,eb6]@4 ~ [gb5,bb5,eb6]@4 [gb5,bb5,eb6]@4 [gb5,bb5,eb6]@4 [gb5,bb5,eb6]@4 ~ [gb5,bb5,eb6]@4 [gb5,bb5,eb6]@19 ~@2 [gb5,bb5,eb6]@4 [gb5,bb5,eb6]@4 [gb5,bb5,eb6]@4 ~ [gb5,bb5,eb6]@4 [gb5,bb5,eb6]@4 [gb5,bb5,eb6]@4 ~@7, ~@3 eb5@4 eb5@4 eb5@10 ~@24 eb4@16 ~@31 ab4@46 [b4,b5]@2 ~@65 eb5@4 eb5@4 eb5@4 eb5@4 eb5@4 ~@3 eb5@4 ~@20 eb5@4 ~ eb5@4 eb5@4 eb5@4 eb5@4 ~ eb5@4 eb5@4 ~@21 eb5@4 ~@5 eb5@4 eb5@4 eb5@4 ~@5 eb5@4 ~@21 eb5@4 eb5@4 ~@5 eb5@4 eb5@4 ~@9]/8", // Ebm Abm Bb Gb Ab B Bb Ab …
  X: "eb5@2 [gb5,bb5,eb6]@2 eb5@2 [gb5,bb5,eb6]@2 eb5@2 [gb5,bb5,eb6]@2 eb5@2 [gb5,bb5,eb6]@2 eb5@2 ~ [eb5,gb5,bb5,eb6]@8 ~@21", // Ebm
})).s("gm_piano").gain(0.32)

// chords · piano
const piano_3 = note("<A@8 B@2 ~@3 C ~@2 D ~@2 E@2 ~ F G@6 ~@4 H@2 I J K L M N O P Q R@2 S@2 T U@8 V>".pickRestart({
  A: "[~@11 eb3@71 ~@30 [gb3,bb3,f4]@40 ~@32 [b3,eb4]@8 [ab3,b3,eb4]@8 ~@15 [f4,gb4,bb4]@16 ~@24 [b3,gb4]@8 ~@12 bb3@2 [gb3,bb3]@2 bb3@2 ~@11 bb2@2 ab2@2 ~@26 b3@4 ~@12 bb3@2 [gb3,bb3]@2 bb3@2 ~@13 bb1 ab2@2 ~@14 [b3,f4,bb4]@10, ~@8 eb2@70 ~@10 eb2@65 ~@9 ab3@2 b3@2 eb4@2 f4@32 ~@5 eb3@2 f3@2 gb3@2 bb3@2 eb4@18 ~@6 eb3@2 f3@2 ab3@2 b3@2 eb4@2 [db4,f4]@16 bb3@6 eb3@10 [gb3,f4]@2 bb3@2 gb3@2 f3@2 bb3@2 gb3 f3@4 ab1@8 f3@2 ab3@2 b3@2 eb4@2 f4@4 db4@12 bb3@6 eb3@10 gb3@2 bb3@2 gb3@2 f3@2 bb3@2 gb3@2 [eb2,f3] db2 [b1,bb2]@2 ab1@8 f3@2 ab3@2 b3@2 eb4@12, ~@9 gb2@71 ~@11 gb2@9 f3@3 gb3@3 bb3@3 eb4@43 ~@8 f3@40 ~ gb2@30 ab1@32 ~@4 bb2@4 f3@2 gb3@4 eb4@18 ~@5 eb3@26 ~@4 bb2@12 f4@16 ~@6 eb3@20, ~@10 bb2@72 ~@12 bb2@58 [ab1,ab2]@32 gb3@16 ~@3 bb2@28 ~@2 ab2@30 eb2@32 ~@3 b2@28 ~@2 gb2@30 ~@2 ab2@24, ~@97 eb3@55 ~@6 eb3@42 eb2@32 ~@3 b2@28 ~@2 gb2@30 ~ ab2@30 eb2@8 f3@2 gb3@4 eb4@18 ~@4 b2@22]/8", // Gbmaj7 B Abm Gbmaj7 B5 Gb Bb Db …
  B: "[~@4 [ab3,b3] ~@47 eb4 [ab2,eb3]@16 [f2,b2]@16 ~@11, ~ [b3,eb4,f4]@4 [eb2,bb2]@47 ~@44, ~@3 [bb3,db4]@2 [gb3,bb3]@2 [gb3,bb3]@2 [gb3,bb3]@2 [gb3,bb3]@2 [gb3,bb3]@2 [gb3,bb3]@2 [gb3,bb3]@2 [gb3,bb3]@2 [gb3,bb3]@2 [gb3,bb3]@2 [gb3,bb3]@2 [gb3,bb3]@2 [gb3,bb3]@2 [gb3,bb3]@2 [gb3,bb3]@2 [gb3,bb3]@2 [gb3,bb3]@2 [gb3,bb3]@2 [gb3,bb3]@2 [gb3,bb3]@2 [gb3,bb3]@2 [gb3,bb3]@2 [gb3,bb3]@2 [gb3,bb3]@2 ~@43, ~@6 db4@2 db4@2 db4@2 db4@2 db4@2 db4@2 db4@2 db4@33 ~@43, ~@11 eb4!13 eb4!2 ~@22]/2", // Abm Ab5 Fdim Fm7b5 Eb5 Bbm Gb
  C: "~@19 gb3@3 ~@26", D: "~@12 [bb2,bb3] ~@3", E: "[~@37 b3@16 ~@43]/2", F: "~@19 bb3@5 eb2@21 ~@3",
  G: "[~ ab2@33 ~@18 [bb2,gb3,bb3] ~@5 gb2 ~@10 db4@10 b3@10 eb1@15 [bb2,gb3,bb3] ~@4 eb2 f2 gb2 ~@10 [b3,eb4,bb4]@14 [bb3,db4]@2 ~ [ab3,b3]@2 ~@4 f4@49 ~ [ab1,ab2]@17 [ab1,ab2]@20 [bb1,bb2]@24 ~@32, ~@35 eb1@25 ~@52 [ab1,ab2]@28 ~@4 bb3@50 ~@94, ~@35 eb2@21 eb2@3 ~@30 eb2@19 ~@33 eb2@53 ~@94, ~@53 [bb2,gb3,bb3]@6 ab2@29 ~@18 [bb2,gb3,bb3]@6 ~@24 f4@5 ~@2 gb3@51 ~@94, ~@57 f2@2 ~@83 bb2@52 ~@94]/6", // Ebm Bmaj7 Bbm Abm Ab Bb Ab Ebm
  H: "[~@11 eb3@5 [ab2,b2,eb3,ab3]@13 [bb2,bb3]@3 ~@29 bb3@3 ~@13 ab3@3 ~@13 eb3@3, [eb2,gb3]@16 ~@16 [eb2,eb3]@24 bb3@3 bb2@5 [bb2,bb3]@16 [eb2,ab3]@16, ~ bb2@15 ~@19 bb3@5 bb3@3 f3@21 ~@11 f3@5 eb3@11 bb2@5, ~@5 f3@11 ~@16 ab3@13 bb3@3 ab3@16 ~@3 b3@5 b3@8 ~@3 bb3@5 bb3@8, ~@37 gb3@14 bb3@2 gb3@11 ~@5 ab3@8 ~@8 gb3@11]/2", // Abm Bb Ebm Eb Bb Ab5
  I: "~@13 ab3@3 ~@13 eb3@3 ~@13 f3@3, [bb2,bb3] [eb2,ab3] ~, ~@3 b3@5 b3@8 ~@3 bb3@5 bb3@8 bb3@5 bb3@5 ~ bb3@5, ~@5 ab3@8 ~@8 gb3@11 ~@3 f3@5 f3@5 ~@3, ~@11 f3@5 eb3@11 bb2@5 bb2@16", // Bb Ab5
  J: "~@13 eb3@3 ~@29 ab4@3, [eb2,ab3]@16 [ab1,ab2]@21 ab3@3 b3@3 eb4@5, eb3@11 bb2@5 ~@8 ab3@5 eb4@6 f3@13, ~@3 bb3@5 bb3@8 ~@5 f3@6 b3@5 f4@16, ~@5 gb3@11 ~@3 eb3@29", // Ab5 Ab
  K: "~@13 bb3@3 ab2@3 ~@10 b3@3 ~@13 bb3@3, [eb2,eb3]@16 ab1@11 ab3@5 ~@3 gb3@5 gb3@8, ~@3 gb3@5 gb3@8 ~@3 ab2@13 [eb2,eb3]@16, ~@5 bb3@8 ~@8 b2@11 ~@11 eb4@5, ~@11 eb4@5 ~@8 eb3@8 ~@5 bb3@8 ~@3", // Eb
  L: "~@13 ab4@3 ~@13 bb3@3 ~@13 [bb2,bb3]@3, [ab1,ab2]@11 f4@5 ~@5 ab4@11 ~@16, ~@3 ab3@13 [eb2,eb3]@16 [ab2,b2,eb3,ab3]@16, ~@5 b3@11 ~@8 bb3@5 ~@19, ~@8 eb4@8 ~@3 [eb4,gb4]@8 [eb4,gb4]@5 ~@16", // Bb Ab Eb Abm Ebm
  M: "[eb2,eb3]@3 ~@29 [eb1,bb1,eb2]@5 ~@11", N: "~@32 [gb1,db2,gb2]@5 ~@11", O: "~@32 [a1,e2,a2]@5 ~@11",
  P: "a1 a2 a1 a2 a1 a2 a1 a2 a1 a2 a1 a2 a1 a2 a1 a2 a1 a2 [a1,a2] a1 a2 a1 a2 a1 a2 a1 a2 a1 a2 a1 a2 a1 a2 a1 a2 a1 a2 a1 a2 a1 a2 a1 a2 a1 a2 a1 a2 a1", // A
  Q: "a2 a1 a2 a1 a2 a1 a2 a1 a2 a1 a2 a1 a2 a1 a2 a1 a2 a1 a2 a1 a2 a1 a2 [d3,gb3,a3]@2 d4@2 [d3,gb3,a3]@2 d4@2 [d3,gb3,a3]@2 d4@2 [d3,gb3,a3]@2 ~ d4@2 [d3,gb3,a3]@2 d4@2 [d3,gb3,a3]@2 d4@2, ~@23 d2 ~@24", // D
  R: "[[d3,gb3,a3]@2 d4@2 [d3,gb3,a3]@2 d4@2 [c3,e3,g3]@2 c4@2 [c3,e3,g3]@2 c4@2 [c3,e3,g3]@2 c4@2 [c3,e3,g3]@2 c4@2 [c3,e3,g3]@2 c4@2 [c3,e3,g3]@2 c4@2 [c3,e3,g3]@2 ~ c4@2 [c3,e3,g3]@2 c4@2 [d3,gb3,a3]@2 d4@2 [d3,gb3,a3]@2 d4@2 [d3,gb3,a3]@2 d4@2 [d3,gb3,a3]@2 d4@2 [d3,gb3,a3]@2 d4@2 [d3,gb3,a3]@2 d4@2 [d3,gb3,a3]@2 d4@2 [d3,gb3,a3]@2 d4@2 [a2,e3]@2 g3@2 [a2,e3]@2 ~ g3@2 [a2,e3]@2 g3@2 [a2,e3]@2 g3@2 [a2,e3]@2 g3@2 [a2,e3]@2, ~@8 c2 ~@32 d2 ~@31 a1 ~@22]/2", // D C D A5
  S: "[g3@2 [a2,e3]@2 g3@2 [a2,e3]@2 g3@2 [d3,gb3,a3]@2 d4@2 [d3,gb3,a3]@2 d4@2 [d3,gb3,a3]@2 d4@2 [d3,gb3,a3]@2 d4@2 ~ [d3,gb3,a3]@2 d4@2 [d3,gb3,a3]@2 d4@2 [d3,gb3,a3]@2 d4@2 [d3,gb3,a3]@2 d4@2 [c3,e3,g3]@2 c4@2 [c3,e3,g3]@2 c4@2 [c3,e3,g3]@2 c4@2 [c3,e3,g3]@2 c4@2 [c3,e3,g3]@2 c4@2 [c3,e3,g3]@2 c4@2 [c3,e3,g3]@2 c4@2 ~ [c3,e3,g3]@2 c4@2 [d3,gb3,a3]@2 d4@2 [d3,gb3,a3]@2 d4@2 [d3,gb3,a3]@2 d4@2 [d3,gb3,a3]@2 d4@2 [d3,gb3,a3]@2 d4@2, ~@10 d2 ~@32 c2 ~@32 d2 ~@19]/2", // A5 D C D
  T: "[d3,gb3,a3]@2 d4@2 [d3,gb3,a3]@2 d4@2 [d3,gb3,a3]@2 d4@2 [a2,e3]@2 g3@2 [a2,e3]@2 g3@2 [a2,e3]@2 ~ g3@2 [a2,e3]@2 g3@2 [a2,e3]@2 g3@2 [a2,e3]@2 g3@2 [a2,e3]@2 g3@2 [bb1,bb2]@4 eb1@2 eb2, ~@12 a1 ~@35", // D A5 Bb
  U: "[~@13 eb1@8 ~@6 [gb1,gb2,gb3]@2 [f1,f2,f3]@13 ~ [db1,db2,db3]@2 ~@10 [gb1,gb2,gb3]@5 [f1,f2,f3]@5 ~ [eb1,eb2,eb3]@5 [db1,db2,db3]@5 [eb1,eb2,eb3]@14 [gb1,gb2,gb3]@2 ab3@16 [ab3,b3,eb4,ab4]@30 ~ [bb1,bb2]@13 ~ [gb1,gb2]@2 [ab1,ab2]@10 ~ [b1,b2]@5 [bb1,bb2]@5 [ab1,ab2]@5 ~ [gb1,gb2]@5 [ab1,ab2]@14 [bb1,bb2]@2 ~@22 eb2@2 ~@5 eb2@16 [bb1,bb2]@2 ~@4 eb1@3 ~@14 eb1@3 ~@8 eb2@17 [bb1,bb2]@2 ~@6 eb2@3 ~@14 eb2@3 ~@6 eb2@17 [bb1,bb2]@2 ~@10 eb2@3 ~@16 eb1@3, ~ eb1@4 eb1@4 eb1@4 ~@32 [eb1,eb2,eb3]@16 ~@31 [ab1,ab2]@46 [b1,b2]@2 ~@63 eb1@4 eb1@4 eb1@4 eb1@4 eb1@4 eb1@4 eb1@3 eb1@18 ~@2 eb1@4 ~@5 eb1@4 eb1@4 eb1@4 ~@5 eb1@4 eb1@19 ~@2 eb1@4 eb1@4 ~ eb1@4 eb1@4 eb1@4 eb1@4 ~ eb1@4 eb1@19 ~@2 eb1@4 eb1@4 eb1@4 ~ eb1@4 eb1@4 eb1@4 eb1@4 ~@3, ~@3 eb2@4 eb2@4 eb2@10 ~@184 eb2@4 eb2@4 eb2@4 eb2@4 eb2@4 ~@3 eb2@4 ~@20 eb2@4 ~ eb2@4 eb2@4 eb2@4 eb2@4 ~ eb2@4 eb2@4 ~@21 eb2@4 ~@5 eb2@4 eb2@4 eb2@4 ~@5 eb2@4 ~@21 eb2@4 eb2@4 ~@5 eb2@4 eb2@4 eb2@4 eb2@4 ~]/8", // Gb F Db Gb F Eb Db Eb …
  V: "~@16 eb2@2 ~ [eb1,eb2]@9 ~@20, eb2!4 ~@8, ~ eb1@2 eb1@2 eb1@2 eb1@2 ~@15", // Eb
})).s("gm_piano").gain(0.64)

// chords · piano · soft notes
const piano_soft = note("<~@9 A@4 B@6 C@4 D ~@4 E F G H I ~@25>".pickRestart({
  A: "[~@34 eb3@2 ~@14 db3@2 ~@34 gb3@7 ~@13 db3@7 ~@13 gb3@7 ~@14 db3@6 ~@14 gb3@7 ~@13 db3@5, ~@36 [bb1,bb2,f3]@16 eb2@27 eb2@13 ~@21 eb2@20 ~@20 eb2@20 ~@19, ~@53 bb2@39 ~ [bb2,f3]@20 ~ bb2@19 [bb2,f3]@20 ~ bb2@19 ~ [bb2,f3]@18, ~@54 eb3@38 ~@23 eb3@18 ~@22 eb3@18 ~@7 eb3@12, ~@73 bb1@20 ~@99]/4", // Bb5
  B: "[~@4 eb3@18 ~@27 ab1@7 ~@20 gb3@6 ~@14 b3@7 ~@13 gb3@7 ~@13 b3@7 ~@14 gb3@6 [ab2,ab3]@20 ~@32 eb4@6 ~@12 f3@6 ~@11 eb4@6 ~@12 f3@6 ~@11 eb4@3, ~@2 eb2@20 ~@20 eb2@13 ~@7 [eb3,bb3]@20 [ab2,ab3]@20 ~ [eb3,bb3]@20 [ab2,ab3]@20 [eb3,bb3]@20 ~@20 eb2@26 bb3@12 ~@6 ab3@12 ~@6 bb3@12 ~@5 bb3@12 ~@5 bb3@9, ~@3 bb2@19 [ab2,ab3]@34 b3@27 ~@67 ab3@13 ~@20 eb3@13 eb3@25 ~@35 [bb2,db4]@17 ~@15, ~@190 bb2@31 [bb2,db4]@18 [eb2,gb3]@18 ~@17 [eb2,gb3]@14, ~@203 gb3@18 ~@67]/6", // Ab Eb5 Ab Eb5 Ab Eb5 Ab Bbm …
  C: "[~@14 f3@6 ~@14 eb4@3 ~@28 ab4@5 ~@11 bb3@6 ~@10 ab4@5 ~@11 bb3@5 ~@11 ab4@5 ~@10 eb4@5 ~@10 eb4@3 ~ bb2@5 eb3@5 ~@16 eb2 f2 ~, ~@3 [bb2,db4]@17 eb2@17 ~@16 [eb2,b3]@17 ~@32 [eb3,gb4]@16 ~@16 [eb3,gb4]@15 ~@2 eb3@11 ~@30, ~@9 bb3@11 ~@3 bb2@14 ab2@11 [ab2,ab3]@22 [b2,gb4]@17 [ab2,b3]@16 ~@15 [ab2,b3]@16 ~@15 ab2@14 ~@29, ~@26 eb3@11 ~@5 eb3@28 ~@6 eb4@11 ~@5 eb4@11 ~@5 eb4@11 ~@4 eb4@11 ~@5 f4@10 ~@5 ab3@9 ~@29, ~@28 gb3@3 bb3@6 ~@22 [ab1,eb4]@11 ~@86 b3@6 ~@30]/4", // Bbm Abm Ebm Ab B5 Abm Ab5
  D: "gb2 ~@11 db4@11 b3@11 ~@14", E: "~@16 gb3@5 bb3@5 ~ eb4@5 gb4@5 eb4@5 ~ bb3@5, ~ [eb2,bb2]@2",
  F: "db4@5 bb3@5 ~ f3@5 gb3@5 bb3@5 ~ eb4@5 db4@5 bb3@5 ~ f3@5, bb2 [eb2,bb2] bb2, f3@11 ~@21 f3@11 ~@5", // Eb5
  G: "~@5 bb3@5 ~ eb4@5 ~@5 bb3@5 ~ f3@5 ~@5 bb3@5 ~ eb4@5, eb2@8 ~ db4@7 ~ gb3@7, ~ bb2@15 bb2@16 eb2@16, ~@2 gb3@14 ~ f3@10 ~@6 bb2@15",
  H: "gb3@5 f3@5 ~ eb3@5 db3@5 b2@5 ~ ab3@5 ~@5 bb3@5 ~ eb4@5, ab2@27 ~@5 eb2@16, ~@32 gb3@5 ~@11, ~@11 bb2@5",
  I: "~@5 f3@11 ~@11 bb2@5 ~@5 f3@11, [ab2,gb3] [eb2,f3] [ab2,gb3], ~@21 eb3@11 ~@16", // Ab7 Ebsus2 Ab7
})).s("gm_piano").gain(0.32)

stack(piano, piano_2, piano_3, piano_soft)