Strudelify

Solace

Scott Joplin

KeyC majorTempo100 bpm
0:00/0:00
// Solace — Scott Joplin
// 100 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Full arrangement: all 153 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 · "PIANO RIGHT"
const piano = note(`<
  A B C@4 D@2 E F G H I J@5 K L M N O P@3 Q R@2 S@2 T@2 U V W X Y Z AA AB@2 AC AD AE AF@2 AG AH@4 AI AJ AK AL AM AN AO
  AP AQ AR AS AT AU AV AW AX AY AZ BA BB BC BD BE BF BG ~ BH BI BJ BK BL BM BN BO@2 BP BQ BR BS BT BU BV BW BX BY BZ CA
  CB CC CD CE CF@3 CG CH@3 ~ CI CJ CK CL CM CN CO ~ CP CQ CR@6 CS@4 CT@2 CU@2 CV CW CX CY ~ CZ DA DB ~ DC@4 DD@3 DE DF
>`.pickRestart({
  A: "~@6 c5@12 d5@3 e5@4 d#5@4 e5@3", B: "~@6 g5@12 a5@3 g5@8 a5@3",
  C: "[~@5 c6@3 ~@10 d#5@2 ~ e5@2 ~@6 a4@5 ~@14 g4@19 c5@6 ~@5 b4@4 ~@4 a4@3 ~@2 g4@7 g#4@4 a4@4 a#4@4 b4@4 [d5,f5]@4 [c#5,g5]@3 ~ [d5,f5]@6]/4", // Dm C#dim Dm
  D: "[~@2 c#5@3 [d5,f5]@4 b4@3 ~ c5@4 ~@9 g4@8 g#4@3 ~ a4@4 b4@4 c5@3 g5@2 ~@2 [d#5,a5]@3 ~ [e5,g5]@7, ~ g5@3 ~@60]/2", // Dm D#dim Em
  E: "~ [d#5,a5]@3 ~ [e5,g5]@5 c#5@2 ~ d5@5 f5@4 a5 ~@3 [f5,d6]@5 ~", // D#dim Em Dm
  F: "~@3 f5@3 e5@4 d5@2 ~@6 [c4,d4,g#4]@4 ~@5 [b3,d4,g4]@5", G: "~@6 d5@3 ~@5 c5@4 e5@3 ~ g5 ~@3 [e5,c6]@6",
  H: "~@3 e5@3 ~ d5@2 ~@2 c5@2 ~@6 [c4,f#4]@4 ~@4 [e4,g4]@5", I: "~@8 c5@8 ~@2 b4@4 ~@4 a4@3 ~@3",
  J: "[~@10 a4@4 a#4@4 ~ b4@3 [d5,f5]@4 [c#5,g5]@3 ~ [d5,f5]@7 ~ g5@3 ~ [d5,f5]@4 b4@3 ~ c5@4 ~@4 a4@3 g4@9 g#4@4 a4@4 b4@4 c5@3 ~ g5@3 [d#5,a5]@3 ~@2 [e5,g5]@7 [d#5,a5]@3 ~ [e5,g5]@4 ~ a#4@2 ~@2 a4@4 [f5,a5]@3 ~@6 [c5,f5,a5,c6]@5 ~@3 [b4,b5] ~@2 [c5,c6] ~@3 [d5,c6,d6] ~@4 [d#5,a5,c6,d#6]@11 ~@2]/5", // Dm C#dim Dm D#dim Em D#dim Em F …
  K: "~ [a5,d6]@2 ~@8 [g#4,c5,f5,g#5]@3 ~@5 g5@8 ~@5, ~@18 [c5,e5]@7 ~@7", // D5 Fm C
  L: "~@7 [d5,f5,d6]@5 ~@5 e6@2 ~@3 [c5,e5]@9 ~, ~@16 [e5,g5]@3 ~@13", M: "~@6 e5@4 d5@3 ~ c5@8 ~ b4@4 ~@5",
  N: "a4@4 g4@8 g#4@3 ~ a4@4 a#4@3 ~ b4@3 ~ [d5,f5]@3 ~", // Dm
  O: "[c#5,g5]@3 ~ [d5,f5]@7 ~ [c#5,g5]@3 ~ [d5,f5]@4 b4@2 ~@2 c5@4 b4@3 ~", // C#dim Dm C#dim Dm
  P: "[~@4 g4@8 g#4@4 a4@4 b4@3 ~ c5@3 ~ e5@3 ~ a5@2 ~@2 [e5,g5]@7 a5@2 ~@2 [e5,g5]@4 ~ c#5@2 ~ d5@5 f5@3 a5@2 ~@3 [f5,d6]@4 ~@4 f5@4 e5@3 ~ d5@3 ~@6 c4@3, ~@28 g5@2 ~ d#5@3 ~@58 [d4,g#4]@4]/3", // Em Dm Ddim
  Q: "~@4 [b3,d4,g4]@4 ~@8 d5@4 ~@3 c5@5 e5@4", // G
  R: "[g5 ~@3 [e5,c6]@6 ~@3 e5@3 d5@2 ~@2 c5@2 ~@7 [c4,f#4]@5 ~@3 c4@3 ~@7 c5@8 ~@5 a#4@3 ~]/2", // C Cdim
  S: "[~@4 g4@8 g#4@4 a4@3 a#4@3 ~ b4@4 ~ [d5,f5]@3 ~ g5@3 ~ [d5,f5]@8 [c#5,g5]@3 ~ [d5,f5]@3 b4@3 ~ c5@4 b4@3 ~@2, ~@31 c#5@3 ~@30]/2", // Dm C#dim Dm
  T: "[~@3 g4@9 ~@3 a4@4 b4@4 c5@4 [e5,g5]@4 [d#5,a5]@3 ~ [e5,g5]@7 ~ d#5@4 [e5,g5]@4 a#4@2 ~@2 a4@5 [f5,a5]@2 ~@2, ~@42 a5@3 ~@19]/2", // Em D#dim Em F
  U: "~@4 [c5,f5,a5,c6]@5 ~@3 [b4,b5] ~@3 [c5,c6] ~@3 [d5,d6] ~@3 [d#5,a5,c6,d#6]@8", // F B C D Adim
  V: "~@4 [d5,a5,d6]@3 ~@7 [c5,f5]@3 ~@6 c5@7 ~@2, ~@11 [e5,g5]@4 ~", // D5 F5 Em
  W: "~@12 [f5,d6]@3 ~@8 [e5,g5,e6]@4 [c5,e5,c6]@4 ~", X: "~@3 e5@3 ~ f5@2 ~@2 [e5,g5]@5 ~@6 e5@5 ~@5",
  Y: "[f5,a5]@3 ~@6 c5@2 d5@2 e5@2 f5 ~ [a4,g5]@4 f5 ~@3 f5@2 g5@2 f5 ~@2, ~@17 c5 ~@14", // F A7
  Z: "~@2 [g#4,f5]@3 ~ e5 ~@3 [g4,e5] ~@4 [c5,d#5]@9 ~@2 [f4,b4,d5]@3 ~@3", // C# C Cm Bdim
  AA: "~@3 [a#4,c#5]@17 ~@9 [e4,a#4,e5]@3, ~@3 e4@3 ~@26", // A#m Edim
  AB: "[~@5 [a4,c5,e5]@4 ~@5 e5@2 ~@2 f5@3 ~ [e5,g5]@3 ~@5 [e5,g#5]@5 ~@3 [f5,a5]@3 ~@6 c5@2 d5@2 e5@2 f5@2 ~ a4@4 f5 ~@3, ~@56 g5@3 ~@5, ~@56 f#5 ~@7]/2", // Am Em E F
  AC: "~ g5@2 f5@2 ~@3 [g#4,f5]@3 ~@2 e5 ~@3 [g4,e5]@2 ~@3 [g4,c5,e5]@10, g#4@5 ~@27, f5 ~@15", // C# C
  AD: "~ [g4,a#4,e5]@5 ~@4 e5@3 ~ d5@3 ~ e5@2 ~@3 [g4,b4]@5 ~@3 d5, ~@10 [g4,b4]@9 ~@13", // Edim G
  AE: "~@4 [c4,f#4]@2 ~@6 f4@15 ~@5", // Cdim
  AF: "[~@4 [b4,d5,g5]@4 ~@5 g5@4 ~ f5@8 e5 ~@4 f5@2 ~ [e5,g5]@2 ~@2 [a4,f5,a5] ~@3 [a#4,g5] ~@4 [d5,f5,b5]@17, ~@13 [a4,d5]@13 ~@4 [f4,d5]@2 ~@2 g4 ~@7 a#5@2 ~@3 b4@3 ~@14]/2", // G Em Dm D# Bdim D5 Dm
  AG: "~@7 [b4,d5,g5]@4 ~@5 g5@5 f5@7 e5 ~@3, ~@16 [a4,d5]@13 ~@3", // G D5
  AH: "[~ [d5,f5]@2 ~@2 [g4,e5,g5] ~@3 [a4,f5,a5] ~@2 [a#4,a#5] ~@4 [d5,f5]@18 ~@8 [b4,d5,f5,b5]@3 ~@5 [c5,e5,c6]@20 ~@3 [c5,c6] ~@3 d6 ~@3 [e5,e6] ~@3 [e5,b5]@2 ~@6 [d5,a5,d6]@8 ~@8 [f4,c5,d5,f5]@5 ~@5 [b4,d5,f5]@4 ~@4, ~ f4 ~@15 e5 ~@68 e6 ~@41]/4", // Dm C Dm A# Dm Bdim C E …
  AI: "[g4,b4,d5,g5]@8 ~@5 g4 ~@3 [f4,b4,e5]@3 ~@5 [e4,g4,c5]@3 ~@4", // G E C
  AJ: "~ e5@4 f5@2 ~@2 [e5,g5]@3 ~@8 [e5,g#5]@6 ~@6", // Em E
  AK: "[f5,a5]@3 ~@6 c5@2 d5@2 e5@2 f5 ~ [a4,g5]@4 f5 ~@4 g5@2 f5@2 ~@2, ~@25 g#4@5 ~@2, ~@25 f5@2 ~@5", // F A7
  AL: "~ [g#4,f5]@2 ~ g4 ~@4 [g4,e5] ~@3 [f#4,c5,d#5]@9 ~@3 [f4,b4]@4 ~@3, ~@25 d5@2 ~@5", // C# C Cdim Fdim
  AM: "~ [e4,a#4,c#5]@17 ~@7 [e4,b4,e5]@4 ~@3", // A#dim E5
  AN: "~ [e4,a4,c5,e5]@5 ~@3 e5@3 ~ f5@2 ~@2 [e5,g5]@3 ~@4 [e5,g#5]@4 ~@4", // Am Em E
  AO: "[f5,a5]@5 ~@4 c5@2 ~ e5@2 f5@2 ~ [a4,g5]@3 f5 ~@3 f5@2 g5@2 f5 ~@3, ~@11 d5@2 ~@19", // F A7
  AP: "[g#4,f5]@3 ~ g4 e5 ~@2 [g4,e5]@2 ~@3 [g4,c5,e5]@9 ~@2 [g4,a#4,e5]@5 ~@3", // C# C Edim
  AQ: "e5@3 ~@2 d5@3 ~ e5@2 ~@2 [g4,b4]@5 ~@3 d5 ~@3 [d4,f#4,a4]@3 ~@4, [g4,b4]@9 ~@23", // G D G
  AR: "~ f4@15 ~@9 [b4,d5,g5]@3 ~@4, b3@7 ~@9, a4@7 ~@25", // G
  AS: "~ g5@4 ~ f5@7 e5 ~@3 [f4,d5,f5] ~@2 [g4,e5,g5] ~@3 [f5,a5] ~@3 [f#5,a#5] ~@3, ~ [a4,d5]@12 ~@19", // Dm C F F# D5
  AT: "[d5,f5,b5]@19 ~@5 [b4,d5,g5]@4 ~@4", // Bdim G
  AU: "g5@5 f5@7 e5 ~@3 [f4,d5,f5]@2 ~@2 [g4,e5,g5] ~@3 [f5,a5] ~@2 [a#4,a#5] ~@4, [a4,d5]@3 ~@5", // Dm C F A# D5
  AV: "[f5,b5]@16 ~@8 [b4,d5,f5,a5,b5]@3 ~@5", AW: "[c5,c6]@16 ~@5 [c5,c6] ~@3 [d5,d6] ~@2 [e5,e6] ~@3, e5@13 ~@19",
  AX: "~ e5@4 ~@4 [d5,a5,d6]@7 ~@8 [f4,c5,d5,f5]@5 ~@3, [a5,e6]@5 ~@27", // D5 Dm7 A5
  AY: "[f4,b4,d5,f5]@3 ~@6 [b4,d5,g5]@7 ~@5 g4 ~@3 [b4,e5]@2 ~@5", AZ: "[e4,g4,c5]@9 ~@7 e5@4 d5@3 ~ c5@3 ~@5",
  BA: "~@5 a#4@2 ~ a4@4 ~@12 a4@4 ~@4", BB: "b4@4 d5@4 [c#5,g5]@4 ~ f5@7 g5@3 ~ [d5,f5]@4 ~@4, ~@3 d5@2 ~@3",
  BC: "c5@4 ~@4 a4@4 ~@12 a4@4 b4@3 ~", BD: "c5@4 ~@8 [e5,g5]@8 a5@3 ~ g5@4 ~@4",
  BE: "d5@4 f5@4 a5@4 ~@9 f5@4 e5@4 d5@2 ~", BF: "~@5 c4@5 ~@3 g4@5 ~@6 d5@7 ~, ~@4 d4@5 ~@23",
  BG: "~@2 e5@2 g5 ~@5 e5@2 ~@4", BH: "b4@4 ~@16 g#4@4 ~@4 a#4@3 ~",
  BI: "b4@4 [d5,f5]@4 g5@3 ~ [d5,f5]@7 g5@3 ~@2 [d5,f5]@4 b4@4", BJ: "c5@3 ~@17 g#4@3 ~@9",
  BK: "~ c5@4 ~@3 [d#5,a5]@4 ~ [e5,g5]@7 ~@4 g5@4 ~@4", // D#dim Em
  BL: "a4@4 ~ a5@3 ~@5 [f5,c6]@6 ~ b5 ~@3 [c5,c6] ~@7, ~@4 f5@3 ~@25", BM: "[a5,c6]@11 ~@5 a5 ~@7 [c5,f5]@2 ~@6",
  BN: "e5@4 ~@7 d6 ~@4", BO: "[[e5,g5]@6 ~@24 e4@7 ~@12 a#3@3 b3@4 ~@8]/2",
  BP: "a4@3 ~@2 [a4,d5,f5]@4 ~@3 d5@10 ~@2 a#4@5 ~@3", BQ: "~@4 [d5,f5]@4 ~@4 d5@9 ~@3 [c5,e5]@8",
  BR: "~@25 f4@3 ~@4, ~@24 a4@3 ~@5", BS: "~ e4@5 ~@19 c4@3 ~@4, ~@13 f4@15 ~@4", BT: "~ c5 d5 e5@5, ~ a4@11 ~@20",
  BU: "d#5 ~@3 [a4,c5,e5]@5 ~@7 b4@3 ~ a4@5 ~@7", BV: "d#5 ~ [g#4,e5]@2 ~@12", BW: "~@21 b3@3 ~ c4@3 ~@4",
  BX: "a4@3 ~ [a4,d5,f5]@4 ~@4 [g4,d5,f5]@11 ~@2 [g4,a#4]@5 ~@2", BY: "~@4 d5@3 ~@5 d5@9 ~@3 [c5,e5]@8",
  BZ: "d#5@2 ~@2 [g4,a#4,e5]@3 ~@18 [f4,a4]@5 ~@2", CA: "~@4 a4@4 ~@4 a#4@8 ~@5 a#4@7, ~@3 f4",
  CB: "c5@2 ~@2 a#4@2 ~@11 a4@3 ~@12", CC: "~ d5@7 ~@4 a4@5 c5@2 ~@6 a#4@7", CD: "~@3 a4 c4@2 ~@6 a3@15 ~@5",
  CE: "~@4 e4@13 ~@15", CF: "[~@19 a4@3 ~ d5@4 ~@4 [g4,d5,f5]@9 ~@15 d5@5 ~@2 d5@10 ~@3 e5@8 ~@4 [a#4,e5]@3 ~@6]/3",
  CG: "~@23 e4@9",
  CH: "[~@6 a3@4 ~@8 c4@3 ~@5 a4 ~@7 d5@3 ~@5 c5@3 b4@4 ~ a4@8 ~@4 [a4,e5]@4 ~@16 g#4@8 ~@4 e5@2, ~@30 [a4,c5]@7 ~ e5@21 ~@10 e5@20 ~@7]/3", // A5 Am
  CI: "~ e4@5 ~@7 a3@4 ~@4 b3@4 c4@4 ~@3", CJ: "~@5 [d5,f5]@5 ~@3 d5@9 ~@2 [g4,a#4]@5 ~@3, ~ a4@8 ~@23",
  CK: "~@4 d5@4 ~@4 d5@10 ~@3 e5@7", CL: "~@4 [g4,a#4,e5]@3 ~@18 [f4,a4]@7", CM: "~@25 [f4,a#4]@7",
  CN: "~ c5@2 ~@9 a4@2 ~@11 g#4@5 ~@2", CO: "~@2 [g#4,d5]@7 ~@3 d5@4 ~ c5 ~@14", CP: "~ d5@4 ~@3",
  CQ: "f5@3 ~ e5@2 ~@15 d#5@5 ~@2 e5@2 ~@2",
  CR: "[f5@3 ~@4 d#5@3 ~@2 e5@7 ~@2 d#5@4 ~@2 e5@2 ~@2 [e5,a5]@3 ~@9 a5@25 ~@16 d5@5 ~@2 c5@2 ~@2 [a4,c5]@3 ~ a#4@3 ~@2 a4@3 ~ a#4@8 ~ a4@5 ~ [g4,a#4]@3 ~ c5@4 ~ a#4@3 ~@5 [g4,a#4]@6 ~@2 a4@4 ~@3 a#4@3 ~ [g4,a#4]@3 ~@5 [g4,a#4]@3 ~@22, ~@83 a4@6 ~@19 g4@5 ~@41 g4@3 ~@35]/6", // A5 Am Gm
  CS: "[~@23 d5@4 f5 ~@3 f5@3 ~@2 [e5,a#5]@2 ~@2 d#5@3 ~ e5@7 ~@2 d#5@5 ~ e5@3 ~ f5@3 ~@2 [e5,a#5]@2 ~ d#5@2 ~@3 e5@7 ~ d#5@4 ~@3 e5@2 ~@2 [e5,a5]@3 ~ a5@2 ~@27, ~@99 d5 ~@28]/4", // Edim A5
  CT: "[~@19 [c5,a5]@4 f5@4 d#5@2 ~@2 d5@4 f5@4 d5@3 ~@2 [g#4,f5]@6 ~@2 f5@8 d5@2 ~@2]/2", // F C#
  CU: "[d5@4 f5@4 d5@2 ~@2 c5@7 ~ f5@6 ~ g5 ~@3 a5@4 [b4,g#5]@3 ~@13 a4@8 ~@5, a4 ~@7]/2", CV: "~@3 d5",
  CW: "~@3 f5@3 ~@5 a#5@3 ~@2 e5@2 ~@2 d#5@2 ~@10", CX: "d#5@5 ~@2 [e5,a#5]@3 ~ f5@3 ~ e5@2 ~@2 d#5@3 ~@10",
  CY: "~ d#5@4 ~@2 e5@3 ~@2 a5@3 ~ a5@2 ~@14, ~@16 d5 ~@15",
  CZ: "d5@5 ~@2 c5@3 ~ c5@4 a#4@3 ~@2 a4@3 ~ a#4@6 ~@2, ~@11 a4@2 ~@19",
  DA: "a4@6 ~@2 g4@3 ~@9 a4@3 ~ a#4@7 ~, ~@7 a#4@3 ~@22", DB: "~ a4@5 ~ a#4@2 ~@6 a4@4 ~@13",
  DC: "[~@2 d5@10 f5@2 ~@5 f5@3 ~ [e5,a#5]@3 ~ d#5@3 ~ e5@6 ~@2 [d#5,a#5]@4 ~@3 e5@3 ~ f5@3 ~ e5@2 ~@2 d#5@2 ~@3 e5@6 ~@2 [d#5,a#5]@4 ~@2 e5@3 ~@2 a5@3 ~ [d5,a5]@2 ~@7 [d5,a5]@33, ~@45 a#5@3 ~@80]/4", // Edim D#5 D5
  DD: "[~@6 [c5,a5]@5 f5@3 d#5@2 ~@2 [a#4,d5]@5 f5@4 d5@3 ~ f5@4 ~@11 d5@2 ~@2 d5@4 f5@4 d5@2 ~@2 c5@4 ~@4 f5@5 ~@3 g5 ~@3 a5@2 ~@2 g#5@3 ~ a5 ~@5, ~@39 [g#4,f5]@10 ~@47]/3", // F A# C#
  DE: "~@7 a4@7 g4@3 ~ f4@11 ~@3", DF: "~@4 [f4,a4,c5,f5]@9 ~ c4@9 ~@9",
})).s("gm_piano").gain(0.1)

// chords · piano · "PIANO RIGHT" · soft notes
const piano_soft = note(`<
  ~@2 A B C ~ D E ~@3 F G@2 H I ~@2 J K L ~@2 M N ~@3 O P Q@2 ~@2 R S T U V ~ W ~ X ~ Y ~ Z ~ AA@2 AB AC ~@2 AD AE ~@2
  AF ~@2 AG AH AI AJ AK AL ~ AM ~ AN AO AP AQ AR AS AT AU AV AW AX AY AZ BA BB BC@2 BD BE BF BG BH BI BJ BK ~ BL BM BN
  BO BP BQ BR@2 BS@3 BT BU@2 BV BW BX BY BZ CA CB CC CD CE CF CG CH@2 CI@2 CJ@2 CK@2 CL@3 CM@2 CN CO CP CQ@2 CR CS CT@2
  CU@3 ~ CV@2 CW ~@2
>`.pickRestart({
  A: "~@2 b5@3 ~@20 g#4@2 ~@5", B: "~@6 a4@9 ~@17", C: "~@18 a#4@3 ~@11", D: "~@17 b4@4 a4@4 ~@7", E: "~@17 e5@4 ~@11",
  F: "~@27 c4@4 ~", G: "[~@11 a#4 ~@3 g4@4 g#4@2 ~@11]/2", H: "~@6 c#5@3 ~@13 b4@4 ~@6", I: "~@11 e5@2 ~@3",
  J: "~ d5@2 ~@16 g4@7 ~@6", K: "~@21 c6@8 ~@3", L: "~@28 a#4@3 ~", M: "a4 ~@15", N: "~@12 d#5@3 ~@17",
  O: "~@5 e4@4 ~@15 b4@4 ~@4, ~ g4 ~@6", P: "a4@3 ~@29", Q: "[~@31 a4@4 ~@9 g#4@3 ~@12 g#5 ~@4]/2",
  R: "~@14 [g#4,g#5]@3 ~@6 g4@7 ~@2", S: "~@6 d5 ~@9", T: "~@21 g#5@6 ~@5", U: "~@25 g#4 ~ g#4@4 ~",
  V: "f#5 ~@5 g4 ~@8 f#4@10 ~@7", W: "~@5 e4@3 ~@24", X: "~@13 g4 ~@18",
  Y: "~@4 d4 ~@7 a4@7 ~ g4@8 ~@4, ~@3 a4@2 ~@7 b3@14 ~@6", Z: "~@16 g#5 ~@15, ~@15 f#5@2 ~@15",
  AA: "[~@17 g#5 [b4,b5]@18 ~@28]/2", AB: "~@14 d5 ~@17", AC: "~@24 f4@3 ~@5", AD: "~@31 f#5", AE: "~@5 e5 ~@26",
  AF: "~@17 f#5 ~@6 g#4 g#4@4 ~@3", AG: "~@8 g4@7 ~@17", AH: "~@24 a4 ~@3 a#4 ~@3", AI: "b4@9 ~@7",
  AJ: "~@24 a4 ~@3 f#5 ~@3", AK: "b4 ~", AL: "~@30 g#5 ~", AM: "~@9 g4@6 ~@10 f4@3 ~@4",
  AN: "~ b4@4 ~@8 g4@7 g#4@4 ~@4 a#4@3 ~", AO: "~@4 f5@4 ~@12 c#5@3 ~@5 b4@4", AP: "~@4 b4@3 ~@6 g4@7 g#4@3 ~@9",
  AQ: "~@4 e5@4 [d#5,a5]@4 ~@8 d#5@3 ~ e5@3 ~ c#5@3 ~, ~@2 g5 ~@13", AR: "~@13 [f5,d6]@6 ~@13",
  AS: "~@5 g#4@5 ~@3 [b3,d4]@5 ~@14", AT: "c5@4 ~@8 [e5,c6]@5 ~@7 d5@3 ~ c5@3 ~",
  AU: "~@5 [c4,f#4]@5 ~@3 [c4,e4]@4 ~@7 c5@8, ~@12 g4@5 ~@15", AV: "~@4 a#4@4 a4@4 ~ g4@8 ~@3 a4@4 ~@4",
  AW: "~@8 c#5@4 ~@8 c#5@3 ~@9", AX: "~@4 b4@4 a4@4 g4@8 ~@4 a4@4 ~ b4@3",
  AY: "~@5 e5@4 ~@11 [d#5,a5]@3 ~ e5@3 ~ a#4 ~@3, ~@2 g5 ~@13, ~@5 f5 ~@26", // D#dim
  AZ: "~@12 [c5,a5]@5 ~@3 b4 ~@7 [c6,d6] ~@3", BA: "[d#5,d#6]@11 ~@5 [d5,d6] ~@7 [g#4,g#5]@3 ~@5",
  BB: "~ [g4,c5,g5]@8 ~@13 f5@2 ~@8, ~@22 d5 ~@9", // C5
  BC: "[e6@4 [c5,e5,c6]@14 ~@13 a#3@8 ~@5 a3@5 ~@7 c4@4 ~@4, ~@11 f4@4 ~]/2", BD: "~@13 f5@10 ~ g4@8, ~@6 g4@5 ~@5",
  BE: "a#4 ~@3 g4@4 ~@4 [g4,f5]@10 ~@2 g4@8", BF: "d#5 ~ [g4,a#4,e5]@2 ~@2 [f4,a4,e5]@5 ~@5",
  BG: "~@2 a#3@7 ~@4 a3@4 a#3@3 b3@4 ~@8", BH: "~@4 c5 b4 a4@2", BI: "~@2 e4@2 ~@2 e4@2 a#4 ~@3 g#4@4, ~@3 e5@5",
  BJ: "~ e4 ~ [e4,a4,e5]@2 ~@3", BK: "~@4 [a#3,e4]@5 ~@7 a#3@3 ~@13, ~@12 a3@5 ~@15, ~@13 f4@16 ~@3",
  BL: "a#4@2 ~@2 [g4,f5]@4 ~@4 [g4,f5]@9 ~@3 g4@8", BM: "~@6 [f4,a4,e5]@5 ~@5", BN: "~@3 f4@4 ~@5 f4@8 ~@12",
  BO: "~@4 f4@2 ~@6 [f4,a4]@2 ~@3 f4@3 ~@5 [f4,g#4]@5 ~@2", BP: "~ [f4,g#4]@7 ~@4 f4@7 ~@6 d4@7, ~@12 d5@4 ~@8 e4@7 ~",
  BQ: "~@3 e4 ~@8 f4@17 ~@3", BR: "[~@5 a#3@16 ~@10 a3@4 a#3@3 ~ b3@4 ~ c4@4 ~@7 [a4,f5]@4 ~@5, ~@31 f4@17 ~@16]/2",
  BS: "[~@11 [g4,a#4]@5 ~@3 a#4 ~@3 [g4,f5]@5 ~@2 [g4,f5]@10 ~@3 [g4,c5]@8 d#5@2 ~@2 g4@3 ~@5 [f4,a4,e5]@10 ~@3 f4@4 ~@7 a#3@9, ~@25 a4 ~@6]/3", // Gm G7 C5 Fmaj7
  BT: "~@10 a#3@3 ~ b3@3 ~@15, ~@3 f4@8 ~@5",
  BU: "[~@26 d#5 ~@3 [e4,c5]@5 ~@2 e4@5 b4@4 a4@4 ~@8 d#5@2 ~@2 [e4,g#4]@2]/2", BV: "~@6 [e4,a4,e5]@13 ~@13",
  BW: "~ a#3@8 ~@9 a#3@3 ~@11, ~@13 f4@17 ~@2", BX: "~@13 f5@9 ~@10, ~@12 g4@9 ~@11",
  BY: "a#4@2 ~@2 [g4,f5]@4 ~@4 [g4,f5]@11 ~@2 c5@7, ~@3 g4", BZ: "~ d#5@2 ~@9 [f4,a4,e5]@10 ~@10",
  CA: "~@4 [f4,a4]@5 ~@3 [f4,a#4]@8 ~@12", CB: "~@5 [f4,a#4]@3 ~@4 f4@2 ~@4 [f4,a4]@3 ~@4 f4@5 ~@2",
  CC: "~@2 f4@7 ~@3 [f4,a4]@7 ~@6 [d4,e4,a#4]@6 ~", CD: "~@4 [e4,a4] ~@7 [a3,c4,f4]@9 ~@11, ~@2 c4 ~@13",
  CE: "~@19 f5@3 ~@10", CF: "a#5 ~ a#5@2 d#5 ~ [e5,a#5]@4 a#5@3 ~ a#5 ~",
  CG: "a#5@3 ~ [e5,a#5]@2 ~ a#5@3 ~@2 a#5@7 ~@2 a#5@4 ~@2 a#5@2 ~@3", // Edim
  CH: "[~@3 [d5,a5]@2 ~@2 [c#5,a5]@3 ~ d5@26 ~@22 a4@2 ~@3]/2", // D5 F#m
  CI: "[~@3 g4@2 ~@2 f#4@2 ~@12 f#4@5 ~@5 a4@4 g4 ~@4 [f#4,a4]@3 ~@9 f#4@3 ~@9]/2", // F#m
  CJ: "[~@4 [f4,a4]@3 ~@4 [a4,c5]@42 ~@11]/2", // F Am
  CK: "[a#5@3 ~@5 a#5@3 ~ a#5@7 ~ a#5@5 ~@2 a#5@3 ~ a#5@3 ~@5 a#5@2 ~@3 a#5@7 ~ a#5@4 ~@3 a#5@3 ~@2]/2",
  CL: "[~@7 [c#5,a5]@2 ~@3 [d5,a5]@35 ~@16 a#4@5 ~@16 g#4@9 ~@3]/3", // F#m D5
  CM: "[~@12 a4@4 ~@4 a#4@8 ~@3 c5@2 ~@6 [c5,a5] ~@3 c5@3 ~@13 g4@4 ~, ~@42 a4@3 ~@19]/2", CN: "f4@3 ~@5",
  CO: "~@12 f5@3 ~ a#5@2 ~ a#5@2 ~@3 [e5,a#5]@7 ~", CP: "a#5@6 ~@5 a#5@3 ~ a#5@2 ~@2 a#5@3 ~@2 [e5,a#5]@8",
  CQ: "[a#5@4 ~@3 a#5@3 ~@2 e5@3 ~@5 [c#5,a5]@2 ~@2 [d5,a5]@27 ~@13]/2", // F#m D5
  CR: "a4@5 ~@2 a4@3 ~@5 g4@2 ~@2 a#4 f#4@2 ~@2 g4@5 ~@3", CS: "f#4@5 ~@7 [a4,c5]@3 ~ [g4,a#4]@3 ~ f#4@2 ~@2 g4@7 ~",
  CT: "[~ f#4@5 ~ g4@2 ~@2 [g4,a#4]@4 f4@3 ~ [g4,a#4]@3 ~@2 [a4,c5]@27 ~@13]/2", // Gm Am
  CU: "[~@19 a#5@3 ~@5 a#5@3 ~ a#5@6 ~@13 a#5@3 ~ a#5@2 ~@2 a#5@3 ~@2 a#5@7 ~@7 a#5@3 ~@2 e5@2 ~@6 [c#5,a5]@2 ~@4]/3", // F#m
  CV: "[~@31 g#4@4 ~@15 a4@5 ~@7 a4@2]/2", CW: "~@6 a#4@8 ~@4 c5@2 ~@2 b4 ~@3 c5 ~@4 c5",
})).s("gm_piano").gain(0.05)

stack(piano, piano_soft)

More by Scott Joplin