Strudelify

I'll Take Romance

Kenny Dorham

KeyF minorTempo176 bpm
0:00/0:00
// I'll Take Romance — Kenny Dorham
// 176 bpm, 4/4, key F minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 3/4 at bar 27, 4/4 at bar 33, 3/4 at bar 99, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: Full arrangement: all 128 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(176/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@2 C D E F G H I J K L M N O P Q R S T U V P W@3 X@3 Y Z AA AB AC AD AE AF AG AH ~ B@2 C D AI A ~ P AJ AK AL AM
  AN N AO AP AQ AR AS AT U H AU AV AW AX AY AZ BA BB BC BD BE BF BG BH BI BJ BK BL BM BN BO BP BQ BR BS BL BM BN BO BP
  BQ BT BU BV@3 X@3 Y Z AA AB AC AD AE AF AG AH ~ B@2 C D AI BW BX BY BZ CA CB CC CD@2
>`.pickRestart({
  A: "f2 ~@15", B: "[~@7 bb2 ~@3 ab2 ~@3 gb2@5 ab2@4 bb2@4 ab2@4]/2", C: "gb2 bb2 ab2 gb2", D: "c2 d3 c2!2",
  E: "c2@3 c1 c2@2 ~ c2 e2@4 c2@3 c1", F: "f3@3 c2 a2@4 bb2@3 ~ b2@4", G: "c3@3 c2 db3@4 d3@4 e3@4", H: "f2 g2 a2 c3",
  I: "g2@3 d2 d3@3 d2 c2@4 c2@4", J: "a1@2 ~ a1 g2@4 ab2@3 ab1 ab2@4", K: "db2@4 db2@4 gb2@2 ~ gb2 e2@4",
  L: "f2@4 f2@4 d2@3 d1 ab2@4", M: "g2@3 g1 g2@4 c2@4 g2@4", N: "f2 g2 ab2 eb3", O: "g2@3 g1 g2@4 gb2@4 e2@4",
  P: "f2 c3 a2 f2", Q: "g2@3 d2 d3@3 d2 c2@3 g1 g2@3 g1", R: "a1@3 e1 e2@3 e1 ab2@3 eb2 eb3@3 eb2", S: "db2 f2 gb2 e2",
  T: "f2@3 c2 c3@3 c2 d2@3 d1 d2@4", U: "g2 b1 c2!2", V: "f2@3 f1 ab2@3 ab1 ab2@4 gb2@3 gb1",
  W: "[eb2@12 ab2@7 eb3@5 db2@7 g2@5 db2@12]/3", X: "[eb2@12 ab2@12 db2@11 g2 db3@7 ab2@2 ~@2 db2]/3",
  Y: "gb2@3 bb1 e2@3 ~ eb2@4 db2@4", Z: "b1@4 eb2@4 e2@2 ~ e2 b2@4", AA: "a1@4 db2@4 d2@3 d1 d2@4",
  AB: "g2@3 d2 d3@3 d2 c2@3 c1 gb2@4", AC: "f2@3 c2 g2@4 a2@3 c2 c3@3 c2", AD: "g2@3 g1 g2@4 c3@4 g2@4",
  AE: "a1@2 ~ a1 g2@4 ab2@4 eb3@4", AF: "db2@4 b1@4 c2@3 g1 g2@3 g1", AG: "a1@3 a0 eb2@4 d2@4 gb2@4",
  AH: "g2@4 g2@4 c2@3 ~ c2@3 f2", AI: "c2@3 c1 c2@2 ~ c2 c3@4 c3@3 c2", AJ: "g2@4 b1@4 c2@3 c1 c2@4",
  AK: "a1@3 e1 e2@3 e1 ab2@4 d2@4", AL: "db2@2 ~ db2 ab2@4 gb2@2 ~ gb2 db3@4", AM: "f2@4 db2@4 d2@3 a1 a2@3 a1",
  AN: "g2@2 ~ g2 d3@4 c2@2 ~ c2 e2@4", AO: "db2@3 db1 db2@4 gb2@2 ~ gb2 e2@4", AP: "f2@3 c2 c3@3 ~ a2@4 f2@3 c2",
  AQ: "g2@3 d2 d3@3 d2 c2@3 c1 c2@4", AR: "a2 e2 ab2 c2", AS: "db2@2 ~ db2 ab2@4 gb2@3 gb1 gb2@4",
  AT: "f2@2 ~ f2 c3@4 d2@3 a1 a2@3 a1", AU: "g2@3 g1 c2@4 f2@3 c2 c3@3 c2", AV: "eb2 g2 ab2!2",
  AW: "db2@4 c2@4 db2@3 db1 e2@4", AX: "eb2 e2 ab2!2", AY: "db2 eb2 f2 ab2", AZ: "gb2@3 db2 db3@3 ~ bb2@4 gb2@3 db2",
  BA: "bb1 f2 e2 bb1", BB: "a1@3 a0 eb2@4 d2@3 d1 d2@4", BC: "g2@4 db2@4 c2@3 c1 gb2@4", BD: "f2 db2 d2 gb2",
  BE: "g2@3 g1 g2@4 c2@3 c1 c2@4", BF: "f2@3 f1 a2@4 ab2@4 eb3@4", BG: "db2!2 c3 g2", BH: "a2@4 e2@4 d2@3 d1 ab2@4",
  BI: "g2!2 c2 e2", BJ: "f2@4 f2@4 db2@3 ab1 ab2@3 ab1", BK: "c2@4 e2@4 f2@3 f1 b1@4", BL: "bb2 bb1 d2 f2",
  BM: "c3@4 g2@4 db2@2 ~ db2 db2@4", BN: "d2@2 ~ d2 a2@4 db2@3 db1 ab2@4", BO: "g2@4 g2@4 b1@3 b0 f2@3 f1",
  BP: "d2@3 a1 a2@3 a1 g2@2 ~ g2 b1@4", BQ: "c3@4 g2@4 f2@3 c2 c3@3 c2", BR: "a1@3 a0 bb1@4 g2@3 g1 g2@4",
  BS: "c2@4 eb2@4 f2@3 f1 b1@4", BT: "a1@3 a0 bb1@4 bb2@4 f2@4", BU: "f2@4 c3@4 bb1@2 ~ bb1 f2@4",
  BV: "[eb2@12 ab2@6 eb3@5 ~ db2@6 g2@5 ~ db2@12]/3", BW: "bb1 c2 db2 f2", BX: "g2@2 ~ g1 f2@4 e2@4 d2@3 db2",
  BY: "c2 d2 e2 g2", BZ: "c3 g2 e2 c2", CA: "f2 g2 ab2 c3", CB: "db2@3 ab1 eb2@4 f2@3 ab1 ab2@3 ab1",
  CC: "c2@4 g2@4 c3@4 g2@3 db2", CD: "[c3@2 ~@2 c2@3 f2@25]/2",
})).s("gm_acoustic_bass").gain(0.2).pan(0.4)

// chords · piano
const piano = note(`<
  ~ A B C D E F G ~ H I J K L M N O@2 P Q R S T U V W X@2 Y@3 Z AA AB AC AD AE AF AG AH AI ~ B C D E F G ~ AJ AK AL AM
  AN AE AO AP AQ AR AS AT AU AV@2 AW AX AY AZ BA BB@2 BC BD BE BF BG BH BI BJ BK BL BM@2 BN BO BP@2 BQ BR BM@2 BN BO
  BP@2 BS BT W X@2 Y@3 BU AA BV AC BW AE AF AG AH AI ~ B C D BX F BY@2 BZ CA CB CC CD CE@2
>`.pickRestart({
  A: "[e3,a3,c4,g4] ~@15", B: "~@7 [bb2,ab3,db4,f4] ~@3 [ab2,g3,c4,eb4] ~@3 [bb3,f4,ab4,bb4,db5]",
  C: "~@3 [gb2,gb3,db4,ab4] eb4@2 ~ gb3 [bb3,f4]@2 ~@5 eb3", D: "[f3,gb3,bb3,f4]@9 ~@2 gb2 [bb3,ab4] ~@3, ~@6 f4 ~",
  E: "[d4,f4] [bb3,g4] ~@2 c2@2 ~@2 [a3,e4] ~@7", F: "[c2,bb3,d4,f4] ~@6 [c3,g3,a3,e4] ~@3 db4@2 ~@3, ~@11 g4 ~@4",
  G: "[f2,a3,c4,e4] ~@15", H: "[c4,d4] [a3,f4] ~@2 f2@2 ~@2 f4@2 d4@2 ~@4, ~@8 d4 ~@7",
  I: "~@3 [f3,bb3,d4,g4] ~@7 [bb3,e4,g4,bb4,db5]@4 ~", J: "~@3 [a2,e3,a3,e4] c4@2 ~@2 [eb4,gb4] [c4,ab4] ~@2 ab2@2 ~@2",
  K: "[db3,c4,db4,f4] ~@7 [db4,e4] [bb3,gb4] ~@2 gb2@2 ~@2", L: "~@3 [e3,a3,c4,g4] ~@7 d3 [eb4,gb4]@2 ~@2",
  M: "~@3 [bb3,f4,g4,bb4,d5]@5 ~@3 [e3,bb3,c4,g4] ~@4", N: "[d3,a3,c4,f4] ~@7 [ab2,gb3,bb3,c4]@6 ~@2",
  O: "[[d4,f4] [bb3,g4] ~@2 g2@2 ~@5 [bb3,f4,ab4,bb4,db5]@4 c4@2 ~@10 c2 [f3,a3,d4]@2 ~@2, ~@15 f4 ~@16]/2", // Dm Eb Bbm7 Dm
  P: "~@3 [bb3,f4,g4,bb4,d5]@4 db4@2 ~@7, ~@7 g4 ~@8", Q: "[a3,c4] [g3,e4] ~@2 a2@2 ~ [gb3,c4,eb4,ab4]@2 ~@7",
  R: "[db3,c4,db4,f4] ~@7 [gb2,e3,gb3,bb3]@6 ~@2", S: "~@3 [e3,a3,c4,g4] ~@4 [eb4,gb4] [c4,a4] ~@2 d3@2 ~@2",
  T: "[f3,bb3,d4,g4] ~@7 [c4,e4] [bb3,gb4] ~@2 c3@2 ~@2", // Gm7 C Ebm
  U: "~@3 [f2,f3,c4,f4] [ab2,g3,ab3,c4]@6 ~ g2 [db4,f4] [bb3,ab4] ~@2", V: "[f2,a3,e4,g4]@15 ~",
  W: "[gb3,db4,eb4,bb4]@5 ~@2 [gb3,db4,eb4,bb4] ~@4 [gb3,a3,c4,e4]@4", // Ebm7 Gbm7b5
  X: "[~@3 [gb3,a3,c4,e4] ~@4 db3@3 [e3,bb3,db4,g4] ~@4 [e3,bb3,db4,g4]@2 ~@2 [f3,ab3,bb3,eb4]@5 ~@2 [f3,ab3,bb3,eb4] ~@4, ~@15 db3@3 ~@14]/2", // Gbm7b5 Edim Fm7
  Y: "[[gb3,db4,f4,bb4]@5 ~@2 [gb3,db4,f4,bb4] ~@7 [gb3,c4,e4,a4]@2 ~@3 [gb3,c4,e4,a4] ~@3 db3@3 [e3,g3,bb3,db4] ~@4 [e3,g3,bb3,db4]@2 ~@5 [f3,ab3,bb3,eb4]@2 ~@3 [f3,ab3,bb3,eb4] ~@3, ~@31 db3@3 ~@14]/3", // Gbmaj7 Gbm7b5 Edim Fm7
  Z: "[e3,bb3,db4,gb4] ~@11 [bb3,e4,gb4,db5]@3 ~, ~@12 ab3 ~@3", AA: "[b2,bb3,b3,eb4] ~@6 [d3,ab3,b3,gb4]@2 ~@7",
  AB: "[a3,c4] [g3,e4] ~@2 a2@2 ~@5 d3 [eb4,gb4]@2 ~@2", AC: "[g2,bb3,d4,f4] ~@7 [c3,bb3,db4,e4] ~@7",
  AD: "[d3,a3,c4,f4] ~@11 [a3,d4,f4,c5]@3 ~, ~@12 g3 ~@3", AE: "[g2,bb3,d4,f4] ~@10 [bb3,e4,g4,bb4,c5]@5",
  AF: "[a2,c3,e3,g3]@6 ~@5 [c4,gb4,bb4,c5,eb5]@5", AG: "[db2,f3,ab3,c4]@6 ~@5 c3 [c4,e4]@2 ~@2",
  AH: "[a2,g3,a3,db4] ~@10 [d3,a3,eb4,a4] f4@2 ~@2", // A7 D
  AI: "~@3 [bb3,f4,g4,bb4,d5]@5 [c2,e3,g3,bb3]@2 ~@2 [c2,e3,e4]@3 [f2,f3,f4]", // Gm7 C7 C F
  AJ: "[f2,d3,f3,a3]@6 ~ e2 [f2,f3,d4,f4]@5 ~@3", AK: "[d4,g4] ~@10 [e3,bb3,c4,g4] ~@4",
  AL: "~@3 [c3,g3,a3,e4] ~@4 [ab2,c4,eb4,gb4] ~@7", AM: "~@3 [c4,f4,ab4,c5,eb5]@4 ~@4 gb2 [db4,e4]@2 ~@2",
  AN: "~@3 [e3,a3,c4,g4] ~@3 [d2,gb3,a3,c4]@7 ~@2", AO: "[f2,a3,c4,d4] ~@6 [gb3,c4,eb4,ab4]@2 ~@7",
  AP: "[f3,c4,db4,ab4] ~@7 [gb2,e3,gb3,bb3]@6 ~ f2", AQ: "[d3,a3,d4]@6 ~@2 d4 d4@6 ~, f4@2 ~@6 [f2,a3,f4]@5 ~@3",
  AR: "[g2,bb3,d4,f4] ~@7 [c4,e4] [bb3,g4] ~@2 c3@2 ~@2", AS: "[a2,c3,e3,g3]@6 ~@5 [ab2,bb3,eb4,bb4] f4@2 ~ bb3",
  AT: "[f3,c4,db4,ab4] ~@10 [bb3,e4,ab4,bb4,db5]@5", AU: "[f2,a3,c4,e4] ~@10 [d3,a3,eb4,a4] f4@2 ~@2",
  AV: "[[g2,bb3,d4,f4] ~@7 [c4,g4] ~@6 [f2,d3,f3,a3]@7 ~ e2 [f2,f3,d4,f4]@5 ~@3]/2", // Gm7 C5 Dm
  AW: "[g2,bb3,d4,f4] ~@6 c3 [f2,d3,f3,a3]@6 ~ e2", AX: "~@3 [db3,gb3,bb3,eb4] ~@4 [ab2,gb3,a3,c4]@6 ~@2",
  AY: "[db4,e4] [bb3,g4] ~@2 db3@2 ~@5 [f3,c4,db4,ab4] ~@4", // Dbm Eb Dbmaj7
  AZ: "~@3 eb2 [bb3,db4]@2 ~@5 [gb3,db4,eb4,gb4,bb4] [eb4,a4] ~@3", // Bbm Ebm7 Ebdim
  BA: "[db2,f3,ab3,c4] ~@7 [db3,c4]@2 ~@6, ~@8 [f4,ab4] ~@7", // Dbmaj7 Fm
  BB: "[[gb2,e3,gb3,bb3]@6 ~ f2 [gb2,gb3,e4,gb4]@5 ~@2 [bb1,d3,f3,a3]@7 ~ a2 [b3,d4] [ab3,gb4] ~@2 e2@2 ~@2]/2", // Gb7 Bbmaj7 Bm Ab7
  BC: "[a2,g3,a3,c4] ~@7 [gb3,c4,e4,a4] ~@7", BD: "[bb3,d4,f4] g4 ~@2 g2@2 ~@5 [c3,g3,db4,g4] eb4@2 ~ g3",
  BE: "[a3,c4,d4] f4 ~@2 f2@2 ~@2 [d2,gb3,a3,c4]@6 ~ db3", BF: "[b3,eb4,f4] g4 ~@2 g2@2 ~@2 [db4,g4] ~@7",
  BG: "~@3 f2 [c4,d4]@2 ~ eb4@2 ~@7, ~@7 a4 ~@8", BH: "[db4,ab4] ~@10 c3 [c4,e4]@2 ~@2",
  BI: "~@3 [g3,db4,f4,g4,a4]@5 [d3,c4,d4,gb4] ~@7", BJ: "[b3,eb4,f4] g4 ~@2 g2@2 ~@2 [c3,bb3,c4,e4] ~@7",
  BK: "~@3 f2 ~@7 [e3,b3,db4,ab4] ~@4", BL: "~@3 [bb3,eb4,g4,bb4,c5]@4 ~@4 f2 [c4,eb4]@2 ~@2",
  BM: "[[d3,a3,bb3,f4] ~@10 g3 [a3,d4,f4,c5]@3 c4@2 ~@6 [e3,bb3,db4,g4]@2 ~@7, ~@15 g4 ~@16]/2", // Bbmaj7 Dm7 Edim
  BN: "[d3,c4,d4,f4] ~@7 [f3,b3,eb4,ab4] ~@7", BO: "~@3 [g2,g3,d4,a4] e4@2 ~ g3 ~@3 b2 ~@3 [f2,f3,db4,f4]",
  BP: "[[d2,gb3,bb3,c4]@6 ~@5 [b3,f4,g4,b4,eb5]@4 [e3,bb3,c4,ab4]@2 ~@6 [eb3,a3,db4,f4]@2 ~@7]/2", // Daug Baug Eaug Dbaug
  BQ: "~@3 [a2,e3,a3,e4] [a3,bb3,d4] f4 ~@2 [f3,b3,d4,ab4] ~@7", BR: "[c3,bb3,c4,eb4] ~@7 [f2,a3,c4,eb4] ~@7",
  BS: "~@3 [a2,e3,a3,e4] [a3,bb3,d4] f4 ~@5 [a3,d4,f4,a4,c5]@5", BT: "~@3 [ab3,eb4,f4,ab4,c5]@5 [b3,f4] ~@7",
  BU: "[e3,bb3,db4,gb4] ~@10 ab3 [bb3,e4,gb4,db5]@3 ~", BV: "[g3,a3,c4] e4 ~@2 a2@2 ~@5 d3 [eb4,gb4]@2 ~@2",
  BW: "[d3,a3,c4,f4] ~@10 g3 [a3,d4,f4,c5]@3 ~", BX: "[bb3,d4,f4] g4 ~@2 c2@2 ~@2 [a3,e4] ~@7",
  BY: "[~@3 bb2 [bb3,db4]@2 ~@2 [ab3,f4]@2 ~ f2 [ab3,db4]@2 ~@2 [g2,b3]@14 ~@2, ~@15 [f4,g4]@15 ~@2]/2", // Bbm Db Db5 G Fsus2
  BZ: "[c3,bb3,c4,e4] ~@10 g2 [c4,e4]@2 ~@2", CA: "[e3,bb3,e4,ab4] ~@6 c3 [bb3,ab4]@2 e4 ~@5, ~@8 eb4 ~@7",
  CB: "[ab3,c4,eb4] f4 ~@2 f2@2 ~@2 f4@2 eb4@2 ~@4, ~@8 d4 ~@7", CC: "f3@11 ab2 ~@4, [c4,db4]@7 ~",
  CD: "~@3 c3 [c4,e4]@2 ~@2 [bb3,ab4]@2 ~ g2 [bb3,e4]@2 ~@2", CE: "[~@4 [c2,c3,c4]@3 [f2,e3,f3,ab3]@25]/2",
})).s("gm_piano").gain(0.13).pan(0.3)

// other · alto sax
const alto_sax = note(`<
  ~ A@2 B C@3 D ~ E@2 F G H@3 ~ E@2 F G I@2 J K L M N L M N O@2 P@2 Q@2 R S I@2 A@2 B C@3 ~@24 T U V W X Y Z@2 AA AB AC
  AD AE@2 AF AG AH@2 AC AD AE@2 AF AG AI@2 L M N L M N O@2 P@2 Q@2 R S I@2 A@2 B C@3 AJ@2 AK@7
>`.pickRestart({
  A: "[~@3 c4 f4@3 bb4 g4@3 c5 f5@3 eb5@2 ~@2 c5@13]/2", B: "~@3 f5 eb5@3 f5 eb5@2 ~ eb5 c5@3 eb5",
  C: "[c5@2 ~ c5 bb4@3 c5 bb4@3 ab4 f4@3 c4@13 c4@12 c4@8]/3", D: "g4 ~@15",
  E: "[~@3 f4@5 d4 ~@3 f4@3 g4@9 ~@3 a4 ~@3 bb4]/2", F: "c5 ~@3 c5 ~@3 c5 ~@3 c5 ~@3", G: "c5@3 db5 c5@3 bb4@9",
  H: "[bb4@3 c5 bb4@3 a4@4 [bb4,b4] c5@3 g4@9 g4@3 f4 e4@3 d4@17]/3", // Bmaj7
  I: "[bb4@3 c5 bb4@3 a4@4 [bb4,b4] c5@3 g4@9 g4@3 f4 e4@3 f4]/2", J: "~@4 eb4@6 ~ ab4@5", K: "c5 ~@15",
  L: "~@3 bb4@5 bb4 ~@6 eb4", M: "~@3 eb4!2 ~@6 g4@5", N: "g4 ~@6 ab4 ~@3 ab4!2 ~@3", O: "[ab4@14 ~ gb4@8 b4@9]/2",
  P: "[c5@8 eb5@7 d5@9 db5@6 ~ c5]/2", Q: "[~@3 f4 e4@3 f4 d4@3 e4 f4@3 g4@17]/2", R: "~@3 e4@5 f4@2 ~ f4 ~@3 f4",
  S: "ab4 ~@3 ab4@3 ab4@9", T: "a4 d5", U: "d5 e5", V: "f5@10 ~ eb5@5", W: "d5@10 ~ db5@5", X: "c5@2 ~ c5 ~@7 f5@5",
  Y: "c5@3 db5 c5@3 eb5@9", Z: "[~@3 c5@5 f5@2 ~ eb5 ~@3 bb4@9 eb5@3 d5 db5@2 ~ c5]/2", AA: "~@11 ab4@5",
  AB: "g4@7 gb4@9", AC: "f4", AD: "g4@4 g4@2 ~ g4 ~@3 g4@5",
  AE: "[~@3 f4!2 ~@3 f4@2 ~ f4 ~@3 f4@5 f4@2 ~ eb4 ~@3 ab4@5]/2", AF: "f4 ~@10 bb4@5", AG: "gb4 ~@10 ab4@5",
  AH: "[e4 ~@3 f4 ~@3 db4@2 ~ d4 ~@3 eb4@5 eb4@3 d4@9]/2", AI: "[e4 ~@3 f4 ~@3 a4@2 ~ bb4 ~@3 f4@5 f4@3 f4@9]/2",
  AJ: "[~@3 ab4@5 f4 ~@3 ab4@3 bb4@17]/2",
  AK: "[~@3 c4 db4@3 c5@4 eb4 e4@3 eb5@5 db5 c5 ~ bb4 c5 db5 ~ c5 ab4 eb4 ~@2 c4@12 c4@3 g4@13 g4@3 c5@9 eb4 e4 ~ ab4 c5 eb5 ~@2 c5@6 ~ e5@25, ~@31 db4@2 ~@46 db5@2 ~@31]/7",
})).s("gm_alto_sax").gain(0.39).pan(0.6)

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

// other · tenor sax
const tenor_sax = note(`<
  ~@7 A ~@7 B@2 ~@6 C D E F G E F G H@2 I@2 ~@2 J K ~@8 A ~@9 L@3 M N O P Q R S@3 ~@2 T U V W X Y Z@2 AA AB AC AD AE@2
  AF AG AH@2 AC AD AE@2 AF AG AI@2 E F G E F G H@2 I@2 ~@2 J K ~@17
>`.pickRestart({
  A: "a3 ~@15", B: "[~@7 gb3@8 bb3@8 eb4@7 ~ c4]/2", C: "~@4 eb3@6 ~ db3@5", D: "c3 ~@15", E: "~@3 gb3@5 gb3 ~@6 gb3",
  F: "~@3 gb3!2 ~@6 e3@5", G: "e3 ~@6 f3 ~@3 f3!2 ~@3", H: "[e3@14 ~ gb3@8 ab3@9]/2",
  I: "[g3@8 c4@7 bb3@9 bb3@6 ~ a3]/2", J: "~@3 g3@5 gb3@2 ~ gb3 ~@3 gb3", K: "ab3 ~@3 ab3@3 e3@9",
  L: "[~@3 f3@5 e3 ~@3 d3@3 c3@16 g3@8 gb3 ~@7 gb3]/3", M: "f3@6 ~ e3 ~@3 e3@5", N: "e3 ~@6 g3 ~@3 gb3@5",
  O: "f3@3 d3 eb3@3 e3@9", P: "~@3 c3 f3@3 bb3 a3@3 f3 ~@3 f3", Q: "bb3@4 d4@2 ~ c4 ~@3 f3@5", R: "~@3 gb3 db4@3 c4@9",
  S: "[~@3 g3 bb3@3 ab3@3 [a3,bb3] [b3,c4,db4] eb4@3 bb3@9 gb3 ~@3 gb3@3 f3@9 f3@3 f3 f3@2 ~ e3, ~@12 d4 ~@35]/3", // Bbmaj7
  T: "c4!2", U: "bb3 e4", V: "d4@10 ~ c4@5", W: "b3@10 ~ bb3@5", X: "a3@2 ~ a3 ~@7 c4@5", Y: "bb3@3 b3 bb3@3 bb3@9",
  Z: "[~@3 g3@5 c4@2 ~ c4 ~@3 f3@9 bb3@6 ~ a3]/2", AA: "~@11 ab3@5", AB: "g3@7 eb3@9", AC: "f3",
  AD: "g3@4 g3@2 ~ g3 ~@3 g3@5", AE: "[~@3 a3!2 ~@3 ab3@2 ~ ab3 ~@3 db3@5 db3@2 ~ gb3 ~@3 a3@5]/2", AF: "gb3 ~@10 f3@5",
  AG: "e3 ~@10 a3@5", AH: "[ab3 ~@3 a3 ~@3 f3@2 ~ f3 ~@3 g3@5 g3@3 eb3@9]/2",
  AI: "[ab3 ~@3 a3 ~@3 a3@2 ~ bb3 ~@3 ab3@5 ab3@3 ab3@9]/2",
})).s("gm_tenor_sax").gain(0.39).pan(0.4)

// other · baritone sax · "Bari Sax"
const baritone_sax = note(`<
  ~ A@2 B C@3 D ~@7 E@2 ~ F G H I@2 J D K@6 L@2 M@2 N@2 O P Q@2 A@2 B C@3 D ~@9 R@3 S T U V W X Y@3 ~@2 Z AA AB AC AD AE
  AF@2 AG AH AI AJ AK@2 AL AM AN@2 AI AJ AK@2 AL AM AO@2 K@6 L@2 M@2 N@2 O P Q@2 A@2 B C@3 AP@2 AQ@7
>`.pickRestart({
  A: "[~@3 c3 f3@3 bb3 g3@3 c4 f4@3 eb4@2 ~@2 c4@13]/2", B: "~@3 f4 eb4@3 f4 eb4@2 ~ eb4 c4@3 eb4",
  C: "[c4@2 ~ c4 bb3@3 c4 bb3@3 ab3 f3@3 c3@13 c3@12 c3@8]/3", D: "f2 ~@15", E: "[~@7 ab2@8 g2@8 gb2@7 ~ f2]/2",
  F: "~@3 bb3 c4@3 db4@9", G: "c4@3 eb4 g4@3 gb4@9", H: "f4@7 e4@9", I: "[g4@3 f4 e4@3 eb4@8 d4@9 db4@6 ~ c4]/2",
  J: "~@4 ab2@6 ~ gb2@5", K: "[eb2 ab2 db2 db2]/3", L: "[gb2@14 ~ b2@8 e2@9]/2", M: "[a2@8 d3@7 g2@9 c3@6 ~ f2]/2",
  N: "[~@3 f3 e3@3 f3 d3@3 e3 f3@3 g3@17]/2", O: "~@3 a2@5 ab2@2 ~ ab2 ~@3 ab2", P: "db3 ~@3 db3@3 c3@9",
  Q: "[bb3@3 c4 bb3@3 a3@4 [bb3,b3] c4@3 g3@9 g3@3 f3 e3@3 f3]/2", R: "[~@3 f3@5 e3 ~@3 d3@3 c3@16 a2@8 ab2 ~@7 ab2]/3",
  S: "db2@6 ~ gb2 ~@3 gb2@5", T: "f2 ~@6 g3 ~@3 gb3@5", U: "f3@3 d3 eb3@3 e3@9", V: "~@3 c3 f3@3 bb3 a3@3 f3 ~@3 f3",
  W: "bb3@4 d4@2 ~ c4 ~@3 f3@5", X: "~@3 gb3 db4@3 c4@9",
  Y: "[~@3 g3 bb3@3 ab3@3 [a3,bb3] [b3,c4,db4] eb4@3 bb3@9 ab2 ~@3 ab2@3 db2@9 db2@3 db2 db2@2 ~ gb2, ~@12 d4 ~@35]/3", // Bbmaj7
  Z: "a3 gb3", AA: "g3 bb3", AB: "a3@10 ~ d3@5", AC: "g3@10 ~ c3@5", AD: "f3@2 ~ f3 ~@7 gb3@5",
  AE: "f3@3 gb3 f3@3 e3@9", AF: "[~@3 a2@5 d3@2 ~ d3 ~@3 g2@9 c3@6 ~ f3]/2", AG: "~@11 db3@5", AH: "c3@7 f2@9",
  AI: "bb2", AJ: "c3@4 c3@2 ~ db3 ~@3 db3@5", AK: "[~@3 d3!2 ~@3 db3@2 ~ db3 ~@3 gb2@5 gb2@2 ~ b2 ~@3 f2@5]/2",
  AL: "d2 ~@10 g2@5", AM: "c3 ~@10 f2@5", AN: "[a2 ~@3 bb2 ~@3 g2@2 ~ g2 ~@3 c3@5 c3@3 f2@9]/2",
  AO: "[a2 ~@3 bb2 ~@3 a2@2 ~ bb2 ~@3 f2@5 f2@3 bb2@9]/2", AP: "[~@3 ab3@5 f3 ~@3 ab3@3 bb3@17]/2",
  AQ: "[~@3 c3 db3@3 c4@4 eb3 e3@3 eb4@5 db4 c4 ~ bb3 c4 db4 ~ c4 ab3 eb3 ~@2 c3@12 c3@3 g3@13 g3@3 c4@9 eb3 e3 ~ ab3 c4 eb4 ~@2 c4@6 ~ e4@25, ~@31 db3@2 ~@46 db4@2 ~@31]/7",
})).s("gm_baritone_sax").gain(0.39).pan(0.8)

// other · trumpet · "Trumpet 1"
const trumpet = note(`<
  ~ A B@3 C@2 A ~@7 D@2 ~@6 E F G@3 H@3 I@2 J K ~ L M N O@2 ~ B@3 C@2 A ~@10 P@2 Q R ~@2 S T U V@2 ~@12 W X Y@2 Z AA
  AB@2 W X Y@2 Z AA AC@2 G@3 H@3 I@2 J K ~ L M N O@2 ~ B@3 C@2 AD AE@3 AF@2 AG AH@2
>`.pickRestart({
  A: "c6 ~@15", B: "[~@7 ab5 ~@3 bb5 ~@3 c6@33]/3", C: "[~@3 bb4@5 c5 ~@6 d5@5 e5 ~@6 g5@5]/2",
  D: "[~@7 f4@7 ~ bb4@7 ~ eb5@7 ~ c5]/2", E: "~@4 f4@6 ~ c5@5", F: "f5 ~@3 f4 ~@3 a4@2 ~ c5@5",
  G: "[db5@12 eb5@12 c5@12 bb4@11 ~]/3", H: "[~@3 db5 ~@3 db5 ~@3 bb4 db5@2 ~ eb5@9 c5@6 ~ db5@5 bb4@11 ~]/3",
  I: "[~@4 bb4@2 ~ db5@7 ~ bb4@5 b4@3 ab4@9]/2", J: "~@3 a4 a4@2 ~ a4 ~@3 c5 bb4@2 ~ g4",
  K: "~@3 g4@5 g4@3 bb4 a4@2 ~ f4", L: "~@3 d4 e4@2 ~ f4 g4@2 ~ a4 bb4@2 ~ c5", M: "~@3 c5@5 f5@2 ~ f5 ~@3 f5",
  N: "c5 ~@3 c5@2 ~ eb5@9", O: "[~@3 f5@5 eb5@6 ~ d5@9 db5@6 ~ c5]/2", P: "[~@3 bb4@5 a4 ~@3 g4@3 c5@8 f5 ~@7 e5]/2",
  Q: "eb5@6 ~ c5 ~@3 eb5@5", R: "c5 ~@15", S: "~@11 f5@5", T: "ab5@6 ~ f5@9", U: "eb5@6 ~ c5@9",
  V: "[~@3 db5@5 bb5 ~@3 a5@3 ab5@9 ab5@2 ~ ab5 ab5@2 ~ ab5]/2", W: "~@3 f4 bb4 ~@3 d5@6 ~ bb4",
  X: "eb5@4 c5@2 ~ e5 ~@3 g5@5", Y: "[~@3 f5!2 ~@3 f5@2 ~ f5 ~@3 bb5@5 f5@2 ~ eb5 ~@3 ab5@5]/2", Z: "f5 ~@10 db6@5",
  AA: "bb5 ~@10 ab5@5", AB: "[e5 ~@3 f5 ~@3 db5@2 ~ d5 ~@3 eb5@5 f5@3 d5@9]/2",
  AC: "[e5 ~@3 f5 ~@3 a4@2 ~ bb4 ~@3 eb5@5 f5@3 d5@9]/2", AD: "ab5@15 ~", AE: "[~@3 ab5@5 f5 ~@3 ab5@3 bb5@33]/3",
  AF: "~@3 g5@5 g5 ~@7", AG: "~@4 c6@11 ~", AH: "[~@7 c6@25]/2",
})).s("gm_trumpet").gain(0.59).pan(0.6)

// other · trumpet · "Trumpet 2"
const trumpet_2 = note(`<
// … 227 more lines