Strudelify

Basie - Straight Ahead

Basie

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

// chords · piano
const piano = note(`<
  A B ~ C ~ D E F@2 G H I J K L M N O P Q R S L T U V W X Y@2 Z ~@3 AA ~ AB AC AD AE AF AG AH AI AJ AK AL AM AN AO AP AQ
  AR AS AT AU AV AW AX AY AZ BA AZ BB BC BD BE BF BG BH BI AU BJ BK BL BM BN BH BO BP BE BQ BR BS BO BT BU BV BW BX BY
  BZ CA CB CC CD CE CF CG CH CI CJ CK CL CM BT CN CO CP CQ CR CS CT CU CV CW CX CY CZ DA BI DB DC DD DE DF ~ DG DH DI
  DJ@3
>`.pickRestart({
  A: "[e4,g4,a4,d5,g5,c6]@2 ~@10 a3@3 ~", B: "[f2,f3,a3,c4]@8 [gb2,gb3,a3,c4]@7 [g2,g3,a3,c4]",
  C: "[bb4,d5,f5,g5,c6]@8 [bb4,d5,e5,g5,c6]@7 [a4,c5,e5,g5,c6]", D: "~ [f2,f3], [c4,d4,f4,ab4]",
  E: "~ [e2,e3], [b3,d4,e4,g4]", F: "[~@8 [eb2,eb3]@7 [d2,d3,a3,c4,d4,f4]@17, [a3,c4,eb4,gb4]@15 ~@17]/2", G: "[g2,g3]",
  H: "[c3,e3,a3,d4,g4,c5] ~@3 [c3,e3,a3,d4,g4,c5] ~@3", I: "[g3,bb3,d4,f4,a4,c5]@2 ~@5 [c3,bb3,d4,e4,a4,c5]@9",
  J: "[e3,a3]@10 ~@2 a3@2 ~ g4, ~@11 e3@3 e4@2", K: "~@3 [d3,ab3,c4,f4] ~@4 [d3,ab3,c4,f4]@7 ~",
  L: "[d3,g3]@10 ~@2 g3@2 ~ e4, [d4,e4,b4]@13 ~ d4@2, ~@11 d3@4 ~", // G5 E7
  M: "gb3@10 ~@3 c4@2 eb4, [c4,eb4,a4]@12 gb3@3 ~, c3@8 ~@3 c3@5", N: "~@8 [f3,a3,c4,e4]@2 ~ [f3,a3,c4,e4] ~@4",
  O: "~@3 [f3,c4,e4,a4] ~@4 [f3,c4,e4,a4]@7 ~", P: "c3@2 ~ [e3,a3,c4,g4]@2 ~@5 [d3,a3,c4,f4]@2 ~@2 [eb3,a3,c4,gb4]@2",
  Q: "g2@2 ~ [f3,bb3,d4,g4]@2 ~@3 c3@2 ~ [e3,bb3,d4,g4]@2 ~@3", R: "~@3 [e3,a3,c4,g4] ~@7 [d3,f3,a3,c4] ~@4",
  S: "[ab3,c4,f4]@3 ~ f4 eb4 c4 ab3 ~ ab3@3 ~@4, ~@8 [d4,f4,d5,f5,c6]@3 ~@5", // Fm Dm7
  T: "eb4 c4 a3 gb3 [gb3,db4,eb4,bb4]@3 ~ [c3,gb3,c4,eb4,a4]@7 ~", // Ebm7 Cdim
  U: "[f3,c4]@10 ~@2 c4@2 ~ a4, [f4,a4,e5]@13 ~ f4@2, ~@11 f3@4 ~", V: "~@3 [f3,c4,d4,a4] ~@4 [f3,c4,d4,a4]@7 ~",
  W: "c3@2 ~ [e3,a3,c4,g4]@2 ~@3 [f3,c4,f4,a4,e5]@7 ~", // Am7 Fmaj7
  X: "c3@2 ~ [eb3,a3,c4,gb4]@2 ~@4 a3@3 ~@4, ~@8 [e4,g4,e5,g5,c6]@3 ~@5", // Ebdim C
  Y: "[[g2,f3,bb3,c4]@6 ~ [gb2,eb3,a3,c4]@5 [g2,f3,bb3,c4]@6 ~ [a2,g3,c4,e4]@5 [d3,gb3,c4,eb4]@8]/2", // Gm7 Gbdim Gm7 Am7 Cdim
  Z: "[g2,f3,bb3,d4]@2 ~@6 [c3,bb3,d4,f4]@4 [gb3,bb3,db4,e4]@3 [f3,a3,c4,d4]", AA: "~@3 ab6 a6 ~@6 ab5 a5 ~@3",
  AB: "~@8 [e3,a3,c4,g4]@2 ~ [e3,a3,c4,g4] ~@4", AC: "~@12 ab3@3 f4, [f4,c5]@13 ~@3, ~@11 d3@4 ~",
  AD: "~@3 [g3,d4,e4,b4] ~@4 [g3,d4,e4,b4]@7 ~", // Em7
  AE: "[gb3,c4,eb4,a4]@3 ~@3 [gb3,db4,eb4,bb4]@2 ~@3 [gb3,c4,eb4,a4] ~@4", // Gbdim Ebm7 Gbdim
  AF: "c4@10 ~@3 f4@2 a4, [f4,a4,e5]@12 c4@3 ~, f3@8 ~@3 f3@5", AG: "~@12 c4@3 a4, [a4,d5]@13 ~@3, ~@11 f3@4 ~",
  AH: "~@8 [ab3,c4,eb4,g4]@2 ~ [ab3,c4,eb4,g4] ~@4", AI: "[eb3,eb4,g4,c5]@7 ~ [ab3,eb4,f4,c5]@3 ~ [f3,g3,bb3,d4]@3 ~",
  AJ: "[f3,c4,eb4,ab4]@3 ~@4 [g3,c4,eb4,bb4] ~@4 ab4 f4 eb4 c4", AK: "~@8 [f3,b3,eb4,ab4]@2 ~ [f3,b3,eb4,ab4] ~@4",
  AL: "~@3 [f3,g3,bb3,d4] ~@7 [g3,bb3,eb4] ~@4", AM: "~@3 [eb3,gb3,a3,c4] ~@4 [eb3,gb3,a3,c4]@7 ~",
  AN: "~@3 [eb3,ab3,c4,f4] ~@4 [eb3,ab3,c4,f4]@7 ~", AO: "ab3@10 ~@3 d4@2 g4, [d4,g4,c5]@12 ab3@3 ~, d3@8 ~@3 d3@5",
  AP: "~@2 [g3,bb3,c4,eb4]@2 [ab3,eb4,f4,c5]@3 ~ [bb3,f4,a4,d5]@3 ~@3 [g3,c4,eb4,bb4]@2", // Cm7 Fm7 Bbmaj7 Cm7
  AQ: "~ ab3@3 ~@5 g3@3 ~@4, [db4,f4,db5,f5,bb5]@3 ~@5 [db4,f4,db5,f5,c6]@3 ~@5", // Bbm Dbmaj7
  AR: "ab2@2 ~ [g3,c4,eb4,bb4]@2 ~@3 [f3,f4,ab4,eb5]@7 ~", AS: "~@3 [f3,b3,eb4,ab4] ~@4 [f3,b3,eb4,ab4]@7 ~",
  AT: "~@3 [f3,bb3,d4,a4] ~@4 [f3,bb3,d4,a4]@7 ~", AU: "~@12 a3@3 gb4, [gb4,c5]@13 ~@3, ~@11 eb3@4 ~",
  AV: "~@8 [eb3,g3,ab3,c4]@2 ~ [eb3,g3,ab3,c4] ~@4", AW: "~@3 [ab3,d4,g4,c5] ~@4 [ab3,d4,g4,c5]@7 ~",
  AX: "~@3 [ab3,db4,f4,c5] ~@4 [ab3,db4,f4,c5]@7 ~", AY: "~@3 [g3,db4,f4,c5] ~@4 [g3,db4,f4,c5]@7 ~",
  AZ: "c4@10 ~@3 f4@2 ab4, [f4,ab4,eb5]@12 c4@3 ~, f3@8 ~@3 f3@5", BA: "~@3 [ab3,bb3,db4,f4] ~@7 [g3,c4,db4,f4] ~@4",
  BB: "~@3 [f3,c4,eb4,ab4] ~@4 [f3,c4,eb4,ab4]@7 ~", BC: "bb3@10 ~@3 eb4@2 g4, [eb4,g4,d5]@12 bb3@3 ~, eb3@8 ~@3 eb3@5",
  BD: "~@12 a3@3 g4, [g4,c5]@13 ~@3, ~@11 eb3@4 ~", BE: "~@12 ab3@3 g4, [g4,c5]@13 ~@3, ~@11 eb3@4 ~",
  BF: "~@8 [ab3,d4,f4,c5]@2 ~ [ab3,d4,f4,c5] ~@4", BG: "~@3 [c4,f4,ab4,eb5] ~@4 [c4,f4,ab4,eb5]@7 ~",
  BH: "~@12 b3@3 ab4, [ab4,eb5]@13 ~@3, ~@11 f3@4 ~", BI: "~@8 [bb3,f4,a4,d5]@2 ~ [bb3,f4,a4,d5] ~@4",
  BJ: "ab3@10 ~@3 eb4@2 g4, [eb4,g4,c5]@12 ab3@3 ~, eb3@8 ~@3 eb3@5", BK: "~@3 [ab3,d4,f4,c5] ~@4 [ab3,d4,f4,c5]@7 ~",
  BL: "~@3 [g3,bb3,eb4] ~@4 f3@2 ~ [ab3,eb4,f4,c5]@2 ~@3", BM: "[eb3,eb4,gb4,c5]@7 ~ [c3,c4,eb4,bb4]@7 ~",
  BN: "~@8 [f3,ab3,c4,eb4]@2 ~ [f3,ab3,c4,eb4] ~@4", BO: "~@8 [f3,bb3,d4,g4]@2 ~ [f3,bb3,d4,g4] ~@4",
  BP: "~@2 [eb3,a3,c4,gb4]@2 [e3,a3,db4,ab4]@3 ~@4 [eb3,gb3,a3,c4] ~@4", // Ebdim Amaj7 Ebdim
  BQ: "~@8 [ab3,d4,g4,c5]@2 ~ [ab3,d4,g4,c5] ~@4", BR: "~@12 g3@3 f4, [f4,bb4]@13 ~@3, ~@11 d3@4 ~",
  BS: "~@8 [gb3,c4,e4,b4]@2 ~ [gb3,c4,e4,b4] ~@4", BT: "~@3 [g3,db4,f4,bb4] ~@4 [g3,db4,f4,bb4]@7 ~",
  BU: "~@3 [g3,a3,c4,e4] ~@4 [g3,a3,c4,e4]@7 ~", BV: "~@2 [f3,ab3,b3,d4]@2 [gb3,bb3,b3,eb4]@3 ~@4 [f3,ab3,b3,d4] ~@4",
  BW: "[bb3,f4,g4,f5,g5,d6]@3 ~@5 [f3,f4,ab4,d5]@7 ~", BX: "~@7 [gb3,c4,e4,a4] ~@4 [gb3,c4,e4,a4]@3 ~",
  BY: "~@3 [f3,bb3,d4,g4] ~@4 [f3,b3,eb4,ab4]@3 ~ [e3,bb3,d4,a4]@3 ~", // Gm7 Fm7b5 Dsus2
  BZ: "[a3,d4,f4,d5,f5,c6]@3 ~@5 [f3,a3,b3,e4]@3 ~ [e3,bb3,db4,ab4]@3 ~", // Dm7 Fmaj7 Bbm7b5
  CA: "~@3 [eb3,a3,d4,g4] ~@4 [eb3,a3,d4,g4]@7 ~", CB: "~@3 eb4 g4@3 c5@4 ~ [a3,eb4,g4,c5]@2 ~@2, a3@5 ~@3",
  CC: "[c5,d5,f5,a5,c6]@2 ~@5 [bb4,d5,f5,g5,bb5] ~@8", CD: "[a4,c5,d5,f5,a5]@2 ~@5 [g4,bb4,d5,f5,g5] ~@8",
  CE: "~@7 ab5 a5 ~@6 db6", CF: "d6 ~@6 ab6 a6 ~@6 b6", CG: "c7",
  CH: "[c3,e3,bb3,d4,a4,c5]@2 ~@5 [c3,e3,bb3,d4,a4,c5] ~@8", CI: "~@3 f4 a4@3 d5@4 ~ [bb3,f4,a4,d5]@2 ~@2, bb3@5 ~@3",
  CJ: "~@3 [db4,g4,c5,f5] ~@4 [db4,g4,c5,f5]@7 ~", // Dbmaj7
  CK: "[a3,f4,c5]@3 a3 d4 ~ f4 c5 [f3,bb3,d4,a4]@3 ~ [g3,c4,e4,a4]@3 ~", // F Bbmaj7 Am7
  CL: "~@3 [f3,b3,d4,ab4] ~@4 [f3,b3,d4,ab4]@7 ~", CM: "~@3 [f3,bb3,d4,g4] ~@4 [f3,bb3,d4,g4]@7 ~",
  CN: "~@8 [g3,a3,c4,e4]@2 ~ [g3,a3,c4,e4] ~@4", CO: "eb3@2 ~ [g3,db4,f4,bb4]@2 ~@3 [c4,gb4,b4,gb5,b5,e6]@3 ~@5",
  CP: "~@12 bb3@3 a4, [a4,d5]@13 ~@3, ~@11 f3@4 ~", CQ: "~@3 [e3,a3,bb3,d4] ~@4 [e3,a3,bb3,d4]@7 ~",
  CR: "~@3 [g3,c4,e4,b4] ~@4 [g3,c4,e4,b4]@7 ~", CS: "c4@10 ~@3 gb4@2 b4, [gb4,b4,d5]@12 c4@3 ~, gb3@8 ~@3 gb3@5",
  CT: "~@4 [a3,eb4,gb4,eb5,gb5,c6]@3 ~@5 [f3,bb3,d4,a4]@2 ~@2", // Adim Bbmaj7
  CU: "[g3,c4,e4,c5,e5,a5]@3 ~@5 d3@2 ~ [gb3,ab3,c4,e4,b4]@2 ~@3", // Am7 E
  CV: "[f3,bb3,d4,g4]@3 ~ e4 c4 b3 g3 [bb3,d4,f4,g4]@3 ~ [bb3,e4,ab4,eb5]@3 ~", // Gm7 Ebsus4
  CW: "[f3,f4,a4,f5]@7 ~@4 [c4,gb4,b4,e5] ~@4", CX: "bb3@10 ~@3 f4@2 a4, [f4,a4,d5]@12 bb3@3 ~, f3@8 ~@3 f3@5",
  CY: "~@8 [bb3,e4,a4,d5]@2 ~ [bb3,e4,a4,d5] ~@4", CZ: "~@8 [c4,e4,g4,b4]@2 ~ [c4,e4,g4,b4] ~@4",
  DA: "~@3 [c4,e4,gb4,a4] ~@4 [c4,e4,gb4,a4]@7 ~", DB: "~@12 b3@3 ab4, [ab4,d5]@13 ~@3, ~@11 f3@4 ~",
  DC: "~@3 [c4,g4,b4,e5] ~@4 [c4,g4,b4,e5]@7 ~", // Cmaj7
  DD: "[c4,d4,gb4,a4]@3 ~ [c4,gb4,bb4,gb5,bb5,d6]@3 ~@5 [c4,gb4,b4,e5,ab5]@2 ~@2", // D7 Daug E
  DE: "g2@2 ~ [bb3,f4,a4,d5]@2 ~@3 ab2@2 ~ [b3,d4,f4,ab4]@2 ~@3", // Bbmaj7 Bdim
  DF: "[c4,g4,b4,e5]@2 ~@2 d3@2 ~ [c4,gb4,b4,e5]@2 ~@3 [c4,d4,gb4,a4]@3 ~", DG: "~@3 c5 ~@4 f5@2 ~@5 g5",
  DH: "~@4 c6@2 ~@5 g5 ~@4", DI: "[c5,c6]", DJ: "[~@7 [f2,c3,a3,c4,e4,g4]@33 ~@8]/3",
})).s("gm_piano").gain(0.31).pan(0.6)

// chords · piano · soft notes
const piano_soft = note(`<
  ~@37 A ~@3 B ~ C ~@8 D ~@2 E ~@9 E F ~@2 G ~ E ~@3 H ~ G ~@2 F ~ I ~@5 J ~@4 K ~@6 L ~ M ~@5 N ~@6 O ~@5 G ~@11
>`.pickRestart({
  A: "[d3,ab3]@5 ~@2 d4, d4@3 ~", B: "[f3,c4]@5 ~@2 f4, f4@3 ~", C: "ab3@7 ~@9", D: "~@8 c4@7 ~",
  E: "[eb3,a3]@5 ~@2 eb4, eb4@3 ~", F: "[eb3,ab3]@5 ~@2 eb4, eb4@3 ~", G: "[f3,b3]@5 ~@2 f4, f4@3 ~",
  H: "a3@7 ~ g3@7 ~", I: "[d3,g3]@5 ~@2 d4, d4@3 ~", J: "~@8 b3@7 ~", K: "~@11 f2 ~@4", L: "~@11 g2 ~@4",
  M: "d4@3 ~@13", N: "[f3,bb3]@5 ~@2 f4, f4@3 ~", O: "c4@7 ~@9",
})).s("gm_piano").gain(0.2).pan(0.6)

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

// other · alto sax
const alto_sax_2 = note(`<
  ~@28 A@2 B ~ C@2 D E ~@7 F@3 G H I J K L@2 ~@23 M@4 N O@3 P Q@3 R S T U V@2 ~@5 W X Y Z@2 ~@2 AA AB AC AD AE AF A@2 AG
  ~@4 AH@2 AI AJ AK R AL AM ~@2 AN AO@3
>`.pickRestart({
  A: "[bb3@6 ~ a3@5 bb3@6 ~ c4@5 c4@2 ~@2 c4@2 ~@2]/2", B: "f4@3 e4@2 ~@2 d4 d4@4 bb3@2 ~ a3",
  C: "[~@3 c4@5 b3@6 ~ e4@5 e4@6 ~ e4@2 ~@2 e4]/2", D: "f4 ~@6 c4 db4 ~@6 b3", E: "c4@4 c4@3 b3 ~@8",
  F: "[~@8 eb4@2 ~ f4 g4@3 ab4@5 g4@2 ~ f4 eb4@2 ~ eb4@2 ~@2 f4@9 ~@3 eb4@5]/3",
  G: "d4@3 db4 d4@3 eb4 d4@3 db4 c4@3 bb3", H: "d4@4 a3@3 c4 ~@8", I: "~@3 ab3@5 c4@2 ~ ab3@2 ~@2 c4",
  J: "~@3 d4@5 d4@2 ~@2 d4@2 ~@2", K: "eb4@4 f4@3 g4 ~@8", L: "[~@4 ab3@2 ~@2 bb3@2 ~ db4@2 ~@2 eb4@13 eb4@2 ~ f4]/2",
  M: "[bb3@2 ~@2 c4@2 ~@2 c4@2 ~ c4 ~@3 b3@5 b3@3 b3 ~@7 f3@5 f3@2 ~@2 bb3@2 ~ bb3 ~@3 d4@5 db4@2 ~ c4 ~@8]/4",
  N: "~@3 ab3@5 c4@3 ab3 ~@3 d4", O: "[~@3 d4@5 d4@3 d4 ~@3 d4@16 c4@3 [bb3,b3] [gb3,g3,ab3,a3] ~@12]/3",
  P: "~@3 f4@5 d4@2 ~@2 bb3@2 ~@2", Q: "[f4@4 f4@3 f4 ~@7 a3@5 c4@3 a3 c4@3 c4 ~@3 e4@5 eb4@2 ~ d4 ~@8]/3",
  R: "~@3 bb3@5 b3@2 ~@2 b3@2 ~@2", S: "e4@7 eb4@5 c4@2 ~@2", T: "d4@2 ~ g3 bb3@2 ~ d4 f4@2 ~ e4 ~@3 d4",
  U: "~@7 c4 b3@2 ~ bb3@2 ~@2 a3", V: "[~@12 a3@8 [g3,ab3] [f3,gb3] [eb3,e3] [db3,d3] ~@8]/2", W: "~@11 a3@2 ~@2 a3",
  X: "bb3@3 a3 bb3@3 db4 d4@2 ~@6", Y: "~@4 f4@8 eb4@2 ~ d4", Z: "[~@3 d4@2 ~@2 e4 d4@2 ~ c4 ~@3 e4@12 ~@5]/2",
  AA: "~@3 g4@4 [f4,gb4] e4@3 ~@5", AB: "f4@3 f4@2 ~@2 e4@4 a4 e4@3 db4", AC: "d4@2 ~@5 d4 ~@4 bb3@2 ~@2",
  AD: "~@4 g3@3 bb3 ~@3 e4@2 ~@2 eb4", AE: "e4@2 ~@5 c4 ~@4 a3@2 ~@2", AF: "~ c4@3", AG: "f4@3 e4 ~@3 d4 d4@4 db4@3 d4",
  AH: "[~@15 f4@17]/2", AI: "f4", AJ: "g4@10 e4 eb4 d4 db4 c4 b3", AK: "bb3 ~ eb4@4 eb4 ~", AL: "e4@6 ~ eb4@5 c4@2 ~@2",
  AM: "d4@3 g3 bb3@3 d4 eb4@3 d4 ~@4", AN: "eb4 ~@3 eb4 ~@3", AO: "[eb4 ~@2 e4@17 ~@4]/3",
})).s("gm_alto_sax").gain(0.36).pan(0.4)

// other · alto sax · soft notes · Cmaj7 Bbmaj7 Abmaj7 Gbmaj7
const alto_sax_soft = note("<~@83 [~@4 [eb3,e3,f3] ~@11] ~@9 [~@8 [b2,c3] [a2,bb2] [g2,ab2] [f2,gb2] ~@4] ~@39>")
  .s("gm_alto_sax").gain(0.2).pan(0.4)

// other · tenor sax
const tenor_sax = note(`<
  ~@28 A@2 B ~ C@2 D E ~@7 F@3 G H I J K L@2 ~@23 M@4 N O@3 P Q@3 R S T U V@2 ~@5 W X Y Z@2 ~@2 AA AB AC AD AE AF A@2 AG
// … 357 more lines

More by Basie