Strudelify

Told You So

Basie

KeyF majorTempo116 bpm
0:00/0:00
// Told You So — Basie
// 116 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 186 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(116/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@2 C D E F G H I J K L M N O ~ P Q R S T U V L W X Y Z AA AB AC ~ AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ AR
  AS@2 AT AU@2 AV AJ AW AX AY AZ BA BB BC BD BE BF BG BH BI BJ BK BL BM BN BO BP BQ BR BS BT BU AS@2 BV@2 BW BX BY BZ CA
  CB CC CD CE CF CG CH CI@2 CJ CK CL CM CN CO CP CQ CR CS CT CU CV CW CX@2 CY CK CZ DA DB DC DD DE DF DG DH DI DJ DK DL
  DM CY DN@2 DO@2 DP DQ DR DS BQ DT DU DV CW DW DX DY DZ EA EB EC ED EE EF EG EH EI EJ EK EL EM@2 EN CK EO EP EQ ER ES
  ET EU EV EW EX EY EZ FA FB FC FD FE FF FG ~@2
>`.pickRestart({
  A: "[f3,a3,bb3,d4]@9 ~ [f3,a3,bb3,d4]@3 ~@5 [a3,c4,f4]@4 ~@2", // Bbmaj7 F
  B: "[[gb3,c4,e4,b4]@5 ~ [ab3,b3]@5 [f3,ab3,b3,eb4]@6 [f3,g3,bb3,d4] ~@3 [f3,a3,c4]@2 ~, ~@6 [gb3,c4,e4]@11 ~@7]/2", // Esus2 Abm Fm7b5 Gm7 F Gbm7b5
  C: "[a3,c4,f4]@3 ~@7 [e3,bb3,d4,a4] ~@13", D: "[f3,bb3,d4,a4]@9 ~ [f3,bb3,d4,a4]@3 ~@5 [a3,c4,f4]@4 ~@2",
  E: "[g3,db4,f4,c5]@9 ~ [gb3,c4,d4,bb4]@2 ~@12", F: "[f3,b3,d4,g4]@9 ~ [f3,b3,d4,g4]@3 ~@5 [f3,bb3,d4,a4]@4 ~@2",
  G: "[f3,a3,bb3,d4]@9 ~ [f3,ab3,b3,d4] ~@13", H: "[f3,a3,c4]@9 ~ [g3,c4,e4,a4]@2 ~@12",
  I: "[g3,a3,c4,eb4]@3 ~@7 [gb3,c4,e4,b4] ~@13", J: "[f3,b3,e4,a4]@3 ~@7 [e3,bb3,d4,a4] ~@11 [d3,f3,a3,c4,f4]@2",
  K: "~@4 f4@2 ~@4 f4@2 [e3,bb3,d4,a4]@3 ~ c4@6 [a3,c4,f4] ~", L: "~@12 [g3,c4,e4,a4]@9 ~ [g3,a3,c4,eb4]@2",
  M: "~@12 [gb3,c4,eb4,a4]@9 ~ [f3,ab3,b3,eb4] ~", N: "~@12 [f3,b3,eb4,bb4]@9 ~ [e3,bb3,d4,a4] ~",
  O: "~@12 [e3,bb3,eb4,ab4]@9 ~ [eb3,a3,d4,g4]@2", P: "[eb3,a3,d4,g4] ~@7", Q: "[ab3,d4,gb4,b4] ~@5",
  R: "[db3,b3]@5 ~@19", S: "[a3,f4,c5]@9 ~ [g3,b3,c4,e4]@2 ~@12",
  T: "[g3,a3,c4,eb4]@3 ~@7 [gb3,c4,eb4,bb4] ~@7 [gb3,bb3,c4,f4]@4 ~@2", U: "~@6 d5@4 f5@13 ~, ~@6 db5 ~@17",
  V: "~@12 [ab3,b3,eb4,gb4]@3 ~@7 [a3,f4,c5] ~", W: "~@5 [gb3,bb3,c4,d4] ~@5 [f3,b3,d4,a4]",
  X: "~@12 [e3,bb3,d4,a4]@9 ~ [d3,f3,a3,c4] ~", Y: "~@5 [e3,bb3,d4,a4] ~@6", Z: "[f3,a3,c4]@3 ~@7 [g3,c4,e4,b4] ~@13",
  AA: "[g3,a3,c4,eb4]@3 ~@7 [gb3,c4,e4,b4]@2 ~@12", AB: "[f3,b3,eb4,ab4]@9 ~ [f3,b3,db4,g4] ~@13",
  AC: "[f3,g3,bb3,d4]@9 ~ [e3,bb3,c4,g4] ~@7 [e3,bb3,eb4,ab4]@4 ~@2", AD: "[eb3,g3,a3,d4]@3 ~@15 [eb3,a3,d4,ab4]@4 ~@2",
  AE: "[ab3,d4,gb4,b4] ~@11", AF: "~@12 [ab3,d4,f4,b4]@3 ~ b2 ~ [ab3,d4,f4,b4]@4 ~@2",
  AG: "[a3,c4,f4]@9 ~ [g3,b3,c4,e4] ~@11 [g3,c4,eb4,a4]@2", AH: "~@5 [gb3,bb3,c4,eb4] ~@3 [gb3,bb3,c4,f4]@2 ~",
  AI: "~@6 db5 d5@3 f5@13 ~", AJ: "~@5 [f3,bb3,d4,a4] ~@6", AK: "[a3,c4,f4]@9 ~ [g3,c4,e4,a4] ~@11 [eb4,g4,c5]@2",
  AL: "~@5 [c4,e4,gb4,ab4,b4] ~@6", AM: "[b3,f4,g4,d5]@9 ~ [bb3,e4,g4,d5] ~@13",
  AN: "[a3,f4,c5]@9 ~ [bb3,d4,e4,ab4] ~@11 [a3,f4,c5]@2", AO: "~@5 [g3,c4,e4,b4] ~@5 [c4,eb4,g4]",
  AP: "~@5 [c4,gb4,ab4,b4,e5] ~@6", AQ: "[b3,d4,f4,bb4]",
  AR: "~@10 c2@2 [bb3,e4,ab4,db5]@3 ~ c2 ~ [bb3,e4,ab4,db5]@4 ~@2", // Bbm7b5
  AS: "[~@12 [a3,eb4,g4,d5]@3 ~ [a3,eb4,g4,d5]@6 [a3,eb4,g4,d5]@20 ~@6]/2", // Dsus4
  AT: "~@10 bb2@2 [d4,f4,bb4]@3 ~ bb2 ~ [d4,f4,bb4]@4 ~@2", // Bb
  AU: "[[ab3,d4,f4,b4]@10 ~@2 f4@10 [a3,f4,c5]@14 [ab3,c4,d4,f4]@9 ~ [g3,c4,db4,f4] ~, ~ [ab3,b3,d4]@2 ~]/2", // Abdim F Dm7b5 Csus4 Abdim
  AV: "~@12 [gb3,c4,f4,a4]@9 ~ [f3,ab3,b3,eb4] ~", AW: "[f3,bb3,d4,g4]", AX: "[a3,c4,f4]@3 ~@7 [g3,c4,e4,b4]@2 ~@12",
  AY: "[eb4,g4,c5]@9 ~ [c4,gb4,ab4,b4,e5] ~@11 [b3,f4,ab4,eb5]@2", AZ: "~@12 [bb3,e4,g4,d5]@9 ~ [a3,f4,c5] ~",
  BA: "~@5 [bb3,c4,e4,ab4] ~@5 [a3,f4,c5]", BB: "~@12 [g3,b3,c4,e4]@3 ~@7 [c4,eb4,g4]@2",
  BC: "~@12 [c4,e4,gb4,b4]@9 ~ [b3,f4,a4,d5] ~", BD: "~@12 [b3,f4,ab4,eb5]@3 ~ g2 ~ [b3,f4,ab4,eb5]@4 ~@2",
  BE: "[bb3,db4,e4,ab4]", BF: "[a3,c4,eb4,g4]@3 ~@7 [bb3,b3,eb4,g4,d5] ~@7 [ab3,d4,f4,b4]@4 ~@2",
  BG: "[a3,b3,d4,eb4,g4]@2 ~ [f3,bb3,d4,a4]@2 ~ [a3,b3,eb4,g4,d5]@2 ~ [g3,db4,e4,bb4]@2 ~", // G Bbmaj7 G Gdim
  BH: "[bb3,eb4,gb4,db5]@3 ~@7 [g3,d4,f4,bb4] ~@13", BI: "~@10 b2 ~ [ab3,d4,f4,b4]@3 ~ b2 ~ [ab3,d4,f4,b4]@4 ~@2",
  BJ: "[a3,f4,c5]@9 ~ [ab3,c4,d4,f4]@2 ~@12", BK: "[g3,bb3,db4,f4]@3 ~@7 [gb3,c4,f4,a4] ~@13",
  BL: "[f3,b3,eb4,ab4]@9 ~ [e3,bb3,db4,ab4] ~@13", BM: "~@10 f2@2 [f3,a3,c4]@3 ~ f2 ~ [f3,a3,c4]@4 ~@2",
  BN: "[a3,c4,f4]@3 ~@7 [g3,a3,c4,e4] ~@13", BO: "[eb3,g3,c4]@9 ~ [gb3,bb3,c4,eb4] ~@13",
  BP: "[f3,b3,d4,g4]@9 ~ [e3,bb3,db4,ab4]@2 ~@12", BQ: "[f3,a3,c4]@9 ~ [e3,bb3,d4,a4] ~@13",
  BR: "[f3,a3,c4]@9 ~ [g3,c4,e4,b4] ~@11 [c4,eb4,g4]@2", BS: "~@6 [c4,gb4,bb4,eb5]@2 ~ [c4,f4,gb4,a4]@2 ~",
  BT: "~@10 g2 ~ [b3,f4,ab4,eb5]@3 ~ g2 ~ [b3,f4,ab4,eb5]@4 ~@2", // Fm7b5
  BU: "[bb3,d4,e4,g4]@9 ~ [bb3,d4,e4,g4]@3 ~@5 [bb3,e4,ab4,db5]@4 ~@2", // Em7b5 Bbm7b5
  BV: "[[d4,f4,bb4]@10 ~@2 [d4,f4]@10 [ab3,d4,f4,b4]@12 ~@2 [ab3,b3,d4,f4]@3 ~@3 [ab3,b3,d4,f4]@4 ~@2, ~@6 bb3@11 ~@7]/2", // Bb Dm Abdim
  BW: "[a3,c4,f4]@3 ~@7 [ab3,c4,d4,f4] ~@11 [g3,c4,db4,f4]@2", BX: "~@12 [gb3,c4,e4,b4]@3 ~@7 [f3,ab3,b3,d4] ~",
  BY: "~@12 [e3,ab3,bb3,db4]@9 ~ [a3,c4,f4] ~", BZ: "~@12 [f3,bb3,d4,g4]@9 ~ [a3,f4,c5]@2",
  CA: "~@12 [a3,f4,c5]@3 ~ f2 ~ [a3,f4,c5]@4 ~@2", CB: "[eb4,g4,c5]@9 ~ [c4,gb4,bb4,e5]@2 ~@10 [b3,eb4,f4,ab4]@2",
  CC: "~@5 [bb3,e4,ab4,db5] ~@5 [a3,f4,c5]", CD: "~@12 [bb3,db4,e4,ab4]@3 ~@7 [a3,c4,f4] ~",
  CE: "~@12 [a3,c4,f4]@3 ~ f2 ~ [a3,c4,f4]@4 ~@2", CF: "[g3,db4,f4,c5]@9 ~ [gb3,ab3,c4,e4,b4] ~@11 [f3,ab3,b3,eb4]@2",
  CG: "~@12 [f3,bb3,b3,d4]@3 ~ g2 ~ [f3,bb3,b3,d4]@4 ~@2", // Bb
  CH: "[f3,bb3,d4,a4]@9 ~ [e3,bb3,db4,ab4]@2 ~@10 [eb3,g3,a3,d4]@2", // Bbmaj7 Bbm7b5 Ebmaj7
  CI: "[~@22 [eb3,g3,a3,d4]@14 ~@4 a3 ~ eb3@2 g3 ~ d4@2]/2", CJ: "~@10 bb2@2 [bb3,d4,f4]@3 ~ bb2 ~ [bb3,d4,f4]@4 ~@2",
  CK: "[ab3,d4,f4,b4]", CL: "~@10 f2 ~ [a3,f4,c5]@3 ~ f2 ~ [a3,f4,c5]@4 ~@2",
  CM: "[g3,db4,f4,c5]@9 ~ [gb3,ab3,b3,c4,e4]@2 ~@12", CN: "[f3,ab3,b3,eb4]@3 ~@7 [e3,ab3,bb3,db4] ~@11 [a3,c4,f4]@2",
  CO: "~@3 [a3,c4,f4]@2 ~ [d4,f4,bb4]@2 ~ [ab3,b3,d4,f4]@2 ~", // F Bb Abdim
  CP: "[a3,f4,c5]@3 ~@7 [g3,c4,e4,a4]@2 ~@10 [eb3,c4,g4]@2", CQ: "~@12 [gb3,b3,c4,e4]@9 ~ [f3,b3,d4,ab4]@2",
  CR: "~@12 [f3,b3,d4,ab4]@9 ~ [a3,c4,f4] ~", CS: "~@5 [bb3,d4,e4,a4] ~@6", CT: "[a3,f4,c5]@9 ~ [ab3,d4,g4,c5] ~@13",
  CU: "[ab3,d4,f4,c5]@4 ~@2 [g3,a3,c4,eb4]@4 ~@2 [gb3,ab3,b3,c4,e4]@9 ~ [gb3,ab3,c4,e4,b4] ~", // Dm7b5 Am7b5 E
  CV: "~@6 [f3,b3,d4,ab4]@9 ~ [f3,b3,d4,ab4]@3 ~@5", CW: "[e3,bb3,db4,ab4]",
  CX: "[[eb3,a3,d4,g4,b4]@5 ~ [eb3,d4]@5 [eb3,g3,bb3,d4]@6 [eb3,a3,d4,g4] ~@5 [d4,f4,bb4], ~@6 [a3,b3,g4]@11 ~@7]/2", // G Ebmaj7 Bb Em
  CY: "~@12 [d4,f4,bb4]@3 ~ bb2 ~ [d4,f4,bb4]@4 ~@2", CZ: "[a3,f4,c5]@9 ~ [g3,c4,e4,b4]@2 ~@12",
  DA: "[eb4,g4,c5]@9 ~ [c4,gb4,ab4,b4,e5] ~@11 [b3,eb4,f4,ab4]@2", DB: "~@12 [bb3,d4,f4,g4]@3 ~@7 [a3,f4,c5] ~",
  DC: "~@5 [bb3,d4,f4,g4] ~@3 [b3,f4,ab4,d5]@2 ~", DD: "[a3,f4,c5]@3 ~@7 [ab3,c4,d4,f4] ~@13",
  DE: "[g3,db4,f4,c5]@9 ~ [gb3,c4,eb4,bb4] ~@11 [f3,b3,d4,g4]@2", DF: "~@5 [e3,bb3,db4,ab4] ~@6",
  DG: "[a3,c4,f4]@9 ~ [d4,f4,bb4] ~@7 [ab3,d4,f4,b4]@4 ~@2", DH: "[a3,f4,c5]@9 ~ [ab3,d4,f4,c5] ~@11 [eb3,g3,c4]@2",
  DI: "~@12 [gb3,ab3,c4,e4,b4]@3 ~@7 [f3,ab3,b3,eb4] ~", DJ: "~@12 [f3,b3,eb4,ab4]@3 ~ g2 ~ [f3,b3,eb4,ab4]@4 ~@2",
  DK: "~@10 c2 ~ [e3,ab3,bb3,db4]@3 ~@3 [e3,ab3,bb3,db4]@4 ~@2", // Bbm7b5
  DL: "~@10 f2@2 [eb3,g3,a3,d4]@3 ~@3 [eb3,g3,a3,d4]@4 ~@2", // Ebmaj7
  DM: "[eb3,a3,d4,g4,b4]@4 ~@2 [e3,bb3,eb4,ab4]@4 ~@2 [eb3,f3,a3,c4]@3 ~@7 [d4,f4,bb4]@2", // G Emaj7 F7 Bb
  DN: "[[ab3,d4,f4,b4]@5 ~ f4@5 [a3,f4,c5]@4 [bb3,f4,g4,d5]@2 ~ [a3,c4,e4,g4]@2 ~ [g3,d4,f4,bb4]@2 ~, ~@2 [ab3,d4,b4]@3 ~@3]/2", // Abdim F Gm7 Am7 Gm7 Abdim
  DO: "[[gb3,c4,eb4,bb4]@5 ~@6 [f3,b3,d4,g4]@6 [e3,g3,bb3,db4] ~@3 [f3,b3,d4,ab4]@2 ~, ~@6 [gb3,bb3,c4,eb4]@11 ~@7]/2", // Cm7b5 G7 Edim Fdim Cm7b5
  DP: "[gb3,c4,eb4,a4]@4 ~@2 [g3,db4,e4,bb4]@4 ~@2 [ab3,d4,f4,b4]@3 ~@7 [ab3,d4,f4,b4]@2", // Gbdim Gdim Abdim
  DQ: "~@12 [a3,f4,c5]@9 ~ [g3,c4,db4,f4] ~", DR: "~@5 [gb3,c4,d4,a4] ~@6",
  DS: "[f3,b3,d4,bb4]@9 ~ [e3,bb3,db4,ab4] ~@13", // Bb Bbm7b5
  DT: "[a3,c4,f4]@2 ~ [d4,f4,bb4]@2 ~ [a3,c4,f4]@2 ~ [ab3,c4,d4,f4]@2 ~", // F Bb F Dm7b5
  DU: "[g3,db4,f4,c5]@9 ~ [gb3,c4,e4,b4] ~@11 [f3,b3,d4,a4]@2", DV: "~@12 [f3,b3,d4,bb4]@3 ~@3 [f3,b3,d4,bb4]@4 ~@2",
  DW: "[eb3,a3,c4,f4]@4 ~@2 [e3,ab3,bb3,eb4]@4 ~@2 [eb3,bb3,c4,g4]@3 ~@7 [eb3,a3,d4,g4]@2", // F7 Emaj7 Cm7 Ebmaj7
  DX: "~@5 [a3,eb4,ab4,db5] ~@5 [a3,d4,f4,c5]", DY: "~@12 [a3,d4,f4,c5]@3 ~ bb2 ~ [a3,d4,f4,c5]@4 ~@2",
  DZ: "[ab3,b3,d4,f4]", EA: "[a3,f4,c5]@3 ~@7 [ab3,b3,d4,e4] ~@13", EB: "[g3,c4,db4,f4]@3 ~@7 [gb3,a3,c4,d4]@2 ~@12",
  EC: "[f3,b3,eb4,ab4]@3 ~@7 [e3,bb3,eb4,g4] ~@13", ED: "[a3,c4,f4]@9 ~ [f3,a3,bb3,d4] ~@13",
  EE: "[f3,bb3,d4,g4]@3 ~@7 [f3,a3,c4]@2 ~@12", EF: "[gb3,c4,e4,b4]",
  EG: "[f3,b3,eb4,ab4]@9 ~ [f3,bb3,d4,a4] ~@7 [a3,c4,f4]@4 ~@2", // Fm7b5 Bbmaj7 F
  EH: "[a3,c4,f4]@9 ~ [f3,bb3,d4,a4]@2 ~@6 [d3,ab3,b3,f4]@4 ~@2", // F Bbmaj7 Ddim
  EI: "[e3,a3,c4,g4]@2 ~ [f3,bb3,d4,a4]@2 ~ [f3,ab3,b3,d4]@2 ~ [g3,b3,c4,e4]@2 ~", // Am7 Bbmaj7 Fdim Cmaj7
  EJ: "[a3,c4,d4,f4]@2 ~ [g3,c4,e4,b4]@2 ~ [b3,eb4,f4,bb4]@2 ~ [c4,gb4,ab4,b4,e5]@2 ~", EK: "[b3,f4,ab4,eb5]",
  EL: "[bb3,e4,g4,d5]@4 ~@2 [b3,f4,bb4,eb5]@4 ~@2 [bb3,e4,ab4,db5]@9 ~ [a3,b3,eb4,g4,d5]@2", // Em7b5 Bmaj7 Bbm7b5 G
  EM: "[~@22 [a3,eb4,g4,d5]@14 ~@4 a3@2 eb4 ~ g4 ~ d5 ~]/2", EN: "[ab3,d4,f4,c5]",
  EO: "[a3,d4,eb4,g4]@2 ~ [ab3,d4,e4,b4]@2 ~ [a3,d4,eb4,g4]@2 ~ [ab3,b3,d4,gb4]@2 ~", // Dsus4 E7 Dsus4 Abm7b5
  EP: "[g3,bb3,db4,eb4]@9 ~ [gb3,b3,c4,e4] ~@13", EQ: "[f3,b3,d4,a4]@9 ~ [f3,bb3,d4,a4] ~@13", ER: "[f3,a3,bb3,d4]",
  ES: "[a3,c4,f4]@9 ~ [g3,a3,c4,e4] ~@13", ET: "[g3,c4,e4,b4]@9 ~ [gb3,b3,c4,e4] ~@13",
  EU: "[f3,b3,e4,a4]@9 ~ [e3,ab3,bb3,d4]@2 ~@12", EV: "[d3,a3,c4,f4]@9 ~ [e3,bb3,d4,a4] ~@13",
  EW: "[a3,c4,f4]@9 ~ [g3,b3,c4,e4] ~@13", EX: "[g3,c4,eb4,a4]@9 ~ [gb3,ab3,c4,e4,b4]@2 ~@12",
  EY: "[f3,ab3,b3,eb4]@9 ~ [f3,b3,eb4,g4] ~@11 [f3,bb3,d4,a4]@2", EZ: "~@5 [e3,bb3,d4,a4] ~@3 [e3,bb3,db4,ab4]@2 ~",
  FA: "[eb3,g3,a3,d4] ~@11", FB: "[eb3,g3,a3,d4]@3 ~@15 [eb3,ab3,a3,d4]@4 ~@2", FC: "[ab3,d4,f4,db5] ~@11",
  FD: "~@12 [ab3,b3,d4,f4]@3 ~ b2 ~ [ab3,b3,d4,f4]@4 ~@2", FE: "[a3,f4,c5]@9 ~ [g3,b3,c4,e4] ~@13",
  FF: "[g3,c4,eb4,a4]@3 ~@7 [gb3,c4,eb4,bb4] ~@7 [gb3,bb3,c4,f4]@4 ~@2", FG: "~@5 db5 d5@4 f5@14",
})).s("gm_piano").gain(0.31)

// bass · acoustic bass · "Jazz Bass"
const bass = note(`<
  A B C D E B F G H I J K L M N O P Q R S T U V ~ W I X Y Z AA X AB AC AD AE AF AG I AH ~ AI AJ N AK AL AM AN AO AP AQ
  AR AS AT AU AV AW AX AY X AZ BA AM BB BC BD BE BF BG AT BH AN BI BJ BK N BL BM BN BO BP BQ BR AR BS BT BN BU AZ BV BW
  BX BY BZ CA CB CC AC AQ CD CE AT CF CG CH CI CJ N AZ Z CK CL CM CN CO CP CQ CR M CS CT CU CV BB CW CX CY CZ BC DA DB
  DC CE DD DE DF DG DH BF DI DJ DK DL DM AO DA DN DO AS AG DP DQ DR L DS DT DU DV DW DX CC DY AQ DZ BS AG EA EB EC AX AA
  ED EE Z EF EG EH EI Q AE AF EJ AY EK ~ EL EM
>`.pickRestart({
  A: "~@4 c3 ~ c3 ~", B: "f3@3 ~ f3@2 f3@5 ~ f3@5 ~ f3@5 ~", C: "d3@3 ~ d2 ~ c3@5 ~ b2@3 ~ d2 ~ a2@3 ~ ab3@2",
  D: "g3@5 ~ g3@5 ~ c3@5 ~ f3@5 ~", E: "f3@5 ~ f3@5 ~ c3@3 ~ c2 ~ e3@3 ~ c3@2",
  F: "eb4@2 bb3@2 eb3@2 eb3@3 ~ db3@2 d3@5 ~ ab3@3 ~ gb3@2", G: "g3@3 ~ g3@2 f3@5 ~ g3@5 ~ c3@3 ~ eb4@2",
  H: "c3@3 ~ g2 ~ c3@5 ~ c3@5 ~ c3@5 ~", I: "f3@5 ~ f3@5 ~ e3@5 ~ e3@5 ~", J: "e3@5 ~ e3@5 ~ d3@5 ~ gb3@3 ~ d3@2",
  K: "g3@5 ~ b3@3 ~ g3@2 c4@2 g3@2 c3@2 gb3@3 ~ e3@2", L: "f3@5 ~ a3@3 ~ f3@2 c3@5 ~ e3@3 ~ c3@2",
  M: "f3@5 ~ a3@3 ~ f3@2 e3@5 ~ e3@5 ~", N: "eb3@5 ~ eb3@5 ~ d3@5 ~ d3@5 ~",
  O: "g3@5 ~ g3@5 ~ db4@2 ab3@2 db3@2 db3@3 ~ b2@2", P: "c3@5 ~ c3@5 ~ c4@2 g3@2 c3@2 gb3@3 ~ e3@2", Q: "f3 ~@7",
  R: "f4 ~@3 f2@2", S: "[bb1,bb2] ~@7", T: "b2@5 ~@11 eb2@8", U: "f3@3 ~ f2 ~ f3@5 ~ e3@3 ~ a1 ~ e3@5 ~",
  V: "eb3@5 ~ eb3@5 ~ d3@3 ~ d2 ~ ab3@3 ~@3", W: "ab3@5 ~ f3@3 ~ eb3@2 e3@5 ~ gb3@3 ~ e3@2",
  X: "eb3@5 ~ eb3@5 ~ d4@2 a3@2 d3@2 ab3@3 ~ gb3@2", Y: "g3@3 ~ g2 ~ g3@3 ~ db3@2 c3@3 ~ c2 ~ g3@3 ~ c3@2",
  Z: "f3@5 ~ f3@5 ~ c3@5 ~ c3@5 ~", AA: "f4@2 c4@2 f3@2 f3@3 ~ eb3@2 e3@5 ~ e3@5 ~",
  AB: "g3@5 ~ d3@5 ~ db3@5 ~ db3@5 ~", AC: "c4@2 g3@2 c3@2 db3@3 ~ b2@2 c3@3 ~ c2 ~ c3@5 ~", AD: "f3@5 ~@19",
  AE: "f3@3 ~@15 f3@5 ~", AF: "bb2 ~@7", AG: "b2@5 ~ a2@5 ~ g2@5 ~ f2@3 ~ gb3@2",
  AH: "eb3@5 ~ eb3@5 ~ d3@3 ~ bb2@2 ab3@3 ~@3", AI: "ab4@2 eb4@2 ab3@2 db3@3 ~ b2@2 c3@5 ~ c3@5 ~",
  AJ: "f3@5 ~ f3@5 ~ e3@3 ~ a1 ~ e3@5 ~", AK: "g3@5 ~ db3@5 ~ c3@3 ~ c2 ~ e3@3 ~ c3@2",
  AL: "f4@2 c4@2 f3@2 db3@3 ~ b2@2 c3@5 ~ e3@3 ~ c3@2", AM: "f3@3 ~ f2 ~ f3@5 ~ e3@5 ~ e3@5 ~",
  AN: "eb3@5 ~ eb3@5 ~ d3@5 ~ ab3@5 ~", AO: "g3@5 ~ a3@5 ~ bb3@5 ~ b3@3 ~ g3@2",
  AP: "c3@5 ~ d3@5 ~ eb3@3 ~ c2 ~ e3@3 ~ c3@2", AQ: "f4@2 c4@2 f3@2 a3@5 ~ bb3@5 ~ b3@5 ~",
  AR: "c4@3 ~ g3@2 e3@5 ~ f3@5 ~ f3@5 ~", AS: "bb2@5 ~ a2@5 ~ g2@5 ~ f2@3 ~ bb2@2",
  AT: "b2@5 ~ a2@5 ~ g2@5 ~ f2@3 ~ b2@2", AU: "f4@2 c4@2 f3@2 f3@3 ~ eb3@2 e3@3 ~ e2 ~ e3@5 ~",
  AV: "eb3@5 ~ eb3@3 ~ eb3@2 d3@5 ~ gb3@3 ~ d3@2", AW: "g3@3 ~ g2 ~ db3@5 ~ c3@5 ~ c3@3 ~ db3@2",
  AX: "c3@5 ~ bb2@5 ~ a2@5 ~ g2@3 ~ c3@2", AY: "f3@5 ~ f3@3 ~ f3@2 e3@3 ~ a1 ~ e3@5 ~",
  AZ: "g3@5 ~ g3@5 ~ c3@5 ~ c3@5 ~", BA: "f3@3 ~ f2 ~ db3@5 ~ c3@5 ~ c3@3 ~ gb3@2",
  BB: "eb3@5 ~ eb3@5 ~ d3@5 ~ d3@3 ~ ab3@2", BC: "g3@5 ~ a3@5 ~ bb3@5 ~ b3@3 ~ db3@2",
  BD: "c3@5 ~ d3@5 ~ eb3@5 ~ e3@3 ~ gb3@2", BE: "f3@5 ~ f3@5 ~ f3@3 ~ db3@2 f3@3 ~ gb3@2",
  BF: "f3@5 ~ f3@5 ~ f3@5 ~ f3@5 ~", BG: "b2@5 ~ b2@5 ~ bb2@5 ~ c3@5 ~", BH: "f3@5 ~ f3@5 ~ e3@3 ~ e2 ~ e3@5 ~",
  BI: "g3@3 ~ g2 ~ g3@5 ~ c3@5 ~ gb3@5 ~", BJ: "f3@5 ~ g3@5 ~ ab3@5 ~ a3@3 ~ f3@2",
  BK: "f3@3 ~ f2 ~ a3@3 ~ f3@2 e3@3 ~ a1 ~ e3@5 ~", BL: "g3@5 ~ g3@5 ~ c3@5 ~ c3@3 ~ gb3@2",
  BM: "f3@5 ~ f3@3 ~ db3@2 c3@5 ~ gb3@3 ~ e3@2", BN: "f3@3 ~ f2 ~ f3@3 ~ f3@2 e3@5 ~ e3@5 ~",
  BO: "eb3@5 ~ eb3@5 ~ d3@3 ~ bb2@2 ab3@3 ~ ab3@2", BP: "g3@5 ~ f3@5 ~ e3@5 ~ d3@3 ~ db3@2",
  BQ: "c3@3 ~ c3@2 bb2@5 ~ c3@5 ~ c3@3 ~ gb3@2", BR: "f3@3 ~ f2 ~ a3@5 ~ bb3@5 ~ b3@5 ~",
  BS: "bb2@5 ~ c3@5 ~ db3@5 ~ d3@3 ~ c3@2", BT: "b2@3 ~ b1 ~ a2@5 ~ g2@5 ~ f2@3 ~ b2@2",
  BU: "eb3@5 ~ eb3@5 ~ d3@3 ~ d2 ~ ab3@5 ~", BV: "f3@3 ~ f2 ~ c4@3 ~ f3@2 c3@5 ~ c3@5 ~",
  BW: "f3@5 ~ g3@5 ~ ab3@3 ~ f2 ~ a3@3 ~ e3@2", BX: "eb3@3 ~ c2 ~ eb3@5 ~ d4@2 a3@2 d3@2 ab3@3 ~ gb3@2",
  BY: "g3@5 ~ db3@5 ~ c3@5 ~ c3@5 ~", BZ: "f3@5 ~ db3@5 ~ c3@5 ~ e3@3 ~ c3@2", CA: "f3@5 ~ g3@5 ~ ab3@5 ~ a3@3 ~ e3@2",
  CB: "eb3@3 ~ eb2 ~ eb3@5 ~ d3@5 ~ d3@3 ~ ab3@2", CC: "g3@5 ~ f3@5 ~ e3@5 ~ d3@3 ~ g3@2",
  CD: "c4@5 ~ eb4@5 ~ f4@3 ~ c4@2 f3@3 ~ b2@2", CE: "bb2@5 ~ c3@5 ~ db3@5 ~ d3@3 ~ bb2@2",
  CF: "f3@5 ~ e3@5 ~ d3@5 ~ c3@3 ~ e3@2", CG: "eb3@5 ~ eb3@5 ~ d3@5 ~ ab3@3 ~ gb3@2",
  CH: "g3@5 ~ db3@5 ~ c3@5 ~ g3@3 ~ c3@2", CI: "f3@3 ~ db4@2 c3@5 ~ c3@5 ~ c3@5 ~",
  CJ: "f3@5 ~ f3@3 ~ f3@2 e3@5 ~ e3@5 ~", CK: "f3@5 ~ c4@3 ~ f3@2 bb3@2 f3@2 bb2@2 b2@3 ~ a2@2",
  CL: "bb2@5 ~ a2@5 ~ d3@5 ~ d3@3 ~ eb3@2", CM: "d3@5 ~ g3@10 ~@2 f3@2 ~ d4@2 ~",
  CN: "c3@3 ~ c2 ~ bb2@5 ~ a2@5 ~ g2@3 ~ gb3@2", CO: "f3@5 ~ eb3@5 ~ d3@5 ~ c3@3 ~ db3@2",
  CP: "c3@5 ~ eb3@3 ~ c3@2 f3@5 ~ f3@5 ~", CQ: "bb2@3 ~ bb1 ~ a2@5 ~ g2@5 ~ f2@3 ~ bb2@2",
  CR: "b2@3 ~ b1 ~ db3@5 ~ d3@5 ~ eb3@3 ~ gb3@2", CS: "eb3@5 ~ eb3@5 ~ d3@3 ~ d2 ~ gb3@3 ~ d3@2",
  CT: "g4@2 d4@2 g3@2 db3@3 ~ b2@2 c3@5 ~ c3@5 ~", CU: "f3@5 ~ db4@5 ~ c3@5 ~ c3@5 ~",
  CV: "f3@5 ~ f3@5 ~ e3@5 ~ e3@3 ~ d3@2", CW: "g3@3 ~ g2 ~ g3@3 ~ db3@2 c3@5 ~ c3@5 ~",
  CX: "f3@3 ~ f2 ~ f3@3 ~ db3@2 c3@5 ~ c3@3 ~ f3@2", CY: "f3@3 ~ f2 ~ f3@5 ~ e3@5 ~ ab3@3 ~ e3@2",
  CZ: "eb3@3 ~ c2 ~ eb3@5 ~ d3@5 ~ d3@5 ~", DA: "c3@5 ~ d3@5 ~ eb3@5 ~ e3@3 ~ c3@2",
  DB: "f3@5 ~ eb3@5 ~ d3@5 ~ c3@3 ~ gb3@2", DC: "f3@5 ~ gb3@5 ~ f4@2 c4@2 f3@2 b2@3 ~ a2@2",
  DD: "b2@5 ~ db3@5 ~ d3@5 ~ eb3@3 ~ b2@2", DE: "f3@5 ~ g3@5 ~ a2@3 ~ c4@2 eb3@3 ~ eb3@2",
  DF: "d3@5 ~ c3@5 ~ b2@3 ~ d2 ~ a2@3 ~ ab3@2", DG: "g3@5 ~ g3@5 ~ c3@3 ~ eb4@2 c3@3 ~ a3@2",
  DH: "c3@5 ~ c3@5 ~ c3@5 ~ c3@5 ~", DI: "eb3@3 ~ eb2 ~ eb3@3 ~ eb3@2 d3@5 ~ d3@5 ~",
  DJ: "g3@3 ~ g2 ~ db3@5 ~ c3@5 ~ c3@5 ~", DK: "f3@5 ~ db3@5 ~ c3@5 ~ c3@5 ~", DL: "f3@5 ~ bb2@5 ~ a2@5 ~ e3@5 ~",
  DM: "eb3@5 ~ g3@3 ~ eb3@2 d4@2 a3@2 d3@2 ab3@3 ~ gb3@2", DN: "f3@5 ~ gb3@5 ~ f3@5 ~ c4@3 ~ f3@2",
  DO: "f3@5 ~ f3@5 ~ b2@5 ~ b2@5 ~", DP: "f3@5 ~ a3@3 ~ f3@2 e3@3 ~ e2 ~ e3@5 ~",
  DQ: "eb3@3 ~ eb2 ~ eb3@5 ~ d3@3 ~ d2 ~ a3@3 ~ d3@2", DR: "g3@5 ~ b3@3 ~ g3@2 c3@3 ~ c2 ~ c3@5 ~",
  DS: "f3@3 ~ g2 ~ f3@5 ~ f3@5 ~ c4@3 ~ f3@2", DT: "d3@3 ~ d2 ~ e3@5 ~ f3@5 ~ gb3@3 ~ ab3@2",
  DU: "g3@5 ~ g3@3 ~ db3@2 c3@5 ~ f3@5 ~", DV: "f4@2 c4@2 f3@2 db3@3 ~ b2@2 c3@3 ~ gb3@2 c3@5 ~",
  DW: "f3@5 ~ g3@5 ~ ab3@5 ~ a2@5 ~", DX: "bb2@3 ~ db3@2 c3@3 ~ b2@2 db3@3 ~ bb2@2 d3@5 ~",
  DY: "c3@5 ~ db3@3 ~ db3@2 c3@5 ~ e3@3 ~ c3@2", DZ: "c4@3 ~ g3@2 e3@5 ~ f3@3 ~ f2 ~ f3@5 ~",
  EA: "f3@5 ~ e3@3 ~ gb3@2 f3@3 ~ c3@2 e3@3 ~ e3@2", EB: "eb3@5 ~ eb3@3 ~ db3@2 d3@5 ~ ab3@5 ~",
  EC: "g3@3 ~ g2 ~ d4@3 ~ g3@2 c3@3 ~ c2 ~ e3@3 ~ c3@2", ED: "eb3@3 ~ a1 ~ eb3@5 ~ d4@2 a3@2 d3@2 ab3@3 ~ gb3@2",
  EE: "g3@5 ~ db3@5 ~ c3@3 ~ c2 ~ gb3@5 ~", EF: "f4@2 c4@2 f3@2 f3@3 ~ eb3@2 e3@3 ~ a1 ~ e3@5 ~",
  EG: "eb3@5 ~ eb3@5 ~ d3@5 ~ gb3@3 ~ d3@2", EH: "g3@3 ~ g2 ~ g3@5 ~ db3@3 ~ db2 ~ db3@5 ~",
  EI: "c3@5 ~ e3@3 ~ c3@2 c3@3 ~ d3@2 c3@5 ~", EJ: "b2@3 ~@3 a2@5 ~ g2@5 ~ f2@3 ~ b2@2",
  EK: "eb3@5 ~ eb3@5 ~ d3@3 ~ bb2@2 ab3@5 ~", EL: "g2@2 c2@2 f2 ~@3", EM: "~@9 f2@2 ~",
})).s("gm_acoustic_bass").gain(0.36)

// other · alto sax
const alto_sax = note(`<
  A B@2 C D E@2 F@2 ~@7 G@2 H I@2 ~@11 J K L K M ~@28 N O@3 ~@3 P Q@3 R S@2 T@2 K ~@7 U V W X Y Z AA AB AC ~ AD ~ AE AF
  ~ AG AH AI AJ@2 AK@2 AL AM AN AO AP AQ@2 AR AS AT AU@3 AT AV AW@2 AX AY AZ BA@2 BB BC BD@3 ~ P BE BF@3 BG@5 ~@3 A B@2
  BH BI BJ@3 BK BL BM BN BO@3 BP@2 ~@7 BQ@2 BR K M ~@4 AG
>`.pickRestart({
  A: "~@6 f4 ~@2 g4 ~@2", B: "[d5@16 c5@2 ~ a4@3 gb4@13 ~@11 f4@2]/2", C: "~@4 f4@2 ~@3 e4@2 ~ f4@6 a4@2 ~@4",
  D: "~@16 c4@2 f4@3 ~@3", E: "[bb4@16 a4@2 f4@3 ~ c5@6 b4@2 c5@4 bb4@6 a4@2 bb4@4 a4@2]/2",
  F: "[~@4 a4@2 ~@4 ab4@2 a4@5 ~ d4@16 f4@14]/2", G: "[~@16 ab4@7 f4@3 ~@22]/2", H: "f4 ~@7 ab4@4", I: "f4 ~@11",
  J: "~@2 ab4", K: "f4 ~@7", L: "f4@3 ~@13 ab4@8", M: "~@6 bb4@2 a4@2 bb4@2 a4@6 g4@3 ~@3",
  N: "~@4 d4@2 f4@3 ~@3 g4@3 ~@3 ab4@3 ~@3", O: "[a4@3 ~@3 bb4@3 ~@3 c5@4 db5@3 ~@3 d5@17 bb4 g4 ~ f4@4 e4@24 ~@2]/3",
// … 386 more lines

More by Basie