Strudelify

Freckle Face

Basie

KeyG minorTempo120 bpm
0:00/0:00
// Freckle Face — Basie
// 120 bpm, 4/4, key G minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 173 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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 · "Jazz Bass"
const bass = note(`<
  ~@7 A B C D E F G H I J K L A M N O P Q R S F T U V W X Y Z P AA AB AC AD AE AF H AG AH AI AJ AK AL AM ~ E AN AO O A B
  G AP A AN AQ O A AA G K AR AS AT AU AV AW AE AX E B AQ O E AY AZ H BA BB AO O P M AB AJ A AA BC BD BE M BF BG I B BH L
  BI M BJ BK AR T BL BM BN BO A BP A AA K BQ A BR BS O BT BU BV BP BW BX G BY A B AO BZ CA CB CC BY I AN CD CE CF CG CH
  CI CJ G CK CL CM I M CN A B G CN P B CO CP AG CQ CR CS CT ~ CU@2 CV ~
>`.pickRestart({
  A: "c2@4 c1 ~ eb2@6 f2@5 ~ c2@3 ~@3", B: "~@6 a2@4 f1 ~ c3@5 ~ f3@4 ~@2, f2@5 ~@7",
  C: "bb1@5 ~ bb1@4 ~@2 bb1@3 ~@2 bb0 eb2@5 ~", D: "d2@3 ~@2 d1 bb1@3 ~@2 bb0 bb1@5 ~ bb1@4 ~@2",
  E: "c2@6 d2@6 eb2@5 ~ gb2@4 ~@2", F: "f2@6 eb2@6 d2@6 b1@5 ~", G: "bb1@4 bb0 ~ d2@6 eb2@5 ~ bb1@3 ~@3",
  H: "g2@6 f2@6 e2@6 db2@5 ~", I: "c2@6 bb1@6 a1@6 gb2@5 ~", J: "f2@6 c2@4 f2@2 f2@5 ~ f2@4 ~@2",
  K: "~@6 d2@4 bb0 ~ f2@5 ~ bb2@4 ~@2, bb1@5 ~@7", L: "db2@4 db1 ~ e2@6 gb2@5 ~ db2@3 ~@3",
  M: "f2@4 f1 ~ a2@6 bb2@5 ~ f2@3 ~@3", N: "bb1@6 a1@6 g1@6 ab2@5 ~", O: "~@6 b2@4 g1 ~ d3@5 ~ g3@4 ~@2, g2@5 ~@7",
  P: "~@6 eb2@4 c1 ~ g2@5 ~ c3@4 ~@2, c2@5 ~@7", Q: "f2@6 c2@4 f2@2 f2@3 ~@2 f1 f2@3 ~@2 f1",
  R: "bb1@3 ~@2 bb0 bb1@3 ~@2 bb0 e2@3 ~@2 e1 bb1@3 ~@2 bb0", S: "bb1@5 ~ bb1@4 ~@2 gb2@2 db3 ~ d3 ~ [eb3,a3]@4 ~@2",
  T: "bb1@6 c2@6 d2@5 ~ e2@4 ~@2", U: "eb2@6 d2@6 c2@6 eb2@5 ~", V: "d2@6 a2@4 d2@2 d2@2 e3 ~ f3 ~ [gb3,c4]@4 ~@2",
  W: "g2@5 ~ g2@4 ~@2 g2@5 ~ g2@4 ~@2", X: "c2@6 g1@4 c2@2 b1@5 ~ c2@5 ~", Y: "c2@5 ~ c2@4 ~@2 gb2@5 ~ gb2@4 ~@2",
  Z: "f2@5 ~ db2@3 ~@2 db1 db2@5 ~ db2@4 ~@2", AA: "f2@6 g2@6 a2@5 ~ b1@4 ~@2", AB: "bb1@6 c2@6 d2@5 ~ d2@4 ~@2",
  AC: "db2@6 g2@4 db2@2 db2@5 ~ c2@5 ~", AD: "c2@5 ~ b1@3 ~@2 b0 c2@3 ~@2 f2@6 ~", AE: "f2@6 eb2@6 d2@6 eb2@5 ~",
  AF: "d2@6 eb2@6 f2@5 ~ ab2@4 ~@2", AG: "e2@6 e2@4 e1 ~ g2@5 ~ e3@4 ~@2",
  AH: "eb2@5 ~ eb2@3 ~@2 eb1 eb2@6 bb1@4 eb2@2", AI: "d2@5 ~ d2@4 ~@2 bb1@5 ~ bb1@4 ~@2", AJ: "db2@6 b1@6 a1@6 db2@5 ~",
  AK: "c2@6 bb1@6 a1@6 db2@5 ~", AL: "f2@3 f2@2 f2 f2@3 f2@2 f2",
  AM: "bb2@5 ~ f2@3 ~@3 e2@4 eb2@3 ~@3 d2@2, ~@5 bb1@2 ~@17", AN: "f2@6 g2@6 a2@5 ~ eb2@4 ~@2",
  AO: "d2@6 c2@6 b1@6 ab2@5 ~", AP: "b1@6 a1@6 g1@6 db2@5 ~", AQ: "d2@4 d1 ~ f2@6 g2@5 ~ d2@3 ~@3",
  AR: "f2@6 g2@6 ab2@5 ~ b1@4 ~@2", AS: "bb1@6 ab1@6 g1@6 e2@5 ~", AT: "eb2@6 g2@5 eb2 ab2@5 ~ a2@5 ~",
  AU: "bb2@5 eb2 d3@5 eb2 eb3@2 ~@2 bb2 ~@2 eb2@3 ~@2", AV: "g2@4 g1 ~ bb2@6 c3@5 ~ g2@3 ~@3",
  AW: "c2@6 d2@6 e2@5 ~ gb2@4 ~@2", AX: "d2@6 a1@4 d2@2 db2@2 eb3 ~ e3 ~ [e3,b3]@4 ~@2",
  AY: "f2@6 g2@6 a2@5 ~ a2@4 ~@2", AZ: "ab2@6 gb2@6 f2@6 ab2@5 ~", BA: "c2@6 d2@6 eb2@5 ~ e2@4 ~@2",
  BB: "~@6 gb2@4 eb1 ~ bb2@5 ~ eb3@4 ~@2, eb2@5 ~@7", BC: "bb1@6 c2@6 d2@5 ~ ab2@4 ~@2", BD: "g2@6 f2@6 e2@6 c2@5 ~",
  BE: "b1@5 ~ c2@5 ~ c2@6 g2@4 c2@2", BF: "bb1@5 ~ c2@3 ~@2 c1 d2@5 ~ bb1@5 ~", BG: "b1@4 b0 ~ d2@6 e2@5 ~ b1@3 ~@3",
  BH: "a1@3 ~@2 a0 bb1@5 ~ bb1@6 f2@4 bb1@2", BI: "c2@5 ~ b1@5 ~ c2@2 d3 ~ eb3 ~ [eb3,bb3]@4 ~@2",
  BJ: "bb1@5 ~ bb1@4 ~@2 bb1@6 f2@4 bb1@2", BK: "bb1@6 f2@4 bb1@2 e2@5 ~ e2@4 ~@2", BL: "eb2@6 f2@6 g2@5 ~ eb2@4 ~@2",
  BM: "d2@6 a2@4 d2@2 d2@3 ~@2 d1 d2@3 ~@2 d1", BN: "g2@3 d2@2 g2 g2@3 d2@2 g2",
  BO: "~@6 e2@4 c1 ~ g2@5 ~ c3@4 ~@2, c2@5 ~@7", BP: "~@6 e2@4 db1 ~ g2@5 ~ db3@4 ~@2, db2@5 ~@7",
  BQ: "d2@5 ~ d2@4 ~@2 db2@5 ~ db2@4 ~@2", BR: "c2@5 ~ c2@4 ~@2 c2@5 ~ f2@3 ~@2 f1", BS: "d2@6 c2@6 bb1@6 ab2@5 ~",
  BT: "e2@6 d2@6 e2@5 ~ e2@4 ~@2", BU: "eb2@6 db2@6 c2@6 eb2@5 ~",
  BV: "d2@5 ~ d2@4 ~@2 bb1@2 c3 ~ db3 ~ [d3,bb3]@4 ~@2", BW: "c2@5 ~ c2@4 ~@2 b1@3 ~@2 b0 c2@5 ~",
  BX: "f2@6 f2@4 f2@2 f2@3 ~@2 f1 f2@3 ~@2 f1", BY: "~@6 d2@4 b0 ~ f2@5 ~ b2@4 ~@2, b1@5 ~@7",
  BZ: "g2@6 d2@4 g2@2 g2@3 ~@2 g1 g2@5 ~", CA: "c2@5 ~ c2@3 ~@2 c1 c2@3 ~@2 c1 c2@5 ~",
  CB: "f2@6 f2@4 f2@2 f2@5 ~ f2@3 ~@2 f1", CC: "bb1@5 ~ bb1@4 ~@2 bb1@2 c3 ~ db3 ~ [d3,a3]@4 ~@2",
  CD: "~@6 f2@4 d1 ~ a2@5 ~ d3@4 ~@2, d2@5 ~@7", CE: "g2@5 ~ g2@4 ~@2 g2@3 ~@2 g1 g2@3 ~@2 g1",
  CF: "c2@5 ~ c2@3 ~@2 c1 c2@5 ~ c2@5 ~", CG: "f2@5 ~ f2@4 ~@2 f2@5 ~ f2@5 ~",
  CH: "bb1@5 ~ bb1@4 ~@2 e2@3 ~@2 e1 bb1@3 ~@2 bb0", CI: "d2@5 ~ bb1@4 ~@2 gb2@5 ~ gb2@5 ~",
  CJ: "f2@4 f1 ~ ab2@6 bb2@5 ~ f2@3 ~@3", CK: "g3@5 ~ gb3@5 ~ f3@4 eb1 ~ e3@5 ~",
  CL: "eb3@2 bb2 ~ g2 ~ f2@6 eb2@6 ab2@5 ~", CM: "g2@6 a2@6 bb2@5 ~ db2@4 ~@2", CN: "db2@6 eb2@6 e2@5 ~ db2@4 ~@2",
  CO: "~@6 f2@4 d1 ~ ab2@5 ~ d3@4 ~@2, d2@5 ~@7", CP: "g2@4 g1 ~ b2@6 c3@5 ~ g2@3 ~@3",
  CQ: "eb2@5 ~ eb2@4 ~@2 eb2@2 f3 ~ gb3 ~ [gb3,db4]@4 ~@2", CR: "d2@3 ab2@2 d2 ab2@3 eb2@2 ab2",
  CS: "g2@5 ~ g2@4 ~@2 db2@5 ~ db2@4 ~@2", CT: "c2@5 ~ c2@4 ~@2 c2@3 ~@3 c3@4 f2@2",
  CU: "[~@6 f2@4 ~@2 e2@4 eb2@31 ~]/2", CV: "bb1 ~@11",
})).s("gm_acoustic_bass").gain(0.25).pan(0.4)

// chords · piano
const piano = note(`<
  ~ A B C D ~ E F G H ~ I J K L M J N ~ O P Q R S T U V W X Y Z AA AB@2 AC AD AC AE 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 BD BE BF W X BG BH BI BJ BK BL BM BN BO BB BP BQ BR BB BS BT BU R BS BV AW BW
  BX BY BZ CA CB CC CD CE AY CF CG CH CI CJ CK CL CM CN CO CP CQ CR BM CS BS CT CU CV AQ CW CX R CY CZ DA DB DC DD DE DF
  DG AG DH DI DJ DK DL DM DN DO BO DP DQ DR DS DT DU DV DW DX DY DZ EA@2 EB EC ED EE BP EF CX EG CY EH EI EJ EK EL ~@2
  EM@2
>`.pickRestart({
  A: "~@6 e5@3 ~@3 e6@4 e5@2 ~@6", B: "e5@3 ~@3 e6@4 e5@14", C: "~@6 g5@3 ~@3 g6@4 g5@2 ~@6", D: "g5@3 ~@3 g6@4 g5@14",
  E: "f6 g6 [f6,g6] f6 g6 [f6,g6] f6 g6 [f6,g6] f6 g6 [f6,g6] f6 g6 [f6,g6] f6 g6 [f6,g6] f6 g6 [f6,g6] f6 g6 [f6,g6]", // Fsus2
  F: "~@2 g3 c4 ~@2 g4@2 c4 g3@2 c4", G: "a3@2 g4 a3@2 f4 ~@5 db4", H: "d4@2 f3@7 ~@3",
  I: "~@3 [c4,eb4]@2 [d4,f4] [eb4,g4]@2 [c4,eb4] g3@2 bb3", J: "a3", K: "~@3 f3 bb3 d4 g4@2 f4 a3@2 bb3", L: "[f3,b3]",
  M: "c4@5 ~ c4@5 ~ bb3@5 ~ bb3@5 ~", N: "~@6 d4@4 g4@2 [d4,f4]@4 [c4,eb4]@3 ~@3 [bb3,d4]@2, ~@6 db4 ~@17",
  O: "~@4 [eb3,g3,bb3,d4] ~@7 [eb3,g3,bb3,d4]@11 ~", // Ebmaj7
  P: "~ a3@15 ~@4 eb4@2 gb4 ~, [gb4,c5]@9 a3@2 ~, ~ eb4@18 ~@5, ~ eb3@14 ~ eb3@6 ~@2", // Gbdim
  Q: "a3@15 ~@5 d4@2 f4 ~, [d4,f4,c5]@18 a3@5 ~, d3@12 ~@4 d3@7 ~", R: "~@4 [f3,b3,eb4,ab4] ~@7 [f3,b3,eb4,ab4]@11 ~",
  S: "bb3@15 ~@5 eb4@2 g4 ~, [eb4,g4,d5]@18 bb3@5 ~, eb3@12 ~@4 eb3@7 ~", // Ebmaj7
  T: "~@2 [eb3,g3,a3,c4] ~@3 [eb3,a3,b3,d4,g4]@2 ~ [g3,bb3,db4,e4]@2 ~", // Am7b5 G Gdim
  U: "[d4,f4,bb4]@2 ~ [ab3,bb3,d4,f4]@2 ~ [g3,db4,e4,bb4]@2 ~ [gb3,c4,eb4,bb4]@2 ~", // Bb Bb7 Gdim Cm7b5
  V: "~ bb2@4 [d4,f4,bb4]@2 ~@6 gb3@4 [a3,eb4,ab4,db5]@2 ~@5", // Bb Amaj7
  W: "ab3@15 ~@5 eb4@2 g4 ~, [eb4,g4,c5]@18 ab3@5 ~, eb3@12 ~@4 eb3@7 ~", // Cm
  X: "~@4 [ab3,d4,gb4,b4] ~@7 [ab3,d4,gb4,b4]@11 ~", Y: "~@12 [g3,c4,f4,bb4]@3 ~@2 [g3,c4,f4,bb4]@2 ~@5",
  Z: "~ [c4,gb4,bb4,gb5,eb6]@4 ~@11 [gb3,bb3,c4,eb4]@2 ~@6, bb5 ~@5", // Cm7b5
  AA: "~@4 [gb3,bb3,d4,a4]@2 ~@6 [f3,bb3,f4,g4,d5]@11 ~", // D Gm7
  AB: "[[e3,bb3,e4,g4,d5]@11 ~ [a3,eb4,ab4,db5]@4 ~@6 [c3,bb3,c4,eb4]@6 ~@2 g4@2 c5@2 eb5@2 g5@4 eb5@2 c5@4 bb4@2]/2", // Em7b5 Amaj7 Cm7
  AC: "a4 ~", AD: "~@6 g4@2 bb4@2 d5@2 eb5@4 g4@3 ~@3 bb4@2", AE: "~@2 db5 d5 ~@2 g5@2 db5 d5@2 bb4",
  AF: "[f4@4 e4@14 ~@3 [eb3,g3,bb3,c4]@7 ~@2 f4@2 d4 b3 ~ ab3 [bb3,c4,eb4,g4]@3 ~@2 [a3,eb4,gb4,db5]@6 ~]/2", // Cm7 Ebm7b5
  AG: "~@12 [a3,eb4,gb4,c5]@3 ~@2 [a3,eb4,gb4,c5]@2 ~@5", AH: "~@4 [f3,c4,d4,ab4] ~@7 [f3,c4,d4,ab4]@11 ~",
  AI: "~@12 [f3,b3,eb4,ab4]@3 ~@2 [f3,b3,eb4,ab4]@2 ~@5", AJ: "~@5 e4 g4@4 ~ c5@5 ~ e3 [g3,e4,g4,c5]@3 ~@3, g3@2 ~",
  AK: "[gb3,db4,f4,bb4]@4 ~@2 [gb3,c4,eb4,bb4]@4 ~@3 [gb3,db4,f4,db5,bb5]@4 ~@7, ~@3 f5 ~@2", // Gbmaj7 Cm7b5 Gbmaj7
  AL: "~ [c4,f4,a4,f5,e6]@4 ~@8 [g3,d4,f4,d5,bb5]@4 ~@7, a5 ~@2 f5 ~@2", // Fmaj7 Gm7
  AM: "~@4 [e3,bb3,db4,g4] ~@7 [e3,bb3,db4,g4]@11 ~", AN: "~@4 [eb3,g3,bb3,c4] ~@7 [eb3,g3,bb3,c4]@11 ~",
  AO: "~ [bb3,eb4,g4,eb5,c6]@4 ~@11 [gb3,c4,eb4,bb4]@2 ~@6, g5 ~@5", // Cm7 Cm7b5
  AP: "[bb2,f3,d4,f4]@3 ~@3 [f3,d4,ab4,bb4]@3 ~@3 [e3,db4,g4,bb4]@4 [eb3,c4,gb4,bb4]@3 ~@3 [d3,bb3,f4,bb4]@2", // Bb Bb7 Edim Cm7b5 Bb
  AQ: "~@4 [bb3,eb4,g4,d5] ~@7 [bb3,eb4,g4,d5]@11 ~", // Ebmaj7
  AR: "a3@15 ~@5 eb4@2 g4 ~, [eb4,g4,d5]@18 a3@5 ~, eb3@12 ~@4 eb3@7 ~", // Ebmaj7
  AS: "~@12 [c4,f4,a4,d5]@3 ~@2 [c4,f4,a4,d5]@2 ~@5", // Dm7
  AT: "~ b3@15 ~@4 f4@2 a4 ~, [a4,e5]@9 b3@2 ~, ~ f4@18 ~@5, ~ f3@14 ~ f3@6 ~@2", // A5
  AU: "~@4 [bb3,d4,eb4,g4] ~@7 [bb3,d4,eb4,g4]@11 ~", AV: "~@4 [a3,d4,eb4,g4] ~@7 [a3,d4,eb4,g4]@11 ~",
  AW: "bb3@15 ~@5 d4@2 f4 ~, [d4,f4,d5]@18 bb3@5 ~, d3@12 ~@4 d3@7 ~", // Dm
  AX: "~@12 [ab3,d4,f4,b4]@3 ~@2 [ab3,d4,f4,b4]@2 ~@5", // Abdim
  AY: "~ bb3@15 ~@4 eb4@2 g4 ~, [g4,d5]@9 bb3@2 ~, ~ eb4@18 ~@5, ~ eb3@14 ~ eb3@6 ~@2", // G5
  AZ: "a3@15 ~@5 eb4@2 g4 ~, [eb4,g4,b4]@18 a3@5 ~, eb3@12 ~@4 eb3@7 ~", BA: "~@4 [f3,c4,e4,a4] ~@7 [f3,c4,e4,a4]@11 ~",
  BB: "~@12 [f3,b3,e4,a4]@3 ~@2 [f3,b3,e4,a4]@2 ~@5", // Fmaj7
  BC: "~ bb3@15 ~@4 eb4@2 g4 ~, [g4,c5]@9 bb3@2 ~, ~ eb4@18 ~@5, ~ eb3@14 ~ eb3@6 ~@2", // C5
  BD: "~@12 [eb3,a3,b3,d4,g4]@3 ~@2 [eb3,a3,b3,d4,g4]@2 ~@5", // G
  BE: "~ a3@15 ~@4 d4@2 f4 ~, [f4,c5]@9 a3@2 ~, ~ d4@18 ~@5, ~ d3@14 ~ d3@6 ~@2", // F5
  BF: "~@4 [g3,d4,f4,bb4] ~@7 [g3,d4,f4,bb4]@11 ~", BG: "~@13 [g3,c4,g4,bb4]@3 ~@8, ~@3 f5 ~@2",
  BH: "[g3,c4,g4,bb4,f5]@7 ~@4 [g3,c4,g4,f5]@6 eb3 [g3,c4,g4,bb4,f5]@3 ~@3, ~@5 bb4@3 ~@4", // Gm7 Csus4 Gm7
  BI: "bb3@15 ~@5 f4@2 a4 ~, [f4,a4,d5]@18 bb3@5 ~, f3@12 ~@4 f3@7 ~", // Dm
  BJ: "~@12 [e3,bb3,d4,a4]@3 ~@2 [e3,bb3,d4,a4]@2 ~@5", // Dsus2
  BK: "a3@15 ~@5 eb4@2 g4 ~, [eb4,g4,c5]@18 a3@5 ~, eb3@12 ~@4 eb3@7 ~", // Cm
  BL: "~@4 [f3,c4,e4,a4]@2 ~@7 [bb3,e4,g4,e5,db6]@4 ~@7, ~@3 g5 ~@2", // Fmaj7 Bbdim
  BM: "~@4 [eb3,bb3,c4,g4] ~@7 [eb3,bb3,c4,g4]@11 ~", BN: "~@12 [eb3,a3,c4,g4]@3 ~@2 [eb3,a3,c4,g4]@2 ~@5",
  BO: "~@4 [f3,c4,d4,a4] ~@7 [f3,c4,d4,a4]@11 ~", // Dm7
  BP: "bb3@15 ~@5 eb4@2 g4 ~, [eb4,g4,c5]@18 bb3@5 ~, eb3@12 ~@4 eb3@7 ~", // Cm
  BQ: "~@4 [eb3,g3,a3,c4] ~@7 [eb3,g3,a3,c4]@11 ~", // Am7b5
  BR: "c4@15 ~@5 gb4@2 bb4 ~, [gb4,bb4,eb5]@18 c4@5 ~, gb3@12 ~@4 gb3@7 ~", // Ebm
  BS: "~@12 [eb3,bb3,d4,g4]@3 ~@2 [eb3,bb3,d4,g4]@2 ~@5", BT: "~@4 [gb3,c4,eb4,bb4] ~@7 [gb3,c4,eb4,bb4]@11 ~",
  BU: "~@12 [f3,a3,c4,e4]@3 ~@2 [f3,a3,c4,e4]@2 ~@5", // Fmaj7
  BV: "~ a3@15 ~@4 eb4@2 g4 ~, [g4,d5]@9 a3@2 ~, ~ eb4@18 ~@5, ~ eb3@14 ~ eb3@6 ~@2", // G5
  BW: "~@12 [bb3,db4,e4,g4]@3 ~@2 [bb3,db4,e4,g4]@2 ~@5", BX: "~@12 [bb3,eb4,g4,d5]@3 ~@2 [bb3,eb4,g4,d5]@2 ~@5",
  BY: "a3@15 ~@5 eb4@2 gb4 ~, [eb4,gb4,db5]@18 a3@5 ~, eb3@12 ~@4 eb3@7 ~", // Ebm7
  BZ: "~@4 [a3,d4,f4,c5] ~@7 [a3,d4,f4,c5]@11 ~", CA: "~@4 [f3,a3,b3,e4] ~@7 [f3,a3,b3,e4]@11 ~",
  CB: "[a3,d4,gb4,b4]@4 ~@2 [bb3,eb4,g4,d5]@4 ~@3 [bb3,eb4,g4,eb5,d6]@4 ~@7, ~@3 g5 ~@2", // Bm7 Ebmaj7
  CC: "~@5 eb4 gb4@4 ~ c5@5 ~ f2 [a3,eb4,gb4,c5]@3 ~@3, a3@2 ~", // Adim
  CD: "[a3,c4,d4,f4]@2 ~ [bb3,eb4,g4,d5]@2 ~ [c4,d4,f4,a4]@2 ~ [d4,bb4,f5]@2 ~", // Dm7 Ebmaj7 Dm7 Bb
  CE: "~ ab3@15 ~@4 d4@2 f4 ~, [f4,b4]@9 ab3@2 ~, ~ d4@18 ~@5, ~ d3@14 ~ d3@6 ~@2", // Fdim
  CF: "~@4 [a3,eb4,gb4,c5] ~@7 [a3,eb4,gb4,c5]@11 ~", // Adim
  CG: "~@3 [ab3,db4,e4,b4]@2 ~ [a3,c4,d4,f4]@4 ~@6 [a3,c4,d4,f4]@2 ~@6", // Dbm7 Dm7
  CH: "~@12 [bb3,e4,g4,db5]@3 ~@2 [bb3,e4,g4,db5]@2 ~@5", // Bbdim
  CI: "~@3 [bb3,eb4,g4,c5]@2 ~ f4@2 d4 b3 ~ ab3 [eb3,bb3,eb4,g4,c5]@11 ~", // Cm7
  CJ: "~@12 [a3,eb4,gb4,db5]@3 ~@2 [a3,eb4,gb4,db5]@2 ~@5", CK: "~@2 [a3,d4,f4,c5] ~@5 [g3,bb3,d4,f4] ~@3",
  CL: "~ [g3,d4,f4,d5,bb5]@4 ~@11 [g3,db4,e4,bb4]@2 ~@6, f5 ~@5", CM: "~@4 [ab3,eb4,g4,c5] ~@7 [ab3,eb4,g4,c5]@11 ~",
  CN: "~@4 [ab3,b3,d4,g4] ~@7 [ab3,b3,d4,g4]@11 ~", CO: "g3@15 ~@5 d4@2 f4 ~, [d4,f4,bb4]@18 g3@5 ~, d3@12 ~@4 d3@7 ~",
  CP: "~ d3@4 [gb3,c4,f4,a4]@2 ~@8 [gb3,c4,d4,bb4]@2 ~@4 [gb3,c4,eb4,bb4]@2 ~", // F Gbaug Cm7b5
  CQ: "~ [bb3,gb4,g4,gb5,d6]@4 ~@8 g2@4 [f3,bb3,d4,g4]@2 ~@5, g5 ~@5", // Gm Gm7
  CR: "bb3@15 ~@5 e4@2 a4 ~, [e4,a4,d5]@18 bb3@5 ~, e3@12 ~@4 e3@7 ~", // Dsus2
  CS: "~ bb3@15 ~@4 e4@2 g4 ~, [g4,db5]@9 bb3@2 ~, ~ e4@18 ~@5, ~ e3@14 ~ e3@6 ~@2", // Gdim
  CT: "~@12 [eb3,gb3,a3,db4]@3 ~@2 [eb3,gb3,a3,db4]@2 ~@5", CU: "~@5 d4 f4@4 ~ c5@5 ~ bb2 [a3,d4,f4,c5]@3 ~@3, a3@2 ~",
  CV: "~@4 [c4,d4,f4,a4]@2 ~@7 [bb3,db5]@3 bb3@2 ~@2 g4 ~ db5 ~, ~@12 [e4,g4]@4 ~@3 e4@2 ~@3", // Dm7 Bbm Em
  CW: "~@4 [bb3,eb4,g4,c5]@2 ~@6 gb4@2 eb4 c4 ~ bb3 [a3,eb4,gb4,c5]@4 ~@2", // Cm7 Adim
  CX: "~@12 [f3,ab3,c4,d4]@3 ~@2 [f3,ab3,c4,d4]@2 ~@5", // Dm7b5
  CY: "~ c4@15 ~@4 e4@2 g4 ~, [g4,e5]@9 c4@2 ~, ~ e4@18 ~@5, ~ e3@14 ~ e3@6 ~@2", // C
  CZ: "gb3@15 ~@5 c4@2 eb4 ~, [c4,eb4,bb4]@18 gb3@5 ~, c3@12 ~@4 c3@7 ~", // Cm7
  DA: "~ [c4,f4,a4,f5,d6]@4 ~@8 [f3,d4,f4,d5,bb5]@4 ~@7, a5 ~@2 f5 ~@2", // Dm7 Bb
  DB: "bb3@15 ~@5 e4@2 g4 ~, [e4,g4,db5]@18 bb3@5 ~, e3@12 ~@4 e3@7 ~", // Dbdim
  DC: "~@4 [bb3,c4,eb4,g4]@2 ~@9 [a3,d4,gb4,b4]@2 ~ [bb3,eb4,g4,d5]@4 ~@2", // Cm7 Bm7 Ebmaj7
  DD: "~ f3@4 [bb3,eb4,g4,c5]@2 ~@5 [bb3,eb4,g4,c5]@4 ~@2 [db4,g4,bb4,e5]@4 ~@2", // Cm7 Dbdim
  DE: "~@4 f4@2 f5@2 ~@10 [bb3,d4,bb4,d5]@3 ~@3", // Bb
  DF: "[ab3,d4,f4,b4] ~ [f3,b3,d4,ab4] ~@2 [d3,ab3,b3,f4] ~@2 [b2,f3,ab3,d4]@4", // Abdim Fdim Ddim Bdim
  DG: "~@5 eb4 g4@4 ~ d5@5 ~ c3 [bb3,eb4,g4,d5]@3 ~@3, bb3@2 ~", // Ebmaj7
  DH: "~ c4@15 ~@4 f4@2 a4 ~, [a4,d5]@9 c4@2 ~, ~ f4@18 ~@5, ~ f3@14 ~ f3@6 ~@2", // D5
  DI: "~ [b3,f4,a4,f5,eb6]@4 ~@10 [b3,f4,a4,e5]@2 ~ [b3,f4,ab4,d5]@4 ~@2, a5 ~@5", // B7 Esus4 Bdim
  DJ: "[b3,d4,eb4,g4]@4 ~@5 [bb3,c4,eb4,g4]@2 ~ [b3,eb4,g4,d5]@4 ~@5 [bb3,eb4,g4,d5]@2 ~", // G Cm7 G Ebmaj7
  DK: "~@4 [bb3,eb4,g4,d5]@2 ~@6 [bb3,eb4,g4,c5]@4 ~@5 [a3,c4,eb4,gb4]@2 ~", // Ebmaj7 Cm7 Adim
  DL: "~ bb2@4 [a3,d4,f4,c5]@2 ~@6 bb2@4 [g3,bb3,d4,f4]@2 ~@5", DM: "~@4 [ab3,d4,f4,b4] ~@7 [ab3,d4,f4,b4]@11 ~",
  DN: "~@4 [bb3,eb4,g4,c5] ~@7 [bb3,eb4,g4,c5]@11 ~", DO: "~@4 [a3,eb4,gb4,db5] ~@7 [a3,eb4,gb4,db5]@11 ~",
  DP: "~ g2@4 [f3,b3,e4,a4]@2 ~@5 [f3,a3,b3,e4]@4 ~@2 [f3,b3,eb4,ab4]@4 ~@2", // Fmaj7 Fm7b5
  DQ: "~@3 [eb3,b3,d4,g4]@2 ~ [eb3,bb3,c4,g4]@4 ~@2 [eb3,b3,d4,g4]@4 ~@2 [eb3,bb3,d4,g4]@4 ~@2", // G Cm7 G Ebmaj7
  DR: "~@2 [eb3,bb3,d4,g4] ~@3 [eb3,bb3,c4,g4]@2 ~ [eb3,a3,db4,gb4]@2 ~", // Ebmaj7 Cm7 Ebm7b5
  DS: "~ [f3,d4,f4,d5,bb5]@4 ~@10 [g3,db4,e4,bb4]@2 ~ [gb3,bb3,c4,eb4]@4 ~@2, f5 ~@5", DT: "~@11 f4",
  DU: "c5@4 ab4@2 ~@4 g4@2 ~@4 f4@5 ~ f5@2", DV: "~@8 f4 g4 bb4 d5", DW: "c5@2 g4 d5@2 g4 eb5@2 g4 e5@2 g4",
  DX: "f5@4 g4@2 gb5@4 g4@2 g5@3 ~@9", DY: "~@2 db5 d5 g5 bb5 d6@2 bb5 g5@2 f5", DZ: "e5@3 db6 d6@19 ~",
  EA: "[f6@2 ~ eb6 f6 ~@4 eb6 f6@3 ~@3 f5@2 e5@4 eb5@14 ~@8 e5@2 f5@2, eb6 ~@47]/2", EB: "g5@9 ~@2 bb4", EC: "a4",
  ED: "~@6 [d5,f5]@3 db5 [d5,f5]@5 ~ bb4@2 g4@3 ~@3, ~@6 db5 ~@17", EE: "[d4,f4] [d4,e4]@5",
  EF: "~ a3@15 ~@4 eb4@2 gb4 ~, [gb4,db5]@9 a3@2 ~, ~ eb4@18 ~@5, ~ eb3@14 ~ eb3@6 ~@2", // Gb5
  EG: "~@4 [f3,ab3,b3,eb4] ~@7 [f3,ab3,b3,eb4]@11 ~", // Fm7b5
  EH: "~ [gb3,db4,eb4,db5,bb5]@4 ~@11 [gb3,c4,eb4,bb4]@2 ~@6, eb5 ~@5", // Ebm7 Cm7b5
  EI: "~ d3@4 [f3,c4,d4,ab4]@2 ~@5 [gb3,c4,gb4,bb4,eb5]@11 ~", // Dm7b5 Cm7b5
  EJ: "~@4 [f3,b3,d4,a4]@2 ~@7 db3@4 [e3,g3,bb3,db4]@2 ~@5", // Bm7b5 Edim
  EK: "~ c5@19 ~@2 [f2,a3,c4,f4]@2, [eb4,g4]@19 ~@5, ~ bb3@17 ~@6", EL: "~@2 bb5 ~@2 db5 d5@2 f5 g5@2 bb4",
  EM: "[~@5 bb4@43, f5, ~ d5@23, ~ c5@15]/2",
})).s("gm_piano").gain(0.3).pan(0.6)

// other · alto sax · "Alto/Flut"
const alto_sax = note(`<
  ~ A@2 B@2 C@2 D ~@51 E@2 F@2 G@3 ~@9 H@2 I@2 J@2 K L ~@7 M N@3 O P Q R S T U V W X Y Z AA AB AC AD AE AF AG AH AI@2
  AJ@2 AK AL AM AN ~ AO@2 AP@2 AQ AR ~@2 AS@2 AT@2 AU AV AW ~ AS@2 AT@2 AU AX AY ~@27
>`.pickRestart({
  A: "[~@3 bb4@20 ~]/2", B: "[~@3 g4@20 ~]/2", C: "[~@3 e4@6 d4@6 c4@6 bb3@2 b3]/2", D: "bb3 ~@11",
  E: "[~@4 c4@4 d4@4 eb4@4 f4@3 ~@3 g4@26]/2", F: "[~@4 d4@4 eb4@4 f4@4 g4@3 ~@3 a4@26]/2",
  G: "[~@4 eb4@4 f4@4 g4@4 bb4@3 ~@3 d5@17 [c5,db5] b4 [a4,bb4] g4@4 f4@14 c4@4 bb3@2 c4@4 bb3@2, ~@42 ab4 ~@29]/3", // Dbmaj7 Bbmaj7
  H: "[eb4@17 [e4,f4] g4@4 a3@16 bb3@2 b3@2 c4@2 d4@2 eb4@2, ~@18 gb4 ~@29]/2", // Fmaj7
  I: "[f4@17 [gb4,g4] a4@4 b3@24 ~@2, ~@18 ab4 ~@29]/2", // Gmaj7
  J: "[g4@17 ~ bb4@4 c4@16 d4@2 eb4@2 f4@2 gb4@2 g4@2, ~@17 [ab4,a4]@2 ~@29]/2", K: "ab4", L: "g4",
  M: "~ a4 bb4 gb4 a4 e4", N: "[g4@8 eb4 g4@2 a4@3 a4@4 a4@2 a4 gb4@2 f4@5 d4 c4 d4 ~@5]/3",
  O: "~@5 d4 eb4@2 ab4 ab4@2 b3", P: "~@2 c4@4 eb4 ~@2 g4 ~@2", Q: "eb4@2 a4@6 a4 d5 a4 gb4", R: "f4@2 d4 eb4@2 f4 ~@6",
  S: "~@4 d4@2 d4@4 d4@2 ~@4 g4@4 ab4 g4 d4@2", T: "f4@2 c4 ~@9", U: "~ f5 f4 d5 d4 c5", V: "e4@2 f4 ~@9",
  W: "~@5 a4 c5 b4 bb4 a4@2 c4", X: "~@4 d4@3 ~@3 eb4@3 ~@3 f4@3 ~@3 gb4@2", Y: "~@4 a4@3 ~@3 d5@3 ~@3 f5@2 d5@4 a4@2",
  Z: "c5@2 bb4 a4@2 g4 ~@6", AA: "~@15 gb4 g4@3 ~ g4@4, ~@20 gb4 ~@3", AB: "g4@2 c4 ~@9",
  AC: "~@3 a4 bb4@3 ~ bb4@3 ~ bb4@3 gb4 g4@3 ~ g4@4, ~@8 a4 ~@3 a4 ~@7 gb4 ~@3", AD: "f4@2 bb3 ~@9",
  AE: "~@2 f5 f4@2 eb4@4 d4 ~@2", AF: "d4@2 ~@4 d4@2 ~@4 d4@4 d4@3 ~@3 d4@2", AG: "~ d4@5",
  AH: "~@4 d4@2 eb4@4 f4@2 ~@4 g4@6 ab4 g4", AI: "[gb4 ~@2 g4 ~@2 a4@2 g4 ~@2 d4@13]/2",
  AJ: "[~@3 d4@2 db4 d4@2 f4 d4@2 c4@7 c4@2 c4 ~@3]/2", AK: "~@6 db4@2 e4 e4@2 d4", AL: "~@2 c4@4 c4 ~@2 c4 ~@2",
  AM: "c4@2 f4 eb4@2 eb4 ~@2 c4@4", AN: "ab4@4 d4@11 eb4 e4 [f4,gb4] ab4@4 f4@2, ~@18 g4 ~@5",
  AO: "[~@6 g4@11 ~ g4@4 gb4@26, ~@18 gb4 ~@29]/2", AP: "[~@6 f4@11 ~ f4@4 e4@26, ~@18 e4 ~@29]/2",
  AQ: "g4@9 [e4,f4,gb4] eb4 [db4,d4] b3@4 c4@2 ~@6, ~@12 c4 ~@11", AR: "~@6 eb4@2 g4 e4@2 f4",
  AS: "[~@3 bb4@5 a4 g4@2 gb4@4 f4@2 eb4 d4@2 c4 ~@3]/2", AT: "[~@3 c5@5 bb4 a4@2 ab4@4 g4@2 f4 eb4@2 d4 ~@2 b3]/2",
// … 450 more lines

More by Basie