Strudelify

In a Mellow Tone

Basie

KeyF minorTempo135 bpm
0:00/0:00
// In a Mellow Tone — Basie
// 135 bpm, 4/4, key F minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 194 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(135/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.

// bass · acoustic bass · "Bas"
const bass = note(`<
  A B C@2 D E F G H I J K L M C N O P Q R D C S T F I U V W M C X Y B Q Z AA E AB F@2 AC C AD AE Y AF AG AH AI AJ AK AJ
  AK AL AM H AN@2 AO Y B AP AQ AR AS AT Q AU AV AW AX AY AZ C AD BA BB BC BD BE BF Z BG N BH BI BJ H BK C AO AH BL BM ~
  AH BL Q BN N E BO BP BQ BR BS BT BU Y AH BV AE BW BX B Q C BY BZ CA CB N CC F CD Z CE A AI Q C AA CF F BQ BP CG N CE Y
  L BX CH CI CJ N CK CL CM BP S BQ BK CN CO BU CP C N F BL Z@2 AA CQ F@2 BQ CR CS CT CU CV BL CW CX CY N CZ C E BQ F DA
  CR DB DC DD ~@2 DE@3
>`.pickRestart({
  A: "bb1@6 c2@6 db2@5 ~ e2@4 ~@2", B: "eb2@4 eb1 ~ g2@6 ab2@5 ~ eb2@3 ~@3",
  C: "~@6 c3@4 ab1 ~ eb3@5 ~ ab3@4 ~@2, ab2@5 ~@7", D: "eb2@6 f2@6 gb2@5 ~ a2@4 ~@2", E: "ab2@6 bb2@6 c3@5 ~ d2@4 ~@2",
  F: "~@6 f2@4 db1 ~ ab2@5 ~ db3@4 ~@2, db2@5 ~@7", G: "db2@6 ab2@4 db2 ~ db2@2 eb3 ~ e3 ~ [f3,c4]@4 ~@2",
  H: "db2@6 eb2@6 f2@5 ~ eb2@4 ~@2", I: "d2@6 c2@6 bb1@6 a2@5 ~", J: "ab2@5 ~ ab2@4 ~@2 g2@5 ~ g2@4 ~@2",
  K: "gb2@5 ~ gb2@4 ~@2 f2@6 c2@4 f2 ~", L: "bb1@6 c2@6 d2@5 ~ e2@4 ~@2", M: "eb2@5 ~ eb2@4 ~@2 eb2@5 ~ eb2@4 ~@2",
  N: "ab2@4 ab1 ~ c3@6 db3@5 ~ ab2@3 ~@3", O: "bb1@4 bb0 ~ db2@6 eb2@5 ~ bb1@3 ~@3", P: "eb2@6 f2@6 g2@5 ~ a2@4 ~@2",
  Q: "ab2@6 bb2@6 c3@5 ~ a2@4 ~@2", R: "ab2@6 g2@6 f2@6 e2@5 ~", S: "db2@6 eb2@6 f2@5 ~ d2@4 ~@2",
  T: "db2@5 ~ db2@4 ~@2 db2@5 ~ db2@4 ~@2", U: "ab2@6 eb2@4 ab2 ~ g2@5 ~ g2@4 ~@2",
  V: "gb2@6 db2@4 gb2 ~ f2@5 ~ f2@4 ~@2", W: "bb1@4 bb0 ~ d2@6 eb2@5 ~ bb1@3 ~@3", X: "ab2@5 ~@19",
  Y: "~@6 d2@4 bb0 ~ f2@5 ~ bb2@4 ~@2, bb1@5 ~@7", Z: "ab2@6 g2@6 f2@6 a2@5 ~", AA: "ab2@6 gb2@6 f2@6 a2@5 ~",
  AB: "db2@3 ~@2 db1 e2@5 ~ eb2@3 ~@2 eb1 ab2@3 ~@2 ab1", AC: "gb2@6 e2@6 eb2@6 a2@5 ~",
  AD: "~@6 a2@4 f1 ~ c3@5 ~ f3@4 ~@2, f2@5 ~@7", AE: "bb1@6 ab1@6 g1@6 b1@5 ~",
  AF: "eb2@5 ~ eb2@3 ~@2 eb1 eb2@3 ~@2 eb1 eb2@5 ~", AG: "eb2@6 f2@6 g2@5 ~ b1@4 ~@2", AH: "bb1@6 ab1@6 g1@6 e2@5 ~",
  AI: "eb2@6 db2@6 c2@6 a2@5 ~", AJ: "ab2@6 c3@6 db3@5 ~ d3@6", AK: "eb3@6 g3@6 ab3@5 ~ ab2@4 ~@2",
  AL: "db2@5 ~ e2@3 ~@2 e1 eb2@3 ~@2 eb1 ab2@3 ~@2 ab1", AM: "db2@6 ab2@4 db2 ~ db2@6 ab2@4 db2 ~",
  AN: "[d2@6 c2@6 bb1@6 a2@4 ~ ab2@5 ab1@7 ~ g1@2 ~@2 gb1@2 ~@4 f1@2]/2", AO: "f2@6 eb2@6 d2@6 b1@5 ~",
  AP: "ab2@6 eb2@4 ab2 ~ ab2@5 ~ db2@3 ~@3", AQ: "~@4 db2@13 ~ bb1@2 ~@4",
  AR: "bb1@5 ~ bb1@5 ~ bb1@3 ~@2 bb0 bb1@3 ~@3", AS: "~@4 bb1@13 bb0 bb1@2 ~@4",
  AT: "ab2@3 ~@2 ab1 ab2@5 ~ ab2@3 ~@2 ab1 ab2@3 ~@2 ab1", AU: "c4@4 ~ ab1 b3@5 ~@2 bb3@5 a3@5 ~",
  AV: "ab3@2 eb3 ~ c3@2 bb2@6 ab2@5 ~@2 ab2@3 ~@2", AW: "f3@4 ~ db1 e3@5 ~@2 eb3@5 d3@5 ~",
  AX: "db3@2 ab2 ~ f2@2 eb2@6 db2@5 ~@2 db2@3 ~@2", AY: "db2@6 eb2@6 f2@5 ~ g2@4 ~@2",
  AZ: "gb2@6 ab2@6 bb2@5 ~ a2@4 ~@2", BA: "bb1@4 bb0 ~ d2@5 ~ eb2@5 ~ e2@5 ~", BB: "f2@3 ~ c2 ~ a1@6 ~ bb1@5 e2@4 ~@2",
  BC: "eb2@6 db2@6 c2@6 bb1@5 ~", BD: "eb2@5 ~ g2@5 ~ ab2@6 bb2@4 ~@2", BE: "bb1@5 ~ a1@5 ~ bb1@3 ~@2 bb0 a1@5 ~",
  BF: "bb1@3 ~@2 bb0 a1@3 ~@2 a0 bb1@3 ~@2 bb0 g2@5 ~", BG: "ab2@5 ~ ab2@4 ~@2 ab2@5 ~ a1@3 ~@2 a0",
  BH: "gb2@6 db2@4 gb2 ~ ab2@6 eb2@4 ab2 ~", BI: "db2@6 f2@6 gb2@5 ~ g2@6", BJ: "ab2@6 c3@6 db3@5 ~ db2@4 ~@2",
  BK: "d2@4 d1 ~ f2@6 g2@5 ~ d2@3 ~@3", BL: "~@6 g2@4 eb1 ~ bb2@5 ~ eb3@4 ~@2, eb2@5 ~@7", BM: "ab2 ~@11",
  BN: "ab2@5 ~ ab2@4 ~@2 a1@6 e2@4 a1 ~", BO: "db2@6 b1@6 bb1@6 d2@5 ~", BP: "db2@6 c2@6 bb1@6 d2@5 ~",
  BQ: "db2@4 db1 ~ f2@6 gb2@5 ~ db2@3 ~@3", BR: "gb2@4 gb1 ~ bb2@6 b2@5 ~ gb2@3 ~@3", BS: "ab2@6 g2@6 f2@6 gb2@5 ~",
  BT: "f2@6 c2@4 f2 ~ ab2@6 eb2@4 ab2 ~", BU: "bb1@6 c2@6 d2@5 ~ b1@4 ~@2", BV: "eb2@6 db2@6 c2@6 b1@5 ~",
  BW: "bb1@5 ~ bb1@4 ~@2 eb2@5 ~ d2@5 ~", BX: "eb2@6 f2@6 g2@5 ~ e2@4 ~@2",
  BY: "~@6 e2@4 db1 ~ ab2@5 ~ db3@4 ~@2, db2@5 ~@7", BZ: "db2@6 eb2@6 e2@5 ~ d2@4 ~@2", CA: "db2@6 b1@6 bb1@6 eb2@5 ~",
  CB: "~@6 f2@4 d1 ~ ab2@5 ~ d3@4 ~@2, d2@5 ~@7", CC: "ab2@6 gb2@6 e2@6 d2@5 ~",
  CD: "eb2@3 ~@2 eb1 eb2@3 ~@2 eb1 gb2@6 db2@4 gb2 ~", CE: "ab2@6 bb2@6 c3@5 ~ b1@4 ~@2", CF: "ab2@6 gb2@6 f2@6 d2@5 ~",
  CG: "db2@6 eb2@6 e2@5 ~ a2@4 ~@2", CH: "~@5 eb1 e2@11 ~ f2@2 ~@4", CI: "bb1@6 c2@6 d2@5 ~ eb2@6",
  CJ: "~@4 d2@13 ~ eb2@2 ~@4", CK: "ab2@5 ~ ab2@3 ~ g2@3 ~@3 g2@7 ~", CL: "ab2@5 ~ a1@3 ~@2 a0 ab2@6 eb2@4 ab2 ~",
  CM: "ab2@3 ~@2 ab1 a1@5 ~ ab2@6 eb2@4 ab2 ~", CN: "ab2@6 bb2@6 c3@5 ~ gb2@4 ~@2",
  CO: "f2@3 ~@2 f1 e2@5 ~ f2@6 c2@4 f2 ~", CP: "bb1@3 ~@2 bb0 eb2@5 ~ db2@3 ~@2 db1 gb2@3 ~@2 gb1",
  CQ: "ab2@5 ~ ab2@4 ~@2 ab2@6 eb2@4 ab2 ~", CR: "d2@6 e2@6 f2@5 ~ a2@4 ~@2", CS: "ab2@5 ~ ab2@4 ~@2 ab2@5 ~ ab2@4 ~@2",
  CT: "db2@6 db2@4 db2 ~ eb2@5 ~ bb1@5 ~", CU: "a1@6 e2@4 a1 ~ bb1@6 f2@4 bb1 ~",
  CV: "bb1@3 ~@2 bb0 a1@3 ~@2 a0 bb1@6 f2@4 bb1 ~", CW: "eb2@5 ~ eb2@4 ~@2 bb1@6 f2@4 bb1 ~",
  CX: "bb1@6 ab1@6 g1@6 c2@5 ~", CY: "b1@6 db2@6 d2@5 ~ a2@4 ~@2", CZ: "ab2@5 ~ g2@3 ~@2 g1 ab2@5 ~ ab2@4 ~@2",
  DA: "d2@6 e2@6 f2@5 ~ eb2@4 ~@2", DB: "ab2@6 bb2@6 b2@5 ~ a2@4 ~@2", DC: "ab2@6 d2@4 ab2 ~ ab2@6 eb2@4 ab2 ~",
  DD: "db2@11 ~ d2@10 eb2@2", DE: "[~@5 ab2@25 ~@6]/3",
})).s("gm_acoustic_bass").gain(0.16).pan(0.4)

// chords · piano
const piano = note(`<
  A B C@2 D E C F G H I J K L M N A O P Q D R C S T U V W X Y Q Z X AA P@2 AB AC AD G@2 AE AF AG AH AI AJ AK AL AA AM AN
  AO AP AQ AR AS AT AU AV AW AX AY AZ BA BB BC P BD BE BF BG T BH Q BI BJ@2 ~ BK BL BM BN BO BP BQ BR BS BT BU AF BI AH
  BV BW ~ AL BX C BY BZ@2 CA CB CC CD C CE X AH CF BX AH CG CH CI AC CJ CD BH CK H Q CL T CM C Q CN B Q P BZ CO C BN T
  CP P AF AI CQ CR CS AI CT CU CV CW CX G CY G CZ CU DA DB DC Q@2 CC DD Q BN DE DF AS G T CL DG DH DI DJ DK DL DM DN P
  DO DP DQ DR DS CZ DT DU DV DW ~ DX DY@3
>`.pickRestart({
  A: "~@12 [ab3,eb4,g4,c5]@3 ~@2 [ab3,eb4,g4,c5]@2 ~@5", B: "~@4 [g3,db4,f4,c5] ~@7 [g3,db4,f4,c5]@11 ~",
  C: "~@4 [f3,c4,eb4,ab4] ~@7 [f3,c4,eb4,ab4]@11 ~", D: "~@18 gb3@4 eb4 ~, [eb4,bb4]@19 ~@5, ~@8 c3@3 ~",
  E: "e4@15 ~@5 ab4@2 c5 ~, [ab4,c5,ab5]@18 e4@5 ~, ab3@12 ~@4 ab3@7 ~", // Ab
  F: "~ db3@3 [f3,c4,eb4,ab4]@2 ~@7 db3@3 [f3,bb3,db4,ab4]@2 ~@6", // Fm7 Bbm7
  G: "bb3@15 ~@5 f4@2 ab4 ~, [f4,ab4,db5]@18 bb3@5 ~, f3@12 ~@4 f3@7 ~", // Db
  H: "~@5 f4 ab4@4 ~ d5@5 ~@2 [b3,f4,ab4,d5]@3 ~@3, b3@2 ~", I: "~@4 [f3,c4,eb4,ab4]@2 ~@6 [f3,f4,a4,e5]@11 ~",
  J: "~ [bb3,eb5]@3 bb3@2 ~@2 ab4 ~ eb5 ~@2 [a3,eb4,g4,eb5,c6]@4 ~@7, ab4@4 ~@3 e4@2 ~@3 g5@4 ~@8", // Eb5 Am7b5
  K: "~@4 [ab3,c4,d4,f4] ~@7 [ab3,c4,d4,f4]@11 ~", L: "[c3,c4,eb4,bb4]@11 ~@2 [g3,eb4,g4,eb5,b5]@4 ~@7, ~@3 g5 ~@2",
  M: "~@5 f4 ab4@4 ~ eb5@5 ~@2 [c4,f4,ab4,eb5]@3 ~@3, c4@2 ~", N: "~@12 [f3,c4,eb4,ab4]@3 ~@2 [f3,c4,eb4,ab4]@2 ~@5",
  O: "~@12 [g3,db4,f4,bb4]@3 ~@2 [g3,db4,f4,bb4]@2 ~@5", // Gm7b5
  P: "c4@15 ~@5 f4@2 ab4 ~, [f4,ab4,eb5]@18 c4@5 ~, f3@12 ~@4 f3@7 ~", // Fm7
  Q: "~@4 [f3,ab3,c4,eb4] ~@7 [f3,ab3,c4,eb4]@11 ~", R: "~@12 [c4,e4,ab4]@3 ~@2 [c4,e4,ab4]@2 ~@5, ~@12 c-1@5 c-1@6 ~",
  S: "~ db3@3 [f3,ab3,c4,eb4]@2 ~@7 [bb3,f4,ab4,f5,db6]@4 ~@7, ~@3 ab5 ~@2", // Fm7 Bbm7
  T: "~@18 bb3@4 ab4 ~, [ab4,db5]@19 ~@5, ~@8 f3@3 ~", U: "~@4 [f3,ab3,b3,d4] ~@7 [f3,ab3,b3,d4]@11 ~",
  V: "~ [c4,eb5]@3 c4@2 ~@2 ab4 ~ eb5 ~@2 g2@3 [f3,a3,b3,d4]@2 ~@6, ab4@4 ~@3 f4@2 ~@15", // Cm Bm7b5
  W: "~ [bb3,e4,ab4,e5,db6]@4 ~@8 [a3,eb4,g4,eb5,c6]@4 ~@7, ab5 ~@2 g5 ~@2", // Bbm7b5 Am7b5
  X: "ab3@15 ~@5 d4@2 g4 ~, [d4,g4,c5]@18 ab3@5 ~, d3@12 ~@4 d3@7 ~", // Csus2
  Y: "~ eb3@3 [g3,bb3,c4,eb4]@2 ~@6 [eb3,eb4,g4,eb5]@11 ~", Z: "[f3,c4,eb4,ab4] ~@5",
  AA: "~@18 g3@4 f4 ~, [f4,c5]@19 ~@5, ~@8 db3@3 ~", // F5
  AB: "c4@15 ~@5 gb4@2 bb4 ~, [gb4,bb4,f5]@18 c4@5 ~, gb3@12 ~@4 gb3@7 ~", // Gbmaj7
  AC: "~@12 [gb3,c4,f4,bb4]@3 ~@2 [gb3,c4,f4,bb4]@2 ~@5", // Gbmaj7
  AD: "~@3 [f3,bb3,db4,ab4]@2 ~@4 [g3,db4,e4,bb4]@2 ~ [gb3,c4,eb4,bb4]@4 ~@2 [gb3,bb3,c4,eb4]@4 ~@2", // Bbm7 Gdim Cm7b5
  AE: "~@4 [e3,bb3,eb4,ab4] ~@7 [e3,bb3,eb4,ab4]@11 ~", AF: "~@12 [f3,ab3,c4,eb4]@3 ~@2 [f3,ab3,c4,eb4]@2 ~@5",
  AG: "~@12 [a3,d4,eb4,g4]@3 ~@2 [a3,d4,eb4,g4]@2 ~@5", AH: "~@4 [ab3,d4,g4,c5] ~@7 [ab3,d4,g4,c5]@11 ~",
  AI: "~@12 [ab3,c4,d4,g4]@3 ~@2 [ab3,c4,d4,g4]@2 ~@5", // Abmaj7
  AJ: "[g3,db4,eb4,bb4]@4 ~@5 [gb3,c4,eb4,a4]@2 ~ [a3,db4,f4,bb4]@4 ~@2 [g3,db4,f4,c5]@4 ~@2", // Eb7 Gbdim Bbm Csus4
  AK: "g3@15 ~@5 db4@2 f4 ~, [db4,f4,c5]@18 g3@5 ~, db3@12 ~@4 db3@7 ~", // Dbmaj7
  AL: "~@12 [ab3,d4,g4,c5]@3 ~@2 [ab3,d4,g4,c5]@2 ~@5", // Abmaj7
  AM: "[f3,f4,ab4,eb5]@3 ~@2 ab2 [f4,ab4,eb5]@10 ~@2 f4@2 ab4@2 eb5 ~, ~@8 c4@3 ~", // Fm7
  AN: "[f3,c4,f4,eb5]@4 [f3,c4,f4,ab4] ~@5 [c4,f4,eb5]@6 ab2 ~ [f3,c4,f4,ab4]@3 ~@3, ~@10 f3@5 ~@9", // F7 Fm F7 Fm
  AO: "~@4 [gb3,bb3,c4,f4] ~@5 ab2 ~ [gb3,bb3,c4,f4]@11 ab2", // Gbmaj7
  AP: "~ [gb3,bb3,c4,f4]@4 [gb3,bb3,c4,f4] ~@5 [gb3,bb3,c4,f4]@6 ab2 [gb3,bb3,c4,f4]@2 ~@4", // Gbmaj7
  AQ: "[f3,bb3,db4,ab4]@2 ~ [g3,db4,e4,bb4]@2 ~ [gb3,c4,eb4,bb4]@2 ~ [gb3,c4,f4,bb4]@2 ~", // Bbm7 Gdim Cm7b5 Gbmaj7
  AR: "[f3,f4,ab4,db5]@11 ~@5 [f3,b3,eb4,bb4]@2 ~@6", AS: "~@4 [f3,ab3,bb3,db4] ~@7 [f3,ab3,bb3,db4]@11 ~",
  AT: "~@12 [f3,b3,d4,ab4]@3 ~@2 [f3,b3,d4,ab4]@2 ~@5", // Fdim
  AU: "ab4@2 ~@3 [e3,g3,b3,d4]@6 ~@4 [eb3,bb3,db4,gb4]@2 ~ [eb3,g3,a3,d4]@4 ~@2", // Em7 Ebm7 Ebmaj7
  AV: "~@4 [eb3,a3,d4,g4] ~@7 [eb3,a3,d4,g4]@11 ~", AW: "~@18 ab3@4 f4 ~, [f4,c5]@19 ~@5, ~@8 d3@3 ~",
  AX: "~@12 [g3,c4,db4,f4]@3 ~@2 [g3,c4,db4,f4]@2 ~@5", // Csus4
  AY: "~ [c4,g4,bb4,g5,eb6]@4 ~@7 [f3,c4,eb4,ab4]@4 ~@2 [f3,bb3,db4,ab4]@3 ~@3, bb5 ~@5", // Cm7 Fm7 Bbm7
  AZ: "~@4 [db3,db4]@13 ~ [bb2,bb3]@2 ~@4", BA: "f4@2 d4 bb3 ~ f3 [ab3,d4,g4,c5]@4 ~@2 f4@2 d4 bb3 ~ f3 ~@6",
  BB: "~@4 [bb2,bb3]@13 ~ [bb2,bb3]@2 ~@4", // Bb
  BC: "[f3,b3,eb4,ab4]@2 ~ [f3,ab3,c4,eb4]@2 ~ [f3,b3,eb4,ab4]@2 ~ [f3,c4,eb4,ab4]@2 ~", // Fm7b5 Fm7 Fm7b5 Fm7
  BD: "[gb3,gb4,bb4,eb5]@3 ~@2 ab2 [gb4,bb4,eb5]@10 ~@2 gb4@2 bb4@2 eb5 ~, ~@8 c4@3 ~", // Ebm
  BE: "[gb3,c4,gb4,eb5]@4 [gb3,c4,gb4,bb4] ~@5 [c4,gb4,eb5]@6 ab2 ~ [gb3,c4,gb4,bb4]@3 ~@3, ~@10 gb3@5 ~@9", // Cdim Cm7b5 Cdim Cm7b5
  BF: "[f3,ab3,bb3,db4]@23 ~", // Bbm7
  BG: "[f3,ab3,bb3,db4]@3 ~@2 [f3,ab3,bb3,db4]@2 ~@3 [f3,ab3,bb3,db4]@5 ~ db2 ~ [f3,ab3,bb3,db4]@3 ~@3", // Bbm7
  BH: "~@18 bb3@4 ab4 ~, [ab4,db5]@19 ~@5, ~@8 e3@3 ~", BI: "~@18 a3@4 g4 ~, [g4,d5]@19 ~@5, ~@8 eb3@3 ~",
  BJ: "[~@12 [ab3,d4,f4,c5]@3 ~@2 [ab3,d4,f4,c5]@2 ~@3 [ab3,d4,f4,c5]@12 ~@2 [ab3,d4,f4,c5]@4 ~ bb2 [ab3,d4,f4,c5]@2 ~@4]/2", // Dm7b5
  BK: "~@5 [g3,c4,db4,f4] ~@7 [g3,c4,db4,f4]@3 ~ eb3 ~ [g3,c4,db4,f4]@2 ~@3", // Csus4
  BL: "[ab3,c4,d4,g4]@2 ~ [g3,db4,gb4,b4]@2 ~ [ab3,c4,d4,g4]@2 ~ [g3,b3,db4,e4]@2 ~", // Abmaj7 Gmaj7 Abmaj7 Dbm7b5
  BM: "[ab3,c4,db4,f4]@4 ~@5 [g3,c4,e4,b4]@2 ~ [ab3,db4,f4,bb4]@4 ~@2 [e3,b3,d4,g4]@4 ~@2", // Dbmaj7 Cmaj7 Bbm7 Em7
  BN: "~@18 c4@4 ab4 ~, [ab4,eb5]@19 ~@5, ~@8 f3@3 ~", // Ab5
  BO: "[f3,f4,ab4,eb5]@11 ~ [f3,c4,eb4,ab4]@4 ~@2 gb4@2 db4 b3 ~ g3", // Fm7
  BP: "~@4 [gb3,bb3,c4,f4] ~@7 [gb3,bb3,c4,f4]@11 ~", // Gbmaj7
  BQ: "~ [bb3,eb4,gb4,eb5,db6]@4 ~@7 [gb3,gb4,bb4,f5]@11 ~, gb5 ~@5", // Ebm7 Gbmaj7
  BR: "[f3,f4,ab4,eb5]@3 ~@2 db3 [f4,ab4,eb5]@10 ~@2 f4@2 ab4@2 eb5 ~, ~@8 b3@3 ~", // Fm7
  BS: "[f3,b3,f4,eb5]@4 [f3,b3,f4,ab4] ~@5 [b3,f4,eb5]@6 db3 ~ [f3,b3,f4,ab4]@3 ~@3, ~@10 f3@5 ~@9", // Fm7b5 Fdim Fm7b5 Fdim
  BT: "~@4 [f3,bb3,db4,ab4] ~@7 [f3,bb3,db4,ab4]@11 ~", BU: "~@12 [f3,ab3,b3,d4]@3 ~@2 [f3,ab3,b3,d4]@2 ~@5",
  BV: "~@18 g3@4 f4 ~, [f4,bb4]@19 ~@5, ~@8 db3@3 ~", BW: "[f3,c4,eb4,ab4] ~@11",
  BX: "~@12 [g3,db4,f4,c5]@3 ~@2 [g3,db4,f4,c5]@2 ~@5", BY: "~@4 [f3,ab3,c4,eb4]@2 ~@6 [db3,db4,gb4,b4]@11 ~",
  BZ: "~@4 [gb3,c4,f4,bb4] ~@7 [gb3,c4,f4,bb4]@11 ~", CA: "~@4 [f3,b3,eb4,bb4] ~@7 [f3,b3,eb4,bb4]@11 ~",
  CB: "~@5 f4 ab4@4 ~ db5@5 ~@2 [bb3,f4,ab4,db5]@3 ~@3, bb3@2 ~", // Bbm7
  CC: "~@12 [f3,bb3,db4,ab4]@3 ~@2 [f3,bb3,db4,ab4]@2 ~@5", // Bbm7
  CD: "bb3@15 ~@5 e4@2 ab4 ~, [e4,ab4,db5]@18 bb3@5 ~, e3@12 ~@4 e3@7 ~", // Dbm
  CE: "[eb3,eb4,f4,c5]@11 ~@5 [f3,c4,eb4,ab4]@2 ~@6", CF: "~@18 ab3@4 f4 ~, [f4,c5]@19 ~@5, ~@8 db3@3 ~",
  CG: "~ ab3@3 ab3@2 db4@2 f4 ~ c5 ~ [g3,bb3,db4,f4]@4 ~@2 [gb3,b3,e4,a4]@4 ~@2, [f4,c5] ~@5", // Gm7b5 Gbm7 F5
  CH: "g3@15 ~@5 c4@2 f4 ~, [c4,f4,bb4]@18 g3@5 ~, c3@12 ~@4 c3@7 ~", CI: "~@18 g3@4 f4 ~, [f4,bb4]@19 ~@5, ~@8 c3@3 ~",
  CJ: "~@4 [gb3,c4,e4,a4] ~@7 [gb3,c4,e4,a4]@11 ~", CK: "~@12 [e3,bb3,db4,ab4]@3 ~@2 [e3,bb3,db4,ab4]@2 ~@5",
  CL: "~@18 b3@4 ab4 ~, [ab4,d5]@19 ~@5, ~@8 f3@3 ~", // Abdim
  CM: "~@3 [g3,eb4,b4]@2 ~ [g3,db4,eb4,bb4]@4 ~@3 gb2@3 [bb3,db4,e4,ab4]@2 ~@6, ~ c-1@2 ~@5", // Gaug Eb7 Bbm7b5
  CN: "~@12 [ab3,db4,f4,c5]@3 ~@2 [ab3,db4,f4,c5]@2 ~@5", CO: "~@18 c4@4 ab4 ~, [ab4,e5]@19 ~@5, ~@8 gb3@3 ~",
  CP: "~@12 [e3,ab3,bb3,db4]@3 ~@2 [e3,ab3,bb3,db4]@2 ~@5", CQ: "~@18 ab3@4 g4 ~, [g4,c5]@19 ~@5, ~@8 d3@3 ~",
  CR: "~@18 g3@4 eb4 ~, [eb4,c5]@19 ~@5, ~@8 db3@3 ~", CS: "~@6 [e2,e3]@11 ~ [f2,f3]@2 ~@4",
  CT: "~@4 [d2,d3]@13 ~ [eb2,eb3]@2 ~@4", CU: "~@4 [c4,f4,ab4,eb5] ~@7 [c4,f4,ab4,eb5]@11 ~",
  CV: "[f3,f4,ab4,eb5]@9 ~@7 [b3,d4,f4,a4]@8", // Fm7 Bm7b5
  CW: "~@3 [c4,gb4,bb4,eb5]@2 ~ [db4,gb4,g4,b4]@4 ~@3 ab2@3 [c4,f4,gb4,bb4]@2 ~@6", // Cm7b5 Gbsus4 Fsus4
  CX: "[c4,f4,gb4,bb4]@4 ~@2 [db4,e4,g4,b4]@4 ~@3 [c4,gb4,bb4,eb6]@4 ~@7, ~@3 [gb5,bb5] ~@2", // Fsus4 Dbm7b5 Cm7b5 Gb
  CY: "~@12 [bb3,db4,f4,ab4]@3 ~@2 [bb3,db4,f4,ab4]@2 ~@5", CZ: "~@12 [b3,d4,f4,ab4]@3 ~@2 [b3,d4,f4,ab4]@2 ~@5",
  DA: "f4@2 eb4 d4 ~ a3 ~@3 [ab3,d4,e4,b4]@2 ~@2 [a3,eb4,g4,c6]@4 ~@7, ~@3 [eb5,g5] ~@2", // E7 Am7b5 Eb
  DB: "~@4 [ab3,d4,f4,c5] ~@7 [ab3,d4,f4,c5]@11 ~", // Dm7b5
  DC: "f4@2 db4 bb3 ~ ab3 [g3,eb4,b4]@4 ~@2 [f3,ab3,bb3,db4]@4 ~@5 [e3,bb3,db4,ab4]@2 ~, ~ c-1 ~@2", // Gaug Bbm7 Bbm7b5
  DD: "~@5 db4 f4@4 ~ bb4@5 ~@2 [g3,db4,f4,bb4]@3 ~@3, g3@2 ~", DE: "~@18 c4@4 bb4 ~, [bb4,eb5]@19 ~@5, ~@8 gb3@3 ~",
  DF: "~ ab2@3 [gb3,ab3,c4,eb4]@2 ~@7 c4@3 c4@2 ab4@2 c5 ~ e5 ~, ~@3 [c5,e5] ~@2", // Ab7 C
  DG: "~ ab2@3 [g3,bb3,c4,eb4]@2 ~@10 [f3,c4,eb4,ab4]@2 ~@6", // Cm7 Fm7
  DH: "[f3,f4,ab4,d5]@11 ~ [gb3,c4,eb4,a4]@4 ~@2 [ab3,d4,g4,c5]@4 ~@2", // Ddim Gbdim Abmaj7
  DI: "~ a2@3 [g3,db4,e4,b4]@2 ~@7 bb2@3 [ab3,d4,f4,c5]@2 ~@6", // Dbm7b5 Dm7b5
  DJ: "[ab3,c4,d4,g4]@4 ~@5 [g3,db4,gb4,b4]@2 ~@2 [ab3,d4,g4,c6]@4 ~@7, ~@3 [d5,g5] ~@2", // Abmaj7 Gmaj7 Abmaj7 G5
  DK: "~@5 db4 eb4@4 ~ c5@5 ~@2 [g3,db4,eb4,c5]@3 ~@3, g3@2 ~", DL: "[db3,db4,eb4,c5]@11 ~ [d3,d4,f4,bb4]@11 ~",
  DM: "ab3@15 ~@5 db4@2 f4 ~, [db4,f4,bb4]@18 ab3@5 ~, db3@12 ~@4 db3@7 ~", // Bbm
  DN: "~@12 [ab3,d4,f4,b4]@3 ~@2 [ab3,d4,f4,b4]@2 ~@5", // Abdim
  DO: "[c4,eb4,f4,ab4]@4 ~@2 [b3,d4,e4,g4]@4 ~@3 [c4,f4,ab4,eb6]@4 ~@7, ~@3 [f5,ab5] ~@2", // Fm7 Em7 Fm7 Fm
  DP: "~@5 gb4 ab4@4 ~ eb5@5 ~@2 [c4,gb4,ab4,eb5]@3 ~@3, c4@2 ~", // Ab7
  DQ: "~@4 [c4,ab4,e5] ~@7 [c4,ab4,e5]@11 ~, ~@2 c-1@3 ~ c-1@3 ~@3", // Caug
  DR: "~@4 [bb3,db4,f4,ab4] ~@7 [bb3,db4,f4,ab4]@11 ~", DS: "bb3 ~ bb3 ~ bb3 ~ bb3@2 ~@2 bb3@7 ~@7",
  DT: "~@4 [b3,d4,f4,ab4] ~@7 [b3,d4,f4,ab4]@11 ~", DU: "~@5 f4 ab4@4 ~ eb5@5 ~@2 [b3,f4,ab4,eb5]@3 ~@3, b3@2 ~",
  DV: "[f3,f4,ab4,d5]@11 ~ [gb3,gb4,ab4,eb5]@11 ~", DW: "[db2,db3]@11 ~ [d2,d3]@10 [eb2,eb3]@2",
  DX: "~@4 d3@2 ~@4 db3@2 c3@3 ~ b2@2 bb2@3 ~ a2@2", DY: "[ab2@3 ~@7 [ab2,c3,eb3,ab3,c4,eb4,f4,f5]@50 ~@12]/3",
})).s("gm_piano").gain(0.2).pan(0.6)

// chords · piano · soft notes
const piano_soft = note(`<
  ~@4 A ~@4 B C D ~ E F ~@5 A ~@3 G ~ H ~@2 C ~@3 I ~@15 I J ~@4 K ~@4 L ~@7 M ~@3 G N ~ O ~@6 P Q ~ R S ~@4 O ~ I ~@5 T
  ~@3 U ~@3 V ~@2 W ~@2 X ~ Y ~@3 Z ~ B ~ AA AB ~@8 AC ~ AD AB ~@4 AE AF ~@4 AG ~@13 AH ~ AD AC AI ~@2 AB AA ~ AJ ~@2 AH
  AK ~@4 F ~@5 F AL ~@6
>`.pickRestart({
  A: "~ c4@18 ~ c4@2 ~@2, ~ gb3@16 ~@7, ~ c3@13 ~@10", B: "~@17 d3 ~@6", C: "~@12 b3@11 ~", D: "e4 ~@5",
  E: "g3@11 ~@13", F: "~@17 ab2 ~@6", G: "~ f4@18 ~ f4@2 ~@2, ~ bb3@16 ~@7, ~ f3@13 ~@10", H: "f4 ~@5",
  I: "~ db4@18 ~ db4@2 ~@2, ~ g3@16 ~@7, ~ db3@13 ~@10", J: "c4@3 ~@3 f3@17 ~, ~@3 c4@4 ~@5", K: "bb3@11 ~@13",
  L: "~ d4@18 ~ d4@2 ~@2, ~ ab3@16 ~@7, ~ d3@13 ~@10", M: "c4@3 ~@3 gb3@17 ~, ~@3 c4@4 ~@5",
  N: "~ e4@18 ~ e4@2 ~@2, ~ bb3@16 ~@7, ~ e3@13 ~@10", O: "~ eb4@18 ~ eb4@2 ~@2, ~ a3@16 ~@7, ~ eb3@13 ~@10",
  P: "~ f4@18 ~ f4@2 ~@2, ~ c4@16 ~@7, ~ f3@13 ~@10", Q: "c4@11 ~@13", R: "~@12 c4@11 ~",
  S: "b3@3 ~@3 f3@17 ~, ~@3 b3@4 ~@5", T: "~@12 g3@11 ~", U: "~@17 db3 ~@6", V: "ab3@11 ~@13",
  W: "~ ab3@16 ~@3 db4@2 ~@2, db4@3 ~, ~ db3@13 ~@10", X: "db4 ~@5", Y: "~ g3@16 ~@3 c4@2 ~@2, c4@3 ~, ~ c3@13 ~@10",
  Z: "~ bb3@16 ~@3 e4@2 ~@2, e4@3 ~, ~ e3@13 ~@10", AA: "~ b3@16 ~@3 f4@2 ~@2, f4@3 ~, ~ f3@13 ~@10",
  AB: "~ bb3@16 ~@3 f4@2 ~@2, f4@3 ~, ~ f3@13 ~@10", AC: "~ c4@16 ~@3 gb4@2 ~@2, gb4@3 ~, ~ gb3@13 ~@10",
  AD: "~ c4@16 ~@3 f4@2 ~@2, f4@3 ~, ~ f3@13 ~@10", AE: "~ ab3@16 ~@3 d4@2 ~@2, d4@3 ~, ~ d3@13 ~@10",
  AF: "~ g3@16 ~@3 db4@2 ~@2, db4@3 ~, ~ db3@13 ~@10", AG: "c4@3 ~@5", AH: "~@17 eb2 ~@6", AI: "~@3 ab4 ~@2",
  AJ: "b3@11 ~@13", AK: "g3@11 ~ ab3@11 ~", AL: "b3@11 ~ c4@11 ~",
})).s("gm_piano").gain(0.13).pan(0.6)

// other · alto sax
const alto_sax = note(`<
  ~@26 A B ~@3 C@8 D@8 E@8 F@8 G ~ H ~ I J ~@10 K L M@2 N ~@10 O P Q R S T U V W X@3 Y Z AA AB AC AD AE AF AG AH AI AJ@2
  ~ AK AL AK AL AM AN@2 ~@16 AO ~ AP ~@6 AQ AR AS AT AU AV ~ AW AX AY AZ BA BB@3 BC BD BE BF BG BH BI@2 ~@2 BJ BK BL BM
  BN BO BP BQ BR BQ BS BT BU ~ BV@3
>`.pickRestart({
  A: "eb4@10 ~ [g4,ab4] a4@12", B: "ab4 ~",
  C: "[~@6 g3@4 eb3 ~ f3@4 g3@2 ~@4 ab3@31 ~ g3@4 eb3 ~ f3@4 g3@2 ~@4 ab3@31 ~ g3@4 eb3 ~ f3@4 g3@2 ~@4 ab3@31 ~ bb3@4 gb3 ~ ab3@4 bb3@2 ~@4 c4@26]/8",
  D: "[~@6 bb3@4 gb3 ~ ab3@4 bb3@2 ~@4 f3@31 ~ ab3@4 bb3@8 ab3@4 c4@31 ~ g3@4 eb3 ~ f3@4 g3@2 ~@4 ab3@31 ~ ab3@4 c4@8 ab3@4 eb3@26]/8",
// … 690 more lines

More by Basie