Strudelify

Handful of Keys

Fats Waller

KeyF majorTempo240 bpm
0:00/0:00
// Handful of Keys — Fats Waller
// 240 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/6401667; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 176 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(240/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 E F G H I J K L K M N O P Q K R K S T U V W X Y Z AA AB AC K Q K AD K AE AF AG AH AI AH AJ AH AK AL AM AH AN
  AH AO AH AP AQ AR AS AT AU AV AW AX AY AZ AH AN AH BA AH AP BB BC BD BE@2 BF BG@2 BH BI BJ BK@2 BL BM BN BO BP BQ BR
  BS BT@2 BU BV BW@6 BX@2 BY BZ CA CB CC CD CE K CF AH CG CH CI K CJ CK CL K CM CN CO CP CQ@2 CR@2 CS CT CU CV CW CX CY
  CZ DA DB@2 DC DD DE DF DG DH DI DJ DK DL DM DN DO DP DQ@3 DR ~ DS DT DU ~ DV DW DX DY DW DZ@2 EA EB EC ED EE@2
>`.pickRestart({
  A: "~ [a6,d7] [g6,c7] [a6,d7] [g6,c7] [d6,g6] [c6,f6] [a5,d6]", B: "[g5,c6] [a5,d6] [g5,c6]@2 [g5,c6]@2 ~@2",
  C: "~ [e6,a6] [d6,g6] [a5,d6] [g5,c6] [e5,a5] [d5,g5] [e5,a5]", D: "[d5,g5] [e5,a5] [d5,g5] ~ [d5,g5] ~@3",
  E: "[c5,e5,c6] ~ [c5,e5,c6]@2 ~@2 [c5,e5,c6]@2 [c5,f5,c6]@4 [c5,f5,c6]@2 ~@2", // C F5
  F: "[eb5,gb5,c6] ~ [eb5,gb5,c6] [e5,g5,c6] ~ [c5,c6] ~@2", // Cdim C
  G: "[c4,e4,c5]@2 [c4,e4,c5]@2 ~@2 [c4,e4,c5] ~ [d4,f4,c5]@4 [eb4,gb4,c5]@4", H: "[e4,g4,c5] ~@3 [c5,e5,bb5,c6] ~@3",
  I: "~@2 c5@2 d5@2 e5@2 f5@2 g5@2 a5@3 bb5", J: "[c5,c6] [f5,a5] ~ [f5,c6,e6] ~ [f5,b5,d6] ~@2",
  K: "~ c5 d5 e5 f5 g5 a5 bb5", L: "c6 [d5,f5,bb5] ~ [f5,b5,e6] ~ [f5,b5,d6]@2 ~",
  M: "c6 [d5,f5,bb5] ~ [c5,e5,a5] ~ [bb4,d5,g5] ~ [c5,a5,c6]", N: "f5@2 c5@2 d5@2 e5@2 d5 e5 d5@2 c5@2 e5@2",
  O: "d5 e5 d5@2 c5 ~ c5@2 ~@2 [e5,g5,bb5,c6]@4 [c5,a5,c6]@2", P: "f5 c5 d5 e5 f5 g5 a5 bb5",
  Q: "c6@2 [c5,f5,a5]@2 ~@2 [f5,c6,e6]@2 ~@2 [f5,b5,d6]@3 ~@3", // F Fmaj7 Bdim
  R: "c6@2 [d5,f5,bb5]@2 ~@2 [f5,b5,e6]@2 ~@2 [f5,ab5,b5,d6]@3 ~@3", // Bb E Fdim
  S: "c6 [d5,f5,bb5] ~ [c5,e5,a5] ~ [bb4,d5,g5] ~ c5", T: "f5 g5 c5@2 g4@2 ab4 a4 [bb4,d5]@6 c5@2",
  U: "[a4,f5]@4 ~ [g4,db5,gb5]@2 [db5,gb5,a5]", V: "g4 [g4,db5,gb5,a5] ~ [db5,gb5] [b4,e5] [db5,gb5] [b4,e5]@2",
  W: "[g4,db5,e5,a5]@3 a4@2 [db5,e5,a5]@2 [c5,d5,gb5,b5,d6]", // A7 A Bm
  X: "~@2 [c5,d5,gb5,b5,d6]@2 ~@2 [c5,d5,gb5,b5,d6] ~ [c5,d5,gb5,b5,d6]@4 [c5,d5,gb5,b5,d6]@4", // Bm
  Y: "[c5,d5,gb5,b5,d6]@9 ~ [c5,gb5]@4 [d5,g5]@2", Z: "~ [d5,g5] ~ [d5,g5] [b4,e5] [d5,g5] [b4,e5]@2",
  AA: "[d5,f5,b5,d6]@4 [d5,f5,b5]@2 [f5,a5]@2 ~@2 [f5,g5]@5 ~", AB: "~@2 e6@2 d6@2 e6@2 d6 e6 ~ d6 c6@2 bb5@2",
  AC: "a5 bb5 ~ a5 g5@2 e5@2 d5 e5 ~ d5 c5@4", AD: "c6@2 [d5,f5,bb5]@2 ~@2 [f5,b5,e6]@2 ~@2 [f5,ab5,d6]@3 ~@3",
  AE: "c6 [d5,f5,bb5] ~ [c5,e5,a5] ~ [bb4,d5,g5] ~ [a4,c5,f5]", // Bb Am Gm F
  AF: "~@2 f4@2 [eb4,c5]@2 d5@2 [d4,b4]@2 c5 [db4,bb4] [c4,a4]@4", AG: "[c5,c6]@9 ~ [c5,e5,g5,bb5,c6]@2 ~@4",
  AH: "~ c6 d6 e6 f6 g6 a6 bb6", AI: "c7 ~ [c6,f6] a6@3 [f6,c7,e7]@2 ~@2 [f6,b6,d7]@2 ~@4",
  AJ: "c7 [c6,e6,bb6] ~ [g6,c7,e7] ~ [f6,b6,d7] ~@2", AK: "c7 [d6,f6,bb6] ~ [c6,e6,a6] ~ [bb5,d6,g6] ~ [c6,f6,a6,c7]",
  AL: "~@2 c6@2 d6@2 e6@2 d6 e6 d6@2 c6@2 e6@2", AM: "d6 e6 d6@2 c6@2 e6@2 d6 e6 d6@2 c6@4",
  AN: "c7@2 [c6,f6,a6]@2 ~@2 [f6,c7,e7]@2 ~@2 [f6,b6,d7]@3 ~@3", // F Fmaj7 Bdim
  AO: "c7@2 [c6,e6,bb6]@2 ~@2 [g6,c7,e7]@2 ~@2 [f6,b6,d7]@3 ~@3", AP: "c7 [d6,f6,bb6] ~ [c6,e6,a6] ~ [bb5,d6,g6] ~ c6",
  AQ: "f6 g5 ab5 a5 c6 [e5,bb5,d6] c6@2", AR: "[a5,f6]@9 ~ [b5,d6,g6]@4 db7@2",
  AS: "b6 db7 b6@2 a6@2 a6@2 gb6 a6 gb6@2 e6@2 e6@2", AT: "db6 e6 db6@2 b5@2 a5@2 [db6,e6,a6]@6 gb6@2",
  AU: "e6 gb6 e6@2 d6@2 d6@2 b5 d6 b5@2 a5@2 a5@2", AV: "gb5 a5 gb5 ~ e5@2 ~@2 d5@2 [gb5,a5,d6]@4 g6@2",
  AW: "e6 g6 e6@2 d6 ~ c6@2 b5 c6 b5@2 a5 ~ b5@2", AX: "a5 b5 a5@2 g5@2 b5@2 a5 b5 a5@2 g5@2 e6@2",
  AY: "d6 e6 d6@2 c6@2 bb5@2 a5 bb5 a5@2 g5@2 e5@2", AZ: "d5 e5 d5@2 c5@2 ~@2 c5@2 [e5,g5,bb5,c6] ~@5",
  BA: "c7@2 [c6,e6,bb6]@2 ~@2 [f6,c7,e7]@2 ~@2 [f6,b6,d7]@3 ~@3", // C7 Fmaj7 Bdim
  BB: "[a5,f6] c6@2 a5 g5@2 ab5@2 [bb5,d6]@2 [e5,g5,c6]@2 ~@4", BC: "[a5,c6,f6]@8 ~@2 f4@3 ~@3",
  BD: "f4 ~ f4@3 ~@3 gb4@3 ab4 gb4@2 ~@2",
  BE: "[gb4@4 gb4@4 ab4@2 ~@4 [f4,a4,f5]@4 [f4,a4,f5]@2 ~@2 [f4,a4,f5] ~ [f4,bb4,f5]@2 ~@2 [f4,ab4,b4,f5]@4]/2", // F Bb5 Fdim
  BF: "[f4,a4,c5,f5]@4 ~@6 [a3,c4,f4]@2 ~@3 g4", // F
  BG: "[bb4@2 ~@3 [c5,c6]@2 [db5,eb5,db6]@2 [c5,eb5,g5,bb5]@2 [db5,db6] [c5,c6] [bb4,bb5] [g4,g5]@2, ~ bb4@2 ~@5]/2", // C Dbsus2 Cm7 Db C Bb G
  BH: "[d5,f5,bb5,d6]@2 ~@2 [c5,eb5,f5,g5,bb5]@2 ~ [d5,f5,g5,bb5]", // Bb Cm7 Gm7
  BI: "~@2 [f5,g5,bb5] d5@5 [f4,c5,eb5,f5]@6 [g4,g5]@2", BJ: "~@3 [c5,g5]@3 [g4,db5]@4 [f5,d6]@2 bb5@2 f5@2",
  BK: "[[db5,f5,db6]@2 [c5,e5,c6] [db5,f5,db6]@2 [c5,eb5,c6]@2 [bb4,bb5]@2 [d5,g5]@2 db5 d5 f5 [c5,g5]@2]/2", // Db C Db Cm Bb G5 C5
  BL: "[bb4,d5,f5,bb5]@9 ~ [bb4,d5,bb5]@2 [bb4,bb5]@3 d5", BM: "[a4,d5,a5]@5 [bb4,d5,gb5,bb5]@2 [c5,d5,gb5,c6]",
  BN: "[c5,d5,c6]@2 gb5@3 [c5,d5,gb5]@2 [bb4,g5,bb5]", BO: "[bb4,g5,bb5]@3 db6 [d5,d6] bb5 [c5,gb5,c6]@2",
  BP: "[d5,gb5,b5,d6]@5 g5@2 [e5,g5,bb5,c6]", BQ: "~@2 [bb5,c6] [e5,g5]@3 g5@2 [d5,bb5]@8",
  BR: "[c5,e5,a5]@3 [c5,e5,a5]@3 [c5,e5,a5]@3 ~ [bb4,e5,g5] d5@5", BS: "[f2,f3] ~ [eb2,eb3] ~ [d2,d3] ~ [c2,c3] ~",
  BT: "[[bb1,bb2]@2 [a1,a2]@2 [g1,g2]@2 [f1,f2]@4 bb4@2 ~ [d4,f4,g4]@2 g5]/2", BU: "bb4 d5 e5@2 a5 [bb4,e5,g5]@2 f5",
  BV: "g5@2 c5@2 [eb5,f5]@3 g5 [d5,f5]@3 f5 [db5,e5]@2 f5@2", // Ebsus2 Dm Dbm
  BW: "[[c5,eb5]@10 [d5,f5,a5,d6]@4 [db5,db6]@4 [c5,f5,ab5,c6]@8 [db5,f5,ab5,db6]@4 [d5,f5,ab5,d6]@4 [c5,f5,ab5,c6]@8 [db5,f5,ab5,db6]@4 [d5,eb5,g5,bb5,d6]@4 [c5,c6]@8 [db5,eb5,g5,bb5,db6]@3 ~ [d5,eb5,g5,bb5,d6]@4 [c5,eb5,g5,c6]@5 ~@3 [db5,eb5,g5,bb5,db6]@4 [c5,eb5,g5,c6]@4 [bb4,eb5,g5,bb5]@3 ~@3 [bb4,eb5,g5,bb5]@4 [db5,gb5,db6]@4, ~@50 [eb5,g5]@5 ~@41]/6", // Cm Dm Db Fm Db Ddim Fm Db …
  BX: "[[c5,eb5,g5,c6]@9 ~ [db5,gb5,db6]@4 [c5,d5,f5,c6]@4 [bb4,d5,f5,bb5]@5 ~ [bb4,d5,f5,bb5]@2 ~@2 [ab4,d5,f5,ab5]@4]/2", // Cm Gb5 Dm7 Bb Ddim
  BY: "[a4,d5,f5]@9 ~ [g4,b4,d5,g5]@4 [c5,g5,bb5,c6]@2, a5@5 ~@3", // Dm G C7
  BZ: "[bb4,eb5,bb5]@3 g5 [bb4,eb5,bb5] ~ [g4,f5,g5]@2", // Eb5 G7
  CA: "[f4,db5,f5]@4 [bb4,d5] g5 [f4,d5,f5]@4 [f4,c5,eb5]@4 bb4@2", // Db Bb Dm F7
  CB: "[f4,bb4,d5,f5]@4 [db5,e5]@3 g5 [d5,f5] ~ [d5,f5]@2 [c5,eb5]@2 f5@2", CC: "[bb4,d5]@4 [c4,e4,bb4,c5] ~@3",
  CD: "~ c4 d4 e4 f4 g4 a4 bb4", CE: "c5@2 [f4,a4]@2 ~@3 e5@3 [f4,ab4,b4,d5]@2 ~@4",
  CF: "~@2 [d5,e5,g5,bb5]@2 ~@3 e6@3 [f5,ab5,b5,d6]@2 ~@4, c6 ~@3", // Em7b5 Fdim
  CG: "[d6,f6,c7]@3 bb6@3 [c6,e6,a6]@2 ~@2 [bb5,d6,g6]@2 ~@2 [c6,a6,c7]@2", // Dm7 Am Gm F
  CH: "f6@3 c6 d6@2 e6@2 f6@2 g6@2 a6@2 bb6@2", CI: "c7 [d6,f6,bb6] ~ [c6,e6,a6] ~ [bb5,d6,g6] ~@2",
  CJ: "c6@2 [f5,a5] c5@3 [f5,c6,e6]@2 ~@2 [f5,b5,d6]@2 ~@4", CK: "~@3 c5 d5@2 e5@2 f5@2 g5@2 a5@2 bb5@2",
  CL: "c6 [d5,f5,bb5] ~ e6 ~ [f5,b5,d6] ~@2", CM: "c6@2 [d5,f5,bb5] [c5,e5,a5] ~@3 c5, ~ [bb4,d5,g5]",
  CN: "~ g4 ab4 a4 c5 [g4,bb4,d5]@2 c5, f5 ~@3", CO: "[a4,f5] f4 ~ f4@2 [b4,d5,gb5]@2 e5",
  CP: "a5 ~ a4@3 [db5,gb5,a5] ~ [db5,gb5,a5]", // Gbm
  CQ: "[~@8 g4@10 [bb4,eb5]@2 [b4,e5]@3 d4 [a4,d5]@2 [b4,e5]@4 [a4,d5]@2, [db5,gb5,a5]@11 ~@21]/2", // Eb5 E5 D5 E5 D5 Gbm
  CR: "[[b4,e5]@3 d4 [bb4,eb5]@2 [b4,e5]@4 [a4,d5]@2 ~@2 [a4,d5]@4 [g4,g5]@4 [a4,d5]@2 [bb4,g5]@8]/2", // E5 Eb5 E5 D5 G D5 Eb
  CS: "[b4,f5,g5]@2 a4 ~ g4@4, ~@6 [b4,f5,g5]@5 ~@5", CT: "~ [g4,a4] [bb4,b4] c5@3 c4@4 c4@4 c4@2", CU: "ab4!2 g4@2",
  CV: "~ [a4,c5,f5]@2 ab4 a4 c5 [g4,d5]@2", CW: "[a4,c5,f5]@3 [b4,e5] [f4,bb4,d5]@3 d5", CX: "bb4 a4 bb4 b4 c5 ~ g4 c5",
  CY: "[bb4,d5]@4 ~ [d5,gb5,a5,c6]@2 d6", CZ: "[g5,bb5] d5 e5 gb5 g5 a5 bb5 b5",
  DA: "c6 [d5,f5,bb5]@2 [c5,e5,a5]@2 [bb4,d5,g5]@2 e5", // Bb Am Gm
  DB: "[f5@2 [f4,a4,c5]@4 [f4,ab4,b4]@4 [g4,bb4]@3 ~@3 [c5,c6]@9 ~ [c5,e5,g5,bb5,c6]@2 ~@2 [a6,c7,d7]@2, ~@14 [f4,a4]@5 ~@13]/2", // F Fdim Gm C C7 D7 F
  DC: "[ab6,db7]@2 [g6,c7] ~@3 [d6,g6]@2 [db6,gb6]@2 [c6,f6]@2 ~@2 [g5,d6]@2", // Db5 C5 G5 Gb5 F5 G5
  DD: "[ab5,db6] [a5,c6] ~ [d5,g5] [db5,gb5] [c5,f5] ~ [e5,a5]", // Db5 Am G5 Gb5 F5 A5
  DE: "[eb5,ab5] [d5,g5] ~ [g5,d6] [ab5,db6] [a5,c6] ~ [e6,a6]", // Ab5 G5 Db5 Am A5
  DF: "[eb6,ab6] [d6,g6] ~ [g6,d7] [ab6,db7] [a6,c7] ~ [d7,a7]", // Ab5 G5 Db5 Am D5
  DG: "[eb7,ab7]@2 [e7,g7] ~@3 [a6,d7]@2 [ab6,db7]@2 [a6,c7] ~@3 [e6,a6]@2", // Ab5 Em D5 Db5 Am A5
  DH: "[eb6,ab6]@2 [d6,g6]@2 ~@2 [a5,d6]@2 [ab5,db6]@3 [g5,c6] ~@2 [c6,g6]@2", // Ab5 G5 D5 Db5 C5
  DI: "[db6,gb6]@2 [d6,f6]@2 ~@2 [g5,d6]@2 [ab5,db6]@2 [a5,c6] ~@3 [a5,e6]@2", // Gb5 Dm G5 Db5 Am A5
  DJ: "[bb5,eb6]@2 [b5,d6] ~@3 [e5,bb5,d6]@2 ~@2 [e5,bb5,c6]@2 ~@2 [c6,g6]@2", // Eb5 Bm Em7b5 C7 C5
  DK: "[db6,gb6]@2 [d6,f6]@2 ~@2 [g6,d7]@2 [ab6,db7]@2 [a6,c7] ~@3 [c6,g6]@2", // Gb5 Dm G5 Db5 Am C5
  DL: "[db6,gb6] [d6,f6] ~ [g5,d6] [ab5,db6] [a5,c6] ~ [d6,a6]", // Gb5 Dm G5 Db5 Am D5
  DM: "[eb6,ab6] [e6,g6] ~ [g5,d6] [ab5,db6] [a5,c6] ~ [d5,a5]", // Ab5 Em G5 Db5 Am D5
  DN: "[eb5,ab5] [e5,g5] ~ [g5,d6] [ab5,db6] [a5,c6] ~ [d6,a6]", // Ab5 Em G5 Db5 Am D5
  DO: "[eb6,ab6] [e6,g6] ~ [g6,d7] ab6 [a6,c7] ~ [d6,a6]", // Ab5 Em G5 Am D5
  DP: "[eb6,ab6] [e6,g6] ~ [g5,d6] [ab5,db6] [a5,c6] ~ [c5,g5]", // Ab5 Em G5 Db5 Am C5
  DQ: "[[db5,gb5]@2 [d5,f5]@2 ~@2 [g4,d5]@2 [ab4,db5]@2 [a4,c5]@2 ~@5 f4@3 ~@6 [g4,db5,gb5]@4 [c5,gb5,a5]@4 [db5,gb5,a5]@2 ~@2 [c5,gb5,a5]@2 [b4,e5]@4 [b4,e5]@4, ~@15 [c5,f5]@5 ~@28, ~@4 a4 ~@7]/3", // Gb5 Dm G5 Db5 Am Gb Gbdim Gbm …
  DR: "[db5,gb5,a5] ~ [db5,gb5,a5] [b4,e5]@2 [db5,gb5] [b4,e5] ~", DS: "~ e5, e4, ~@4 gb4@11 ~",
  DT: "~ [b4,e5,f5,g5] ~ [b4,e5,f5,g5] ~ [b4,e5,f5,g5] ~ [b4,e5,f5,g5]", DU: "~ [b4,e5,f5,g5] ~ [b4,e5,g5] g4@4",
  DV: "~ d5, e4@15 ~, ~@4 g4@11 ~", DW: "~@2 [f5,a5,c6,d6,f6]@2 ~ [f5,a5,c6,d6,f6] ~@2",
  DX: "[f5,a5,c6,d6,f6]@2 ~ [f5,a5,c6,d6,f6] ~@2 [f5,a5,c6,d6,f6]@2", // Dm7
  DY: "~ [f5,a5,c6,d6,f6] ~@2 [f5,a5,c6,d6,f6] ~@2 [f5,a5,c6,d6,f6]", // Dm7
  DZ: "[[f5,a5,c6,d6,f6] ~@2 ab5 a5 d6 a5 ab5@2 [g5,ab5] ~@2 [g5,ab5] f5 d5@2]/2", // Dm7 Abmaj7
  EA: "~@3 f3 ~@2 f3@2 ~@4 [d4,eb4,f4]@2 ~@2", EB: "~ f3 ~@2 [e4,f4,g4,bb4] ~@2 f3",
  EC: "~@3 f3 ~@4 [d4,f4,g4,ab4]@2 ~@6", ED: "[bb3,e4,g4,c5]@8 a3@2 eb4@2 ~ g4@3",
  EE: "[d5@2 ~@2 d5@2 ~@2 d5@15 ~@9]/2",
})).s("gm_piano").gain(0.3)

// chords · piano
const piano_2 = note(`<
  A B C ~ D E F G H I J K J L M L N I J K J L O P Q R S@2 T@2 U V O W J K J L X Y Z AA AB AC AB AD I J Z W J AE AF AG Z
  AH AI AJ AK AL AM AN AO AG AP AQ AB AR AB AD Z AS AT@3 AU AV AW AX AY AZ BA BB BC BD BE BF BG J@2 BH BI BJ BK BL@2
  BM@2 BN BO@2 BP BQ BG BR BS BT BU BV BW J BX BY AD BZ CA Z AA CB AC CB AD Z CC CD CE CF AL CG CH CI CJ CK CL CM CN CO
  CP CQ CR CS CT CU CV CW CX CY CZ DA DB CW CV CW CX DC DD DE DF DG@2 DH DI DJ@2 DK DL DM CO DN@2 DO DP DQ DR@3
>`.pickRestart({
  A: "[c4,d4,f4,a4]@15 ~", B: "~@3 [c4,d4,f4,a4]", C: "[bb3,d4,e4,g4]@15 ~",
  D: "[c4,g4] ~ [c4,g4] ~@3 [c4,g4]@2 [c4,ab4]@4 [c4,ab4]@4", E: "[c4,a4]@4 [c4,a4]@2 [c4,bb4]@2 ~@2 [c4,e4]@3 ~@3",
  F: "[c3,g3]@2 [c3,g3] ~@3 [c3,g3]@2 [c3,ab3]@4 [c3,a3]@4", G: "[c3,bb3] ~@3 [c2,g2,c3] ~@3",
  H: "[f2,c3,a3] ~ [bb3,c4,e4,g4] ~ c2 ~ [g3,bb3,c4,e4] ~", I: "[f2,a3] ~ [a3,c4,f4] ~ [a2,c4] ~ [ab2,b3] ~",
  J: "[g2,bb3] ~ [g3,bb3,c4,e4] ~ c2 ~ [g3,bb3,c4,e4] ~", K: "[g2,bb3] ~ [g3,bb3,c4,e4] ~ [ab2,b3] ~ [ab3,b3,d4,f4] ~",
  L: "[g2,bb3] ~ [g3,bb3,d4,f4] ~ c2 ~ [g3,bb3,c4,e4] ~", M: "[f2,a3] ~ [a3,c4,f4] ~ [a2,c4] ~ [ab2,b3]@2",
  N: "[f2,a3] ~ [bb3,c4,e4,g4] ~ c2 ~ [g3,bb3,c4,e4] ~", O: "[f2,a3] ~ [a3,c4,f4] ~ c2 ~ [g3,bb3,c4,e4] ~",
  P: "[f2,a3] ~ [f3,a3,c4,d4] ~ [f2,ab3] ~ [g3,bb3,db4] ~", Q: "[e2,g3] ~ [a3,db4,e4] ~ a1 ~ [g3,a3,db4,e4] ~",
  R: "[e2,g3] ~ [g3,a3,db4,e4] ~ a1 ~ [g3,a3,db4,e4] ~", S: "[d2,gb3] ~ [gb3,a3,d4] ~ a1 ~ [gb3,a3,d4] ~",
  T: "[d2,f3] ~ [g3,b3,d4,f4] ~ g1 ~ [g3,b3,d4,f4] ~", U: "[g2,e3,bb3] ~ [g3,bb3,c4,e4] ~ [ab2,b3] ~ [ab3,b3,d4,f4] ~",
  V: "[g2,e3,bb3] ~ [g3,bb3,c4,e4] ~ c2 ~ [g3,bb3,c4,e4] ~", W: "f2 ~ [a3,c4,f4] ~ [a2,c4] ~ [ab2,b3] ~",
  X: "[f2,a3] ~ [a2,c4]@2 [ab2,b3]@2 [g2,bb3]@2", Y: "[f2,a3] ~ [f2,ab3]@2 [e2,g3] ~ [g3,bb3,c4,e4] ~",
  Z: "f2 ~ [a3,c4,f4] ~ c2 ~ [g3,bb3,c4,e4] ~", AA: "f2 ~ [a3,c4,f4] ~ ab2 ~ [ab3,b3,d4,f4] ~",
  AB: "g2 ~ [g3,bb3,c4,e4] ~ f2 ~ [f3,g3,bb3,d4] ~", AC: "e2 ~ [g3,bb3,c4,e4] ~ ab2 ~ [ab3,b3,d4,f4] ~",
  AD: "e2 ~ [g3,bb3,c4,e4] ~ c2 ~ [g3,bb3,c4,e4] ~", AE: "g2 ~ [g3,c4,e4] ~ f2 ~ [f3,ab3,b3,d4] ~",
  AF: "e2 ~ [e3,g3,bb3,c4] ~ gb2 ~ [gb3,a3,c4,eb4] ~", AG: "g2 ~ [g3,bb3,c4,e4] ~ c2 ~ [g3,bb3,c4,e4] ~",
  AH: "f2 ~ [a3,c4,f4] ~ e2 ~ [e3,ab3,b3,d4] ~", AI: "a2 ~ [e3,a3,db4] ~ e2 ~ [e3,ab3,b3,d4] ~",
  AJ: "db2 ~ [a3,db4,e4] ~ a1 ~ [a3,db4,e4,g4] ~", AK: "d2 ~ [gb3,a3,d4] ~ a1 ~ [g3,a3,db4,e4] ~",
  AL: "d2 ~ [gb3,a3,d4] ~ c2 ~ [gb3,a3,d4] ~", AM: "b1 ~ [b3,d4,g4] ~ db2 ~ [g3,bb3,db4,e4] ~",
  AN: "d2 ~ [g3,b3,d4,f4] ~ g1 ~ [g3,b3,d4,f4] ~", AO: "c2 ~ [g3,c4,e4] ~ gb2 ~ [gb3,a3,c4,eb4] ~",
  AP: "f2 ~ [a3,c4,f4] ~ bb2 ~ [bb3,c4,e4,g4] ~", AQ: "a2 ~ [a3,c4,f4] ~ ab2 ~ [ab3,b3,d4,f4] ~",
  AR: "e2 ~ [g3,bb3,c4,e4] ~ gb2 ~ [gb3,a3,c4,eb4] ~", AS: "[f2,f3]@2 c3@2 f2 ~@3",
  AT: "[[f3,c4]@4 [e3,gb3,bb3,c4]@11 [f3,c4]@2 f3@2 [f3,c4] [f3,db4]@2 [f3,d4]@2, a3@11 ~@23 c4@2 ~@12]/3", // F5 C7 F5 Db Dm
  AU: "[f3,eb4] ~ [f2,f3] [f3,a3,c4,eb4]", AV: "[bb2,bb3] [a2,a3] [ab2,ab3] [ab3,bb3,d4,f4]",
  AW: "[g2,g3] ~ [g3,bb3,c4,eb4] ~ [gb2,gb3]@2 [gb3,bb3,c4,eb4] ~", // G Cm7 Gb Cm7b5
  AX: "[f2,f3] ~ [f3,g3,bb3,d4] ~ [eb2,eb3] ~ [gb3,bb3,c4,eb4] ~", // F Gm7 Eb Cm7b5
  AY: "[d2,d3] ~ [f3,g3,ab3,bb3,d4] ~ a2 ~ [f3,a3,c4,eb4] ~", AZ: "[bb2,bb3] ~ [a2,a3]@2 [ab2,ab3] ~ [ab3,bb3,d4,f4] ~",
  BA: "[g2,g3] ~ [g3,bb3,c4,e4] ~ [gb2,gb3] ~ [gb3,bb3,c4,eb4] ~", // G C7 Gb Cm7b5
  BB: "[f2,f3] ~ [f3,bb3,d4] ~ [eb2,eb3] ~ [eb3,f3,a3,c4] ~", BC: "[d2,d3] ~ [f3,bb3,d4] ~ [d2,d3] ~ [f3,bb3,d4] ~",
  BD: "[f2,f3] ~ [f3,a3,d4] ~ [gb2,gb3] ~ [gb3,a3,c4,d4] ~", // F Dm Gb D7
  BE: "[a2,a3] ~ [gb3,a3,c4,d4] ~ [d2,d3] ~ [gb3,a3,c4,d4] ~", // A D7 D D7
  BF: "[g2,g3] ~ [g3,bb3,d4] ~ [eb2,gb3] ~ [gb3,bb3,eb4] ~", BG: "[d2,f3] ~ [f3,g3,b3,d4] ~ g1 ~ [f3,g3,b3,d4] ~",
  BH: "~@2 f3 ~@3 eb3 ~@3 d3 ~@3 c3 ~", BI: "~@2 bb2 ~@3 a2 ~@3 g2 ~@5", BJ: "bb2 ~ [f3,bb3,d4] ~ f1 ~ [f3,bb3,d4] ~",
  BK: "[d2,f3] ~ [bb3,d4] ~ [db2,e3] ~ [g3,bb3,db4] ~", BL: "[c2,eb3] ~ [f3,a3,c4,eb4] ~ f1 ~ [f3,a3,c4,eb4] ~",
  BM: "[[g2,bb3] [gb2,a3] [g2,bb3] a3 [f2,ab3] [f3,ab3,bb3,d4] bb1 [f3,ab3,bb3,d4], ~@6 gb2@3 ~@7]/2", // Gm Gbm Gm Fm Bb7
  BN: "[eb2,g3] ~ [bb3,eb4,g4] ~ bb1 ~ [bb3,eb4,g4] ~", BO: "[eb2,g3] ~ [g3,bb3,c4,eb4] ~ bb1 ~ [ab3,bb3,d4,f4] ~",
  BP: "[eb2,g3] ~ [g3,bb3,c4,eb4] ~ [eb2,gb3] ~ [gb3,bb3,c4,eb4] ~", BQ: "[d2,f3] ~ [f3,bb3,d4] ~ f1 ~ [f3,bb3,d4] ~",
  BR: "[c2,g2,c3]@2 [d2,g2,d3] ~ [eb2,bb2,eb3]@2 [e2,bb2,e3]@2", // C5 G5 Eb5 Edim
  BS: "[f2,bb2,f3] ~ [f3,bb3,d4] ~ f1 ~ [f3,a3,c4,eb4] ~", BT: "bb1 ~ [f3,bb3,d4] ~ f1 ~ [f3,a3,c4,eb4] ~",
  BU: "[bb1,d3]@2 [c2,g2,e3] ~", BV: "[f1,a2]@2 ~@2 bb2 ~ [bb3,c4,e4] ~",
  BW: "[a2,c4] ~ [a3,c4] ~ [ab2,b3] ~ [ab3,b3,d4] ~", BX: "[g2,bb3] ~ [bb3,c4,e4,g4] ~ [ab2,b3] ~ [ab3,b3,d4,f4] ~",
  BY: "[g2,bb3] ~ [g3,c4,eb4] ~ f2 ~ [g3,bb3,d4,f4] ~", BZ: "f2 ~ [a3,c4,f4] ~ gb2 ~ [a3,c4,eb4,gb4] ~",
  CA: "g2 ~ [bb3,c4,e4,g4] ~ c2 ~ [bb3,c4,e4,g4] ~", CB: "g2 ~ [g3,bb3,c4,e4] ~ f2 ~ [g3,bb3,c4,e4] ~",
  CC: "f2 ~ [a3,c4,f4] ~ d2 ~ [ab3,b3,d4,e4] ~", CD: "e2 ~ [g3,a3,db4,e4] ~ d2 ~ [g3,a3,db4,e4] ~",
  CE: "db2 ~ [g3,a3,db4,e4] ~ a1 ~ [g3,a3,db4,e4] ~", CF: "d2 ~ [gb3,a3,d4] ~ a1 ~ [gb3,a3,d4] ~",
  CG: "bb1 ~ [g3,b3,d4] ~ db2 ~ [g3,bb3,db4] ~", CH: "d2 ~ [g3,b3,d4] ~ g2 ~ [g3,b3,d4,f4] ~", CI: "[c3,c4] ~@7",
  CJ: "~@3 c2", CK: "f2 ~ [a3,c4,f4] ~ bb2 ~ [bb3,c4,e4] ~", CL: "a2@2 [a3,c4,f4] ~ ab2 ~ [ab3,b3,d4] ~",
  CM: "g2@2 [g3,c4,e4] ~ f2@2 [f3,g3,bb3,d4] ~", CN: "e2@2 [g3,bb3,c4,e4] ~ gb2@2 [gb3,a3,d4] ~",
  CO: "[g2,g3]@2 [a2,a3] ~ [bb2,bb3]@2 [b2,b3] ~", CP: "[c3,c4]@2 [d3,d4] ~ [c3,c4]@2 [bb2,bb3] ~",
  CQ: "[a2,a3] [eb3,eb4] d4 [db3,db4], ~ d3", CR: "[c3,c4]@2 [b2,b3]@2 [bb2,bb3] ~ [g3,bb3,c4,e4] ~",
  CS: "[a2,a3] ~ [a3,c4,f4] ~ [c2,c3] ~ [a3,c4,d4,f4] ~", CT: "[f2,f3] ~ [a3,c4,f4] ~ [gb2,gb3] ~ [a3,c4,eb4] ~",
  CU: "[g2,g3] ~ [g3,bb3,c4,e4] ~ [f2,f3] ~ [f3,a3,c4,d4] ~", // G C7 F Dm7
  CV: "[e2,e3] ~ [g3,bb3,c4,e4] ~ [gb2,gb3] ~ [gb3,a3,c4,eb4] ~", // E C7 Gb Gbdim
  CW: "[g2,g3] ~ [g3,bb3,c4,e4] ~ [f2,f3] ~ [f3,ab3,b3,d4] ~", // G C7 F Fdim
  CX: "[e2,e3] ~ [g3,bb3,c4,e4] ~ [c2,c3] ~ [g3,bb3,c4,e4] ~", // E C7 C C7
  CY: "[f2,f3] ~ [f3,a3,c4,d4] ~ [d2,d3] ~ [gb3,a3,c4,d4] ~", CZ: "[g1,g2] ~ [bb3,d4,g4] ~ [c2,c3] ~ [bb3,c4,e4,g4] ~",
  DA: "[f2,f3] ~ [a3,c4,f4] ~ [c2,c3] ~ [a3,c4,d4,f4] ~", DB: "[a2,a3] ~ [a3,c4,f4] ~ [ab2,ab3] ~ [ab3,b3,d4,f4] ~",
  DC: "[f2,f3] ~ [a3,c4,f4] ~ [c2,c3] ~ [g3,bb3,c4,e4] ~", DD: "[f2,f3] ~ [a3,c4,f4] ~ [d2,d3] ~ [g3,a3,db4,e4] ~",
  DE: "~@2 [g3,a3,db4,e4] ~@3 [g3,a3,db4,e4] ~, e2 a1", DF: "e2@2 [g3,a3,db4,e4] ~@3 [g3,a3,db4,e4] ~, ~ a1",
  DG: "[~@12 c4@15 ~ [d2,gb3]@4, d2@27 ~@5, ~@4 a2@23 ~@5, ~@8 gb3@19 ~@5]/2", // D
  DH: "[g2,f3] ~ [f3,g3,b3,d4] ~ g2 ~ [f3,g3,b3,d4] ~", DI: "[d2,f3] ~ [f3,g3,b3,d4] ~ g2 ~ [f3,g3,b3,d4] ~",
  DJ: "[~@12 bb3@15 ~ [e2,b2,ab3]@4, c2@27 ~@5, ~@4 g2@23 ~@5, ~@8 e3@19 ~@5]/2", // E
  DK: "[f2,c3,a3] ~ [a3,c4,f4] ~ c2 ~ [bb3,c4,e4,g4] ~", DL: "[f2,a3] ~ [a3,c4,f4] ~ [ab2,f3,b3] ~ [ab3,b3,d4] ~",
  DM: "g2 ~ [f3,g3,b3,d4] ~ d2 ~ [gb3,a3,d4] ~", // G7 D
  DN: "[[c3,c4]@2 [db3,db4] ~ [d3,d4]@2 c3@2 [b2,b3]@2 [b3,d4,f4] ~ [bb2,bb3] ~ [bb3,c4,e4,g4] ~, ~@3 c4@2 ~@3]/2", // C Db D B Bdim Bb C7
  DO: "[f2,f3] ~ [e2,e3] ~ [eb2,eb3] ~ [a3,c4] ~", DP: "[d2,d3] ~ [db2,db3] ~ [bb3,db4] ~ [db2,db3] ~",
  DQ: "[c2,c3] [b1,b2] [ab3,b3] [b1,b2]", DR: "[[c2,c3]@4 [f2,f3]@15 ~@5]/3",
})).s("gm_piano").gain(0.25)

stack(piano, piano_2)

More by Fats Waller