Strudelify

Tea for Two

Fats Waller

KeyF majorTempo146 bpm
0:00/0:00
// Tea for Two — Waller Fats
// 146 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 112 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(146/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@2 B C D E F G H@2 I@5 J K L M N O P Q@2 R S T@2 U@2 V@2 W X Y@2 Z AA AB AC AD AE AF AG AH@2 AI AJ@2 AK AL@5 AM AN@3
  AO AP AQ@2 AR AS AT@4 AU AV AW AX AY@3 AZ BA@2 BB BC BD@2 BE BF@3 BG BH@3 BI@2 BJ@2 BK BL BM BN BO BP@2 BQ BR BS BT@3
  BU@4
>`.pickRestart({
  A: "[[d3,eb3,e3] ~@3 c5 ~@6 bb4 ~ g4@4 bb4@2 c5@2 ~@3 ab4 [a4,d5]@9 ~@6 f3 ~@6 eb3, ~ f3@38 ~@9, ~@24 f4@9 ~ [eb4,g4,c5]@13 ~]/2", // D5 Cm
  B: "~@4 [d2,f4] ~@6 eb5 [g4,b4] ~@5 [g2,f3] ~@5, d3 ~, ~@2 f5 ~@3 g5 ~@5", // Dm G G7
  C: "[bb3,eb4,gb4]@3 ~ [c2,eb3] ~ e4@4 [f2,eb3,a3,db4] ~@5 [g2,f3,b3,eb4,g4]@7 ~, ~@5 f4 ~@6", // Ebm Cm Faug Gaug
  D: "[c2,eb3,bb4,eb5] ~@5 [g3,bb3,c4] ~@5 [f2,ab4] a4 ~@4 [eb3,a3] ~@5, bb5 ~@5 [d5,f5,a5] ~@5", // Cm7 C7 Fm Ebdim Dm
  E: "[eb3,bb4,eb5] ~@5 [g2,bb3,bb4,g5]@3 ~ ab4 ~ [f2,a3] ~@3 [d5,f5,a5]@2 b1@2 ~@4, [c2,bb5]@5 ~@6 [d5,f5]@2 ~@3 ab4 ~ eb3 ~@5", // Eb5 Gm F Dm C7 Dm
  F: "[d5,a5]@3 ~@3 [a3,bb3,d4] ~@5 [g4,db5,f5,g5]@6 [g3,bb3,db4,f4] ~@5, [bb1,ab4] ~@5 f5@3 ~@3 eb2 ~@11", // D5 Bbmaj7 Gm7b5 Bb7
  G: "[d2,ab4] a4@4 ~ [a3,c4,d4] ~@3 [a4,db5,e5] ~ db2 ~@3 [a4,db5,e5] ~ [g3,bb3,db4,e4]@5 ~, d5 ~@3, [f5,a5]@2 ~ f5 ~ g5 ~@2 g5 ~@3", // Ddim D7 A Gdim F
  H: "[[bb4,bb5]@4 ~@2 [g3,bb3,c4] ~@5 [f2,ab4] a4 ~@4 [eb3,a3,c4] ~@5 c2 ~@4 eb5 [g3,bb3,c4] ~@5 [d5,a5]@4 ~@2 [a2,f5]@5 ~, [c2,eb3] ~@4 g5@2 ~@16 g5@2 ~@3 bb5@2 ~@5 g5@2 ~@11, ~@6 [bb4,bb5]@2 ~@4 [d5,f5,a5]@3 ~@14 bb4@2 ~@5 [f2,ab4] ~@11]/2", // Bb C7 Fm Adim C7 D5 Dm Cm …
  I: "[[bb2,g4,a4,c5,d5]@3 ~@7 [db3,db4] ~@7 [c4,f4]@4 [a3,f4,a4]@12 [db4,e4,a4]@2 ~@4 [f2,eb3,ab4]@2 ~@4 [db5,gb5] ~ e2 ~@3 b5@2 [b3,d4,e4] ~@3 [db5,gb5,a5,db6]@2 a2 ~@3 [db5,gb5,b5]@2 [g3,b3,db4] ~@3 db5 ~ e2 ~@3 [d5,g5,b5]@2 [b3,d4,e4] ~@3 [db5,gb5,a5,db6]@2 ~@6 db3 ~@5 [db5,gb5,db6]@3 ~@2 [db5,gb5,db6] a2 ~@5 [b4,d5,b5]@4 ~ [b4,d5,f5] [f3,b3,d4] ~@5, ~@18 d4@16 [gb2,e3] ~@12 d5@6 ~@17 b5@3 ~@22 a5@2 ~@15 b5@2 ~@6, ~@18 c5@3 ~@19 [c4,eb4] ~@5 [g5,d6]@6 ~@18 [g5,d6]@7 ~@12 [db5,gb5,a5]@2 ~@29, ~@71 d5@5 ~@8 [a2,g3]@7 ~@5 [d2,gb3]@7 ~@5 [g2,f3] ~@11]/5", // Gm Db F5 Dm A Fm7 Gb5 E7 …
  J: "[a4,a5]@5 ~ [db3,a4,a5]@4 [a4,c5,eb5] ~@5 [a4,c5,eb5] ~ eb2@4 [g4,bb4] b4, gb2@5 ~@7, [e3,db5]@7 ~@5 eb3@6 ~@6, ~@5 e5@2 ~@15 d5@2", // A Gbm Adim Gm Dbm
  K: "~@4 [d5,d6]@2 b2 ~@3 b5@2 [db5,db6]@3 ~@3 [g3,b3,db4] ~@3 b5@2, e2@6 ~@6 [a2,g3] ~@11", // D Db Dbm7b5 A7
  L: "[bb2,ab3,db5,db6] d5@2 ~@3 b5@4 db5 gb5 ~@4 [gb5,a5]@2 db3@4 a5@2, [g5,d6]@3 ~@3 ab3@2 ~@4 g3@11 ~, ~@6 d4 ~@3 db6@2 ~@4 db5@6 a4 ~", // Bbm7 Gbm G5
  M: "gb5 ~@3 a4 ~ gb4@3 ~@9 gb4@4 [b3,e4] ~, [d2,gb3]@11 ~, ~@3 db5@2 ~@7 db4@10 ab4@2", // E5 D
  N: "~@3 [d4,g4] ~@5 [f4,bb4,d5] ~@7 d4@6 ~, f3@5 ~ ab3@6 ~@12, ~@3 b4@2 ~@11 [ab4,db5,f5]@7 ~", // G5 Bb Db
  O: "[c2,eb3,bb4,bb5] ~@5 [bb3,g4,eb5,g5] ~@5 ab4 a4 ~@4 c3@4 g2@2, ~@6 [d5,f5] ~@5", // Cm7 Eb Dm
  P: "[bb4,bb5]@3 ~@3 [bb3,c4] ~@3 ab4 ab5 ~@4 ab4 a4 eb3 ~@3 g5@2, c2 ~@9 [d5,f5]@2 ~@4 [d5,f5,a5]@3 ~@5", // Bb Bbsus2 Dm
  Q: "[a5@4 ~@2 [bb3,d4] ~@5 [eb2,gb5] ~@5 [g4,db5]@6 d2@5 ~ [a3,c4,d4,f5] ~ g5 ~ g5 f5 [g2,f3,g5] f5 g5 f5 g5 f5 [f3,b3,g5] f5 g5 ~@2 g5, bb2 ~@4 gb5@2 ~@5 g5@17 ~@19, ~@6 f5@2 ~@10 [g3,db4] ~@29]/2", // Bb Ebm Gdim Dm7 G7 Gdim
  R: "c2 bb5@2 ~@3 [g3,bb3,c4] bb4@4 ~ a4@5 [eb5,g5] [eb3,a3,c4] ~@5, ~@12 f2 ~@11", // C7 Eb Adim
  S: "[bb4,bb5]@2 ~@4 [ab2,gb3,bb4,g5]@4 ~ [a4,d5] g2@2 ~@2 [a4,d5] ~ [f2,eb3]@6, c2 ~@9 a5@2 f3 ~@11, ~@11 f5@2 ~@3 f5@2 ~@6", // Bb D5 F7
  T: "[[a5,d6]@2 ~@4 [d2,f3]@4 [ab3,c4] ~@5 [ab2,gb3] ~ [ab3,c4]@4 eb3@6 ~@6 a2@2 ~@6 bb1@6, f6@4 ~@24 [c3,ab3,c4,eb4,g4]@7 ~ [bb2,ab3,d4,g4]@12, ab5 ~@9 f4@2 ~@10 f2@10 ~ g2@2 ~@13]/2", // D5 Dm Ab Ab7 Ab Abmaj7 Gm
  U: "[gb5 ~@3 [eb2,bb2]@8 e5 f5@3 [d2,f3]@6 ~@6 [c2,eb3]@7 ~@5 [b1,d3]@6 [g3,bb4]@2, [g4,g5]@12 ~ f4@11 [c5,eb5]@11 ab4@13, ~@22 eb4@13 ~ d5@11 ~]/2", // Eb5 Dm Cm Bm Gm G Cm
  V: "[~@4 [g3,d4,eb4,bb4] ~ eb4@4 [gb3,eb4]@2 d3@4 gb3 ~@7 d5@4 ~@2 bb4@4 ~@6 [ab2,c4,gb4]@8, [c3,f5]@11 ~@5 [c4,gb4,b4]@8 [bb3,f4]@7 ~@17, ~@3 [g3,d4,bb4]@3 eb5@6 ~@2 c5 ~@2 c5@7, ~@22 eb3@9 ~@9 gb3 ~@7, ~@29 b4@2 ~@17]/2", // Ebmaj7 Ebm Ab7 F5 B Bb5 Gm
  W: "~ [d2,f3,bb5]@2 ~@3 g5@3 ~ [db2,e3,a4,db5] ~@7 [eb3,bb4,eb5] ~@5, ~ bb4 ~@8 a5@2 ~@6 [c2,bb5]@2 ~@4", // Bb A Eb5 C7
  X: "g5@3 ~ [f2,eb3,a3,ab4] a4 ~@5 d5@2 a4@4 ~ eb5@3 ~ e5 ~, ~@4 [d5,f5,a5]@3 ~@4 f5 ~@5 d5@2 ~@5", // F7 Dm
  Y: "[f5@4 [e3,f4] ~ eb5@3 ~ db5 ~ d5@2 ~@2 bb4@2 f4@3 ~ e4 ~ eb4@4 ~@2 [gb3,c4,bb4]@4 [b3,eb4] ~@5 bb5@2 d3@6, ~@4 f3@22 ~@2 ab2@5 ~@15, ~@16 d5 ~@17 a4@2 ~@4 bb4 ~@7]/2", // Fmaj7 Cm7b5 B
  Z: "[c2,bb4] ~@5 gb2@5 ~ db6@4 ~ d6 [g2,f6]@6, eb3 [eb3,a3], bb5@2 ~@16 f2 ~@5", // C7 G7 Ebdim
  AA: "[c2,eb3,db6] d6@2 ~@3 [g2,eb3,bb3,bb5]@5 f5 ab5 a5@3 ~ c6 [eb3,d6]@5 ~, f6 ~@5 a3@6", // Cm Eb Ebmaj7
  AB: "[bb2,a3] ~@11 eb2@5 ~ [bb2,g3,db4]@6, [f5,a5,c6,d6,f6]@17 ~@7, ~@6 g3@11 ~@7", // Bbmaj7 Gdim Dm7
  AC: "~@4 c6 ~ [gb3,ab5] ~ g5 ~ f5 ~ [g2,f3] ~@3 b4@2 [f3,b3] ~@3 [ab4,bb4] ~, [a2,c4]@7 ~@5 eb5@3 ~@3 bb4@3 ~@3", // Gbsus2 G7 Fdim Absus2 Am
  AD: "g4@4 bb4 ~ d5@4 ~@2 [f2,a3]@6 db5@3 ~ d5@2, [c2,eb3]@6 g2 ~@5 [f4,f5]@3 ~@3 eb3 ~@5", // F Cm F
  AE: "bb4@4 g4@2 f4@4 e4 ~ eb4@4 f4@2 g4@4 ab4@2, [g2,bb3]@3 eb3@6 f2 ~@2, ~@12 a3@7 ~@5", // Gm
  AF: "[d2,f3] ~@5 f4@3 ~ a4@2 [c2,eb3]@5 ~ eb4@4 g4@2, a4@4 ~@8 g4@3 ~@2 c4@2 ~@5", // Dm Cm
  AG: "~@6 d3@4 [e4,a4]@2 [gb2,e3]@4 [c4,eb4] ~ [f2,c3]@4 d5@2, [bb1,f4]@10 db4 ~@5 ab4@2 ~@6", // A5 Gb7 Cm F5 Bb5
  AH: "[[e2,b2] ~@3 [d5,b5,d6]@2 [g3,b3,d4,e4] ~@3 [d5,b5,d6]@2 a2 ~@3 gb5 g5 [b3,db4] ~@3 gb5 ~ g3@2 ~@4 [g3,b3,d4,e4]@5 d6 ~ gb6@2 ~@3 db3 gb6@4 ~, ~@4 gb5 ~@5 gb5 ~@5 [d5,b5,d6]@3 ~@3 d6@13 ~ b6@4 ~@8, ~@11 [d5,b5]@4 ~@9, ~@23 g5@7 ~@6 f6@2 ~@4 [f6,b6]@6, ~@24 e2 ~@11 [a2,g3]@7 ~@5]/2", // E5 G Em7 G Bsus2 Em7 G Fdim …
  AI: "d6@4 ~ d6 [gb3,a3,db4,e4] ~@5 e3@5 gb6 db3 db6@4 a5, gb2 ~@11 a6@3 ~@9", // Gbm7
  AJ: "[~ g5@3 ~ a5 bb5@4 b5@2 ~@5 b4 eb3@4 ~@2 [e2,b2] ~@5 [g3,d4,e4]@4 ~@2 a2 ~@5 [d5,b5,d6]@6, c2@6 g2 ~@3 b4 ~ b1@5 b5@2 ~@15 [b4,b5,d6]@6 ~@8, ~@16 a5@2 ~@4 [d5,db6,d6]@8 b3 ~@11 [g3,b3,d4] ~@5]/2", // E5 Em7 G Bm Dmaj7 G
  AK: "e2 ~@5 [b3,d4,e4] ~@5 b4@5 ~ e3@6, ~@4 [b4,b5,d6]@7 b5@4 ~@9, ~@6 g3@5 ~ [a2,g3,d6]@12", // E7 Bm Dsus4
  AL: "[[b5,db6] ~@3 gb5 e5 db5 ~ b4 a4 gb4 ~ e4 db4 b3@2 ~@12 [g3,b3,eb4]@8 [b3,bb4]@2 ~@3 d3 [b3,eb4,ab4]@5 ~ c2 ~@4 bb5@2 [g3,bb3,c4] ~@4 ab4 ~ a4 ~@3 g5@5 [bb4,eb5] [c2,eb3] ~@3 bb4 eb5 [eb3,g3,bb3,d4] ~@3 ab4 a4 f2 ~@5 [eb3,a3,c4] ~@3 ab4 a4 bb1 ~@3 [a4,d5,f5]@2 [f3,a3,bb3,d4] ~@3 [g4,db5,f5,a5]@2 eb2 ~@3 [g4,db5,f5]@2 [g3,bb3,db4] ~@3 [ab4,c5,eb5,ab5]@2, gb2@14 ~@3 ab3@19 eb4 ~@16 bb4 ~ g5@3 ~@2 a5@3 ~@8 bb5@2 ~@3 g5@2 ~@11 a4@2 ~@29, a3@12 ~@4 a3@2 ~@5 g2@18 ~@6 g2@2 ~@12 f2@6 ~@53, ~@28 f3@14 ~@18 eb3@6 c3 ~@53, ~@61 [d5,f5]@3 ~@18 [d5,f5,a5]@3 ~@3 [d5,f5]@2 ~@5 [d5,f5,a5]@2 ~@23]/5", // Bsus2 Gaug Bmaj7 Abm C7 Eb5 Cm Ebmaj7 …
  AM: "d2 ~@3 [gb4,c5,eb5,gb5]@2 [ab2,gb3]@4 bb4 b4 [g2,f3]@2 ~@2 [g4,b4,d5]@2 [b1,d3]@2 ~@2 [g4,eb5,g5]@2, ~@10 [g4,d5,g5]@2 ~@10 bb4 ~", // Cdim Ab7 G7 G Bm Cm G5
  AN: "[eb3@4 ~@2 g4@3 ~ ab4 ~ a4@3 ~ [db5,f5]@2 a4@5 ~ g5@3 ~ eb5 g2 bb4@4 g4@2 ab4 a4@3 ~@2 d5@4 ~@6 [f2,ab3]@7 ~ bb4@3 ~ ab4 ~ eb4 ~ eb4@2 c4 ~, c2@2 ~@2 eb5@2 gb2@6 c3@6 eb3@24 c3 ~@17 [b2,a3]@10 ~@2, ~@5 bb4@2 ~@17 c2@6 ~@6 f2@5 c5@2 ~@3 [f4,ab4,c5,f5]@13 ~@13]/3", // Db Fm B7 Fm
  AO: "e4@3 ~ db4 ~ d4@2 ~@2 ab4 ~ [d4,gb4,db5]@3 ~ [d4,gb4,b4]@7 bb2, ~@5 [bb2,ab3]@13 ~@6, ~@16 f3 ~@7", // Dmaj7 Bm Bb7
  AP: "[d4,g4,bb4] ~@5 [g4,g5]@3 ~@3 [f4,b4,f5]@2 ~@2 d2@7 c5, eb2@5 ~ gb5 ~@9 f3 ~@7", // Gm G Fdim
  AQ: "[[c2,eb3,g4,bb4,eb5]@5 ~ [c2,eb3,g4,bb4,eb5]@4 ~@6 [d2,f3]@6 ~@5 [bb3,g4,bb4] ~@2 [bb3,g4,bb4]@5 gb3 ~@3 [gb3,c4,gb4,b4] ~@2 [gb3,gb4,b4]@5 ~, ~@5 c5@2 ~@3 [f4,ab4,d5]@12 g3@2 c3@11 ~ [d3,eb5]@11 ~, ~@23 d5@2 f5@11 ~@6 c4 ~@5]/2", // Cm7 Dm Eb B B5 Ddim Ebmaj7
  AR: "gb4 ~@3 [eb2,bb2] ~ bb4@4 [a2,g3,c4,gb4] ~@5 [ab2,gb3,c4,gb4,bb4]@6 d2@2, d4 ~@3, d5@4 ~@6 c5@13 ~, ~ g4@5 ~@18", // Eb5 Gbdim Ab7
  AS: "~@4 bb4@2 db5 d5@3 ~@2 g5@4 ~@2 [bb3,bb4,bb5]@5 ~, f3@7 ~@4 f5@2 ~@4 db3@7, ~@17 f5@2 ~@5", // Bb
  AT: "[db6@3 ~@3 f5@3 ~ e3 ~ eb5@2 ~@3 [f2,bb4] [db5,g5]@3 ~ eb5@2 ~@3 db5 bb4 ~ [ab4,db5]@4 f4 ~ eb4 e4@3 f2 ~ [eb4,bb4]@4 e3 ~ db4 ~@5 f4@4 [c4,eb4,g4]@2 ~@4 [eb4,f4]@2 [g2,f3]@5 ~ [bb4,bb5]@4 ~@2 [gb2,e3,bb4,bb5] ~@5 [bb4,eb5,g5] ~@5 c3 ~@4 db6, bb4 ~@3 db6@2 ~@5 f3@42 db3@6 ~@25 eb3@6 ~@6, ~@5 [ab5,bb5]@2 ~@3 [e5,bb5]@2 ~@10 g5 ~@4 eb5@2 ~@7 bb4@4 ~@8 bb4@2 ~@2 eb4@2 ~@10 b3 ~@6 g5@2 ~@23, ~@49 d4@5 ~@4 bb2 ~@13 c2 ~@23]/4", // Bb5 Dbdim Db5 Eb5 Cm Ebsus2 G7 Bb …
  AU: "[c2,eb3] f6@4 d6 c4 eb6@2 ~@4 bb6@2 ~@2 c7 c3 d7@2 ~@2 eb7, ~@7 bb3 ~@3 g6@2 ~@11, ~@2 f2 ~", // Cm
  AV: "bb2 e7@3 f7@2 [a3,bb3,d4] ~@4 a6 [eb2,bb2] ~@5 [g3,bb3,db4] ~@5, ~ a3 ~@4 d7@2 ~@4 f6@3 ~@9", // Bbmaj7 Eb5 Gdim
  AW: "c6@4 ~@2 [f3,c4,d4] ~@3 [g5,gb6] ~ g2 ~@3 gb6 b3 f3 ~@3 gb6 ~, d2 ~@5 f6@2 ~@3 g6@2 ~@3 g6@4 ~@4, ~@8 g5 ~@3", // Dm7 Gmaj7
  AX: "[c2,g5] ~@5 [bb3,c4] ~@5 f2 ~@5 [eb3,a3,c4] ~@5, g6 ~@2 g3 ~@2 g5@5 ~", // C5 Bbsus2 Adim
  AY: "[[c2,eb3,gb6] ~@5 [eb3,g3,bb3,d4] ~@3 [g5,g6]@2 [eb3,a3,d4]@3 ~ [g5,gb6] ~ [f2,a3]@4 ~@6 d6 ~ c6@2 ~@2 a5 ~ f5@4 ~@5 d5 ~@2 f5 ~@2 f5 ~@2 g5 ~@2 g5@2 ~ f5@2 ~ f5@2 ~ d5@2 ~ c5 ~@2, [g5,g6]@6 ~@4 gb6 ~@5 g6@2 ~@4 f6@5 ~@45, ~@24 [bb2,g3]@41 ~@7]/3", // Cdim Ebmaj7 G D Gmaj7 F G Eb
  AZ: "b4@3 [e2,g3] ~@2 [gb5,a5]@2 ~ [a2,db3,g3] ~@5 [db5,gb5,a5]@2 ~ [g3,b3,db4] ~@5, ~@9 b4@5 ~@4 b4@4 ~@2", // Em Gbm A7 Gbm Dbm7b5
  BA: "[[d5,a5]@4 ~@2 [g3,b3,d4,e4] ~@2 [db5,gb5]@4 ~@2 [a2,db3,g3,b4,a5]@2 ~ [db5,gb5]@3 ~@3 [a4,a5]@3 ~@3 [db5,gb5]@3 ~ [a4,a5]@2 [f2,g2] ~@2 [db5,e5,a5]@3 [f3,b3] ~@5, [e2,g3] ~@5 b4@3 ~@12 gb3@5 ~@7 f3@4 ~@5 a4@3 ~@3, ~@24 d2 ~@23]/2", // D5 Em7 Gb5 A7 Gb5 A Gb5 A …
  BB: "gb2@2 ~@2 a5@2 e5 ~ db5@2 a4 ~ [c3,e3,bb3,bb4] ~ bb4@2 g4 ~ [b2,eb3,a3,a4] b4 ~@2 gb4@2, ~@4 e3 ~@8 c5@2 ~@9", // C7 B7
  BC: "g4@3 ~ [e2,b2] ~ d5@4 f5@2 [gb4,gb5]@4 [a2,db3,g3] ~ gb4@3 ~ g4@2, ~@2 b4 ~@9", // E5 Gb A7
  BD: "[[e2,b4]@4 ~@2 f5@3 ~ gb5@2 ~@4 [a2,db3,g3,g4,g5] ~ [ab4,ab5]@4 [a4,a5]@5 ~ gb5 ~ g5@3 ~ a5 ~ a5@5 ~ [e5,a5]@6, ~@5 d5@3 ~@2 gb4 ~@11 gb3@25 ~, ~@11 d2@10 ~@3, ~@18 e5 ~@5]/2", // E5 A7 Ab A A5
  BE: "eb5@4 ~@2 c5@3 ~ eb5 ~@3 eb5@2 b4 ~ bb4@3 ~@2 a4, [g2,f3]@3 ~, ~@13 c5@4 ~@7", // G7
  BF: "[[c2,eb3] ~@3 g4 ~ g3@4 ~@6 eb3@7 ~@2 bb3@2 ~@3 [gb2,e3,bb3,eb4,gb4]@4 ab3 ~@6 f2@5 ~@2 [c4,a4]@2 ~@4 [c4,d4,f4]@5 ~ [db4,g4]@4 [a2,g3]@2 f4@5 ~, bb4@3 ~@3 gb3 ~@3 [eb4,a4]@13 [g2,g4]@2 c2 ~@9 [a3,d4,f4]@12 ~ a3@6 f3 ~@17, ~@24 [eb4,bb4]@3 ~@7 a4@12 f4@2 d4 ~@23, ~@40 eb3@6 ~ bb2@12 ~@13]/3", // Cm Ebm F Dm7 Dbdim A7 Ebdim G …
  BG: "[c4,ab4]@5 ~ gb4@3 ~ [b3,eb4,g4]@2 ~@4 d3@6 ab4 ~, [ab2,gb3]@9 ~ [g2,f3]@12 ~@2", // Fm Baug Ab7 G7
  BH: "[[b3,bb4]@4 ab4 ~ [b3,eb4,bb4]@4 ~@2 [c2,bb3,g4]@3 ~@3 [bb3,eb4,bb4]@5 ~ [gb2,bb3,bb4]@2 ~@16 c5@3 ~ db5 ~@5 [d3,ab3,c4]@7 ~@4 g6 f6 ~ e6 eb6 b5 db6 eb6 db6, [db2,e3,eb4]@5 ab2@4 ~@3 eb3@5 ~ e3@8 ~@4 [eb3,bb3,eb4,g4]@15 ~@2 d5@13 ~@12, ~@24 eb4 ~@11 f2@9 ~@15 [f3,ab3,c4,d4]@7 ~@5, ~@40 bb4@5 ~ [f4,ab4]@13 ~@13]/3", // Bmaj7 C7 Eb5 Gb Dm7b5 Dbm Eb Dm7b5 …
  BI: "[b5 ~ ab5 f5 ~ eb5 db5 b4 bb4 ab4 g4 gb4 f4 e4 db4 c4 ~ bb3 ab3 g3 ~ f3 ~ eb3@2 ~@2 [c2,g2]@7 [g4,bb4,eb5,g5] ~ [f4,f5]@4 d2@2 bb4@2 b4@2 ~@2, b3@10 ~@10 gb3@2 ~@18 f3 ~@7, eb4@6 ~@7 eb4@2 ~@21 bb4@2 ~@4 [f4,f5]@4 ~@2, ~ bb5@2 ~@45]/2", // C5 Eb F
  BJ: "[[eb2,bb2,g4,bb4,eb5]@3 ~@3 [eb2,bb2,g4,bb4,eb5]@4 ab4@3 ~@9 f6 ~ d7 ~@3 [c2,eb3]@8 ~@4 [d3,gb3,c4] ~@7, ~@5 d5@3 [a4,b4]@4 ~@12, ~@10 f4@2 ~ d2@4 [d5,e5]@2 ab5 b5 e6@2 ab6@2 ~@23, ~@7 [f3,f4]@5 ~@12, ~@5 ab4@3 ~@4 [gb4,b4,eb5]@4]/2", // Eb Cm D7 Asus2 Dsus2 F B
  BK: "eb2 [d4,g4,bb4,d5]@3 ~@3 bb4@3 ~ ab2@13, ~ [bb2,gb4] ~@3 a2@5 ~@14, ~@3 [g3,db4,gb4]@2 [gb3,c4,gb4,c5]@7", // Gm Ebm Gb Gbdim
  BL: "~@4 [d2,bb3] [f3,g4] ~@11 [db2,e3,bb3,db4,e4] ~@5 bb3, bb4@7 ~@6 a4@10 ~", // Gm Fsus2 Bbdim
  BM: "bb4@5 [c2,eb3,bb3] ~@4 bb3 ~@5 [f2,eb3,a3,eb4]@7 ~, ~@5 eb4@3 ~@4 g4@11 ~", // Cm7 F7
  BN: "~@4 db4 ~ db4@3 ~@3 [b2,f3,a3,db4]@2 ~@4 [b2,f3,a3,db4]@2 ~@4, f4@7 ~, ~@4 [b2,f3,a3]@5 ~@15", // Dbaug Bm7b5
  BO: "[e2,b2,ab3,d4,g4]@10 [eb2,bb2,g3,db4,g4]@2 ~@4 db5 ~ d5@4 f5 f4", // E7 Eb7
  BP: "[~@4 [d2,f3,f5] f4 ~@5 d5 [f4,f5]@3 ~@3 [g4,g5]@2 ~@10 [bb4,bb5]@3 ~ [g2,f3]@6 [db3,eb6,e6,gb6] ~@5 [g2,f6] ~, ~@23 ab2@11 ~@14, ~@24 [gb3,ab4,eb5,ab5]@9 ~ [g4,g5] ~@13]/2", // Dm F G Bb G7 Ebm7 G7 Ab7 …
  BQ: "g6@3 ~ eb2@2 ~ eb6 ~@2 g5 ~ eb5@4 [e2,g4] ~ c5@4 eb5 ~, ~@4 eb6 ~@4 c6@2 ~@13", // Em
  BR: "db5 ~ d5@2 [d2,f3] ~ [db5,f5]@4 ~@6 d3@6 g4 ~, f5@4 ~@6 [g2,f3,b4,eb5]@13 ~", // Dm Db Gaug
  BS: "db5 d5@3 [c2,g2]@7 ~@2 eb5@2 ~@3 [eb4,gb4,b4,eb5]@6, f5@4 ~@7 d2@8 ~@5, ~@11 eb4@3 ~@10, ~@12 gb3@11 ~, ~@6 [gb4,b4] ~@5", // C5 B B5
  BT: "[~@6 bb4@4 [gb4,bb4,c5]@2 ~ c4 [gb4,ab4] bb4 c5 gb5 ab5 ~ [c6,d6] gb6 ab6 c6@2 ~@2 [d2,f3]@7 db2@2 [bb4,db5,e5,bb5]@2 ~@4 ab5@5 ~ d5@4 ~@2 [gb4,gb5]@4 ~ f4 ~@6 [a4,a5]@4 [d5,f5,bb5] ~, [eb2,bb2,d4,g4]@10 [ab2,gb3]@7 ~@19 e3@6 ~@5 c2@2 ~@3 [g4,d5,g5]@6 [db5,f5]@2 ~@10 bb4@2, ~ d5@9 c4 ~@12 c7 ~@24 [eb3,a4,f5,a5]@10 ~@7 [f2,eb3,ab4,ab5]@6 ~]/3", // Cm7b5 Gbsus2 Csus2 Dm Bbdim Gb A Bb …
  BU: "[~@4 [e2,g3,d4,bb4] ~@2 [eb2,gb3]@3 ~@2 [f3,c4,f4,bb4]@4 [db2,b3,e4,bb4]@2 ~@5 eb4 [eb3,bb3,eb4,g4]@2 ~@4 [gb2,a3,db4,eb4]@3 ~ g4@8 ~@21 c7@2 ~@9 [bb7,c8]@7 f1 ~ bb0@2 ~@11, ~@4 g4@2 [db4,bb4]@4 ~ d2@5 e3 ~@6 c2@4 ~@2 b1@5 [bb1,f2,a3,c4,e4]@13 c6 [d6,e6] [f6,g6] c7 d7 [g6,g7,a7]@11 [d7,bb7,b7,c8]@2 c7 [bb7,c8] [c7,b7] [bb7,c8] c7 [bb7,c8] c7 [bb7,c8] c7@8 bb1@2 ~@13, ~@3 gb4 ~@17 g4@20 d1 ~@6, ~@43 c5@39 ~@14, ~@22 d5@19 ~@7]/4", // Em7b5 Ebm Fsus4 Bbdim Eb Ebm7b5 Bbsus2 Gb …
})).s("gm_piano").gain(0.48)

// chords · piano · "A.PIANO 1" · soft notes
const piano_soft = note(`<
  ~ A B C@4 D ~ E F ~ G H I@2 J K L M N@2 O P D ~@2 Q R@2 ~@2 S ~@2 T ~@6 U ~ V ~@2 W X Y Z ~@7 AA AB ~@7 AC AD AE AF AG
  ~@7 AH AI@2 AJ AK ~@4 AL ~ AM AN AO AP AQ ~@2 AR ~@5 AS ~ AT ~@3 AU@3
>`.pickRestart({
  A: "~@11 e3", B: "~@12 eb5 g2 ~@10",
  C: "[~@23 g5@2 ~@5 [bb4,g5]@2 ~@10 c4 ~@4 g5@2 ~@11 a4 ~@4 a4 ~@7 a4 ~@4 f3 ~@17, ~@59 a5@3 ~@9 f5@4 ~@21]/4", // Eb
  D: "~@23 g5", E: "~@14 a4 ~@9", F: "~@12 [d3,d4]@2 ~@2 [a3,a4] ~@7, ~@15 f4@2 ~@7", G: "b2 ~@5 g3 ~@5 g3@2 ~@10",
  H: "~@3 g3 ~@8", I: "[~@11 f5@3 ~@9 e5@2 ~@5 db5@4 ~@14]/2", J: "g3@11 ~@13", K: "~@2 a2 ~", L: "~@11 a3 ~@12",
  M: "~@12 b3@11 ~", N: "[~@6 [g3,c4] ~@5 f2@6 ~@5 g5@2 ~@5 g5@3 ~ a5@2 a3@12, ~@12 a5@3 ~@15 g3 ~@5 f2@7 ~@5]/2",
  O: "~@4 ab5@2 [f3,a3] ~@17, ~@4 g5 ~@19", P: "~@9 f5 ~@12 f5@2", Q: "~@8 f2@3 ~@13",
  R: "[~@23 g4@11 d4 b4@12 ~, ~@17 f4@3 ~@4]/2", S: "~@11 d3 ~@4 g5@2 ~@6", T: "~@12 [g2,f3]@11 g5", U: "~@5 d4 ~@18",
  V: "~@5 g5 ~@5 g5 g3 ~@4 c6 g3 ~@5", W: "e3 ~@3", X: "~@12 g3 ~@11", Y: "~@13 c6 ~@10", Z: "~ b5 a5 ~@9 d4 ~@11",
  AA: "~@20 ab4 ~@3", AB: "~@9 gb4@2 ~@13", AC: "~@3 d3 ~@2", AD: "~@5 g5@2 ~@5 f2@6 ~@6", AE: "~@7 g3 ~@16",
  AF: "~@6 f3 c7 ~@16", AG: "~@5 d6 ~@18", AH: "~@21 a4@2 ~", AI: "[~@23 g3@3 ~@22]/2", AJ: "~@7 gb5 ~@4",
  AK: "~@4 b4 ~@19", AL: "~@23 g4", AM: "~@15 ab6 ~@8", AN: "f3@10 ~@6 b3 ~@7", AO: "~@13 b4@2 ~@9",
  AP: "~@5 a5, ~@3 f5", AQ: "a6 ~@23", AR: "~@11 a3", AS: "~@7 d5@3 ~@14", AT: "~@19 bb5 ~@4",
  AU: "[~@22 [f5,g5]@36 gb1 ~@13]/3", // Fsus2
})).s("gm_piano").gain(0.32)

stack(piano, piano_soft)

More by Fats Waller