Strudelify

The Cascades

Scott Joplin

KeyG minorTempo100 bpm
0:00/0:00
// The Cascades — Scott Joplin
// 100 bpm, 4/4, key G minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 70 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(100/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 · "A.PIANO 1"
const piano = note(`<
  A B C D E@3 F@3 G H I J@2 K@3 L M@3 N O@3 P Q@3 R S T U@2 V W@3 X Y@2 Z AA@8 AB@2 AC AD@2 AE AF@2 AG@2 AH AI@2 AJ AK@2
  AL@3
>`.pickRestart({
  A: "~@27 [g2,g3,g4] ~@4", // G
  B: "~ g2@6 ~@3 [a2,a3,a4]@4 [b2,b3,b4] ~@15 f5@2, ~ [g3,g4]@13 ~@5 [b2,b3,b4]@10 g5@2 ~, ~@28 [f3,f4,f5]@3 ~", // A B G B F
  C: "[e3,e4]@5 ~@4 d3@8 [g2,g3,b4,d5,g5] ~@4 gb4 g4 ~ a4 ~ b4 ~ c5 ~ d5, e5 d5 ~@2, ~@4 d4 ~@11", // E G
  D: "~ [c3,g3,e5] ~ eb5@2 e5 ~ f5 ~ [e3,g5] a5 ~ [eb3,eb4,c6] ~ a5 ~ [d3,d4,b5] ~ c6@2 [b3,d6] ~ f5 ~ g2 g5 ~ [g3,b3,f4,d5] ~ eb5 ~ [c3,g3,e5], ~@12 a5 ~@3", // C Em Cm G Bm G7 C
  E: "[~@2 e4 [c4,e5] f5 ~ [e3,e4,g5] ~ a5 ~ [eb4,c6] ~ a5 [d3,d4,b5] ~@5 g5@2 a5@2 ~ f4 g3 e5@2 ~@5 [f4,ab4]@2 [a3,e4,a4] ~@12 [f4,ab4]@2 [a3,c4]@2 ~@6 a2@2 ~@25 gb6@2 [ab5,ab6]@5 gb6 ~@2 c5, ~ eb5@2 ~@7 eb3@2 ~@3 c6@6 ~@2 g5@3 ~@4 [b3,d5]@2 b4@3 ~@11 d4@4 [e4,a4] ~@9 eb2@4 gb3 c3 a3@2 eb3@10 [a4,gb5]@2 [c5,a5]@2 [eb5,c6]@2 eb6@3 [c6,eb6]@3 ~@2 eb5@2 c6@2, ~@17 [b3,d4,f4,d6]@4 a2 ~@2 [d4,d5]@4 [ab3,f5]@7 ~@8 [ab3,f5]@7 ~@8 c2@10 c4 [gb3,eb4]@2 [a3,gb4]@2 c4@15 ~@8, ~@31 d4@4 c4@2 ~@8 [b3,d5]@2 b4@3 ~@10 c3@2 eb3 a2@10 a4@2 [eb4,c5] eb5 gb4@11 ~@5 [eb6,gb6]@3, ~@31 gb2@13 ~@4]/3", // C Em Cm G Fm A5 Fm Am …
  F: "[~ gb6 ~ [ab4,c6,eb6,gb6]@4 ~@3 [c5,e5] ~@9 g5@2 a5@3 a4@4 [f5,d6] ~ [f5,d6]@4 g5 [e5,c6]@2 ~@11 g5@2 eb5@4 [eb4,eb5,gb5]@2 [c5,eb5,gb5]@2 c4 ~ gb5 [c5,eb5,gb5] ~@4 g3@3 [c4,e4] ~ e5 ~ [e3,g4] ~ e5@2 c5 ~@2 a4@4 a3@3 ~ [f4,d5] ~@2 g3@2 [g3,g4] ~, ~@7 [g4,g5,c6,g6]@5 ~ e6@3 e6@6 ~@20 d5@9 ~@29 g4@3 ~@8 [f4,d5]@4 ~, ~@14 [e4,g5,g6]@8 [d4,gb5]@7 ~@7 [c4,g4]@9 f5@6 ~@45, ~@18 [g4,c5,c6]@5 ~@6 [g4,b4]@7 ~@4 c5@11 ab4@10 ~@2 ab3@5 ~@13 [d3,gb4]@7 ~ g3@2 ~@5, ~@43 e5@4 gb5@4 ab5@7 ~@8 g5@5 ~@3 g5@2 ~@20]/3", // Ab7 C Dm C Ebm Cdim C Em …
  G: "[e4,c5]@3 ~@10 d5 ~ [c2,c3,e5] ~ eb5 ~ [c4,e4,e5] ~ f5 ~ g5 ~@2 [eb2,c6] ~ a5 ~ [d2,d3,b5] ~, [c3,c4]@10 b4@5 ~@17, ~@4 gb4@7 c5@3 ~@18, ~@6 g4@6 [g2,g3]@3 ~@11 eb3@2 ~@4, ~@4 a4@3 ~@9", // C Cm G C G
  H: "~ f4 [d4,d6] ~ f5 a5@2 g5 ~ [g3,b3,f4,d5] ~ eb5 [c2,e5] c3 eb5 ~ [g3,c4,e4,e5] ~ f5 ~ [e3,e4] a5 ~ [eb4,c6] ~ a5 ~ [d3,d4,b5] c6@2 [b3,f4,d6] ~, c6@2 ~@3 g2 ~@14 g5@2 ~ eb3@2 ~@7", // D G7 C E Cm G Bdim
  I: "f5 ~ g2 ~@2 [g3,d4,f4,d5]@2 e5 ~@6 [f4,ab4]@2 [a3,e4,a4] ~@12 ab5@2 [a3,c4,e4,a5], ~@2 a5@6 ~@2 d5@2 [d4,b4]@4 ~@9 d6@2 [d4,b5]@4 ~, ~@4 g5@4 ~ [ab3,f5]@7 ~@8 [ab3,f6]@7 ~, ~@11 b3@2 ~@3 c4@2 ~@8 b3@2 ~ f4 ~@2", // G7 Fm A5 Am G Db
  J: "[~@6 a2@2 ~@27 [c6,ab6]@3 ~ gb6 ~@4 gb6 [c6,eb6,gb6] ab4@2 ~@2 g5@3 [c5,e5] ~@3 [g5,g6]@2 ~@2 c6 g5 ~, ~@6 c2@7 a3@2 [eb3,c4]@2 [gb3,eb4] gb4 a3 [c4,a4]@2 [eb4,c5]@2 [gb4,eb5] [a4,gb5]@2 [c5,a5]@2 [eb5,c6]@2 [gb5,eb6]@3 eb6@3 ~@3 [c6,eb6,gb6]@5 ~@4 [c6,g6]@4 ~@2 e6@4 e6@2 ~@3, ~@8 eb2@25 [a5,gb6]@3 ~@3 eb5@8 ~@17, ~@8 c3@2 eb3 [a2,gb3]@2 c3@22 ab5@12 ~@17, ~@10 gb2@25 ~@7 c5@4 ~@4 g4@2 ~@8 g4@2 ~@2]/2", // Fm Cdim C G Cm Ebm F Cm …
  K: "[a5@4 a4@4 [f5,d6] [f5,d6]@2 [g4,b4] ~ g5 ~ [c4,g4]@4 c5 d5@2 e5 ~@2 gb5 ~ g5 ~ [ab4,eb5,ab5]@4 gb5 ~@2 c4@2 gb5 ~ [ab3,c5,eb5,gb5] ~@3 [g3,g4,c5,g5]@3 [c4,e4] ~ e5 ~ [e3,g4] ~ e5@2 [g3,c4,e4] g4 ~ [d3,c4,a4]@3 ~ c4@2 ~@2 [f4,d5] [f4,d5]@3 g3 g4@2 [d4,e4,c5] ~@2 g5 g4!2 g5 [g4,g5] ~@3 [db3,bb3,g4,db5,e5,g5] ~ g3@2 [d3,b3,g5,g6] ~@2 [b3,d4,f4,d6] ~ b5@2 [g2,g5], [d4,gb5]@10 ~@23 eb4@4 ~@21 gb4@4 gb3@6 ~@5 c3@3 ~@20, ~@4 c5@2 ~@2 [g4,b4]@2 ~@5 [e5,c6]@2 ~@7 f5@2 ~@9 [c5,eb5,gb5]@3 ~@13 g5@2 ~@2 c5@2 ~@8 [g3,b3]@3 ~@5 c4@8 ~@9 f6@2 ~@4]/3", // Dm G C5 Ab5 Ab7 C5 C Em …
  L: "~ f5 d4 d5 ~@2 [c5,e5]@2 ~@2 [c4,e4,a4,c5,e5] ~@2 g2 ~ [a4,c5,e5] ~ [g4,e5]@2 ~@2 [a4,b4,f5]@2 ~ f4 [b3,a4,b4,f5] ~@2 g2 ~ [a4,f5] ~, ~@6 [c3,g3] ~@5 [g4,e5]@2 ~@3 c5@4 ~@5 f5@2 ~@4, ~@17 [c4,e4] ~@3 d3 ~@5 g4@2 ~@3", // C Am C Bm7b5 Dm C5 C
  M: "[[g3,b3,f4] ~@2 c3 [c5,e5]@2 ~ [g3,c4,e4,a4,c5,e5] ~ [g4,c5,e5]@2 g2 ~@2 [g3,c4,e4,b5]@2 [d6,e6] g6 [d3,g5,b5,f6] ~@2 [b3,d4,f4] ~@2 [g2,f3] g5 ~ f4 [b3,d4,d5] ~ b4 [c5,e5]@4 e5 ~@2 [e2,d3,e3] ~ c5@2 [db2,db3,g4,bb4,e5]@3 d2 [c3,d3] ~@5 d2@2 g4 ~ [d3,gb3,c4]@3 [d3,g3,b3] ~@6 g5@2 ~ [d3,b5] ~ d6 ~ [g2,d3,b5,d6,g6] ~@2 [b3,d4,f4] ~ b5@2 [g2,f3] ~@2 [b3,d4,f4,d5] g3 ~@2 [c5,e5]@3 [c4,e4] [g3,a4,c5,e5] [g4,c5,e5]@2 g2 ~, b4@3 ~ a4 ~@16 d6@2 b5@2 ~ f5@2 ~@3 [c3,g3] ~@3 [e4,a4,c5]@2 [g4,c5]@2 ~@6 [g4,b4]@4 [d3,g3,b3,d5]@6 ~@10 d5@5 ~@6 d6@2 ~@4 f5@2 ~@12, f5@2 ~@11 f5@4 ~@2 f6@4 ~@13 e5@3 ~@6 e5@10 ~@8 b4@5 g5@2 ~@3 g5@2 f6@2 ~@19, ~@51 [g4,b4]@4 a4@3 ~ g4@2 g4@8 ~@18 c3 ~@8]/3", // G7 C Am7 C Cmaj7 Dsus2 G7 Bdim …
  N: "[c5,e5] [g3,c4,e4] ~@3 [b4,f5]@4 [f4,a4,b4,f5] ~@2 g2 ~ [b4,f5] ~ [g4,b4,f5]@3 ~ [a4,c5,e5]@3 [e4,a4]@2 ~ [g3,c4,e4] ~@3 [g2,g3,g4,b4,d5,g5] ~, a4@2 ~@3 a4@2 ~@7 a4@2 ~@9 g4@5 ~@2, ~ c5@4 ~@18 [c5,e5] ~ [c5,e5]@2 ~@5, ~ [g4,e5]@2 ~@8 [g4,f5]@2 ~@3 [g3,b3,f4] ~@15", // C Bdim Bm7b5 Bdim G7 Am A5 C …
  O: "[~@2 [c3,c4] ~ e5@2 [bb3,e4] ~@2 bb3@2 ~@2 [bb3,c4,e4,g5]@2 ~@2 [a2,a3] f5@2 [a3,f4] ~ f5@2 ab2 ~@2 [ab3,c4,eb4,gb4]@2 gb5 g2 ~@5 d5@2 [a3,c4,c5] ~@2 [g3,b3]@4 e4@2 ~@3 a4@3 g4 ~@2 g4 db3 ~@2 [d3,d6] g6@2 ~ [b3,d4,f4] ~@2 g2 g5 ~ f5 [b3,d4,f4,d5] ~ b4 c3 [g3,c5,e5] a4@2 [a3,c4,d4,c5,e5] ~ [g4,e5]@2 [g2,g3] ~ e5 [a3,c4,e4] ~ [g4,c5] d3 [a4,b4] a4@2 [b3,d4,f4,f5] ~@2 [g2,f3], ~@2 c5@4 g5@2 c6@3 e5@4 c6@3 ~@2 c6@2 ~@3 c6@4 ~@2 g5@6 ~@12 a5@4 ~@5 g3@2 ~ b3 ~@21 [a4,c5]@2 e5@2 ~@2 f5@3 ~@2 [g4,b4,f5]@2, ~@9 c5@6 ~ c5@5 ~@3 c5@6 ~@2 g4@5 ~ gb4@2 ~ f4 ~@3 c4 ~@3 g4@2 ~@6 db4@3 b5@2 ~ f6@4 ~@29, ~@9 bb2 ~@25 e5@2 ~@4 d5@2 ~@2 c5@8 ~@3 [db5,e5,g5]@3 g5@5 d6@2 b5@2 ~@28]/3", // C Bbdim C7 A Dm Ab7 Am G …
  P: "~@3 [b3,d4,f4,g4,f5] ~@2 e3 [c3,g3,c6,e6] ~ [a5,c6,e6] [g3,c4,e4,a5,c6,e6] ~ [g5,c6,e6]@2 g2 ~ [g5,e6] [g3,c4,e4] ~ b5 ~ [d3,g5,b5,f6,g6] ~@2 [b3,d4,f4] ~@2 [g2,f3] g5 f5@2 [b3,d4,f4,d5], ~@2 a4@2 ~@11 c6@2 g5@2 ~@3 f6@4 ~@6, ~@12 d6 b5 ~@2", // G7 C Am Am7 C G7 Bdim G7 …
  Q: "[~ b4 [c5,e5]@2 a4@2 [d4,c5,e5] ~@2 [e2,e3] ~ c5 ~ [db2,db3,g4,e5]@2 bb4 ~ [d2,d3] ~@7 g4 ~ [d3,gb3,c4,a4]@3 ~ [d3,g3,b3] ~@6 g5 g5@2 [b2,g3,b5] ~ [db3,d3] [g2,f3,b5,g6] c6 ~@2 [b3,d4,f4] ~@2 d2 g5 ~ b3 d5 ~ b4 [c2,c5,e5] ~ a4 ~ [g3,a4,c5,e5] [g4,c5,e5]@2 [g2,e3] ~ c5 [g3,c4,e4] a3 ~@2 [d2,a4,b4] ~ a4@2 [b3,f4,a4,b4,f5] ~ [g4,b4,f5]@2 [g2,a2] a4@2 [g3,g4,b4,f5]@3 ~ [c3,g3,a4,c5,e5] ~@2 c5 [a4,e5] [g4,c5,e5]@2 [g3,c4,e4] ~, ~@2 [c3,g3] ~@3 [g3,c4]@2 g4@2 ~@6 [g4,b4]@4 [g3,b3,d5]@4 d2@3 ~@9 d5@6 ~ d6@3 ~ f6@3 ~@46, ~@7 [c5,e5]@3 ~@3 bb4 ~@2 e5@10 ~@8 b4@8 ~@2 g5@4 d6@2 b5@2 ~@2 f5@2 ~@12 [g4,c5]@4 ~@11 [b3,f4] ~@6 [g3,c4,e4]@2 ~@4, ~@22 [g4,b4]@4 ~@5 g4@2 g4@9 ~@25 a4@2 ~@4 f5@3 ~@5 f5 ~@7 [a4,e5]@2 ~@5, ~@37 [d3,b3]@5 ~@54]/3", // C E Dbdim D D7 G Em Dmaj7 …
  R: "~@2 [a2,g3,g4,b4,d5,f5,g5]@3 ~ [c2,c3] e5@2 [bb3,c4,e4] ~@3 [bb2,bb3,b3,c4] ~@2 [bb3,g5]@2 c6@2 [a2,a3] ~@2 [c4,f4] a3 f5@2 [ab2,bb2] ~@2 [ab3,c4,eb4,gb4] ~, ~@6 c5@6 ~ c5@3 [c4,e4] ~@5 f5@3 ~@7, ~@9 g5@2 c6@4 e5@2 ~@3 c5@5 ~@2 c5@5, ~@23 c6@3 ~@3 c6@3", // G7 C C7 Eb A F5 Absus2 Ab7 …
  S: "gb5 g2 g5 ~ [c4,e4] e5@2 ~ [a2,a3,c5] ~@3 [b2,b3,f4,b4,d5] c3 ~@2 c4 ~@7 [c2,c3,c5,e5,g5,c6]@4 ~@4, ~@3 g4@2 g3 ~ d5@2 ~@7 [c3,c5]@8 ~@8, ~@4 gb4 ~@3 [e4,g4]@6 ~@2, ~@19 g3@8 ~@5, ~@5 g2@2 ~", // C Am Bdim C Em
  T: "~@2 [b4,d5,f5] g4 ~@5 [g4,b4,d5,f5]@12 [g4,b4,d5,f5]@5 [bb4,d5] [ab4,f5] ~@4", // Bdim G7 Bb Db
  U: "[~ [ab4,bb4,d5,f5]@11 [ab4,bb4,d5,f5]@6 [g4,bb4,eb5]@11 [gb4,bb4,c5,e5]@12 [f4,a4,c5,f5]@12 [f3,f4,a4,eb5,f5]@10 ~, ~@53 f2@5 ~@6]/2", // Bb7 Eb Gb7 F F7
  V: "[d3,d4] ~@15 [db3,db4,e4,e5]@2 [d3,d4,f5]@3 d5@2 [eb4,a4,eb5]@2 ~@3 [bb2,bb3] ~ d5@2, [f4,bb4,f5]@12 [bb2,ab3,bb3,d4,d5]@2 [c3,b3,c4,eb4,eb5]@4 f4@5 ~@2 d5@4 ~@3, d5@7 [g2,g3]@11 ~@14, ~@2 bb3@3 [a2,a3]@13 ~@5 [c3,c4] ~@2 [d4,bb4]@4 ~@2, ~@3 bb2@6 [f2,f3]@9 ~@14", // D Dbm Dm Ebdim Bb Bb5 Bb7 Cm …
  W: "[~ [ab3,bb3,f5]@2 [f5,ab5]@2 [eb2,eb3] ~@5 g5 ~ [eb3,c5,c6] eb2 bb5 [c5,g5] ~ db2 ~ f4@2 [d2,d3] ~ f4@2 ~@2 [bb2,bb3]@2 c3@2 ~@4 f4@2 [d3,d4] ~@10 [eb2,d3] ~@3 [e2,e3,db4,db5]@2 f2@2 bb4@2 [gb2,gb3,c5]@2 ~@2 [g2,g3] ~@2 [bb2,bb3]@2 [d3,d4,f4] ~ [db3,f4] ~ [c3,c4,f4,a4] ~@3 [a3,c4,d4,f4,a4,c5]@3 bb4@2 c3 ~@3 [bb3,c4,g4]@4 [f3,c4] ~@4 [a2,a3,c5]@2, d5@5 ~@2 g5@4 ~@9 f5@18 bb4@3 bb2@3 g2 g3@2 [e2,e3]@2 [d2,bb3,bb4]@2 [eb2,eb3,b3,c4,c5]@4 ~@37 bb2@4, f4@2 ~@7 [g3,bb3,eb4,bb4,bb5]@4 ~@4 db3@2 ~ [bb4,d5]@6 [f3,f4,bb4,d5]@4 c4@4 [eb3,eb4]@4 ~ f5@16 ~@6 bb4@6 ~ bb4@4 ~@2 f5@5 ~@4 bb4@6 ~@7, ~@32 [a4,c5]@6 [f4,d5]@17 ~@4 [c4,a4] ~@2 [d4,g4]@3 ~@5 db4@2 ~@7 [e4,d5]@6 ~@4 f4@7, ~@40 bb3@3 [a2,a3]@12 [f3,d4,d5]@4 ~@37]/3", // Bb7 Fm Eb Cm C5 D Bb D …
  X: "~@2 [c3,c4] ~@6 f5@2 [d3,d4] ~@6 [g2,g3]@2 ~@6 [db4,e4,e5]@2 [d3,d4,f5]@2 d5@2, [f4,f5]@10 ~ [f4,bb4,f5]@13 [c3,c4,eb4,eb5]@4 ~@4, ~@5 a4@6 d5@9 [f2,ab2,f3,g3]@6 db3 ~ f4@4, ~@7 [eb4,c5]@4 ~@2 [bb2,bb3]@8 ~ [bb2,bb3,d4,d5]@6 ~@4, ~@15 [a2,a3]@12 ~@5", // C D G Dbm Dm F Bb5 Cm …
  Y: "[[c3,c4,eb4,a4] ~ [d4,d5]@2 bb3 ~ d5@2 ~ [ab3,bb3,d4]@2 [d5,f5,ab5]@2 [eb2,eb3] ~@11 [g2,g3]@2 ~@11 [g2,g3]@2 d5@2 f5 ~ [ab4,ab5]@2 [eb2,eb3] ~@7 c5@2 ~@2 [db2,db3]@2 [f4,bb4,d5,f5]@2 [d2,d3] ~, eb5@2 bb4@9 ~@4 g5@4 g5@4 [c5,g5,bb5]@4 [d5,f5]@4 d5@3 [ab2,ab3]@4 ~@4 [f2,f3]@4 ~@4 bb5@4 [eb2,eb3,c6]@7 ~@3, ~@4 bb2@7 ~@6 [g3,bb5]@8 ~@2 [f4,bb4]@9 f4@6 ~@6 [g4,eb5]@13 ~@3, ~@8 [f4,d5,f5]@3 ~@6 [bb3,eb4,bb4]@11 ~@5 f5@5 bb4@5 ~@5 g5@4 g5@4 [c5,g5,bb5]@5 ~@3, ~@21 [eb2,eb3,c6]@7 ~ [bb2,bb3]@8 ~@13 [bb3,c4,eb4,bb4]@11 ~@3]/2", // Adim D Bb7 Ddim Eb G Ab Eb …
  Z: "~@2 [ab1,ab2,f4,bb4,f5]@3 g4@2 [g1,g2] ~@4 d4@2 g4 ~ [c3,bb3,e4] ~@4 bb4@2 ~@2 [f3,a3,eb4]@2 f5@2 ~ [eb4,eb5]@2, d5@5 g5@10 ~@17, ~@9 d5@6 ~@3 g4@5 a4@9, ~@11 b4@4 ~ c5@7 ~@9", // Bb7 G C7 F7 Eb
  AA: "[c5@2 d4 bb3@2 ~@13 [db3,db4]@2 [d3,d4] ~@5 [g2,g3]@2 ~@6 [e4,e5]@2 [d3,c4,d4,f5] ~ db5@2 [c3,c4]@2 d4@2 ~@2 d5@2 [ab3,bb3,d4,f4,d5,f5]@2 ~@2 [eb2,eb3] ~@4 g3@2 g5 c6 [eb3,c5] ~@3 [db2,db3]@2 ~@2 [d2,d3] ~@5 bb2@2 c3 ~@3 [eb3,eb4]@2 f4 [d3,d4] ~@4 a2 ~@9 [e2,gb2,db4]@2 f2@2 bb4@2 [gb3,c4,a4] ~ [d4,g4]@2 [g2,g3] ~@3 [f4,bb4]@2 [db3,bb4] ~ [c3,c4,f4,a4] ~@3 [a3,c4,d4,f4,a4,c5]@2 bb4@2 c3 ~@3 [bb3,c4,e4,g4]@4 [f3,a3,c4] ~@6 f4@3 [c3,d3,eb3] ~@5 f5@2 ~ [d3,d4] ~@9 bb2 ~@6 c4 d5@2 eb4 [c3,c4]@2 ~@2 bb2 ~ d5@2 [ab3,bb3,d4,f4,d5,f5]@2 d5@2 [eb2,eb3] ~@11 [g2,g3]@2 ~@6 [ab2,ab3]@2 ~@2 [g2,g3]@2 d5@2 [f2,f3,f5] ~ [ab4,ab5]@2 [eb2,eb3] ~@6 g5@2 [c5,g5]@2 ~@2 [db2,db3]@2 [f4,bb4,d5,f5]@2 d3 ~@3 [ab1,ab2,f4,bb4,f5]@2 ~@2 [g1,g2] ~@5 g4@2 [c3,e4] ~@2 g4 [bb3,e4] bb4, ~@2 bb4@12 bb3@2 [c3,b3,c4]@4 d5@8 [f2,ab2,f3,g3]@4 [eb4,eb5] [c3,c4]@3 ~@6 d5@4 ~@4 [f5,ab5]@4 g5@4 ~@9 f5@11 ~ c5@5 ~ bb4@6 bb2@5 [eb2,eb3] [c4,c5] [e3,db5]@2 ~ [f3,d4,d5]@4 ~@8 [d3,d4]@4 ~@6 d5@10 ~@7 f5@9 ~@3 d5@8 [f2,f3]@2 [bb3,d4] d5@4 db3@2 d3@2 ~@5 bb3@4 ~@9 [bb3,eb4,bb4]@10 [f4,d5,f5]@4 ~@2 f5@5 ~@9 g5@4 ~@3 [eb2,eb3,c6]@6 ~@2 d2@7 ~@15, ~@8 [f2,f3]@12 ~@4 [a2,a3]@12 ~@8 bb3@4 ~@8 [bb3,eb4,bb4,bb5]@4 ~@7 [f4,bb4,d5]@4 f4@2 [f2,bb4,d5]@5 ~@9 bb2@2 a3 [a2,g3]@3 f2@8 ~@4 [gb2,c5]@2 ~@4 [bb2,bb3,g4]@6 ~@6 e4@6 ~@4 [f4,a4]@9 ~ c4@9 ~@4 [a2,a3]@7 [e4,e5] [eb4,eb5] [c3,c4]@3 [d4,f5]@2 ~@5 d4@2 ~@12 [g3,bb5]@8 ~@2 bb4@8 f4@7 ~@5 [g4,eb5]@13 ~@8 [g4,d5,g5]@4 ~@12, ~@10 [g2,g3]@10 ~@2 [bb2,bb3]@8 [bb2,bb3,d4,d5]@6 ~@8 bb2@7 ~@10 eb2@7 ~@4 f3@2 bb3@2 ~ c4@4 ~@6 bb3@5 f3 e3@2 [d2,d3,bb3,bb4]@6 ~@37 [a2,a3,c5]@4 ~@5 [eb3,eb4,c5]@4 ~@3 [bb2,bb3]@4 [g2,g3]@8 [db4,e4,e5]@2 f4@4 eb5@3 d5@4 ~@4 [f5,ab5]@4 g5@4 g5@4 [c5,g5,bb5]@5 ~@3 d5@5 ~ bb4@5 ~@7 [bb3,eb4,bb4]@11 ~@14 [b3,d4,b4]@4 ~@6, ~@12 a3@8 [f4,bb4,f5]@16 f4@4 [eb4,eb5] ~ bb4@9 d5@2 ~@10 [c5,g5,bb5]@5 ~@5 f4@3 ~@2 a4@2 ~ a4 ~@3 [f4,d5]@16 ~@6 bb4@6 ~@2 db4@2 ~@2 f5@5 ~@3 bb4@6 ~@12 a4@7 [f4,bb4,f5]@17 ~@4 a4 ~ bb4@9 ~@9 [eb2,eb3,c6]@7 ~ [bb2,bb3]@7 ~@13 bb5@6 ~ [c5,g5,bb5]@4 ~@4 d5@4 ~@4 d5@6 c5@5 ~]/8", // Db D G E Dm7 C Bb7 Eb …
  AB: "[~@3 [a3,eb4]@2 f5 ~ [a3,eb4,eb5]@2 c5@2 ~@9 [bb1,bb2,bb4,d5,f5,bb5]@6 ~@4 [g4,bb4] ~@3 [g3,bb3,eb4]@2 ab4 ~ [bb2,eb4] ~@3 [g3,bb3,g4] ~ bb4 ~ [eb2,eb5] [g4,bb4] ~@3 [g3,bb3,eb4,eb5] ~ g5@2 [bb2,g3] ~@3 [bb3,eb4,g4,bb5] [c4,eb5,g5] ~@3, ~ a4@7 ~@3 bb4@9 ~@12 [g4,bb4]@6 g4@2 ~ gb4@2 ~@8 bb5@5 ~@2 c6@2 ~@4, ~@3 f3 ~@3 f3 ~@3 [bb3,d4]@15 ~@4 bb3@2 ~@32, ~@15 f3@11 ~@4 eb3@8 ~@26]/2", // Adim Bb Gm Eb Eb5 Gm Eb Gm …
  AC: "[eb2,eb3,g4,bb4] ~ [g4,bb4]@2 [g3,bb3,eb4] ~ ab4 ~ [bb2,g3] ~ gb4@2 [g3,bb3,eb4,g4] ~ bb4 ~ [eb2,g4,bb4,eb5] ~@3 [bb3,c4,eb4,g4] ~@3 db3 db2 ~ c6@2 [e2,e3,db5,g5,bb5]@3, ~@8 g4@2 ~@10 bb5@5 ~@7, ~@22 [eb5,g5]@4 ~ gb2 ~@4", // Eb Gm Eb Cm7 Edim Eb
  AD: "[~ [f2,f3,d5,ab5] ~@3 [ab3,bb3,d4]@2 ~ d5 f5@2 e5 ~ [ab3,bb3,d4,f5] ~ gb5@2 [eb2,eb3,g4,eb5,g5] ~ bb4@2 [bb3,eb4,bb4,bb5]@2 [c5,c6]@2 ~@2 [d5,d6]@2 [gb2,gb3,eb5,eb6]@2 c3@2 [f2,f3,d5,d6] ~@6 f2 ~@2 f5 [f4,eb5,c6]@5 [bb3,d4] ~@3 f3 ~@3 d3 ~@3 bb3 ab4@2, ~@3 [d5,ab5]@4 g5@2 bb1 ~@15 [g2,g3]@4 ~@6 [eb5,eb6]@4 f5@4 ~@6 [d5,bb5]@10 ~@2 bb4@3, ~@18 [bb3,e6] f6 ~@12, ~@37 [f3,d4,e5]@2 ~@23 bb2 ~]/2", // Ddim Bb7 Eb Eb5 C D Ebm Dm …
  AE: "~@2 [eb2,eb3,g4,bb4] ~ [g4,bb4]@2 [g3,bb3,eb4] ~ ab4 ~ [bb1,g4] ~ gb4@2 [g3,bb3,eb4,g4] ~ bb4 [g4,eb5] [eb2,bb4] ~@3 [bb3,eb4,g4,eb5,bb5] ~ [eb5,g5]@2 [bb2,g3] ~ c6@2 [bb3,c4,eb4,g4,eb5,g5,bb5] ~", // Eb Gm Eb Cm Eb5 Eb Cm7
  AF: "[~@2 [d2,b4,d5,g5] ~ [b4,d5,g5]@2 [b3,d4,f4] ~ g5 g2 [f3,b4,ab5] g5@2 [b3,d4,f4,d5] ~ f5 ~ [c3,c5,eb5] ~@3 [g3,bb3,eb4,g5]@2 [c5,g5,c6]@2 bb2@2 g5@2 [g3,bb3,c4,eb4] ~@3 [ab2,ab3] ~@3 [ab3,eb4,f4,g5]@2 f5@2 [c3,c4]@2 ~@2 b2@2 ab5 [bb2,bb3] ~ eb5@2 [g3,bb3,c4,eb4,g5] ~@4 [a2,a3,c5,eb5]@6 eb3, ~@19 f5@4 ~@2 bb3 ~@3 [c5,g5,c6]@4 ~@2 ab5@4 ~@2 ab5 ~ [eb5,ab5,eb6]@3 ~@2 g5@2 ~@6 gb5@8, ~@44 b3@2 ~ eb3@2 ~@15]/2", // G Bdim Fdim Bdim Cm Eb C5 Cm7 …
  AG: "[~ bb3@2 ~@2 [bb3,eb4,g5]@2 f5 ~ [c4,a4,eb5]@2 ~@2 [bb2,bb3,ab4,d5,f5]@5 bb4@4 bb4@2 ~ f4 ~ f3@4 [bb4,f5,ab5,bb5]@2 eb2@2 [bb4,g5,bb5]@2 ~@3 [bb3,c4,eb4,g4]@2 ab5 ~ [bb1,bb2,g5] ~ gb5@2 [bb3,eb4,g4,g5] ~ bb5 [eb2,eb6] [g5,bb5] ~@3 [c4,eb4,g4,eb6,bb6] ~@3 g3 ~@3, ~ eb5@7 ~@16 [ab4,bb4]@2 [ab3,bb3,d4,f4,ab4,bb4]@5 ~@25 bb3@2 g6@3 ~@3, ~ g5@4 ~@32 [bb4,g5,bb5]@6 ~@15 eb6@6, ~ bb2 ~ bb4@5 ~ c3 ~@8 [eb3,g4,eb5]@13 [bb2,ab3] ~@3 [bb2,g3]@8 ~@16 bb2@2 ~@3]/2", // Eb Adim Bb7 Eb Cm7 Eb Gm Cm7 …
  AH: "[bb3,c4,eb4,g4,eb6,g6,bb6] ~ eb2 ~ [bb2,g3,g5,bb5] ~ [g5,bb5]@2 [bb3,eb4]@2 ab5 ~ [bb2,g3,a3,g5] ~ gb5@2 [bb3,c4,eb4,g4,g5] bb5 ~ [eb2,g5,bb5,eb6] ~@4 [bb3,c4,eb4,g4,eb6,bb6]@2 ~@4 c7@2, ~@8 [c4,g4] ~@17 [eb6,g6]@6, ~@7 [eb2,eb3]", // Cm7 Eb Gm Eb5 Eb Cm7 Eb Cm7 …
  AI: "[[e2,db6,g6,bb6] ~@3 [f2,f3,ab4,d5,ab5] e3 ~@2 [ab3,bb3,d4]@2 [g4,g5] ~ [bb1,bb2,f4,d5,f5] ~ [e4,e5]@2 [bb3,d4,f4] gb5 eb2 [g4,eb5,g5] [bb2,g3] ~@2 [bb3,eb4,g4,bb4,bb5]@2 [c5,c6]@2 a3 a2 ~ [d5,d6] [gb2,gb3,eb5,eb6]@2 c3@2 [f2,f3,d5,bb5,d6] ~@3 [f3,d4,e5,e6]@2 ~ f2 f3 ~@3 [a3,f4,eb5]@4 [bb3,d4,f4] ~@3 ab3 ~@4 g3 ~@3, e3@2 ~@4 [ab4,d5,ab5]@5 ~@3 d4 ~ [ab3,f5]@3 ~@2 [ab4,ab5]@4 ~@2 [g2,g3]@3 ~@7 [eb5,eb6]@4 f5@4 f5@2 ~@4 [d5,bb5]@13, ~@41 f6@2 ~@3 c6@5 ~@13]/2", // Edim Ddim Bb7 G Bb E Bb Cm …
  AJ: "[f2,f3] ~ bb2 ~ [eb2,eb3,g4,bb4] ~ [g4,bb4]@2 [g3,bb3,eb4] ~@2 g4 bb1 gb4 ~ g4 [g3,eb4] ~ bb4 [eb2,g4,bb4,eb5] eb3 ~@3 bb5@2 ~ [bb2,g3] ~@3 [bb3,eb4,g4,eb5,g5,bb5], ~@10 ab4@2 ~@4 bb3@2 ~@6 eb5 ~ g5@2 ~@2 c6@2", // F Eb Gm Eb Cm Eb
  AK: "[c4 ~@3 [d2,b4,f5,g5] ~@3 [b3,d4]@2 g5 [g2,f3,g5] [ab5,a5] g5@2 [b3,d4,f4,d5] ~ f5 ~ [c3,c5,eb5] ~@3 [g3,bb3,eb4,g5,a5]@2 [c5,g5,c6]@2 bb2@2 g5@2 [g3,c4,eb4] ~@8 f5 ~ [c4,ab5] ~ [ab5,eb6]@2 [b2,b3]@2 eb3@2 [bb2,bb3,eb5,g5] ~ eb5 [bb3,c4,eb4,g4,g5] g3 ~@3 [a2,a3,gb4,c5,eb5,gb5]@6, ~@6 [b4,f5,g5]@4 ~@11 f5@4 ~@6 g5@6 ab5@4 ~@3 eb5@5 ~@4 eb5@4 ~@7, ~@7 f4@3 ~@17 bb3 ~@3 [c5,c6]@4 ab3@3 f4@3 ~@7 ab5 ~@15, ~@31 bb3@2 ~@2 ab2@7 c3@2 ~@20, ~@39 [ab3,eb4,g5]@3 ~@22]/2", // G7 Bm G7 Amaj7 Bdim Cm Eb C5 …
  AL: "[eb3 ~@2 bb3@2 bb3!2 [eb4,g5] ~ f5@2 [c3,c4,a4,eb5] ~@3 [bb2,bb3,ab4,f5]@4 ~@12 [bb2,g3,eb5,g5,bb5,eb6]@64 ~, ~@3 [eb5,g5]@5 ~@7 d5@2 ~@3 eb5@8 eb2@64 ~@4, ~@3 bb2 ~ g4@3 ~@12 [eb3,g4,bb4]@64 ~@12, ~@25 bb3@64 ~@7, ~@25 bb2@6 ~@65]/3", // Eb Adim Bb7 Eb
})).s("gm_piano").gain(0.56)

// chords · piano · "A.PIANO 1" · soft notes
const piano_soft = note(`<
  ~@3 A B ~ C D E F G H ~ I J K ~ L M N O P Q R S T U V W X Y Z ~@3 AA AB AC AD AE AF AG AH@3 AI@2 ~ AJ@3 ~ AK AL AM AN
  AO AP AQ AR AS AT AU AV AW AX AY AZ ~@2
>`.pickRestart({
  A: "~@9 e4 ~@10 f4 ~@11", B: "~@3 g3 ~@3 d4 ~@6 c4 ~@13 d4 ~@3", C: "~@22 gb5 ~@9", D: "~@18 e5@5 ~@9",
  E: "~@19 c5@4 c5@2 ~@7", F: "~@3 g4@4 ~@7 [g3,c4,e4] ~@10 b3@2 ~ b3@3 ~, ~@2 c5@5 ~@25",
  G: "~@19 g3 ~@3 [e2,f2,e3,f3] a5 ~@4 b5 ~@2", H: "~@2 b3 ~@6 d4 ~@20 d4 ~", I: "~@3 gb2 ~@3 b2 ~@24",
  J: "~@10 b4@4 ~@11 e4@3 c5 ~@3", K: "~@29 c5@2 ~, ~@29 b4 ~@2", L: "~@5 b3 ~@18 c6 ~@7",
  M: "~@2 [b3,f4] ~@2 b4 ~@4 [g3,a3] ~ c5@3 ~@2 [g3,a3] ~@7 g3 b4@3 ~ b4 ~", N: "g4@2 ~@26 g3 ~@3",
  O: "~@3 [g3,bb3,c4]@2 ~@27", P: "~@16 g5 ~@4 b4 ~ g3 ~@8", Q: "~@5 d3 ~@3 [g3,b3] ~ b4@3 ~@6 b4 ~@2 [g3,c4]@2 ~@6 c5",
  R: "~@6 c4 ~@13 c4 ~@11", S: "~@2 [g3,e4]@3 ~@8 g3 ~@5 g4 g5@2 ~@10, ~@9 g5 ~@6",
  T: "~@8 g3 ~@5 [g3,e4,g4] ~ c5@2 [ab2,f3] ~@2 [g3,c5] ~@4 b4@2 [a4,b4] ~@3", // C Db C5 Asus2
  U: "~@2 f5 b4 ~@3 [g5,a5] ~@9 e6 ~@10 f2 ~@2 g3, ~@7 d6@3 ~@22", V: "~@6 e4 ~ [b4,db5] ~@4 db5 ~@6 gb3@6 ~@6",
  W: "~@23 f4 ~@6 [c4,e4] ~", X: "~@3 e5@4 ~@5 c4 ~@5 b4 ~@13", Y: "~@2 g2@3 ~ b5 ~@25", Z: "~@13 db3 ~@2 eb3@12 ~@4",
  AA: "~@15 gb3@3 ~@14", AB: "~ d4@2 ~@5 c4@5 ~@13 f2@4 ~@2", AC: "~@19 b4@4 ~@9, ~@15 gb2@8 ~@9, ~@18 d3@5 ~@9",
  AD: "db3 ~@8 b3@7 ~@9 a3 ~@6", AE: "~@7 eb3@4 ~@9 g2@5 eb3@3 ~@4", AF: "~@21 c5@2 ~@9, ~@17 c4@11 ~@4", AG: "~@31 e2",
  AH: "[~@5 [b4,d5]@3 ~@4 [g3,b3]@4 ~@5 bb3@3 ~@6 [f3,a3]@4 ~@14 gb3@3 ~@9 g2@5 eb3@3 ~@13 ab5 ~ gb2 ~@4 c4@4 ~@4, ~@20 [c4,e4]@3 ~@21 a2@7 ~@6 b2@11 ~@28]/3", // Bm G F C
  AI: "[~@21 f5 ~@5 a3@10 ~@14 f4 ~ b3 ~@10]/2",
  AJ: "[~@3 bb2@5 ~ eb3 ~@7 ab3@4 ~@12 db3@2 ~@2 f3@2 ~@22 c4@11 ~@9 c5 ~@4 g3@4 ~@5 [g3,c4], ~ ab2@7 ~@20 c4@12 ~@40 b4@3 ~@13, ~@35 db3@5 ~@56]/3", // C5
  AK: "~@7 ab4 ~@14 eb3 ~@9, ~@21 eb5@4 ~@7", AL: "~@3 c4 ~@17 eb5 ~@10", AM: "~@10 d5 ~@9 c4@3 ~@9, ~@19 ab5@4 ~@9",
  AN: "~@12 [a3,c4]@5 ~@15", AO: "~@8 f4 ~@23", AP: "~@21 c4@2 ~@9, ~@19 c5@4 ~@9", AQ: "~@4 c4@3 ~@25",
  AR: "~@27 c4@4 ~", AS: "~@7 db4@4 ~ ab5 ~@17 c7@2", AT: "~@3 gb2 ~ db3 ~@26",
  AU: "[f2,gb2] ~ [bb2,c3] ~@15 gb4 gb2 ~@3 c4@3 db3 ~ bb2@3 ~", AV: "~@6 bb3@2 ~@6 c4@5 ~@13",
  AW: "~@24 [eb4,f4,g4] ~ eb5@3 ~@3", AX: "~@5 gb5 ~@6 b4 ~@3 b4 ~@7 c5 ~@7, ~@23 c4@2 ~@7",
  AY: "~@6 c4@3 ~@2 b3 ~@3 db3 ~@16", AZ: "~@9 g5 ~@22",
})).s("gm_piano").gain(0.32)

stack(piano, piano_soft)

More by Scott Joplin