Strudelify
The Wind Machine cover art

The Wind Machine

Basie

KeyC minorTempo120 bpm
0:00/0:00
// The Wind Machine — Basie
// 120 bpm, 4/4, key C minor. 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 225 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, A@4 for four bars: 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 L M N O@2 F P C D Q F R G S T U V W X Y Z AA AB AC AD AE AF AG U AH AI AE AJ AK AL AM AN AA AO
  AP AQ AR AS F AT AU AV AW AX T AY AZ BA BB AI AR BC BD@2 BE ~ AA AB BF AD BG@2 AG BH BI AV BJ BK BL BM BN BO BK BP J
  AD BJ BQ Y BR BS BT AZ F BM BO AA J AS AB BU BV BW AA BX BH BS AI AZ BK BL BI BY BO AS BZ T BV CA AF K@2 BS CB AE BR
  CC CD AA CE AS AO BU CF AA@2 U CG CH CI CA BQ CJ I CK CL BK BZ CM AQ AR AS U CN CO CP AR CQ CR ~@2 CS CT AD CU CV CW
  CX M CY CZ ~@3 DA@4 DB AQ DC DD DE DF DG DH DI DJ DK DL DM ~ DN ~ DO DP DQ DR DS DT DU BS DV ~@3 DW@3 ~ DX@3 ~ DY@4 DZ
>`.pickRestart({
  A: "c2@6 g2@6 c3@6 g2@5 d2", B: "db2 eb2 e2 g2", C: "d2 e2 f2 a2", D: "eb2 a2 gb2 eb2",
  E: "e2@6 gb2@6 g2@6 b2@4 ~ e2", F: "c3 c2 e2 g2", G: "a2 a1 db2 e2", H: "a1@4 e1@2 e2@5 ~ db2@6 a1@4 e1 ~",
  I: "d3 d2 gb2 a2", J: "f2@3 ~ f1 ~ g2@5 ~ ab2@6 c3@4 f2@2", K: "c2@4 g1 ~ d2@6 e2@4 ~ g1 g2@4 g1 ~",
  L: "c2@6 g2@6 c3@6 g2@5 eb2", M: "d2 d3 a2 gb2", N: "d2@4 a1@2 e2@6 f2@4 a1 ~ gb2@6",
  O: "g2@4 d2 ~ a2@6 b2@4 d2 ~ d3@4 d2 ~", P: "db2 db3 g2 e2", Q: "e2@4 b1 ~ gb2@6 g2@4 b1 ~ b2@4 b1 ~",
  R: "a1 a2 e2 db2", S: "d2 a2 gb2 d2", T: "f2 g2 ab2 c3", U: "c2 d2 e2 g2", V: "a1 b1 db2 e2", W: "d2 e2 f2 gb2",
  X: "g2 a2 b2 d3", Y: "c2 c3 g2 e2", Z: "c2@2 c1 c2@3 bb2@3 f2@3", AA: "eb2 f2 g2 bb2",
  AB: "e2@4 bb1@2 bb2@5 ~ g2@6 e2@4 bb1 ~", AC: "f2 c3 ab2 f2", AD: "gb2 c3 a2 gb2",
  AE: "g2@4 ~ g1 a2@6 bb2@6 d3@4 g2 ~", AF: "eb2@4 bb1 ~ f2@6 g2@4 bb1 ~ bb2@4 bb1 ~",
  AG: "c2@4 g1@2 g2@5 ~ e2@6 c2@4 g1 ~", AH: "a1@4 c2@2 c3@5 ~ a2@6 a1@5 c2",
  AI: "ab2@3 ~@2 ab1 bb2@5 ~ b2@6 eb3@4 ab2@2", AJ: "eb2 bb2 eb2!2", AK: "f2@4 f1 ~ f2@6 g2@6 g2@5 ~",
  AL: "ab2 gb2 f2!2", AM: "bb1@3 ~ bb1@2 f2@6 c2@3 ~ c2@2 eb3@6", AN: "db2@6 ab2@6 bb1@4 bb0 ~ bb1@4 bb0 ~",
  AO: "e2 gb2 g2 bb2", AP: "f2@4 c2 ~ g2@6 ab2@4 c2 ~ c3@4 c2 ~", AQ: "gb2 ab2 a2 c3",
  AR: "g2@4 d2@2 d3@5 ~ bb2@6 g2@4 d2 ~", AS: "eb2@4 bb1@2 bb2@5 ~ g2@6 eb2@4 bb1 ~", AT: "c3 c2 c3 bb2",
  AU: "a2 g2 a2 c3", AV: "ab2@6 bb2@6 b2@6 eb3@4 ab2 ~", AW: "g2@3 ~ g1 ~ f2@6 e2@6 d2@5 db2",
  AX: "c2@4 g1@2 d2@6 eb2@4 g1 ~ eb2@6", AY: "bb1@4 c2 ~ g2@6 ab2@4 c2 ~ c3@5 c2", AZ: "g2 d3 bb2 g2",
  BA: "c2@6 g2@6 c2@4 c1 ~ c2@4 ~ c1", BB: "a1 g2 a2 c3", BC: "c2@6 db2@6 c2@4 c1 ~ c2@6",
  BD: "[f2@18 bb2@11 ~ bb2@6 bb1@12]/2", BE: "eb2 ~@7", BF: "f2@6 g2@6 ab2@6 c3@4 f2 ~",
  BG: "[g2@4 g1 ~ a2@6 bb2@6 d3@4 ~@2 eb2@4 bb1@2 bb2@5 ~ g2@6 eb2@4 bb1 ~, ~@23 g2@2 ~@23]/2", BH: "c2 g2 e2 c2",
  BI: "f2@4 c2 ~ g2@6 a2@4 c2 ~ c3@4 c2 ~", BJ: "g2 a2 bb2 d3", BK: "eb2 bb2 g2 eb2",
  BL: "f2@4 c2@2 c3@5 ~ a2@6 f2@4 c2 ~", BM: "f2 g2 a2 c3", BN: "bb1@4 f1 ~ c2@6 d2@4 f1 ~ f2@4 f1 ~",
  BO: "bb2 bb1 d2 f2", BP: "e2 bb2 g2 e2", BQ: "eb2 g2 bb2 bb1", BR: "c2@6 g2@6 c3@6 g2@5 gb2", BS: "f2 c3 a2 f2",
  BT: "ab2@4 eb2 ~ bb2@6 b2@4 eb2 ~ eb3@5 eb2", BU: "f2@4 c2@2 c3@5 ~ ab2@6 f2@5 c2",
  BV: "gb2@4 c2 ~ ab2@6 a2@4 c2 ~ c3@4 c2 ~", BW: "g2@4 d2 ~ a2@6 bb2@4 d2 ~ d3@4 d2 ~", BX: "c2@6 g2@6 c3@6 g2@5 db2",
  BY: "bb1 f2 d2 bb1", BZ: "e2@4 bb1 ~ gb2@6 g2@4 bb1 ~ bb2@4 bb1 ~", CA: "g2@6 a2@6 bb2@6 d3@4 g2 ~",
  CB: "ab2@4 eb2 ~ bb2@6 b2@4 eb2 ~ eb3@4 eb2 ~", CC: "f2@3 ~ f1 ~ eb2@6 d2@6 c2@4 b1 ~",
  CD: "bb1@4 f1 ~ c2@6 db2@4 f1 ~ d2@6", CE: "eb2@4 ~@2 bb1@11 ~ b1@6", CF: "gb2@4 c2@2 c3@5 ~ a2@6 gb2@4 c2 ~",
  CG: "c2@5 g1 g2@4 ~ g1 c2@6 c2@6", CH: "a1 g2 eb2 a1", CI: "ab2@4 eb2@2 eb3@5 ~ b2@6 ab2@4 eb2 ~",
  CJ: "a1@4 g1 ~ d2@6 eb2@4 ~ g1 g2@4 g1 ~", CK: "g2@4 d2@2 d3@5 ~ b2@6 g2@4 d2 ~",
  CL: "bb1@3 ~ bb1 ~ e2@6 bb1@6 bb1@4 ~ bb0", CM: "f2@4 c2@2 c3@5 ~ ab2@6 f2@4 c2 ~", CN: "c3@6 g2@6 c2@3 ~ c2@2 g2@6",
  CO: "a1@6 g2@6 a2@6 g2@5 a2", CP: "ab2@6 ab2@6 ab2@3 ~ ab2@2 eb3@6", CQ: "c2@4 c1 ~ c2@5 c1 c2@6 c2@6", CR: "f2 ~@5",
  CS: "~@6 c2@11 ~ c2@2 ~@4", CT: "f2@5 c2 c3@4 c2 ~ f2@4 f1 ~ gb2@6", CU: "g2@3 ~ g2 ~ gb2@6 g2@4 g1 ~ ab2@6",
  CV: "ab2@4 d2@2 d3@5 ~ b2@6 ab2@4 d2 ~", CW: "a1 e2 c2 a1", CX: "f2@6 c3@6 ~@4 c2 ~ c3@4 c2 ~, ~@2 f2 ~",
  CY: "d2@3 ~ d2@2 a2@6 d2@6 d2@4 d1 ~", CZ: "g2 ~@7", DA: "c2/4", DB: "~@4 c2 ~ c3@4 c2 ~ f2@4 f1 ~ gb2@6, f2 ~@3",
  DC: "g2@6 g2@6 g2@4 g1 ~ ab2@4 ~ ab1", DD: "ab2 eb3 b2 ab2", DE: "a1@5 e1 b1@6 c2@4 e1 ~@5 e1 ~, ~@3 e2",
  DF: "f2@3 ~ f2@2 c3@6 f2@3 ~ f2 ~ db2@6", DG: "d2 e2 gb2 a2", DH: "d2@4 d1 ~ d2@6 d2@6 eb2@6", DI: "b1 e2 f2 a2",
  DJ: "bb1@3 ~ bb1 ~ a1@6 bb1@6 f2@6", DK: "a1@3 ~ a0 ~ b1@5 ~ c2@6 e2@4 a1@2",
  DL: "d2@4 d1 ~ d2@5 ~ eb2@6 d2@4 d1 ~, ~@11 d1@2 ~@11", DM: "g2 ~@5", DN: "a2@2 bb2 ~@9", DO: "a2 a1 a2!2",
  DP: "d2 d3 d2 gb2", DQ: "g2 g1 a2!2", DR: "c2@6 c2@6 c2@6 e2@5 ~", DS: "f2@4 ~@2 f2@11 ~ f2@5 ~",
  DT: "f2 ~ c2@2 f2@2 a2@2", DU: "bb2 ~@3 bb1@4", DV: "c2 ~@11", DW: "[f2@3 ~]/3", DX: "[eb2@3 ~]/3", DY: "db2/4",
  DZ: "f2@2 f1 ~@9",
})).s("gm_acoustic_bass").gain(0.3).pan(0.3)

// chords · piano
const piano = note(`<
  A@2 B C D@5 E@3 F G@2 H I J@3 K L M N@2 O L P Q R S@2 T U V W@2 T X Y Z AA@3 AB AC@2 AD AE AF@3 AG AH AI AJ@3 AK@2 AL
  AM AN AO AP AQ AR AS AT@2 AU ~ AV P AW AX@2 AY AZ BA BB BC@4 BD BE@3 BF BG BH BI@2 BJ@2 BK BL AR BM BN BO T BP@2 BQ BR
  BS@2 BT@3 BU@2 AG BV BW@2 BX BY BZ CA BR CB CC CD BA CE CF CG CH@2 CI@2 CJ CK@2 CL CM@2 CN CD CO@3 CP CQ@2 CR CS CT@2
  T CU@2 CV@2 CW CX@2 CY CZ DA DB DC ~@2 DD@3 DE CG DF DG DH DI DJ ~@3 DK@4 DL@2 DM DN DO DP DQ DR@2 DS@2 DT DJ ~ DU ~
  DV DW DX DY DZ@2 EA EB EC ED EE EF EG@3 ~ EH@3 ~ EI@4 EJ
>`.pickRestart({
  A: "[[c2,g3,a3,e4] ~@22 [db3,e4,g4,db5]@3 ~@11 [e3,db5,db6]@9 ~@2, ~@9 db4@2 ~, ~@37 g5@2 ~@9]/2", // Am7 Dbdim Dbm
  B: "[d2,a3,c4,f4] ~@23", C: "f4 a4@3 ~ a2@19, gb4 ~@11",
  D: "[[e2,e3,g3,d4] ~@22 eb5@2 ~ e5@20 ~ [a2,f3,g3,db4]@2 ~@22 [a2,g3,a3,db4,g4]@3 ~@10 [f5,g5,a5,f6] db5 ~@12 gb5@20 ~@2, ~@25 [e4,a5]@22 ~@48 f5@2 gb4@23, ~@48 d3@11 ~, ~@97 c6@21 ~@2]/5", // Em7 Aaug A7 F A5
  E: "[f5 ~@5 [f4,d5,f5,c6] ~@6 f5@3 ~ [f4,ab4,c5,d5,f5] ~@5 [c2,g3,a3,e4]@2 ~@22 [c2,g3,a3,e4]@2 ~@23, ~@4 f4 ~@19]/3", // Dm7 Dm7b5 Am7
  F: "~ gb5@10 ~, d3@11 ~, f5 ~@11, ~ gb4@23, ~ c6@21 ~@2",
  G: "[~@5 e5@2 ~@3 a4 ~ e5@4 ~@8 a4@2 f4@2 ~ d2@19, ~@23 e4@2 ~@23]/2", H: "~@10 a4@2 a5@4 a4 ~@7",
  I: "~@5 c5@2 ~@3 g4 ~ c5@4 ~@7 g4",
  J: "[~@5 db5@2 ~@3 g4 ~ db5@4 ~@7 e4@2 [f4,a4]@3 ~ a2@17 ~ c5@2 ~ c5@20 ~@2, ~@49 [eb2,c4]@23, ~@49 gb5@21 ~@2]/3", // F Cm
  K: "~@2 [g5,b5] [gb5,bb5] ~ b5 [gb5,bb5]@2 [g5,b5] ~@2 [g5,b5], ~@10 g5 ~@13", // G Gb G
  L: "~@5 ab5 ~ a5@2 ~@2 eb5 ~ a4@2 ~@2 eb4 a3@4 ~@2",
  M: "[f5,a5] ~@5 [f4,a4,db5,a5] f5 ~@5 f5@3 ~ [f4,g4,a4,db5,f5] ~@6", // F Faug
  N: "[~@10 a4@2 a5@4 a4 ~@6 f5@2 ~ gb5@20 ~@2, ~@25 [d3,gb4]@23, ~@25 c6@21 ~@2]/2", // D
  O: "[f2,d4,f4] ~@12 [d3,c5,c6]@9 ~@2, c5 ~@5 c4@4 ~@2, ~@13 f5 ~@10", P: "~@5 e5@2 ~@3 bb4 ~ e5@4 ~@7 bb4",
  Q: "[d2,gb3,a3,c4,gb4] ~@11 [e5,gb5,a5,e6] c5 ~@10", R: "a5 ~@5 [a4,d5,f5,a5,d6] ~@5 a5@3 ~@2 [a4,b4,d5,f5,a5] ~@6",
  S: "[~ c5@3 ~@2 [f4,c5]@4 g3 ~ [gb4,c5]@3 ~@2 [g4,c5] ~@5 c2@3 ~@3 [a4,e5,c6] ~@5 [f2,d5,f5]@5 ~ [f2,d5,f5] ~@6, e4 ~@15]/2", // F5 Gbdim C5 Am Dm
  T: "~@5 eb5@2 ~@3 bb4 ~ eb5@4 ~@7 bb4", U: "~ db4@2 ~@2 bb1@19, e4 ~@7, ~ c4 ~@22",
  V: "f5 ~@5 [f4,ab4,eb5,c6] f5 ~@5 f5@3 ~ [f4,ab4,c5,eb5,f5] ~@6", // Fm7
  W: "[[gb2,eb4,gb4] ~@12 [eb3,c4,c5]@9 ~ [g5,d6]@2 ~@5 [g4,d5,f5,g5,d6] ~@5 g5@3 ~@2 [g4,bb4,d5,f5,g5] ~@6, c5@2 ~@10 c6@9 ~@27, ~@13 gb5 ~@34]/2", // Ebm Cm G5 G7 Gm7
  X: "~ e5@10 ~, eb5 ~@11, ~ e4@23, ~ bb5@21 ~@2", Y: "d4 ~ e4@2 ~ g2@19, ab4 ~@7, ~ eb4@2 ~@21",
  Z: "g5 ~@5 [g4,eb5,g5,c6] ~@6 g5@3 ~ [g4,a4,c5,eb5,g5] ~@6", // Cm Am7b5
  AA: "[~@2 f5@20 ~ [g2,f4,g4,d5]@3 ~@11 [f3,d5]@9 ~ bb4@4 ~@2 bb3@6 ~ c5 [eb4,bb4,bb5] ~@10, ab2@11 ~@25, f5@2 ~@35 g5 ~@34, ~ [f4,b5]@22 ~@13 [d4,d6]@9 ~@27]/3", // G7 Dm Eb5 Fdim D
  AB: "~@5 f2 a4 ~ eb5@3 [eb3,g5,g6]@4 ~@2 [eb3,bb3,g5,e6] ~@6, ~@11 e6@2 ~@4 g6@2 ~@5", // Eb
  AC: "[[eb5,f5] [ab4,eb6] ~@12 f5@8 ~ [bb1,f3,ab3,d4]@2 ~@11 c2@2 ~@2 eb5 [c6,ab6] ~@6, ~@6 f2@5 ~@13, ~@6 e5 ~@17, ~@13 [eb3,a5]@10 ~@25]/2", // Ebsus2 Ab5 Bb7 Fm Ebdim
  AD: "db2@2 ~@3 [bb4,e5,db6] ~@6 [bb1,d3,f3,ab3,d4] ~@5 [bb1,d3,gb3,ab3,d4] ~@5", // Bbdim Bb7 Bbaug
  AE: "~ c5@10 ~, c5 ~@11, ~ c4@23, ~ g5@21 ~@2",
  AF: "[c4 e4@3 ~ bb1@18 [f5,c6]@2 ~@5 [f4,ab4,c5,eb5,c6] f5 ~@4 f5@3 ~@2 [f4,ab4,c5,eb5,f5] ~@5 [gb2,eb3,gb3,a3,eb4]@3 ~@10 [a4,c5,eb5,gb5,c6] ~@11, db4 ~@35]/3", // F5 Fm7 Ebdim Adim
  AG: "~@5 d5@2 ~@3 g4 ~ d5@4 ~@7 g4", AH: "bb4@3 ~@2 bb3@6 ~ gb5@2 ~@2 c5 a4 [ab4,b4,f5]@3 ~@3, ~@12 a4 ~@11",
  AI: "~@5 c5@2 ~@3 ab4 ~ c5@4 ~@8",
  AJ: "[~@5 c3 bb4 e5@3 ~ [g2,bb4,db5]@5 ~ [g2,bb4,db5] ~@5 [eb3,g5,g6]@3 d6@2 ~ [eb3,a3,g5,d6] ~@17 [ab2,f4,ab4,eb5]@3 ~@11 [f3,eb5,eb6]@9 ~@2, ~@23 db6@2 ~@4 g6@2 ~@29 eb4@8 ~@4, ~@61 ab5 ~@10]/3", // Gdim Eb Ebmaj7 Fm7 F7
  AK: "[[g2,f3,g3,bb3,f4] ~@11 [bb4,d5,f5,g5,d6] ~@12 g4@3 ~ g2@19, ~@23 d4@2 ~@23, ~@12 eb4 ~@11]/2", // Gm7
  AL: "~@5 f5@2 ~@3 c5 ~ f5@4 ~@7 c5", AM: "~ eb5@10 ~, d5 ~@11, ~ [bb1,eb4]@23, ~ ab5@21 ~@2",
  AN: "[g2,g3,bb3,f4] ~@23", AO: "[c5,e5,c6] ab4 ~@9 [c2,e3,ab3,bb3,e4]@3 ~@3 [c2,e3,g3,bb3,e4]@3 ~@4",
  AP: "~@5 g5@2 ~@3 c5 ~ g5@4 ~@7 c5", AQ: "[ab2,f4,ab4] ~@12 [f3,eb5,eb6]@9 ~ f3, eb5 ~@5 eb4@4 ~@2, ~@13 ab5 ~@10",
  AR: "[f3,bb3,g5,g6]@2 e6@2 ~ [f3,bb3,g5,e6] ~@18, eb6 ~@4 g6@2 ~@17", // Gm7 Edim
  AS: "[c2,ab3,bb3,e4] ~@10 [c2,e3,ab3,bb3,e4]@3 ~@3 [c2,e3,g3,bb3,e4]@3 ~@4", // Caug C7
  AT: "[[f2,a3,c4,eb4]@3 [bb1,ab3,c4,eb4]@3 [bb1,ab3,c4,eb4]@2]/2", AU: "[eb2,g3,bb3,c4,eb4] ~@23",
  AV: "eb5 ~@5 [eb4,bb4,c5,eb5,bb5] ~@6 eb5@3 ~ [eb4,g4,bb4,c5,eb5] ~@6", // Cm7
  AW: "[eb3,f5,f6]@2 d6@2 ~ [eb3,ab3,f5,d6] ~@18, db6 ~@4 f6@2 ~@17", // Ebsus2 Ddim
  AX: "[[gb2,gb3,a3,eb4] ~@22 e4@2 ~ f4@2 ~ d2@19, ~@25 g4@3 ~@20]/2", // Ebdim
  AY: "~ [g4,eb5]@3 ~@2 [ab4,eb5]@4 bb3 ~ [a4,eb5]@3 ~@2 [bb4,eb5] ~@6", // Cm Ab5 Adim Eb5
  AZ: "[e3,g5,g6]@2 d6@2 ~ [e3,bb3,g5,d6] ~@18, db6 ~@4 g6@2 ~@17", // Em Em7b5
  BA: "~ e5@10 ~, c3@11 ~, eb5 ~@11, ~ e4@23, ~ bb5@21 ~@2",
  BB: "[eb3,g6]@2 d6@2 ~ [eb3,a3,g5,d6] ~@18, db6 ~@4 g6@2 ~@17", // Eb Ebmaj7
  BC: "[~@5 eb5@2 ~@3 ab4 ~ eb5@4 ~@7 [g5,d6]@2 ~@5 [g4,d5,f5,g5] ~@6 g5@3 ~ [g4,bb4,d5,f5,g5] ~@5 bb4@4 ~@2 bb3@6 ~ gb5@3 ~ c5 a4 [ab4,b4,f5]@3 ~@2 [f2,eb3,f3,a3,eb4]@3 ~@10 [c5,eb5,g5,c6] a4 ~@10, ~@60 a4 ~@35]/4", // G5 G7 Gm7 Fdim F7 Cm
  BD: "~ eb4@2 ~@2 c2@19, g4 ~@7, ~ d4 ~@22",
  BE: "[~@5 c6@2 ~@5 [f4,d5] [ab4,c6] ~@9 [bb2,d4,f4,c5]@3 ~@11 [d3,c5]@9 ~ f4@2 ~ g4@2 ~ bb2@19, ~@36 [c4,c6]@9 ~@4 [gb4,bb4]@3 ~@20, ~@37 f5 ~@34]/3", // Dm Ab Bb D7 C Gb
  BF: "c4 e4@3 ~ bb1@19, db4 ~@11", BG: "[f2,eb3,f3,ab3,eb4] ~@11 [ab4,c5,eb5,f5,c6] ~@11",
  BH: "~ eb5@10 ~, gb2@11 ~, eb5 ~@11, ~ eb4@23, ~ a5@21 ~@2",
  BI: "[~@2 f5@20 ~ [eb2,g3,bb3,c4,g4]@3 ~@10 [c5,eb5,g5,bb5,eb6] ~@11, e5 ~@23, ~ [g2,f4,bb5]@22 ~@25]/2", // Cm7 Gm7
  BJ: "[~@5 c6@2 ~@5 [g4,e5,c6] bb4 ~@9 [c3,e4,g4,c5]@3 ~@10 g5 [e3,c5,c6]@9 ~@2, ~@9 c4@2 ~]/2", // C
  BK: "~@5 c6 ~@6 g4 [a4,eb5,c6] ~@10", BL: "ab4@2 f4 ~@2 eb2@19, f4 ~@23", BM: "~@5 c5@2 ~@3 g4 ~ c5@4 ~@8",
  BN: "~@5 c6 ~@6 f4 [a4,eb5,c6] ~@10", BO: "~ d5@10 ~, db5 ~@11, ~ [bb2,d4,ab5]@22 ~",
  BP: "[[bb1,eb4,f4] ~@12 [eb3,c5,c6]@9 ~ f4@2 ~ g4@2 ~ bb2@19, c5@2 ~@10 c4@8 ~@5 [gb4,bb4]@3 ~@20, ~@13 f5 ~@34]/2", // Bbsus4 Cm Gb
  BQ: "~ db5@10 ~, db5 ~@11, ~ [e2,db4,g5]@22 ~", BR: "~@5 c6@2 ~@5 [f4,c6] [ab4,eb5] ~@10",
  BS: "[d4 gb4@3 ~ c2@17 ~ g5@2 ~@5 [g4,bb4,d5,f5,g5,d6] ~@5 g5@3 ~@2 [g4,bb4,d5,f5,g5] ~@6, eb4 ~@23]/2", // Gm7
  BT: "[[c3,eb5,eb6]@2 c6@2 ~ [c3,g3,eb5,c6] ~@17 [e3,g5,g6]@3 d6@2 ~ [e3,bb3,g5,d6] ~@20 e5@20 ~@2, b5 ~@4 eb6@2 ~@16 db6@2 ~@4 g6@2 ~@16 eb5@2 e4@23, ~@24 c3@11 ~, ~@49 bb5@21 ~@2]/3", // Cm Em Em7b5
  BU: "[[f2,eb3,f3,a3,eb4] ~@11 [a4,c5,eb5,g5,c6] ~@10 [ab2,f4,ab4,eb5]@3 ~@10 ab5 [f3,eb4,eb5]@9 ~ f3, ~@12 eb6@3 ~]/2", // F7 Am7b5 Fm7 F7
  BV: "~ c5@10 ~, eb2@11 ~, c5 ~@11, ~ c4@23, ~ g5@21 ~@2",
  BW: "[~ d4 eb4@2 ~ c2@17 ~ d4@2 [eb4,g4]@3 ~ c2@19, g4 ~@15]/2", // Eb
  BX: "[f5,c6] ~@5 [f4,c5,d5,f5,c6] ~@6 f5@3 ~ [f4,ab4,c5,d5,f5] ~@6", BY: "~ c4 d4@2 ~ f2@19, ~ [db4,f4]@3 ~@20",
  BZ: "f4 ~ g4@2 ~ bb2@19, bb4 ~@7, ~ gb4@2 ~@21", CA: "[e2,db3,e3,g3,db4] ~@11 [g4,bb4,db5,e5,bb5] ~@11",
  CB: "[gb2,eb4,gb4] ~@12 [eb3,c5]@9 ~@2, c5@2 ~@10 [c4,c6]@9 ~@3, ~@13 gb5 ~@10", // Ebm Cm C
  CC: "[g2,f4,g4] ~@12 [d4,d5,d6]@9 ~@2, d5 ~@5 f3@4 ~@2, ~@13 g5 ~@10", // G7 D
  CD: "bb4@3 ~@2 bb3@6 ~ gb5@3 ~ c5 a4 [ab4,b4,f5]@3 ~@2 bb3, ~@12 a4 ~@11", CE: "[c2,g3,bb3,e4] ~@23",
  CF: "[f2,eb4,g4] ~@11 g5 [c5,c6]@9 ~@2, c5 ~@5 [eb3,c4]@4 ~@2", CG: "~ f5@10 ~, f5 ~@11, ~ [ab2,f4,b5]@22 ~",
  CH: "[~@5 d6 ~@6 [g4,f5] [bb4,d6] ~@9 [c2,e3,g3,bb3,e4]@3 ~@10 [bb4,c5,e5,g5,c6] ~@11]/2", // G7 Bb C7
  CI: "[~@2 eb5@20 ~ [f5,c6]@2 ~@5 [f4,ab4,c5,d5,f5,c6] ~@6 f5@3 ~ [f4,ab4,c5,d5,f5] ~@6, f2@11 ~@13, d5 ~@23, ~ [eb4,a5]@22 ~@25]/2", // F5 Dm7b5 Ebdim
  CJ: "[c3,g3,eb6]@2 c6@2 ~ [c3,g3,eb5,c6] ~@18, b5 ~@4 eb6@2 ~@17", // Cm
  CK: "[[eb2,g3,bb3,c4,g4] ~@5 [bb1,d3,gb3,ab3,d4]@11 ~ [b1,eb3,gb3,a3,eb4] ~@4 [eb2,c4,eb4,bb4]@3 ~@11 [c3,bb3,bb4]@9 ~@2, ~@12 bb5@3 ~, ~@37 eb5 ~@10]/2", // Cm7 Bbaug B7 Cm7 C7
  CL: "[db3,e5,e6]@2 c6@2 ~ [db3,g3,e5,c6] ~@18, c6 ~@4 e6@2 ~@17", // Dbm C
  CM: "[[f5,c6] ~@5 [f4,c5,eb5,f5,c6] ~@6 f5@3 ~ [f4,ab4,c5,eb5,f5] ~@5 eb5@2 ~ eb5@20 ~@2, ~@25 [gb2,eb4]@23, ~@25 a5@21 ~@2]/2", // F5 F7 Fm7 Ebm
  CN: "[eb2,d4,f4] ~@12 [bb3,bb4,bb5]@9 ~@2, bb4 ~@5 d3@4 ~@2, ~@13 f5 ~@10", // Dm Bb
  CO: "[[c3,e4,g4] ~@12 [e3,db5,db6]@9 ~ c2@3 ~@3 [bb4,e5,db6] ~@5 [c2,e3,g3,bb3,e4]@3 ~@4 [c2,e3,g3,bb3,e4] ~@7 eb5@20 ~@2, db5 ~@5 db4@4 ~@14 a2@11 ~, ~@13 g5 ~@33 eb5@2 eb4@23, ~@49 c6@21 ~@2]/3", // C Dbm Bbdim C7
  CP: "~@2 [b4,eb5] [bb4,d5] ~ eb5 [bb4,d5]@2 [b4,eb5] ~@2 [b4,eb5], ~@10 b4 ~@13", // B Bb B
  CQ: "[[g2,g3,bb3,f4] ~@22 f4@2 ~ g4@2 ~ bb2@19, ~@25 [gb4,bb4]@3 ~@20]/2", // Gm7 Gb
  CR: "~ eb5@10 ~, eb5 ~@11, ~ [a2,eb4]@23, ~ c6@21 ~@2", // Adim
  CS: "[gb3,c4,a5,a6]@2 eb6@2 ~ [gb3,c4,a5,eb6] ~@18, eb6 ~@4 a6@2 ~@17", // Gbdim
  CT: "[~ [b3,g4]@3 ~@2 [c4,g4]@4 ~ d3 [db4,g4]@3 ~@2 [d4,g4] ~@5 [bb1,f3,ab3,eb4]@2 ~@10 [bb1,eb3,f3,ab3,eb4]@3 ~@4 [bb1,d3,f3,ab3,d4] ~@5]/2", // Em C5 Dbdim G5 Bbsus4 Bb7
  CU: "[~@5 e5@2 ~@3 bb4 ~ e5@4 ~@7 [eb3,f6]@3 d6@2 ~ [eb3,ab3,f5,d6] ~@18, ~@23 db6@2 ~@4 f6@2 ~@17]/2", // Ebsus2 Ddim
  CV: "[~@5 c5@2 ~@3 gb4 ~ c5@4 ~@7 e5@2 ~ f5@20 ~@2, ~@25 [g2,f4]@23, ~@25 bb5@21 ~@2]/2", // G7
  CW: "[eb2,bb3,c4,g4] ~@11 [c5,eb5,g5,bb5,eb6] ~@11, g3 ~@11", // Cm7
  CX: "[db4 [e4,g4]@3 ~ g2@17 ~ [ab5,c6]@2 ~@5 [ab4,c5,e5,ab5,c6] ~@5 [e5,db6] [g4,db5] ~@10, eb4 ~@23]/2", // Em Ab Abaug Dbm Gdim
  CY: "~@5 eb5@2 ~@3 g4 ~ eb5@4 ~@8", CZ: "~ gb5@3 ab2 ~ [eb5,eb6]@3 ~@2 [ab2,ab3,b3,f4]@2 ~@11",
  DA: "[g2,g3,bb3,f4] ~@11 [bb4,d5,f5,g5,d6] ~@11, f3 ~@11", // Gm7
  DB: "[c2,e3,g3,bb3,e4] ~@5 [c5,e5,c6] ab4 ~@10 [c2,e3,g3,bb3,e4] ~@5", DC: "[f2,eb3,f3,a3,eb4] ~@23",
  DD: "[~@6 [c2,e3,ab3,bb3,e4]@11 ~ [c2,e3,g3,bb3] ~@4 e5@2 ~ f5@10 [f2,d3,f3,a3,d4] ~@5 [gb2,eb3,gb3,a3,eb4] ~@4 gb5@2 ~@5 [gb4,c5,eb5,gb5,c6] ~@6 gb5@3 ~ [gb4,a4,c5,eb5,gb5] ~@6, ~@18 e4@2 ~@5 [f2,d3,a5]@11 ~@36]/3", // Caug C7 Dm Ebdim Cdim Gbdim Dm
  DE: "[d2,bb4,d5]@3 ~@2 [d2,bb4,d5] ~@5 [g2,f3,g3,bb3,f4]@3 ~@4 [ab2,f3,ab3,b3,f4] ~@5", // Gm Gm7 Fdim
  DF: "[c3,e5,e6]@2 b5@2 ~ [c3,g3,e5,b5] ~@18, bb5 ~@4 e6@2 ~@17", // C Cmaj7
  DG: "[c5,c6] [g4,e5] ~@9 e5@2 ~ f5@10, ~@13 [f2,d3,a5]@11", // C Dm
  DH: "[gb3,bb5,bb6]@2 e6@2 ~ [gb3,c4,bb5,e6] ~@18, eb6 ~@4 bb6@2 ~@17", // Gb Gb7
  DI: "[d2,bb3,c4,gb4] ~@11 [d2,gb3,bb3,c4,gb4] ~@5 [d2,gb3,a3,c4,gb4] ~@5", DJ: "[g2,f3,a3,b3,f4] ~@23", DK: "c2/4",
  DL: "[~ [f4,c5]@11 [f2,f3,a3,d4] ~@4 [gb2,eb3,gb3,a3,eb4]@3 ~@3 [eb3,gb5,gb6]@3 d6@2 ~ [eb3,a3,gb5,d6] ~@18, [d5,c6]@12 d3@2 ~@9 d6@2 ~@4 gb6@2 ~@17]/2", // F5 Dm Ebdim Ebm D D7
  DM: "~@2 g5@10 [g2,f3,g3,bb3,f4] ~@5 [ab2,f3,ab3,b3,f4] ~@5, gb5 ~@11, ~ [g2,f3,bb5]@11 ~@12", // Gm7 Fdim Gm7
  DN: "~ ab5@10 ~, ab2@11 ~, g5 ~@11, ~ ab4@23, ~ eb6@21 ~@2", DO: "~ [gb4,g4,a4]@3 ~ e2@19, ~ f4 ~@22",
  DP: "f2@2 ~@3 [a4,e5,c6] ~@6 c5@3 ~@2 c4@6 ~", DQ: "[d2,a3,c4] gb4 ~@22",
  DR: "[[d2,gb3,a3,c4,gb4] ~@5 [d2,gb3,bb3,c4,gb4] ~@6 gb5@3 d3 ~ [eb5,eb6]@3 ~@2 [b1,f3,a3,d4,f4]@3 ~@10 [d5,f5,a5,f6] ~@11]/2", // D7 Daug Eb Bm7b5 Dm
  DS: "[bb1@2 ~@3 [a4,db5,bb5] ~@6 b5 db3@3 ~ [db3,ab3,f5,b5] ~@5 c5@2 ~ c5@20 ~@2, ~@12 [f5,f6]@3 ~@2 f6@2 ~@6 [a2,c4]@23, ~@25 g5@21 ~@2]/2", // A Db7 F Am
  DT: "[d2,gb3,a3,c4,gb4] ~@4 [gb3,c4,bb5,bb6]@4 ~@2 [gb3,c4,bb5,eb6] ~@6 [d2,gb3,a3,c4,gb4] ~@5, ~@5 eb6@2 ~@4 bb6@2 ~@11", // D7 Cm7b5 D7
  DU: "[a2,g3,c4,e4]@3 ~ [bb2,ab3,db4,f4] ~@19", DV: "c4 g4, [a2,g3]", DW: "ab4 a4, [d2,gb3,c4]",
  DX: "db5 d5, [g2,f3,b3,a4]", DY: "eb5@11 ~ [a4,e5]@2 ~@10, [c3,e3,bb3]@17 ~@7",
  DZ: "[f2 ~@5 f2@11 ~ [f2,f3,a3,e4] ~@4 d5@2 ~ e5@20 ~@2, ~@25 [f2,e4,a5]@22 ~]/2", // Fmaj7
  EA: "[bb2,ab3,c4,d4,g4]@2 ~@10 [bb2,a3,c4,d4,g4]@11 ~", EB: "[bb2,ab3,c4,d4,g4]@11 ~ [bb2,ab3,c4,d4,g4]@11 ~",
  EC: "[c3,c4] [f3,f4]", ED: "[bb3,bb4] [eb4,eb5]", EE: "[ab4,ab5] [db5,db6]", EF: "[gb5,gb6] [b5,b6]",
  EG: "[[f4,c6,e6,g6,c7]@3 ~]/3", EH: "[[c5,f5,a5,c6]@3 ~]/3", EI: "[c5,eb5,ab5,c6]/4", EJ: "[c3,c6]@2 [f2,f5] ~@9",
})).s("gm_piano").gain(0.18).pan(0.3)

// chords · piano · soft notes
const piano_soft = note(`<
  ~ A ~@3 B ~@3 C ~@12 D ~@6 E ~@4 F ~ G ~ B ~ H ~@3 I ~@3 J ~ K ~@2 L ~ M@2 N ~@14 O ~ P ~@3 Q ~ R ~ S L ~@2 T ~@7 U ~
  U ~@3 T ~@5 T V@2 W@2 ~@7 X ~@3 T Y N L ~@2 Y ~ U ~@2 Z AA ~ AB AC AD ~ AE L ~@11 AF@2 ~@4 AG ~@8 AH@2 ~@2 AC ~ AI ~@9
  M@2 ~@7 AJ ~ AK ~@8 AL ~@20
>`.pickRestart({
  A: "~@23 e3", B: "~ c3@22 ~", C: "c6 ~@5 [ab4,c5] ~@6 c6@3 ~ c6 ~@6, ~@4 [ab4,c5,d5] ~@3",
  D: "~@6 g4 ~@5 [f4,g4,a4,db5,a5]@3 ~@2 a5 ~@6", E: "d6 ~@5 b4 ~@6 d6@3 ~ d6 ~@6, ~@4 [a4,b4,d5,f5] ~@3",
  F: "c6 ~@5 c5 ~@6 c6@3 ~ c6 ~@6, ~@4 [f4,ab4,c5,eb5] ~@3", G: "~@6 bb4 ~@6 d6@3 ~ d6 ~@6, ~@4 [g4,bb4,d5,f5] ~@3",
  H: "c6 ~@5 [a4,c5] ~@6 c6@3 ~ c6 ~@6, ~@4 [g4,a4,c5,eb5] ~@3", I: "~@11 bb3@3 f6@2 ~@8", J: "~ eb2@22 ~",
  K: "~@13 c6@3 ~ c6 ~@6, ~@4 [f4,ab4,c5,eb5] ~@3", L: "~@13 c5 ~@10", M: "[~@23 a3@4 ~@21]/2", N: "~@23 f3",
  O: "bb5 ~@5 g4 ~@6 bb5@3 ~ bb5 ~@6, ~@4 [eb4,g4,bb4,c5] ~@3", P: "ab3 ~@7", Q: "bb3 ~@7", R: "[a3,g5] ~@7",
  S: "~@6 [bb4,d6] ~@6 d6@3 ~ d6 ~@6, ~@4 [g4,bb4,d5,f5] ~@3", T: "~@3 f5 ~@8", U: "~@3 g5 ~@8",
  V: "[~@23 d6@2 ~@12 d6@3 ~ d6 ~@6, ~@12 [g4,bb4,d5,f5] ~@3]/2", W: "[g3@3 ~@20 bb3@4 ~@21]/2",
  X: "~@6 ab4 ~@6 c6@3 ~ c6 ~@6, ~@4 [f4,ab4,c5,d5] ~@3", Y: "~@23 eb3",
  Z: "~@13 c6@3 ~ c6 ~@6, ~@4 [f4,ab4,c5,d5] ~@3", AA: "eb5 ~@11", AB: "~@23 c3", AC: "g3 ~@7",
  AD: "~@6 ab4 ~@6 c6@3 ~ c6 ~@6, ~@4 [f4,ab4,c5,eb5] ~@3", AE: "~@23 d3", AF: "[~@23 [ab3,f5]@4 ~@21]/2",
  AG: "~@6 bb4 ~@17", AH: "[~@23 c6@2 ~@5 a4 ~@5 [gb4,a4,c5,eb5,c6]@3 ~@2 c6 ~@6]/2", AI: "c4 ~@7",
  AJ: "~@6 ab3 c6 ~@4", AK: "~@4 e6 ~@7", AL: "~@9 e3 ~@2",
})).s("gm_piano").gain(0.09).pan(0.3)

// chords · acoustic guitar nylon · "Guitar"
const acoustic_guitar_nylon = note(`<
  A B C D E A F@2 G H I A G@2 J@2 A K L D E A F M G H A F G J A N O F P Q R O K@2 S J T U V W X Y Z F P S T O K AA Q J T
// … 538 more lines

More by Basie