Strudelify

Doin' Basie's Thing

Basie

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

// chords · piano
const piano = note(`<
  A@2 B C D@2 E F G H I J@2 K@2 L M@2 N O P Q R S B T U@2 V W X Y Z AA AB AC AD AE@2 AF C AG@2 AH@2 AI AJ AK@2 AL AM AN
  AO AP AQ AR AS ~@2 AT@2 AU AV AW AX AA AY AZ@2 BA BB BC ~ BD ~@2 BE@2 BF BG BH BI C N AJ@2 BJ@2 BK@3 BL BM BN BO BP
  BQ@2 BR@2 BS BT@2 BU BM BV@3 BW BP N BX@2 BY N BZ BM CA@2 BF CB CC CD CE CF CG CH CI CJ CK CL CM CN@2 CO@3 CP CQ@2 CR
  CS@2 CT CU AA AY CV CW CX ~ CY CZ DA DB@2 DC CK DD DE DF DG DH@4 ~@2 DI DJ DK DL@2 DM@2 DN DO DP DQ DR@4
>`.pickRestart({
  A: "[[db3,g3,bb3,eb4] ~@11 [g3,db4,eb4,bb4]@3 ~ [db3,g3,bb3] ~@3 [db3,g3,bb3,eb4]@4 ~@8, ~@12 f3 ~@2 eb4@2 ~@15]/2", // Eb7 Gdim Eb7
  B: "[db3,g3,bb3,eb4] ~@11 [g3,db4,eb4,bb4]@3 ~, ~@12 f3 ~@3", C: "~@3 [db3,g3,bb3,eb4] ~@4 [db3,g3,bb3,eb4] ~@7",
  D: "[~@3 [ab2,bb3,eb4,bb4] f4@2 ~ bb3 [c4,gb4]@2 ~@6 [c4,gb4]@2 ~@6 [g3,gb4,c5] ~@3 [c4,eb4,bb4] gb3 ~@2, ~@15 [bb4,eb5]@2 ~@7 [bb3,eb4]@3 ~@5]/2", // Absus2 Cdim C Cm7 Eb5
  E: "[bb3,db4] [g3,eb4] ~@2 eb2@2 ~@2 eb4@2 db4@2 ~@4, ~@8 c4 ~@7", F: "~@3 [bb3,e4,g4,bb4,d5]@13",
  G: "~@3 f2 [c4,eb4]@2 ~@2 [a3,g4]@2 ~ c2 [a3,eb4]@2 ~@2", H: "~@3 [d3,ab3,c4,f4] ~@4 [d3,ab3,c4,f4] ~@6 db3",
  I: "[eb2,c3,eb3,g3]@6 ~ [e3,bb3,c4,g4]@2 ~@7", // Cm C7
  J: "[~@3 [a3,eb4,f4,a4,c5]@4 ~@4 [bb2,f3,c4,f4] db4@2 ~ [db3,g3,bb3,eb4]@2 ~@11 [g3,db4,eb4,bb4]@3 ~, ~@28 f3 ~@3]/2", // F7 Bbsus2 Eb7
  K: "[~@3 [db3,g3,bb3,eb4] ~@4 [db3,g3,bb3,eb4] ~@6 [db3,g3,db4]@7 ~@2 c4 db4@6 ~, ~@15 eb4@2 ~@7 [eb2,g3,eb4]@5 ~@3]/2", // Eb7 Dbdim Eb
  L: "~@3 [g3,db4,eb4,g4,bb4]@12 ~", // Eb7
  M: "[~@3 ab2 [eb4,gb4]@2 ~@2 [c4,bb4]@2 ~ eb2 [c4,gb4]@2 ~ [ab2,gb3,bb3,c4]@2 ~@7 [ab2,c4]@2 ~@6, ~@24 [gb4,bb4] ~@7]/2", // Ebm C7 Cdim Ab7 Ab Gb
  N: "~@3 [db3,g3,bb3,eb4] ~@4 [db3,g3,bb3,eb4] ~@6 c3", O: "[c2,e3,g3,bb3] ~@7 [c3,bb3]@2 ~@6, ~@8 [e4,g4] ~@7",
  P: "[eb3,a3,eb4]@6 ~@2 d4 eb4@5 ~@2, g4@2 ~@6 [f2,a3,g4]@5 ~@3", // Ebdim F
  Q: "[c4,d4] [ab3,f4] ~@2 bb2@2 ~@2 f4@2 d4@2 ~@4, ~@8 db4 ~@7", R: "~@3 eb2 [bb3,c4]@2 ~@5 [c3,g3,c4,g4] eb4@2 ~@2",
  S: "[f2,a3,c4,eb4] ~@7 [bb2,ab3,c4,d4] ~@7", T: "[eb2,g3,bb3,db4] ~@7 [gb2,bb3,db4,e4] ~@6 [gb3,c4,eb4,bb4]",
  U: "[[bb3,db4] [g3,eb4] ~@2 eb2@2 ~@2 eb4@2 db4@2 ~@4 [db3,eb3]@9 ~@3 [eb2,g3,db4,eb4] ~@3, ~@8 c4 ~@6 [g3,db4]@10 ~@7]/2", // Bbm Cm Dbsus2 Eb7 Gdim
  V: "~@3 [c4,gb4,bb4,c5,eb5]@13", W: "[ab2,c4,eb4,gb4] ~@7 [db4,eb4] [a3,gb4] ~@5 [gb3,c4,eb4,bb4]",
  X: "~@3 eb2 [bb3,db4]@2 ~@2 [g3,eb4]@2 ~ bb1 [g3,db4]@2 ~@2", Y: "~@3 db3 [eb4,f4]@2 ~@5 [e3,bb3,d4,g4] ~@4",
  Z: "~@3 [eb3,ab3,c4,f4] ~@4 [eb3,ab3,c4,f4] ~@7", AA: "[gb2,eb3,gb3,a3] ~@7 [gb2,a3]@2 ~@6, ~@8 [eb4,gb4] ~@7",
  AB: "~@3 [f3,bb3,d4,g4] ~@4 [f3,bb3,d4,g4] ~@6 e3", AC: "[db3,b3,eb4,f4] ~@10 [c3,g3,d4,g4] eb4@2 ~ g3",
  AD: "[f2,eb3,f3,a3]@6 ~ e2 [eb3,a3,c4,g4] ~@3 [c4,f4] ~@3", // F7 Am7b5 F5
  AE: "[[eb3,ab3,c4,f4] ~@3 [c4,eb4] [a3,gb4] ~@2 [c4,f4] ~@6 [c3,g3,bb3,eb4]@2 ~@7 [c3,bb3,c4,e4] ~@7]/2", // Fm7 Cm D F5 Cm7 C7
  AF: "~@3 [eb3,a3,db4,f4] ~@4 [bb1,d3,gb3,ab3]@6 ~ a2", // Dbaug Bbaug
  AG: "[~@3 eb2 [bb3,db4]@2 ~ [e3,bb3,db4,ab4]@2 ~@2 [gb3,c4,eb4,bb4]@2 ~@2 [db3,g3,bb3,eb4]@2 ~@11 [g3,db4,eb4,bb4]@3 ~, ~@28 f3 ~@3]/2", // Bbm Bbm7b5 Cm7b5 Eb7
  AH: "[[bb3,db4] [g3,eb4] ~@2 eb2@2 ~@2 eb4@2 db4@2 ~@4 [ab2,c4]@14 ~@2, ~@8 c4 ~@6 [gb4,bb4]@15 ~@2]/2", // Bbm Cm Ab Gb
  AI: "[eb4,bb4] ~@7 [db4,gb4] ~@6 [c4,gb4,bb4,c5,eb5]", AJ: "[eb2,g3,db4,eb4]@15 ~",
  AK: "[~@3 [db3,ab3,eb4,ab4] e4@2 ~ ab3 [bb3,d4,e4] g4 ~@2 c3@2 ~ [f2,eb3,f3,ab3]@7 ~ e2 [f2,f3,eb4,f4]@5 ~@3]/2", // Dbsus2 Em7b5 Fm7 F7
  AL: "eb3@11 c2 ~@4, [a3,c4]@7 ~", AM: "[g2,bb3,f4,g4]@15 ~", AN: "~@3 [f3,b3,eb4,ab4] ~@7 [bb3,e4,g4,bb4,d5]@5",
  AO: "[a3,c4,eb4] g4 ~@2 f2@2 ~@6 [f2,a3,c4,eb4] ~@3", // Adim F7
  AP: "~@3 [ab3,eb4,f4,ab4,c5] ~@3 [a3,eb4,gb4,a4,c5] [f2,ab3,c4,eb4] ~@7", // Fm7 Adim Fm7
  AQ: "[eb2,g3,bb3,c4] ~@10 [bb3,e4,ab4,bb4,c5]@5", AR: "[f2,a3,db4,eb4] ~@10 [ab3,d4,gb4,ab4,bb4]@5",
  AS: "[eb2,eb3,g3,bb3] ~@15", // Eb
  AT: "[~@4 [db3,g3,bb3,gb4] ~@6 eb2 [bb3,db4]@2 ~ [ab2,gb3,bb3,c4]@7 ~ g2 ~@3 [gb3,c4,eb4,bb4] [b2,a3,db4,eb4] ~@3]/2", // Gb Bbm Ab7 Cm7b5 B7
  AU: "[b2,a3,db4,eb4] ~@7 [a2,db3,e3,g3]@3 eb4@2 ~@3, ~@11 bb4 ~@4", // B7 A7
  AV: "~@4 [bb3,db4,f4,g4]@7 ~ [eb3,g3,bb3,db4] ~@3", AW: "[f3,b3,eb4,ab4] ~@6 [e3,bb3,d4,g4]@2 ~@3 [c3,bb3,d4,e4] ~@3",
  AX: "~@3 f2 [c4,eb4]@2 ~@2 [ab3,f4]@2 ~ c2 [ab3,eb4]@2 ~@2", AY: "~@3 [f3,bb3,d4,g4] ~@4 [f3,bb3,d4,g4] ~@7",
  AZ: "[[b3,eb4,f4] ab4 ~@2 db3@2 ~@2 [c2,e3,g3,bb3]@4 [e3,bb3,d4,ab4] ~@2 [eb3,a3,c4,g4]@2 ~@14 [eb3,ab3,c4,f4]]/2", // Fm7b5 C7 E7 Am7b5 Fm7
  BA: "[f2,ab3,c4,eb4] ~@10 db3 [bb3,eb4,e4] g4 ~@2", BB: "[b2,a3,db4,eb4] ~@6 [eb3,ab3,c4,f4] ~@3 [eb2,c3,eb3,g3]@5",
  BC: "[eb2,c3,eb3,g3]@6 ~ d2 ~@3 [ab2,ab3,eb4,ab4] [d3,ab3,bb3,gb4] ~@3", BD: "~@4 [gb3,c4,eb4,bb4]@7 ~ [a3,eb4] ~@3",
  BE: "[[gb3,c4,gb4]@6 ~@2 f4 gb4@5 ~ [gb3,c4,gb4]@7 ~@2 f4 gb4@5 ~@2, bb4@2 ~@6 [ab2,c4,bb4]@5 ~@2 bb4@2 ~@7 [ab2,c4,bb4]@5 ~@3]/2", // Gbdim Ab
  BF: "[g3,bb3,db4] eb4 ~@2 eb2@2 ~@2 eb4@2 db4@2 ~@4, ~@8 c4 ~@7", // Gdim
  BG: "[bb3,e4,g4,c5]@2 ~@6 [gb3,e4,bb4] ~@3 [bb3,c4,g4] e3 ~@2, ~@8 [g3,c4]@3 ~@5", // C7 Gb7 C7 C5
  BH: "~@3 [f2,f3,c4,f4] d4@2 ~ f3 [a3,eb4]@2 ~@5 d3", BI: "[bb1,d3,f3,ab3] ~@7 [bb2,ab3]@2 ~@6, ~@8 [d4,f4] ~@7",
  BJ: "[[eb2,db3,eb3,g3]@6 ~ d2 [eb2,eb3,db4,eb4]@5 ~@3 [db3,g3,bb3] ~@3 [db3,g3,bb3,eb4]@4 ~@8, ~@15 eb4@2 ~@15]/2", // Eb7 Gdim Eb7
  BK: "[~@3 [gb3,c4,eb4,bb4] ~@4 [gb3,c4,eb4,bb4] ~@7 [gb3,bb3]@9 ~@3 [ab2,c4,gb4,bb4] ~@2 [db3,g3,bb3,eb4]@2 ~@10 f3 [g3,db4,eb4,bb4]@3 ~, ~@15 [c4,gb4]@10 ~@23]/3", // Cm7b5 Gb Ab7 Eb7 Cdim
  BL: "[e3,bb3,d4,g4] ~@3 [e3,bb3,d4,g4]@4 ~@8", BM: "~@3 [f2,f3,c4,g4] d4@2 ~ f3 [a3,eb4]@2 ~@5 d3",
  BN: "~@3 [ab3,d4,f4,ab4,c5]@13", BO: "~@3 [eb2,eb3,bb3,eb4] c4@2 ~ eb3 [g3,db4]@2 ~@5 c3",
  BP: "db3@11 bb1 ~@4, [g3,bb3]@7 ~", // Gm
  BQ: "[~@3 [db3,g3,bb3,eb4] ~@4 [db3,g3,bb3,eb4] ~@7 [db3,eb3]@9 ~@3 [eb2,g3,db4,eb4] ~@3, ~@15 [g3,db4]@10 ~@7]/2", // Eb7 Dbsus2 Eb7 Gdim
  BR: "[~@3 [db3,g3,bb3,eb4] ~@4 [db3,g3,bb3,eb4] ~@6 [eb2,db3,eb3,g3]@2 ~@7 [eb2,g3]@2 ~@6, ~@24 [db4,eb4] ~@7]/2", // Eb7 Eb Dbsus2
  BS: "~@3 [gb3,c4,eb4,bb4] ~@4 [gb3,c4,eb4,bb4] ~@6 f3", // Cm7b5
  BT: "[[gb3,c4,eb4,bb4] ~@3 [gb3,c4,eb4,bb4]@4 ~@7 bb3@2 ~@10 bb1 [eb3,g3,db4]@2 ~@2, ~@15 eb4 ~@16]/2", // Cm7b5 Eb7
  BU: "[bb3,d4,e4] g4 ~@2 c3@2 ~@2 g4@2 e4@2 ~@4, ~@8 eb4 ~@7", // Em7b5
  BV: "[~@3 [d3,ab3,c4,f4] ~@4 [d3,ab3,c4,f4] ~@7 [eb2,g3]@14 ~@2 [eb2,g3]@14 ~@2, ~@15 [db4,eb4]@15 ~ [db4,eb4]@15 ~@2]/3", // Dm7b5 Eb Dbsus2
  BW: "[eb2,db3,eb3,g3]@6 ~ d2 [eb2,eb3,db4,eb4]@5 ~@3", // Eb7
  BX: "[[eb2,db3,eb3,g3] ~@7 [eb2,g3]@2 ~@5 eb4@2 ~@10 eb2 [bb3,c4,gb4]@2 ~@2, ~@8 [db4,eb4] ~@6 bb4 ~@16]/2", // Eb7 Eb Cm7b5 Dbsus2
  BY: "[ab2,gb3,bb3,c4] ~@7 [ab2,c4]@2 ~@6, ~@8 [gb4,bb4] ~@7", BZ: "e3@11 g2 ~@4, [bb3,d4]@7 ~",
  CA: "[~@3 [d3,ab3,c4,f4] ~@4 [d3,ab3,c4,f4] ~@6 [db3,g3,bb3,eb4]@2 ~@10 f3 [g3,db4,eb4,bb4]@3 ~]/2", // Dm7b5 Eb7
  CB: "[e4,a4] ~@3 [g3,bb3,db4] f4 ~ e4@2 ~@7, ~@7 a4 ~@8", CC: "~@3 [b3,f4,a4,b4,d5] ~@3 [gb3,c4,eb4,bb4] ~@8",
  CD: "~@11 d3 [bb3,f4] ~@3", CE: "[bb2,ab3,bb3,db4] ~@7 [g3,b3,db4] e4 ~@2 a2@2 ~@2",
  CF: "[ab2,c4,eb4,gb4] ~@10 [f3,b3,d4,a4] [eb4,bb4] ~@3", CG: "~@4 [ab2,c4,eb4,gb4] ~@6 g2 [ab2,c4,eb4,gb4] ~@3",
  CH: "[d3,c4,e4,gb4] ~@2 [db3,g3,bb3,f4]@2 ~@3 [e4,a4] ~@6 [eb2,eb3,bb3,f4]", // D7 Gm7b5 A5 Ebsus2
  CI: "[bb3,e4,g4,c5]@2 ~@6 [gb3,e4,bb4] ~@3 [e3,bb3,c4,g4] ~@3, ~@8 [g3,c4]@3 ~@5", // C7 Gb7 C7 C5
  CJ: "~@3 [f2,f3,c4,f4] d4@2 ~ f3 [ab3,eb4]@2 ~@5 d3", CK: "~@3 [eb3,a3,c4,gb4] ~@4 [eb3,a3,c4,gb4] ~@6 eb3",
  CL: "~@3 [f3,bb3,d4,g4] ~@7 g2 [d4,f4]@2 ~@2", CM: "[bb3,c4,e4] g4 ~@2 c3@2 ~@2 g4@2 e4@2 ~@4, ~@8 eb4 ~@7",
  CN: "[~@3 [a3,eb4,f4,a4,c5]@12 ~ [ab3,eb4]@2 ~@6 [e3,eb4,ab4] ~@3 [eb3,ab3,c4,f4] ~@3, ~@15 [f4,c5]@2 ~@7 [f3,c4]@3 ~@5]/2", // F7 Ab5 Emaj7 Fm7 F5
  CO: "[~@3 [db3,g3,bb3,eb4] ~@4 [db3,g3,bb3,eb4] ~@7 [ab2,c4]@14 ~@2 [eb2,g3]@14 ~@2, ~@15 [gb4,ab4]@15 ~ [db4,f4]@15 ~@2]/3", // Eb7 Ab Eb Gbsus2 Db
  CP: "[eb3,bb3,eb4,g4] ~@6 [bb3,e4,ab4,bb4,db5]@5 ~@4", // Eb Bbm7b5
  CQ: "[~@3 [g3,db4,f4,g4,bb4]@5 ~@8 [g3,db4]@2 ~@6 [d3,db4,g4] ~@3 [db3,g3,bb3,f4] ~@3, ~@15 [f4,bb4]@2 ~@7 [eb3,bb3]@3 ~@5]/2", // Gm7b5 Gdim G Gm7b5 Bb5 Eb5
  CR: "[ab2,c4,gb4,bb4]@15 ~", // Ab7
  CS: "[[c4,eb4,gb4] bb4 ~@5 [b2,gb3,db4,gb4] d4@2 ~ gb3 [ab2,gb3,bb3,c4]@3 [db3,g3,bb3,f4]@2 ~@10 f3 [g3,db4,f4,bb4]@3 ~]/2", // Cdim Bsus2 Ab7 Gm7b5
  CT: "~@3 [bb3,e4,g4,bb4,c5]@12 ~", CU: "[ab3,c4,eb4] f4 ~@2 f2@2 ~@2 f4@2 eb4@2 ~@4, ~@8 d4 ~@7",
  CV: "~@3 [db3,ab3,eb4,ab4] e4@2 ~ ab3 ~@3 [bb3,e4,ab4,bb4,c5]@4 ~", CW: "~@3 [eb3,a3,c4,f4] ~@4 [eb3,a3,c4,f4] ~@7",
  CX: "~@3 [ab3,d4,gb4,ab4,bb4]@13", CY: "~@15 [eb3,a3,db4,gb4]", CZ: "[e3,bb3,d4,g4] ~@10 a3 [bb3,e4,g4,d5]@3 ~",
  DA: "~@3 [a3,eb4,g4,a4,c5]@5 [gb2,eb3,gb3,a3]@6 ~ f2", // Am7b5 Ebdim
  DB: "[[e3,bb3,e4]@6 ~@2 eb4 e4@5 ~ [g2,f3,g3,bb3]@5 [ab2,b3,d4,f4] ~@6 [e3,bb3,d4,g4] ~@4, g4@2 ~@6 [c3,bb3,g4]@5 ~@19]/2", // Edim Gm7 Abdim Em7b5 C7
  DC: "[f2,eb3,f3,a3]@6 ~ e2 [f2,f3,eb4,g4]@5 ~@3", DD: "[bb3,d4,e4] g4 ~@2 c3@2 ~@2 [bb3,d4,e4] g4 ~@6",
  DE: "[ab3,c4,d4] f4 ~@2 bb2@2 ~@2 [g3,b3,db4] e4 ~@2 a2@2 ~@2", // Dm7b5 Dbm7b5
  DF: "[c4,d4,f4] a4 ~@2 d3@2 ~@2 a4@2 f4@2 ~@4, ~@8 f4 ~@7", DG: "~@3 [gb3,c4,eb4,gb4,a4]@13",
  DH: "[[e2,g3,d4,e4]@15 [bb1,d3,f3,ab3]@7 ~ a2 [b3,e4] ~@6 e4@2 ~@10 a2 [a3,c4,gb4]@2 ~ [g2,f3,a3,b3]@2 ~@7 [g2,b3]@2 ~@6, ~@31 a4 ~@24 [f4,a4] ~@7]/4", // Em7 Bb7 E5 Gbdim G7 G F
  DI: "[f3,c4,d4,a4] ~@10 b3 [c4,f4,a4,d5]@3 ~", DJ: "[c3,gb3,a3,eb4] ~@3 [c3,gb3,a3,eb4]@4 ~@8",
  DK: "~@3 [d3,g3,b3,e4] ~@4 [d3,g3,b3,e4] ~@7", // Em7
  DL: "[~@3 [ab3,d4,f4,ab4,c5] [b3,e4] ~@3 [db3,g3,b3,e4] ~@6 [gb3,c4,gb4]@7 ~@2 f4 gb4@6 ~, ~@15 a4@2 ~@7 [d3,c4,a4]@5 ~@3]/2", // Dm7b5 E5 Dbm7b5 Gbdim D7
  DM: "[~@3 [c4,f4,a4,c5,d5]@5 [eb4,g4] ~@6 [c2,e3,g3,bb3]@7 ~ b2 [c3,g3,e4,g4]@5 ~@3]/2", // Dm7 Eb C7 C
  DN: "[db3,g3,a3,e4] ~@3 [db3,g3,a3,e4]@4 ~@8", DO: "[c4,e4,gb4] a4 ~@2 d3@2 ~@2 a4@2 gb4@2 ~@4, ~@8 f4 ~@7",
  DP: "[f3,b3,f4]@6 ~@2 e4 f4@6 ~, a4@2 ~@6 [g2,b3,a4]@5 ~@3", DQ: "[c3,a3,c4,e4] ~@7 [a5,f6,c7] ~@7",
  DR: "[[a5,gb6,c7] ~@6 [a5,g6,c7] ~@4 [c2,c3,bb3,d4,e4,a4]@44 ~@8]/4", // Gbdim Am7 Am
})).s("gm_piano").gain(0.14).pan(0.3)

// other · alto sax
const alto_sax = note(`<
  ~@59 A B@2 C D ~@3 E F G H I J K ~@46 L M N@2 O P N@2 ~@8 Q R S ~ T U V ~@8 W X@2 Y Z AA AB AC@2 ~@4 AD@2 ~@6 AE AF@3
  AD@2 AG AH@4
>`.pickRestart({
  A: "~@4 db4@3 eb4 ~@3 gb4 eb4 ~@3", B: "[c4@6 ~ eb4@5 db4@6 ~ c4 db4@3 d4 db4@3 c4 ~@4]/2", C: "~@4 f4@8 db4 ~@3",
  D: "eb4@3 eb4 eb4@3 d4 ~@8", E: "~@11 db4@5", F: "c4@3 c4 ~@3 c4 c4@4 c4@3 c4", G: "~@3 c4 c4@3 b3 ~@3 bb3@2 ~@2 bb3",
  H: "db4@3 c4 ~@3 c4 a3@4 c4@2 ~@2", I: "~@4 eb4@3 c4 eb4@3 ab3@5", J: "g3 ~@7", K: "~@4 eb4@8 c4@3 db4",
  L: "c4@2 ~@2 db4@2 ~@2 c4@3 db4@2 ~@2 b3", M: "~@3 c4@5 b3@2 ~@2 c4@2 ~@2",
  N: "[c4@2 ~@2 db4@2 ~@2 c4@3 db4@2 ~@2 db4@17]/2", O: "~@3 a3 bb3 ~@3 a3@3 bb3@2 ~@2 a3",
  P: "~@3 bb3@5 a3@2 ~@2 bb3@2 ~@2", Q: "g3@3 db4@9 g3 ~@3", R: "db4@6 ~ db4@5 eb4 ~@3", S: "g3@3 db4@9 ab3@2 ~ g3",
  T: "~@3 ab3@5 c4@2 ~@2 ab3@2 ~@2", U: "c4@6 ~ eb4@5 gb4 ~@3", V: "g3@3 db4@9 g3@2 ~ gb3", W: "~@12 eb4 ~@3",
  X: "[e4@6 ~ d4@5 bb3@3 g4@5 g4@3 eb4 gb4@3 c4 ~@4]/2", Y: "~@4 c4@3 b3 c4@3 e4 c4@3 bb3", Z: "d4@4 b3@3 bb3 ~@8",
  AA: "~@4 a3@3 a3 c4@3 c4 a3@3 a3", AB: "c4@3 c4 a3@3 a3 c4@3 a3 c4@3 c4",
  AC: "[~@3 c4@2 ~@2 d4 e4@2 ~ eb4 ~@3 d4@8 db4@7 ~@2]/2", AD: "[~@3 c4@5 c4@2 ~ c4 ~@3 b3@5 b3@2 ~ b3 ~@3 b3@5]/2",
  AE: "~@2 a4@4 gb4 ~", AF: "[a4@4 f4@3 bb3 ~@7 g4@5 e4@3 c4 e4@2 ~ e4@2 ~@2 gb4@5 f4@3 eb4 ~@8]/3", AG: "a3 ~@15",
  AH: "[~@3 gb4@11 ~@2]/4",
})).s("gm_alto_sax").gain(0.39).pan(0.7)

// other · tenor sax
const tenor_sax = note(`<
  ~@24 A B C D A B C E F G H I J K L M A B C D A B C E F G H I J K L M ~@2 N O P@2 Q R S T U V ~@52 W X Y@2 Z AA AB@2 AC
  AD AE@2 AF@2 AG AH AI AJ AK ~ AL AM AN AO AP@3 AQ@3 ~ AR AS@2 AT AU AV AW AX@2 AY@3 ~ AZ@2 ~ BA@4 ~ BB BC@3 AZ@2 BD
  BE@4
>`.pickRestart({
  A: "~@4 eb4@3 c4 eb4@3 f4 eb4@3 c4", B: "eb4@7 gb4 ~@8", C: "~@3 bb3 c4@3 eb4 gb4@3 g4 eb4@3 c4",
  D: "c5@2 b4 [ab4,a4,bb4] gb4@3 eb4 ~@8, ~@4 g4 ~@11", E: "eb4@4 f4@3 gb4 g4@3 eb4 ab4@3 bb4",
  F: "b4@3 c5@8 ab4 f4@3 c4", G: "eb4@4 d4@3 c4 ~@3 eb4 d4@3 c4", H: "d4@6 ~ bb4@5 g4 ~@3", I: "bb4@3 c5 db5@3 c5 ~@8",
  J: "~@4 a4@8 c4@3 eb4", K: "f4@3 eb4 ~@3 c4@8 a4", L: "bb4 c5 ~ bb4 eb4 ~@3 ab4@3 eb4 gb4@3 g4",
  M: "eb4@3 db4 bb3@3 a3 ab3@3 gb3@5", N: "~@3 bb3 c4@3 bb3 g3@4 ab3@3 g3", O: "~@4 bb3@3 db4 ~@3 eb4 db4 ~@3",
  P: "[bb3@6 ~ c4@5 a3@6 ~ ab3 a3@3 c4 b3@3 bb3 ~@4]/2", Q: "~@4 db4@8 bb3 ~@3", R: "b3@3 b3 b3@3 bb3 ~@7 b3",
  S: "~@3 c4@2 ~@2 b3 c4@3 ab3 f3@3 c3", T: "eb3@4 d3@3 c3 ~@3 gb3 f3@3 eb3", U: "d3@7 bb3@5 g3 ~@3",
  V: "bb3@3 c4 db4@3 c4 ~@8", W: "a3@2 ~@2 bb3@2 ~@2 a3@3 bb3@2 ~@2 a3", X: "~@3 bb3@5 a3@2 ~@2 bb3@2 ~@2",
  Y: "[a3@2 ~@2 bb3@2 ~@2 a3@3 bb3@2 ~@2 bb3@8 b3@9]/2", Z: "~@3 f3 gb3 ~@3 f3@3 gb3@2 ~@2 f3",
  AA: "~@3 gb3@5 f3@2 ~@2 gb3@2 ~@2", AB: "[a3@2 ~@2 bb3@2 ~@2 a3@3 bb3@2 ~@2 bb3@17]/2",
  AC: "~@3 c4 eb4@3 f4 eb4@3 c4 eb4@3 f4", AD: "gb4@4 f4@2 ~ eb4 ~@3 gb4 f4@3 eb4",
  AE: "[g4@8 f4@7 e4@9 ~@3 db4 c4@3 bb3]/2", AF: "[c4@6 ~ gb4 eb4@3 c4 eb4@6 ~ db4 c4@3 bb3 c4@3 eb4 c4@3 bb3]/2",
  AG: "db4@3 bb3 c4@3 db4@9", AH: "gb4@3 eb4 f4@3 gb4@9", AI: "f3@3 bb3@9 f3 ~@3", AJ: "bb3@6 ~ bb3@5 c4 ~@3",
  AK: "f3@3 bb3@9 gb3@2 ~ f3", AL: "~@3 gb3@5 bb3@2 ~@2 gb3@2 ~@2", AM: "bb3@6 ~ db4@5 c4 ~@3",
  AN: "f3@3 bb3@9 f3@2 ~ e3", AO: "~@15 b4", AP: "[c5@3 c4@5 d4@3 eb4 ~@3 d4@2 ~@2 f4 eb4@3 d4 eb4@3 c4 ~@3 bb3@17]/3",
  AQ: "[~@7 c5@3 b4 [ab4,a4,bb4] gb4@3 eb4@11 d4 [b3,c4,db4] a3@3 ab3@17, ~@12 g4 ~@15 bb3 ~@19]/3", AR: "~@12 db4 ~@3",
  AS: "[d4@6 ~ a3@5 g3@3 eb4@5 eb4@3 c4 eb4@3 a3 ~@4]/2", AT: "~@4 bb3@3 a3 bb3@3 d4 bb3@3 g3",
  AU: "bb3@4 ab3@3 g3 ~@8", AV: "~@4 f3@3 f3 a3@3 a3 f3@3 f3", AW: "a3@3 a3 gb3@3 gb3 a3@3 gb3 a3@3 bb3",
  AX: "[~@3 bb3@2 ~@2 bb3 d4@2 ~ db4 ~@3 c4@8 b3@7 ~ ab3]/2",
  AY: "[a3@3 c4 a3@3 ab3 a3@2 ~ d3 ~@3 c4@5 b3 ~@3 a3@2 ~ eb3 ~@3 b3@5 g3@3 e3 g3@3 a3 g3@2 ~ g3]/3",
  AZ: "[~@3 gb3@5 gb3@2 ~ gb3 ~@3 f3@5 f3@2 ~ f3 ~@3 f3@5]/2",
  BA: "[~@11 d3 f3@3 a3@5 a3@3 ab3 a3@2 ~ d3 ~@3 c4@5 b3 ~@3 a3@2 ~ eb3 ~@3 b3@5 g3@3 e3 g3@3 a3 g3@2 ~ g3]/4",
  BB: "~@2 gb4@4 e4 ~", BC: "[f4@4 d4@3 a3 ~@7 e4@5 d4@3 bb3 d4@2 ~ d4@2 ~@2 db4@5 db4@3 db4 ~@8]/3", BD: "g3 ~@15",
  BE: "[~@3 bb3@11 ~@2]/4",
})).s("gm_tenor_sax").gain(0.39)

// other · tenor sax
const tenor_sax_2 = note(`<
  ~@59 A B@2 C D ~@3 E F G H I J K ~@46 L M N@2 O P Q@2 ~@8 R S T ~ U V W ~@8 X Y@2 Z AA AB AC AD@2 ~@4 AE@2 ~@6 AF AG@3
  AE@2 AH AI@4
>`.pickRestart({
// … 361 more lines

More by Basie