Strudelify

Sweet Georgia Brown

Ellington

KeyF majorTempo200 bpm
0:00/0:00
// Sweet Georgia Brown — Ellington
// 200 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: Full arrangement: all 217 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(200/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 · "Bas"
const bass = note(`<
  A@2 B C D E C F G H G I J G K L M B A C D@2 N O P ~ Q ~ R S T U V W A B O X C O Y H Y Z AA ~@4 A@3 S AB AC O AD Q ~ Q
  ~ J AE AF ~@15 AG J AH AI AJ AK AL AM AN AO@2 AP AQ AR AS G AG AH R AI AM AJ AT AU AV AW AV G AX AY AZ BA AG R AH BB
  BC AJ AL AM BD AO@2 BE AQ BD BF BG AG R J R AJ AK AL BH AL AW AT H AQ BI BJ BK BL ~ BM@2 BN ~@3 BD@2 AN BE BO BP BQ H
  BR ~@7 AL H AT H AQ BS BT ~ R J AG BB AJ BC AJ BU AP AO BD BE BV ~@3 R AH R@2 AJ BC AJ AM BW ~ AA ~@2 BX@3 ~ BY BZ@2
  CA CB ~ CC@3
>`.pickRestart({
  A: "d2@3 d1 gb2@4 g2@4 d2@2 ~@2", B: "~@4 gb2@3 d1 a2@4 d3@3 ~, d2@7 ~@9", C: "d2@4 c2@4 b1@4 ab2@3 ~",
  D: "~@4 b2@3 g1 d3@4 g3@3 ~, g2@7 ~@9", E: "g2@4 a2@4 b2@3 ~ eb2@3 ~", F: "g2@4 f2@4 e2@4 db2@3 ~",
  G: "c2@3 c1 e2@4 f2@4 c2@2 ~@2", H: "~@4 e2@3 c1 g2@4 c3@3 ~, c2@7 ~@9", I: "c2@4 c2@3 ~ c2@3 ~ c2@2 ~ c1",
  J: "~@4 a2@3 f1 c3@4 f3@3 ~, f2@7 ~@9", K: "f2@4 c2@2 ~ f2 f2@2 ~ f1 d2@3 ~", L: "a1@4 g1@4 f1@4 eb2@3 ~",
  M: "d2@4 d2@3 ~ d2@4 d2@3 ~", N: "d2@3 d1 f2@4 g2@4 d2@2 ~@2", O: "g2@3 g1 b2@4 c3@4 g2@2 ~@2", P: "d2 ~@7",
  Q: "d2@3 ~@13", R: "f2@3 f1 a2@4 bb2@4 f2@2 ~@2", S: "d2@4 e2@4 gb2@3 ~ ab2@3 ~",
  T: "g2@4 d2@2 ~ g2 c2 ~ d3 eb3 [e3,bb3]@3 ~", U: "f2@4 eb2@4 d2@4 eb2@3 ~", V: "d2@4 c2@4 b1@4 eb2@3 ~",
  W: "d2@4 e2@4 gb2@3 ~ eb2@3 ~", X: "g2@4 f2@4 e2@4 eb2@3 ~", Y: "c2@4 bb1@4 a1@4 db2@3 ~",
  Z: "c2@4 bb1@4 a1@4 gb2@3 ~", AA: "f2@3 ~@13", AB: "g2@4 f2@4 e2@4 ab2@3 ~", AC: "g2@4 a2@4 b2@3 ~ ab2@3 ~",
  AD: "g2@4 g2@3 ~ g2@3 ~ a1@2 ~ a0", AE: "f2@4 f2@3 ~ d2@4 d2@3 ~", AF: "g2@4 g2@3 ~ c2@2 ~ c1 c2@3 ~",
  AG: "f2@4 eb2@4 d2@4 gb2@3 ~", AH: "f2@4 g2@4 a2@3 ~ gb2@3 ~", AI: "f2@4 g2@4 a2@3 ~ b1@3 ~",
  AJ: "~@4 d2@3 bb0 f2@4 bb2@3 ~, bb1@7 ~@9", AK: "bb1@4 c2@4 d2@3 ~ gb2@3 ~", AL: "f2@3 f1 ab2@4 bb2@4 f2@2 ~@2",
  AM: "bb1@3 bb0 d2@4 eb2@4 bb1@2 ~@2", AN: "eb2@4 f2@4 g2@3 ~ e2@3 ~", AO: "eb2@4 db2@4 c2@4 e2@3 ~",
  AP: "~@4 g2@3 eb1 bb2@4 eb3@3 ~, eb2@7 ~@9", AQ: "~@4 c3@3 ab1 eb3@4 ab3@3 ~, ab2@7 ~@9",
  AR: "eb2@4 f2@4 g2@3 ~ a2@3 ~", AS: "ab2@4 eb2@2 ~ ab2 ab2@3 ~ f2@3 ~", AT: "~@4 ab2@3 f1 c3@4 f3@3 ~, f2@7 ~@9",
  AU: "bb1@4 bb1@3 ~ c2@4 c2@3 ~", AV: "f2@4 eb2@4 d2@4 db2@3 ~", AW: "c2@4 d2@4 e2@3 ~ gb2@3 ~",
  AX: "ab2@4 bb2@4 c3@3 ~ a2@3 ~", AY: "ab2@4 ab2@3 ~ f2@4 f2@3 ~", AZ: "bb1@4 bb1@3 ~ eb2@4 bb2@2 ~ eb2",
  BA: "ab2@3 ab1 c3@4 db3@4 ab2@2 ~@2", BB: "f2@4 eb2@4 d2@4 b1@3 ~", BC: "bb1@4 ab1@4 g1@4 b1@3 ~",
  BD: "eb2@3 eb1 g2@4 ab2@4 eb2@2 ~@2", BE: "eb2@4 db2@4 c2@4 a2@3 ~", BF: "ab2@4 bb2@4 c3@3 ~ db2@3 ~",
  BG: "c2@4 g2@2 ~ c2 c2@2 ~ f2@4 ~", BH: "bb1@4 f2@2 ~ bb1 c2@4 g2@2 ~ c2", BI: "ab2@4 eb2@2 ~ ab2 f2@4 f2@3 ~",
  BJ: "bb1@4 f2@2 ~ bb1 eb2@4 eb2@3 ~", BK: "~@3 ab2@5 g2 ~@3 gb2 ~@3", BL: "f2@6 ~ f2 ~@8",
  BM: "[~@4 f2@8 f2@8 f2@7 ~ a2 ~@3]/2", BN: "bb2@6 ~ bb2 ~@8", BO: "ab2@4 g2@4 f2@4 a2@3 ~",
  BP: "ab2@4 g2@4 f2@4 db2@3 ~", BQ: "c2@4 d2@4 e2@3 ~ db2@3 ~", BR: "f2@2 ~ f2@3 ~@10",
  BS: "ab2@4 ab2@3 ~ f2@4 c2@2 ~ f2", BT: "bb1@4 f2@2 ~ bb1 eb2@2 ~ eb1 ab2@2 ~@2", BU: "bb1@4 c2@4 d2@3 ~ e2@3 ~",
  BV: "ab2 ~@7", BW: "f2 ~@7", BX: "[c3@2 ~ ab2 ~@3 a2 ~@3 f2@29 ~@8]/3", BY: "bb2@14 ~ bb2", BZ: "[eb2@3 ~]/2",
  CA: "~@5 ab2@2 ~ ab2@5 ab2@2 ~", CB: "~@5 f2@2 ~ b1@5 ab1@2 ~", CC: "ab1/3",
})).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 N O P Q R S T U F V W X ~@3 Y T Z AA AB AC B AD AE W V AF AG AH AI AJ X ~@4 AK AL B AM AN F
  W AO ~@2 AP ~ AQ AR AS ~@15 AT AQ AU AV AW AX AY AW AZ BA BB BC BD BE BF BG BH BI BJ BK AW BL BM BN BO BP BQ BR BS BT
  BU BV BW AA@2 BX BY AW BZ CA CB BA CC BB BD CD CE CF CG BK CH CI CJ CK CL CM CN CO CP CQ BS CR CS ~@10 CT CU CV CW BD
  CX CY CZ ~@7 DA DB CP DC BS DD DE DF DG CI AT DH DI DJ DK DL DM BB DN BB DO ~@3 DP DQ Y DH CP CA DA AW DR ~ DR ~@2
  DS@3 ~ DT DU DV DW DX ~ DY@3
>`.pickRestart({
  A: "c4@10 ~@3 gb4@2 a4, [gb4,a4,e5]@12 c4@3 ~, gb3@8 ~@3 gb3@5", B: "~@8 [gb3,c4,e4,b4]@2 ~ [gb3,c4,e4,b4] ~@4",
  C: "c4@11 ~ c4@2 ~ a4, [gb4,a4,e5]@13 ~ gb4@2, gb3@9 ~@2 gb3@4 ~", // Gbm7
  D: "~@3 [gb3,ab3,c4,e4,b4] ~@4 [gb3,ab3,c4,e4,b4]@7 ~", E: "~@3 f4 g4@3 e5@4 g2 [b3,f4,g4,e5]@2 ~@2, b3@5 ~@3",
  F: "~@8 [f3,a3,b3,e4]@2 ~ [f3,a3,b3,e4] ~@4", G: "c4@11 ~ c4@2 ~ a4, [f4,a4,d5]@13 ~ f4@2, f3@9 ~@2 f3@4 ~",
  H: "b3@11 ~ b3@2 ~ ab4, [f4,ab4,eb5]@13 ~ f4@2, f3@9 ~@2 f3@4 ~", // Fm7
  I: "bb3@11 ~ bb3@2 ~ a4, [e4,a4,d5]@13 ~ e4@2, e3@9 ~@2 e3@4 ~", // Dsus2
  J: "bb3@10 ~@3 e4@2 a4, [e4,a4,c5]@12 bb3@3 ~, e3@8 ~@3 e3@5", K: "~@8 [e3,bb3,d4,a4]@2 ~ [e3,bb3,d4,a4] ~@4",
  L: "~@3 [e3,bb3,d4,a4] ~@4 [e3,bb3,c4,g4]@3 ~ [e3,bb3,db4,ab4]@3 ~", M: "~@3 [d3,a3,c4,f4] ~@4 [d3,a3,c4,f4]@7 ~",
  N: "~@8 [e3,bb3,c4,g4]@2 ~ [e3,bb3,c4,g4] ~@4", O: "[d3,a3,d4,f4,c5]@7 ~@3 [d3,a3,c4,f4]@2 [f3,c4,d4,a4]@3 ~",
  P: "~@3 [g3,db4,f4,bb4] ~@4 [g3,db4,f4,bb4]@7 ~", Q: "d3@2 ~ [gb3,c4,e4,b4]@2 ~@6 [gb3,ab3,c4,e4,b4] ~@4",
  R: "~@3 gb4 a4@3 d5@4 d3 [c4,gb4,a4,d5]@2 ~@2, c4@5 ~@3", S: "~@8 [gb3,c4,d4,a4]@2 ~ [gb3,c4,d4,a4] ~@4",
  T: "c4@11 ~ c4@2 ~ a4, [gb4,a4,d5]@13 ~ gb4@2, gb3@9 ~@2 gb3@4 ~", // D
  U: "b3@10 ~@3 f4@2 a4, [f4,a4,e5]@12 b3@3 ~, f3@8 ~@3 f3@5", // Fmaj7
  V: "c4@10 ~@3 f4@2 a4, [f4,a4,e5]@12 c4@3 ~, f3@8 ~@3 f3@5", W: "~@3 [f3,b3,e4,a4] ~@4 [f3,b3,e4,a4]@7 ~",
  X: "a4 ~@15", Y: "a3@11 ~ a3@2 ~ f4, [eb4,f4,c5]@13 ~ eb4@2, eb3@9 ~@2 eb3@4 ~",
  Z: "[b3,f4,ab4,d5]@3 b3 f4 ~ ab4 d5 ~@3 [e3,bb3,c4,g4] ~@4", // Bdim C7
  AA: "a3@10 ~@3 eb4@2 f4, [eb4,f4,c5]@12 a3@3 ~, eb3@8 ~@3 eb3@5", // F7
  AB: "c4@11 ~ c4@2 ~ b4, [gb4,b4,d5]@13 ~ gb4@2, gb3@9 ~@2 gb3@4 ~", // Bm
  AC: "~@8 [gb3,ab3,c4,e4,b4]@2 ~ [gb3,ab3,c4,e4,b4] ~@4", AD: "~@3 gb4 b4@3 e5@4 d3 [c4,gb4,b4,e5]@2 ~@2, c4@5 ~@3",
  AE: "~@3 [f3,a3,b3,d4] ~@4 [f3,a3,b3,d4]@7 ~", AF: "~@3 [f3,ab3,b3,eb4] ~@4 [f3,ab3,b3,eb4]@7 ~",
  AG: "bb3@11 ~ bb3@2 ~ a4, [e4,a4,c5]@13 ~ e4@2, e3@9 ~@2 e3@4 ~", AH: "~@8 [e3,a3,bb3,d4]@2 ~ [e3,a3,bb3,d4] ~@4",
  AI: "~@3 [e3,bb3,d4,a4] ~@4 [e3,bb3,d4,a4]@7 ~", AJ: "~@3 [e3,bb3,eb4,g4] ~@4 [e3,bb3,eb4,g4]@7 ~",
  AK: "c4@11 ~ c4@2 ~ b4, [gb4,b4,e5]@13 ~ gb4@2, gb3@9 ~@2 gb3@4 ~", // Esus2
  AL: "~@3 [gb3,ab3,b3,c4,e4] ~@4 [gb3,ab3,b3,c4,e4]@7 ~", AM: "~@3 [gb3,c4,e4,b4] ~@4 [gb3,c4,e4,b4]@7 ~",
  AN: "b3@11 ~ b3@2 ~ a4, [f4,a4,e5]@13 ~ f4@2, f3@9 ~@2 f3@4 ~", // Fmaj7
  AO: "~@3 [f3,b3,e4,a4] ~@6 [f3,b3,e4,a4]@2 [g3,c4,db4,e4]@3 ~", AP: "[f3,a3,c4,e4]@3 ~@13",
  AQ: "~@8 [a3,d4,eb4,g4]@2 ~ [a3,d4,eb4,g4] ~@4", AR: "~@3 [a3,eb4,g4,d5] ~@7 [c4,gb4,ab4,b4,e5] ~@4",
  AS: "[f3,b3,f4,ab4,eb5]@7 ~ [bb3,e4,a4,d5]@3 ~ [bb3,e4,a4,d5]@3 ~", AT: "~@3 [a3,eb4,f4,c5] ~@4 [a3,eb4,f4,c5]@7 ~",
  AU: "a3@11 ~ a3@2 ~ g4, [eb4,g4,b4]@13 ~ eb4@2, eb3@9 ~@2 eb3@4 ~", // Ebaug
  AV: "~@3 eb4 f4@3 d5@4 f2 [a3,eb4,f4,d5]@2 ~@2, a3@5 ~@3", AW: "~@8 [ab3,d4,g4,c5]@2 ~ [ab3,d4,g4,c5] ~@4",
  AX: "ab3@11 ~ ab3@2 ~ g4, [d4,g4,bb4]@13 ~ d4@2, d3@9 ~@2 d3@4 ~", AY: "~@3 [ab3,eb4,f4,c5] ~@4 [ab3,eb4,f4,c5]@7 ~",
  AZ: "~@8 [g3,db4,eb4,bb4]@2 ~ [g3,db4,eb4,bb4] ~@4", BA: "~@3 [g3,c4,db4,f4] ~@4 [g3,c4,db4,f4]@7 ~",
  BB: "~@3 [g3,db4,f4,c5] ~@4 [g3,db4,f4,c5]@7 ~", // Csus4
  BC: "g3@11 ~ g3@2 ~ eb4, [db4,eb4,bb4]@13 ~ db4@2, db3@9 ~@2 db3@4 ~", // Eb7
  BD: "~@8 [f3,c4,eb4,ab4]@2 ~ [f3,c4,eb4,ab4] ~@4", BE: "g3@10 ~@3 db4@2 f4, [db4,f4,bb4]@12 g3@3 ~, db3@8 ~@3 db3@5",
  BF: "[c4,f4,ab4,eb5]@3 c4 f4 ~ ab4 eb5 ~@2 [f3,ab3,c4,eb4]@2 [eb3,ab3,c4,f4]@3 ~", // Fm7
  BG: "~@3 [e3,bb3,db4,ab4] ~@4 [e3,bb3,db4,ab4]@7 ~", BH: "~@8 [eb3,a3,c4,g4]@2 ~ [eb3,a3,c4,g4] ~@4",
  BI: "~@3 [eb3,a3,c4,f4] ~@4 [eb3,a3,c4,f4]@7 ~", BJ: "~@8 [eb3,a3,d4,g4]@2 ~ [eb3,a3,d4,g4] ~@4",
  BK: "a3@10 ~@3 eb4@2 f4, [eb4,f4,d5]@12 a3@3 ~, eb3@8 ~@3 eb3@5", BL: "~@8 [ab3,c4,d4,g4]@2 ~ [ab3,c4,d4,g4] ~@4",
  BM: "~@3 [ab3,c4,eb4,g4] ~@4 [ab3,c4,eb4,g4]@7 ~", BN: "~@3 [ab3,c4,d4,g4] ~@7 [bb3,e4,g4,eb5] ~@4",
  BO: "~@3 f4 ab4@3 c5@4 f2 [ab3,f4,ab4,c5]@2 ~@2, ab3@5 ~@3", // Fm
  BP: "bb3@11 ~ bb3@2 ~ g4, [e4,g4,c5]@13 ~ e4@2, e3@9 ~@2 e3@4 ~", // C
  BQ: "c4@11 ~ c4@2 ~ ab4, [f4,ab4,f5]@13 ~ f4@2, f3@9 ~@2 f3@4 ~", BR: "~@8 [bb3,d4,e4,a4]@2 ~ [bb3,d4,e4,a4] ~@4",
  BS: "~@3 [c4,f4,ab4,eb5] ~@4 [c4,f4,ab4,eb5]@7 ~", BT: "ab2@2 ~ [c4,f4,ab4,eb5]@2 ~@3 [eb3,a3,eb4,f4,b4]@7 ~",
  BU: "[d3,ab3,d4,g4,bb4]@7 ~@2 g3@3 ~@4, ~@8 [db4,eb4,db5,eb5,c6]@3 ~@5", // Gm Cm
  BV: "~@3 [f3,c4,eb4,ab4] ~@4 [f3,c4,eb4,ab4]@7 ~", BW: "a3@11 ~ a3@2 ~ f4, [eb4,f4,b4]@13 ~ eb4@2, eb3@9 ~@2 eb3@4 ~",
  BX: "~@3 [eb3,g3,a3,d4] ~@4 [eb3,g3,a3,d4]@7 ~", BY: "ab3@10 ~@3 d4@2 g4, [d4,g4,c5]@12 ab3@3 ~, d3@8 ~@3 d3@5",
  BZ: "~@8 [ab3,eb4,f4,c5]@2 ~ [ab3,eb4,f4,c5] ~@4", CA: "~@3 [ab3,c4,d4,g4] ~@4 [ab3,c4,d4,g4]@7 ~",
  CB: "g3@11 ~ g3@2 ~ f4, [db4,f4,c5]@13 ~ db4@2, db3@9 ~@2 db3@4 ~", CC: "~@8 [g3,db4,f4,c5]@2 ~ [g3,db4,f4,c5] ~@4",
  CD: "~@3 db4 eb4@3 c5@4 eb2 [g3,db4,eb4,c5]@2 ~@2, g3@5 ~@3", // Cm
  CE: "c4@11 ~ c4@2 ~ ab4, [f4,ab4,eb5]@13 ~ f4@2, f3@9 ~@2 f3@4 ~", CF: "~@3 [bb3,e4,a4,d5] ~@7 [a3,d4,eb4,g4]@4 ~",
  CG: "~@3 [a3,eb4,g4,d5] ~@4 [a3,eb4,g4,d5]@7 ~", CH: "~@8 [a3,eb4,g4,d5]@2 ~ [a3,eb4,g4,d5] ~@4",
  CI: "~@3 [a3,d4,eb4,g4] ~@4 [a3,d4,eb4,g4]@7 ~", CJ: "~@3 [ab3,d4,g4,c5] ~@4 [ab3,d4,g4,c5]@7 ~",
  CK: "~@8 [ab3,c4,d4,f4]@2 ~ [ab3,c4,d4,f4] ~@4", CL: "~@8 [ab3,c4,eb4,f4]@2 ~ [ab3,c4,eb4,f4] ~@4",
  CM: "~ ab3@3 ~@5 bb3@3 ~@4, [d4,g4,d5,g5,bb5]@3 ~@5 [e4,g4,e5,g5,c6]@3 ~@5", // Gm C
  CN: "~@3 d4 f4@3 c5@4 f2 [ab3,d4,f4,c5]@2 ~@2, ab3@5 ~@3", CO: "~@8 [bb3,e4,ab4,db5]@2 ~ [bb3,e4,ab4,db5] ~@4",
  CP: "~@3 [ab3,d4,f4,c5] ~@4 [ab3,d4,f4,c5]@7 ~", CQ: "~@3 [bb3,e4,g4,d5] ~@4 [bb3,e4,g4,d5]@7 ~",
  CR: "[c4,f4,ab4,eb5]@3 c4 f4 ~ ab4 eb5 f3@2 ~ [a3,eb4,f4,c5]@2 ~@3", // Fm7 F7
  CS: "~@3 [ab3,d4,g4,c5] ~@4 eb3@2 ~ [g3,db4,f4,c5]@2 ~@3", // Abmaj7 Csus4
  CT: "g3@11 ~ g3@2 ~ eb4, [db4,eb4,c5]@13 ~ db4@2, db3@9 ~@2 db3@4 ~", // Cm
  CU: "g3@10 ~@3 db4@2 eb4, [db4,eb4,c5]@12 g3@3 ~, db3@8 ~@3 db3@5", CV: "~@8 [g3,db4,f4,b4]@2 ~ [g3,db4,f4,b4] ~@4",
  CW: "~@3 [f3,ab3,c4,eb4] ~@4 [f3,ab3,c4,eb4]@7 ~", CX: "~@3 e4 g4@3 d5@4 c3 [bb3,e4,g4,d5]@2 ~@2, bb3@5 ~@3",
  CY: "~@3 [bb3,e4,ab4,db5] ~@4 [bb3,e4,ab4,db5]@7 ~", CZ: "[a3,eb4,f4,c5] ~@7",
  DA: "~@8 [ab3,d4,f4,c5]@2 ~ [ab3,d4,f4,c5] ~@4", DB: "~@3 e4 ab4@3 db5@4 c3 [bb3,e4,ab4,db5]@2 ~@2, bb3@5 ~@3",
  DC: "bb3@10 ~@3 e4@2 g4, [e4,g4,d5]@12 bb3@3 ~, e3@8 ~@3 e3@5", // Em7
  DD: "~ c4@3 ~@4 [eb3,a3,eb4,f4,d5]@7 ~, [gb4,bb4,gb5,bb5,f6]@3 ~@13", // Dm Gbmaj7
  DE: "~@3 [ab3,d4,f4,bb4] ~@4 [g3,bb3,eb4]@3 ~ [ab3,c4,eb4]@3 ~", DF: "~@3 [bb3,db4,e4,ab4] ~@4 [bb3,db4,e4,ab4]@7 ~",
  DG: "~@8 [a3,b3,eb4,g4,d5]@2 ~ [a3,b3,eb4,g4,d5] ~@4", DH: "~@8 [a3,b3,d4,eb4,g4]@2 ~ [a3,b3,d4,eb4,g4] ~@4",
  DI: "~@8 [ab3,d4,f4,bb4]@2 ~ [ab3,d4,f4,bb4] ~@4", DJ: "ab3@10 ~@3 d4@2 g4, [d4,g4,bb4]@12 ab3@3 ~, d3@8 ~@3 d3@5",
  DK: "ab3@11 ~ ab3@2 ~ g4, [d4,g4,c5]@13 ~ d4@2, d3@9 ~@2 d3@4 ~", DL: "~@3 [ab3,c4,d4,f4] ~@4 [ab3,c4,d4,f4]@7 ~",
  DM: "~@8 [g3,c4,db4,f4]@2 ~ [g3,c4,db4,f4] ~@4", DN: "g3@10 ~@3 db4@2 f4, [db4,f4,c5]@12 g3@3 ~, db3@8 ~@3 db3@5",
  DO: "[f3,c4,eb4,ab4]@3 ~@13", DP: "~@3 [a3,c4,eb4,g4] ~@4 [a3,c4,eb4,g4]@7 ~",
  DQ: "~@3 eb4 f4@3 c5@4 f2 [a3,eb4,f4,c5]@2 ~@2, a3@5 ~@3", DR: "[ab3,f4,c5] ~@7",
  DS: "[[c3,eb4]@2 ~ [ab2,e4] ~@3 [a2,f4] ~@3 [f2,eb4]@29 ~@8]/3", // Cm Dbm Dm F7
  DT: "~ [bb2,bb3,bb4,bb5] ~ [bb2,bb3,bb4,bb5]!3 ~ [bb2,bb3,bb4,bb5]!3 ~ [bb2,bb3,bb4,bb5]!3 ~ [bb2,bb3,bb4,bb5]", // Bb
  DU: "~@3 [eb2,eb3,eb4,eb5]@2 [eb2,eb3,eb4,eb5]@2 ~ [eb2,eb3,eb4,eb5]@2 ~ [eb2,eb3,eb4,eb5]@2 [eb2,eb3,eb4,eb5]@2 ~", // Eb
  DV: "[eb2,eb3,eb4,eb5]@2 ~ [eb2,eb3,eb4,eb5]@2 [eb2,eb3,eb4,eb5]@2 ~ [eb2,eb3,eb4,eb5]@2 ~ [eb2,eb3,eb4,eb5]@2 [eb2,eb3,eb4,eb5]@2 ~", // Eb
  DW: "~@5 [ab3,c4,eb4,f4]@2 ~ [ab3,c4,eb4,f4]@5 [ab3,b3,eb4,f4]@2 ~", // Fm7 Fm7b5
  DX: "~@5 [f3,bb3,db4,f4]@2 ~ [b2,b3,d4,f4]@5 [ab2,c4,eb4,f4]@2 ~", DY: "[ab3,c4,g4,bb4]/3",
})).s("gm_piano").gain(0.2).pan(0.6)

// other · alto sax
const alto_sax = note(`<
  ~@11 A B ~ C D E ~ F G H I J@2 K L M N O@2 P@2 ~ Q R S ~@3 T ~@2 U V ~@5 W X Y Z AA ~ AB AC ~@2 AD AE ~ AF AG ~@8 AH@5
  AI ~@26 AJ ~ AJ AK ~@22 AL ~@2 AM ~@8 AN AO ~ AP@2 AQ ~@11 AR ~ AS AT AU ~@8 AV AW ~@12 AX AY AZ BA BB BC ~@9 BD BE
  BF@4 ~ BG BH BI BJ@2 ~ BK@3
>`.pickRestart({
  A: "~@4 bb3@3 bb3@2 ~@2 bb3!2 ~@3", B: "d4", C: "d4@3 ~", D: "e4@3 db4 db4@3 e4 db4@3 db4 eb4@3 db4",
  E: "b3 ~@6 ab4@3 g4 [f4,gb4] ~@4", F: "b4@3 c5 c5@2 ~ c5 ab4@3 a4 a4@2 ~ a4",
  G: "ab4@3 a4 a4@2 ~ a4 f4@3 gb4 gb4@2 ~ gb4", H: "d4@3 b3 b3@3 f4 d4@3 b3 a4@3 f4",
  I: "d4@3 b4 a4@3 f4 bb4@3 b4 a4@3 f4", J: "[b4@3 c5@5 a4 ~@3 f4@3 f4@13 ~@4]/2", K: "~@4 d4!2 ~ f4 f4@3 d4 d4@3 c4",
  L: "db4@3 db4 db4@3 c4 db4@2 ~ g4@5", M: "~@4 b4@3 c5@2 ~@2 e4 f4@2 ~@2", N: "db4@3 d4@2 ~@11",
  O: "[~@8 b4@3 bb4 a4@19 ~]/2", P: "[d4@3 d4@5 g4 ~@3 e4@2 ~ d4@9 ~@8]/2", Q: "~@4 c5@7 ab4 gb4@2 ~@2, ~@12 g4 ~@3",
  R: "c5@7 bb4@9", S: "a4@3 ab4 a4@3 ab4 a4@3 gb4 ~@4", T: "~@8 b3@3 bb3 b3 ~@3",
  U: "g4@3 gb4 g4@3 gb4 g4@3 gb4 g4@3 gb4", V: "g4@2 ~ g4 ~@3 [eb4,e4] ~@8", W: "~@15 a4", X: "~@3 gb4 ~@3 e4 ~@3 c4@5",
  Y: "c4@3 b3 c4@3 c4 e4@3 c4 e4@3 e4", Z: "gb4@3 f4 gb4@3 g4 a4@3 g4 a4@3 c5", AA: "a4@6 ~ a4 ~@8",
  AB: "f3@3 gb3 g3@3 ab3 a3@3 bb3 b3@3 c4", AC: "db4@3 d4 eb4@3 e4 f4@3 gb4 g4 ~@3",
  AD: "~@4 d4 eb4 ~ e4 f4@3 d4!2 ~@3", AE: "e4@2 ~ db4 ~@3 [gb4,g4] ~@8", AF: "a4 ~@6 b4 c5@3 gb4@5",
  AG: "f4@3 f4@5 bb4@3 g4@5", AH: "[d4 ~@3 e4 ~@3 f4@3 d4@69]/5", AI: "f4 ~@7", AJ: "~@7 d4@4 db4 d4 ~@3",
  AK: "~@5 e4 ~@10, ~@2 f4 ~@5", AL: "~@7 eb4@4 d4 eb4 ~@3", AM: "~@4 f4 ~@11", AN: "~@3 gb4@5 f4 ~@3 e4 ~@3",
  AO: "eb4@6 ~ eb4 ~@8", AP: "[~@4 eb4@8 eb4@8 eb4@6 d4 [b3,c4,db4] [a3,bb3] ~@3]/2", AQ: "ab3@6 ~ ab3 ~@8",
  AR: "f3@6 ~ f3 ~@8", AS: "~@3 f4 a4 ~@3 bb4@3 c5@5", AT: "b4@2 ~@2 c5@2 ~@2 b4@3 c5@5", AU: "bb4@6 ~ bb4 ~@8",
  AV: "~@12 f4@3 c4", AW: "f4@3 d4 c4@3 ab3 bb3@3 db4 db4@3 f4", AX: "~@15 db4",
  AY: "f4@2 f4 ~ ab4@2 bb4 ~ c5@2 ab4 ~ bb4@2 c5 ~", AZ: "ab4@3 f4 ~@11 c4",
  BA: "f4@2 f4 ~ ab4@2 bb4 ~ c5@2 c5 ~ bb4@2 c5 ~", BB: "ab4@2 ab4 ~ g4@2 ab4 ~ g4@2 g4 ~ e4@2 e4 ~", BC: "eb4",
  BD: "e4@3 f4 f4@3 e4 f4@3 f4 e4@3 f4", BE: "e4@2 ~ d4 ~@3 g4@3 gb4 f4 ~@4",
  BF: "[ab3@3 c4 ~@3 eb4 ~@3 f4@8 gb4@2 ~@2 f4 ~@3 a4@29 ~@8]/4", BG: "~ d4 ~ d4!3 ~ d4!3 ~ d4!3 ~ d4",
  BH: "~@3 bb3@2 bb3@2 ~ bb3@2 ~ bb3@2 bb3@2 ~", BI: "bb3@3 ~@13", BJ: "~@5 f4@2 ~ f4@5 f4@2 ~", BK: "f4/3",
})).s("gm_alto_sax").gain(0.4).pan(0.4)

// other · alto sax · soft notes
const alto_sax_soft = note("<~@16 A B ~@15 C ~@9 D ~@16 E ~@46 F ~@41 G@2 H ~@50 I ~@14>".pickRestart({
  A: "~@12 [eb4,e4] [db4,d4] [b3,c4] [a3,bb3]", B: "ab3 ~@15", C: "~@10 b4 [a4,bb4] ~@4", D: "~@8 [db4,d4] ~@7",
  E: "~@8 [e4,f4] ~@7", F: "~@5 [d4,eb4] ~@10", G: "[~@4 eb4@8 eb4@8 d4@8 d4 ~@3]/2", H: "bb3@6 ~ bb3 ~@8",
  I: "~@11 e4 [d4,eb4] ~@3", // Ebmaj7
})).s("gm_alto_sax").gain(0.24).pan(0.4)

// other · tenor sax
const tenor_sax = note(`<
  A@2 B@2 C@2 D@2 E F G@2 H I J K L M N O P Q R@2 S T U V ~ W X@2 ~ Y Z AA ~@2 AB@2 AC@2 AD AE ~@5 AF AG AH AI AJ AK AL
  AM AN AO AP AQ AR AS AT AU@4 AV@2 AW ~@2 AX@4 AY ~@26 AZ ~ AZ BA ~@11 BB BC BD@2 BE BF BE BG ~@2 BH BI BJ@2 BK ~@8 BL
  BM ~ BN@2 BO ~@5 BP@2 BQ@2 BR BS BT ~ BU BV BW ~@3 BX@4 BY@2 BZ ~@12 CA CB CC CD CE H ~@7 CF CG CH CI CJ@4 ~ CK CL CM
  CN CO ~ CP@3
>`.pickRestart({
  A: "[d3 ~@3 e3 ~@3 gb3@2 ~ d3 ~@3 a3@4 g3 gb3@3 g3 b3@3 a3 ab3@3 a3]/2",
  B: "[d4@3 db4 d4@3 db4 d4@3 a3 gb3@3 d3@3 db3 [b2,c3] ~@12]/2", // Cmaj7
  C: "[d3 ~@3 e3 ~@3 f3@2 ~ d3 ~@3 a3@4 g3 f3 ~@3 b3@3 a3@5]/2", D: "[d4@10 ~ b3 a3@2 ~ g3@9 ~@8]/2", E: "g3 gb3",
  F: "f3 e3", G: "[eb3@8 d3 ~@3 db3@3 c3@5 g3@3 g3@2 ~@2 g3 ab3 ~@3]/2", H: "c4", I: "~@4 b3@3 c4 c4@3 b3 c4@2 ~@2",
  J: "c4@3 ~", K: "db4@3 b3 b3@3 db4 b3@3 b3 bb3@3 bb3", L: "a3 ~@6 gb4@4 ~@5", M: "~@12 d4 ~@3",
  N: "ab4@3 a4 a4@2 ~ a4 f4@3 gb4 gb4@2 ~ gb4", O: "f4@3 gb4 gb4@2 ~ gb4 eb4@3 e4 e4@2 ~ e4",
  P: "b3@3 a3 a3@3 d4 b3@3 a3 f4@3 d4", Q: "b3@3 a4 f4@3 d4 ab4@3 a4 f4@3 d4",
  R: "[ab4@3 a4@5 f4 ~@3 d4@3 d4@13 ~@4]/2", S: "~@4 c4!2 ~ d4 d4@3 c4 c4@3 a3", T: "b3@3 b3 b3@3 bb3 b3@2 ~ e4@5",
  U: "~@4 ab4@3 a4@2 ~@2 db4 d4@2 ~@2", V: "b3@3 c4@2 ~@2 c4 db4@8", W: "gb4@3 f4 e4@11 ~",
  X: "[a3@3 g3@5 c4 ~@3 a3@2 ~ c4@9 ~@8]/2", Y: "~@4 a4@7 gb4 e4@2 ~@2, ~@12 f4 ~@3", Z: "a4@7 ab4@9",
  AA: "gb4@3 f4 gb4@3 f4 gb4@3 e4 ~@4", AB: "[f3@2 ~ e3 ~@3 f3 d3 ~@3 f3@2 ~ e3@2 ~@2 f3 d3 ~@3 f3@3 e3 f3 ~@3]/2",
  AC: "[~@3 c4@5]/2", AD: "e4@3 eb4 e4@3 eb4 e4@3 eb4 e4@3 eb4", AE: "e4@2 ~ e4 ~@3 [db4,d4] ~@8", AF: "~@15 gb4",
  AG: "~@3 e4 ~@3 c4 ~@3 a3@5", AH: "a3@3 ab3 a3@3 a3 c4@3 a3 c4@3 db4", AI: "e4@3 eb4 e4@3 f4 gb4@3 f4 gb4@3 a4",
  AJ: "f4@6 ~ f4 ~@8", AK: "g3", AL: "d3@3 eb3 e3@3 f3 gb3@3 g3 ab3@3 a3", AM: "bb3@3 b3 c4@3 db4 d4@3 eb4 e4 ~@3",
  AN: "~@4 a4 ~@3 a4 ~@3 a4 ~@3", AO: "g4@2 ~ e4 ~@3 a4@3 ab4 [gb4,g4] ~@4", AP: "~@4 c4!2 ~ db4 d4@3 c4!2 ~@3",
  AQ: "db4@2 ~ b3 ~@3 [eb4,e4] ~@8", AR: "c4@2 ~ d4 ~@3 f4 ~@3 a4@5", AS: "g4 ~@6 g4 a4@3 e4@5",
  AT: "d4@3 d4@5 g4@3 e4@5", AU: "[f3@56 ~@3 e3@5]/4", AV: "eb3/2", AW: "bb2 ~@7",
  AX: "[~@15 db4@5 eb4 ~@3 f4@3 db4@37]/4", AY: "eb4 ~@7", AZ: "~@7 bb3@4 a3 bb3 ~@3", BA: "~@5 b3 ~@10, ~@2 c4 ~@5",
  BB: "bb3 a3", BC: "ab3 g3", BD: "[gb3@8 f3 ~@3 e3@3 eb3@9 db3@8]/2", BE: "c3", BF: "bb2", BG: "c3@12 c3@2 ~ f3",
  BH: "~@3 f3 g3@3 f3 a3@3 c4 ~@4", BI: "a3@2 ~ c4 ~@3 c4@4 b3 c4 ~@3", BJ: "[f3 ~@3 g3 ~@3 ab3@3 f3@21]/2",
  BK: "~@4 c4 ~@11", BL: "~@3 eb4@5 d4 ~@3 db4 ~@3", BM: "c4@6 ~ c4 ~@8",
// … 406 more lines

More by Ellington