Strudelify

Groovin' Hard

Buddy Rich

KeyF minorTempo135 bpm
0:00/0:00
// Groovin' Hard — Rich , Buddy
// 135 bpm, 4/4, key F minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 196 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(135/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 C I E J A K L M A K N K A O P Q R S N T U V W X C J N J C O Y C A O A Z C Z AA AB AC AD AE AF N P N
  X C AG@2 N AH Y C Y AH X@2 AI AJ AK AL C AM AN AO AG AP Y AH Y AH AG Y AL C X AH P N X AG AL C X AP AQ N X@2 N R AJ AR
  AS AM AN AT X E Z C AU A J AV AW AX AY AZ BA ~@2 AH AG C BB N AG BC BD AP X N Y AH L AL BE S@2 AR BE AJ BF BG P C P C
  AQ BH BI BJ ~ E J N K A K P C AP AG AH Y AH Y BH BK R BL AL BM U BN BO Y N AG BP BQ N Z BR@2 BS BT AC AD BU BV BW BX ~
>`.pickRestart({
  A: "f2@6 g2@6 ab2@5 ~ d2@4 ~@2", B: "db2@3 ~@2 c2@6 ~ c2@2 d3 ~ eb3 ~ [e3,bb3]@4 ~@2",
  C: "~@6 ab2@4 f1 ~ c3@5 ~ f3@4 ~@2, f2@5 ~@7", D: "db2@3 ~@2 c2@6 ~ c2@5 ~ c2@4 ~@2", E: "f2@6 eb2@6 d2@6 d2@5 ~",
  F: "db2@3 ~@2 c2@6 ~ c2@6 g2@4 c2 ~", G: "db2@6 f2@4 db2 ~ gb2@5 ~ g2@5 ~",
  H: "ab2@5 db2 c3@5 db2 db3@2 ~@2 ab2 ~@2 db2@3 ~@2", I: "db2@6 ab1@4 db2 ~ c2@2 d3 ~ eb3 ~ [e3,bb3]@4 ~@2",
  J: "db2@6 ab1@4 db2 ~ c2@6 g2@4 c2 ~", K: "db2@6 ab1@4 db2 ~ c2@5 ~ c2@4 ~@2",
  L: "g2@5 ~ g2@4 ~@2 c2@2 d3 ~ eb3 ~ [e3,bb3]@4 ~@2", M: "f2@6 c2@4 f2 ~ c2@2 d3 ~ eb3 ~ [e3,bb3]@4 ~@2",
  N: "f2@4 f1 ~ ab2@6 bb2@5 ~ f2@3 ~@3", O: "db2@5 ~ db2@4 ~@2 c2@5 ~ c2@4 ~@2", P: "g2@5 ~ g2@4 ~@2 c2@5 ~ c2@4 ~@2",
  Q: "f2@5 ~ f2@4 ~@2 f2@6 c2@4 f2 ~", R: "bb1@6 ab1@6 g1@6 b1@5 ~", S: "~@6 db2@4 bb0 ~ f2@5 ~ bb2@4 ~@2, bb1@5 ~@7",
  T: "f2@6 eb2@6 d2@6 b1@5 ~", U: "bb1@6 ab1@6 g1@6 bb1@5 ~", V: "~@6 c2@4 a0 ~ e2@5 ~ a2@4 ~@2, a1@5 ~@7",
  W: "ab2@4 ab1 ~ b2@6 db3@5 ~ ab2@3 ~@3", X: "g2@6 d2@4 g2 ~ c2@6 g2@4 c2 ~", Y: "g2@5 ~ g2@4 ~@2 c2@6 g2@4 c2 ~",
  Z: "db2@5 ~ db2@4 ~@2 c2@2 d3 ~ eb3 ~ [e3,bb3]@4 ~@2", AA: "c2@6 g2@4 c2 ~ db2@5 ~ db2@4 ~@2",
  AB: "db2@6 eb2@6 f2@5 ~ db2@4 ~@2", AC: "e3@4 ~ c1 eb3@5 ~@2 d3@5 db3@5 ~",
  AD: "c3@2 g2 ~ e2@2 d2@6 c2@5 ~@2 c2@3 ~@2", AE: "c2@4 c1 ~ e2@5 ~ f2@5 ~ gb2@5 ~",
  AF: "g2@3 ~ d2 ~ b1@6 ~ c2@5 gb2@4 ~@2", AG: "g2@6 d2@4 g2 ~ c2@5 ~ c2@4 ~@2", AH: "f2@6 eb2@6 d2@6 ab2@5 ~",
  AI: "f2@6 g2@6 ab2@5 ~ b1@4 ~@2", AJ: "bb1@4 bb0 ~ db2@6 eb2@5 ~ bb1@3 ~@3", AK: "bb1@6 ab1@6 g1@6 gb2@5 ~",
  AL: "f2@6 g2@6 ab2@5 ~ gb2@4 ~@2", AM: "bb1@5 ~ bb1@4 ~@2 eb2@6 bb1@4 eb2 ~",
  AN: "a1@5 ~ a1@4 ~@2 d2@2 e3 ~ f3 ~ [gb3,c4]@4 ~@2", AO: "ab2@6 eb2@4 ab2 ~ db2@2 eb3 ~ e3 ~ [f3,b3]@4 ~@2",
  AP: "f2@6 g2@6 ab2@5 ~ ab2@4 ~@2", AQ: "g2@6 d2@4 g2 ~ c2@2 d3 ~ eb3 ~ [e3,bb3]@4 ~@2", AR: "f2@6 eb2@6 d2@6 gb2@5 ~",
  AS: "f2@6 c2@4 f2 ~ f2@5 ~ f2@4 ~@2", AT: "ab2@6 eb2@4 ab2 ~ db2@5 ~ db2@4 ~@2",
  AU: "db2@5 ~ db2@4 ~@2 c2@6 g2@4 c2 ~", AV: "c2@4 c1 ~ ab2@5 ~ bb2@5 ~ b2@5 ~",
  AW: "c3@3 ~ g2 ~ e2@6 ~ c2@5 db2@4 ~@2", AX: "c2@4 c1 ~ d2@6 e2@5 ~ f2@4 c1 ~", AY: "g2@6 a2@5 c1 b2@5 c1 c3@3 ~@3",
  AZ: "c2@5 ~ c2@4 ~@2 c2@3 ~ c2@5 ~@2 c1", BA: "c2@6 g2@4 c2 ~ c2@3 ~ f2@5 ~@3",
  BB: "f2@5 ~ f2@4 ~@2 c2@2 d3 ~ eb3 ~ [e3,bb3]@4 ~@2", BC: "c2@3 ~@2 c1 c2@3 ~@2 c1 c2@2 d3 ~ eb3 ~ [e3,bb3]@4 ~@2",
  BD: "~@6 e2@4 c1 ~ g2@5 ~ c3@4 ~@2, c2@5 ~@7", BE: "~@6 a2@4 f1 ~ c3@5 ~ f3@4 ~@2, f2@5 ~@7",
  BF: "a1@4 a0 ~ c2@6 d2@5 ~ a1@3 ~@3", BG: "ab2@6 bb2@6 b2@5 ~ ab2@4 ~@2", BH: "f2@6 eb2@6 d2@6 db2@5 ~",
  BI: "c2@4 c1 ~ e2@6 f2@5 ~ c2@3 ~@3", BJ: "f2@5 ~ f2@4 ~@2 f2@3 ~ c2@5 ~@3", BK: "c2@6 g2@4 c2 ~ f2@5 ~ f2@4 ~@2",
  BL: "bb1@6 c2@6 db2@5 ~ gb2@4 ~@2", BM: "f2@6 c2@4 f2 ~ f2@3 ~@2 f1 f2@5 ~", BN: "a1@6 g1@6 f1@6 a2@5 ~",
  BO: "~@6 b2@4 ab1 ~ eb3@5 ~ ab3@4 ~@2, ab2@5 ~@7", BP: "f2@6 c2@4 f2 ~ db2@2 eb3 ~ e3 ~ [f3,db4]@4 ~@2",
  BQ: "c2@6 d2@6 e2@5 ~ gb2@4 ~@2", BR: "~@6 ab2@4 c1 ~ c3@5 ~ c3@4 ~@2, c2@5 ~@7", BS: "c3@5 ~ g2@5 c2 a2@5 c2 e2@5 ~",
  BT: "g2@3 ~ d2 ~ b1@5 ~ c2@4 ~ g1 c2@5 ~", BU: "c2@6 c2@6 a1@6 db2@5 ~", BV: "c2@5 ~ c2@4 ~@2 c2@3 ~@2 c2@6 ~",
  BW: "c2@5 ~ c2@3 ~@2 c1 c2@5 ~ c2@4 ~@2", BX: "c2@6 d2@6 e2@5 ~ db2@4 ~@2",
})).s("gm_acoustic_bass").gain(0.36).pan(0.4)

// chords · piano
const piano = note(`<
  ~ A B A C D E F G H I J K L M N O P Q R S L T U V W X Y Z AA AB AC AD AE AF AG AH R AI AJ AK R AL AM AN AO AP AQ AR AS
  AT AU AV AW AX AW AY AW AZ BA BB BC BD AG BE AG BF BG AW BH BI BJ BK BL BM BN BO BB BP AW BQ AK BR BS BT BB BQ BU BV
  AW BW BX BU AG BY AK BZ BC CA CB AE CC CD AE CE BL CF CG CH H CI CJ CK AO CL CM@2 CN CO CP CQ ~@2 BU CR AK CS AM CT CU
  CV AK CW AG CX BU BX AW CY BI CZ Y DA BH DB DC BA AK DD AE DE AE DF DG ~ CJ DH CJ DI DJ DK DL AE H DM A DN H CX H DO
  DP DQ AG DR DS DT DU DV D DW DX DY AO DZ AO H EA EB CN CO EC ED EE EF EG
>`.pickRestart({
  A: "~ ab3@15 ~@4 eb4@2 f4 ~, [f4,c5]@9 ab3@2 ~, ~ eb4@18 ~@5, ~ eb3@13 ~@2 eb3@6 ~@2", // F5
  B: "[f3,ab3,b3,db4]@3 ~@6 [e3,bb3,c4,g4]@2 ~@2 [bb3,e4,g4,e5,c6]@4 ~@7, ~@3 g5 ~@2", // Db7 C7
  C: "ab4@2 ~@3 [e3,bb3,d4,a4]@6 ~@2 [bb3,e4,ab4,e5,db6]@4 ~@7, ~@3 ab5 ~@2", // Dsus2 Bbm7b5
  D: "~@12 [eb3,f3,ab3,c4]@3 ~@2 [eb3,f3,ab3,c4]@2 ~@5", E: "~@5 [e3,bb3,d4,a4]@6 ~ [e3,bb3,e4,g4,c5]@11 ~",
  F: "~@13 [f3,b3,f4,bb4]@3 ~@8, ~@4 db5 ~@3", // Bb
  G: "[f3,b3,f4,bb4,db5]@7 ~@4 [f3,b3,f4]@6 db3 [f3,b3,f4,ab4,db5]@3 ~@3, ~@5 [bb4,eb5]@3 ~@4", // Bbm Fdim Db7 Eb5
  H: "~@4 [eb3,ab3,c4,f4] ~@7 [eb3,ab3,c4,f4]@11 ~", // Fm7
  I: "~ [b3,f4,ab4,f5,eb6]@4 ~@8 [bb3,db5]@3 bb3@2 ~@2 ab4 ~ db5 ~, ab5@4 ~@8 [e4,ab4]@4 ~@3 e4@2 ~@3", // Fm7b5 Bbm E
  J: "~@5 eb4 f4@4 ~ c5@5 ~ f2 [ab3,eb4,f4,c5]@3 ~@3, ab3@2 ~", // Fm7
  K: "~@4 [f3,b3,eb4,bb4]@2 ~@7 [bb3,e4,ab4,e5,db6]@4 ~@7, ~@3 ab5 ~@2", // Ebsus2 Bbm7b5
  L: "~@12 [eb3,ab3,c4,f4]@3 ~@2 [eb3,ab3,c4,f4]@2 ~@5", // Fm7
  M: "~@4 [f3,bb3,b3,eb4]@2 ~@7 [bb3,e4,a4,e5,d6]@4 ~@7, ~@3 a5 ~@2", // Ebsus2 Bbmaj7
  N: "[f3,bb3,f4,g4,d5]@11 ~@2 [bb3,c5]@3 bb3@2 ~@2 ab4 ~ c5 ~, ~@12 [e4,ab4]@4 ~@3 e4@2 ~@3", // Gm7 Bbsus2 E
  O: "~@2 [eb3,f3,ab3,c4] ~@5 [e3,g3,bb3,d4] ~@3", P: "~@12 [eb3,ab3,c4,g4]@3 ~@2 [eb3,ab3,c4,g4]@2 ~@5",
  Q: "[f3,b3,f4,ab4,db5]@11 ~@2 [bb3,e4,ab4,e5,db6]@4 ~@7, ~@3 ab5 ~@2", // Db7 Bbm7b5
  R: "~@4 [eb3,ab3,c4,g4] ~@7 [eb3,ab3,c4,g4]@11 ~", S: "~ [b3,f4,ab4,f5,db6]@4 ~@11 [e3,bb3,eb4,g4]@2 ~@6, ab5 ~@5",
  T: "~@4 [f3,ab3,b3,db4]@2 ~@6 [e3,bb3,e4,a4,d5]@11 ~", U: "~@2 [f3,bb3,d4,a4] ~@5 [e3,ab3,bb3,db4] ~@3",
  V: "[eb3,ab3,eb4,f4,c5]@11 ~@2 f3@3 [eb3,g3,a3,b3,d4]@2 ~@6", W: "~@4 [ab3,bb3,db4,f4] ~@7 [ab3,bb3,db4,f4]@11 ~",
  X: "~@5 db4 f4@4 ~ bb4@5 ~ bb2 [ab3,db4,f4,bb4]@3 ~@3, ab3@2 ~", Y: "~@4 [ab3,f4,c5] ~@7 [ab3,f4,c5]@11 ~",
  Z: "~@12 [ab3,f4,c5]@3 ~@2 [ab3,f4,c5]@2 ~@5", AA: "~@12 [ab3,db4,f4,bb4]@3 ~@2 [ab3,db4,f4,bb4]@2 ~@5",
  AB: "~@5 c4 e4@4 ~ a4@5 ~ a2 [g3,c4,e4,a4]@3 ~@3, g3@2 ~", AC: "~@4 [gb3,b3,eb4,ab4] ~@7 [gb3,b3,eb4,ab4]@11 ~",
  AD: "~@4 [f3,bb3,d4,a4]@2 ~@6 [e3,bb3,e4,g4,c5]@11 ~", AE: "~@12 [ab3,c4,f4]@3 ~@2 [ab3,c4,f4]@2 ~@5",
  AF: "~@4 [f3,b3,eb4,ab4]@2 ~@7 c3@3 [e3,bb3,db4,ab4]@2 ~@6", // Fm7b5 Bbm7b5
  AG: "~ c4@15 ~@4 f4@2 ab4 ~, [ab4,f5]@9 c4@2 ~, ~ f4@18 ~@5, ~ f3@13 ~@2 f3@6 ~@2", // Db
  AH: "[f3,b3,f4,bb4,eb5]@11 ~@5 [e3,bb3,db4,ab4]@2 ~@6", // Ebsus2 Bbm7b5
  AI: "~ [b3,f4,ab4,f5,eb6]@4 ~@7 [e3,bb3,e4,a4,c5]@11 ~, ab5 ~@5", // Fm7b5 Am
  AJ: "[f3,bb3,f4,g4,d5]@11 ~@2 [bb3,e4,g4,e5,db6]@4 ~@7, ~@3 g5 ~@2", AK: "~@12 [f3,ab3,c4]@3 ~@2 [f3,ab3,c4]@2 ~@5",
  AL: "~@2 [f3,bb3,b3,eb4] ~@5 [e3,bb3,d4,g4] ~@3", AM: "~@4 [eb3,f3,ab3,c4] ~@7 [eb3,f3,ab3,c4]@11 ~",
  AN: "~ db3@3 [f3,b3,eb4,bb4]@2 ~@7 [bb3,e4,ab4,e5,db6]@4 ~@7, ~@3 ab5 ~@2", // Ebsus2 Bbm7b5
  AO: "~@12 [eb3,g3,ab3,c4]@3 ~@2 [eb3,g3,ab3,c4]@2 ~@5", AP: "~ db3@3 [f3,ab3,b3,db4]@2 ~@10 [e3,bb3,d4,a4]@2 ~@6",
  AQ: "~@4 [e3,bb3,d4,a4]@2 ~@7 [b3,f4,ab4,f5,db6]@4 ~@7, ~@3 ab5 ~@2", // Dsus2 Db7
  AR: "~@4 [f3,b3,eb4,bb4] ~@7 [f3,b3,eb4,bb4]@11 ~", AS: "[e3,bb3,d4,a4]@23 ~",
  AT: "[e3,bb3,d4,a4]@3 ~@2 [e3,bb3,d4,a4]@2 ~@3 [e3,bb3,d4,a4]@5 ~ c2 ~ [e3,bb3,d4,a4]@3 ~@3", // Dsus2
  AU: "~@13 [e3,bb3,e4,a4]@3 ~@8, ~@4 d5 ~@3", // A
  AV: "[e3,bb3,e4,g4,d5]@7 ~@4 [e3,bb3,e4]@6 c3 [e3,bb3,e4,g4,d5]@3 ~@3, ~@5 [a4,c5]@3 ~@4", // Em7b5 Edim Em7b5 Am
  AW: "c4@15 ~@5 f4@2 ab4 ~, [f4,ab4,f5]@18 c4@5 ~, f3@12 ~@4 f3@7 ~", // Fm
  AX: "~@4 [f3,a3,bb3,d4]@2 ~@7 c3@3 [e3,bb3,db4,ab4]@2 ~@6", AY: "~ g2@3 [f3,a3,bb3,d4]@2 ~@10 [e3,bb3,db4,ab4]@2 ~@6",
  AZ: "~ g2@3 [f3,bb3,d4,g4]@2 ~@6 [e3,bb3,e4,a4,c5]@11 ~", BA: "[f3,bb3,f4,g4,d5]@11 ~@2 c3@3 [e3,bb3,db4,ab4]@2 ~@6",
  BB: "~@4 [f3,ab3,c4] ~@7 [f3,ab3,c4]@11 ~", BC: "~@5 f4 ab4@4 ~ c5@5 ~ f2 [ab3,f4,ab4,c5]@3 ~@3, ab3@2 ~",
  BD: "[f3,bb3,f4,a4,d5]@11 ~@2 c3@3 [e3,bb3,db4,ab4]@2 ~@6", // Bbmaj7 Bbm7b5
  BE: "~ [bb3,f4,g4,f5,d6]@4 ~@8 [bb3,e4,ab4,e5,db6]@4 ~@7, g5 ~@2 ab5 ~@2", // Gm7 Bbm7b5
  BF: "~@4 [f3,bb3,d4,g4]@2 ~@7 c3@3 [e3,g3,bb3,d4]@2 ~@6", BG: "[f3,bb3,f4,a4,d5]@11 ~ [e3,bb3,e4,ab4,c5]@11 ~",
  BH: "~@12 [ab3,c4,db4,f4]@3 ~@2 [ab3,c4,db4,f4]@2 ~@5", BI: "~@12 [ab3,db4,f4,c5]@3 ~@2 [ab3,db4,f4,c5]@2 ~@5",
  BJ: "~@4 [ab3,eb4,f4,c5] ~@7 [ab3,eb4,f4,c5]@11 ~", // Fm7
  BK: "ab3@15 ~@5 eb4@2 f4 ~, [eb4,f4,c5]@18 ab3@5 ~, eb3@12 ~@4 eb3@7 ~", // F7
  BL: "~@4 [ab3,db4,f4,bb4]@2 ~@6 [db3,g3,db4,eb4,c5]@11 ~", BM: "[c3,g3,c4,e4,a4]@11 ~ [gb3,c4,gb4,b4,e5]@11 ~",
  BN: "~@4 [gb3,bb3,b3,eb4]@2 ~@7 db3@3 [f3,b3,eb4,bb4]@2 ~@6", // Bmaj7 Ebsus2
  BO: "~ [bb3,f4,a4,f5,d6]@4 ~@8 [bb3,e4,g4,e5,db6]@4 ~@7, a5 ~@2 g5 ~@2", // Bbmaj7 Bbdim
  BP: "~ [bb3,d5]@3 bb3@2 ~@2 g4 ~ d5 ~@2 c3@3 [e3,bb3,db4,ab4]@2 ~@6, [f4,g4]@4 ~@3 f4@2 ~@15", // Bb Bbm7b5 Fsus2
  BQ: "~@2 [f3,bb3,d4,g4] ~@5 [e3,bb3,db4,ab4] ~@3", BR: "[f3,bb3,f4,a4,d5]@11 ~@5 [e3,a3,bb3,d4]@2 ~@6",
  BS: "~ [bb3,f4,a4,f5,d6]@4 ~@8 c3@3 [e3,ab3,bb3,db4]@2 ~@6, a5 ~@5", // Bbmaj7 Bbm7b5
  BT: "~@5 eb4 g4@4 ~ c5@5 ~ f2 [ab3,eb4,g4,c5]@3 ~@3, ab3@2 ~", BU: "~@4 [ab3,c4,f4] ~@7 [ab3,c4,f4]@11 ~",
  BV: "~@4 [bb3,d4,g4]@2 ~@7 c3@3 [e3,bb3,db4,ab4]@2 ~@6", // Gm Bbm7b5
  BW: "~@4 [f3,bb3,d4,g4]@2 ~@7 [bb3,e4,a4,e5,d6]@4 ~@7, ~@3 a5 ~@2", // Gm7 Bbmaj7
  BX: "[f3,bb3,f4,a4,d5]@11 ~@2 [bb3,db5]@3 bb3@2 ~@2 ab4 ~ db5 ~, ~@12 [e4,ab4]@4 ~@3 e4@2 ~@3", // Bbmaj7 Bbm E
  BY: "~ g2@3 [f3,bb3,d4,g4]@2 ~@7 [bb3,c5]@3 bb3@2 ~@2 ab4 ~ c5 ~, ~@12 [e4,ab4]@4 ~@3 e4@2 ~@3", // Gm7 Bbsus2 E
  BZ: "[f3,bb3,f4,g4,d5]@11 ~@5 [e3,ab3,bb3,db4]@2 ~@6", CA: "~@4 [f3,bb3,d4,a4]@2 ~@7 c3@3 [e3,bb3,d4,a4]@2 ~@6",
  CB: "~@4 [f3,bb3,d4,a4]@2 ~@7 [bb3,e4,ab4,e5,c6]@4 ~@7, ~@3 ab5 ~@2", // Bbmaj7 Caug
  CC: "~ bb3@15 ~@4 db4@2 f4 ~, [f4,db5]@9 bb3@2 ~, ~ db4@18 ~@5, ~ db3@13 ~@2 db3@6 ~@2", // Db
  CD: "~@12 [db4,f4,bb4]@3 ~@2 [db4,f4,bb4]@2 ~@5", CE: "~@2 [ab3,c4,f4] ~@5 [a3,eb4,f4,c5] ~@3",
  CF: "~@2 [g3,c4,e4,a4] ~@5 [gb3,c4,e4,b4] ~@3", CG: "[gb3,b3,gb4,ab4,eb5]@11 ~@2 db3@3 [f3,ab3,b3,db4]@2 ~@6",
  CH: "~ g2@3 [f3,a3,bb3,d4]@2 ~@6 [e3,bb3,e4,g4,db5]@11 ~", // Bbmaj7 Edim
  CI: "~@4 [f3,b3,db4,ab4]@2 ~@7 [bb3,e4,g4,e5,db6]@4 ~@7, ~@3 g5 ~@2", // Db7 Bbdim
  CJ: "~ ab3@15 ~@4 eb4@2 g4 ~, [g4,c5]@9 ab3@2 ~, ~ eb4@18 ~@5, ~ eb3@13 ~@2 eb3@6 ~@2", // C5
  CK: "~@4 [f3,bb3,b3,eb4]@2 ~@6 [e3,bb3,e4,ab4,db5]@11 ~", // Ebsus2 Bbm7b5
  CL: "~ db3@3 [f3,b3,eb4,bb4]@2 ~@7 c3@3 [e3,ab3,bb3,db4]@2 ~@6", // Ebsus2 Bbm7b5
  CM: "[~@12 [ab3,c4,f4]@3 ~@2 [ab3,c4,f4]@2 ~@3 [ab3,c4,f4]@12 ~@2 [ab3,c4,f4]@4 ~ c3 [ab3,c4,f4]@2 ~@4]/2", // Fm
  CN: "[e3,c4,e4,g4,e5]@3 ~@2 c3 [e4,g4,e5]@10 ~@2 e4@2 g4@2 e5 ~, ~@6 e3@17 ~, ~@3 c4@4 ~ c4@3 ~", // C Em
  CO: "[e3,c4,e4,e5]@4 [e3,c4,e4,g4] ~@5 [c4,e4,e5]@6 c3 ~ [e3,c4,e4,g4]@3 ~@3, ~@10 e3@5 ~@9", // C
  CP: "~ [g3,c5]@3 g3@2 ~@2 g4 ~ c5 ~@6 [e3,a3,bb3,d4]@6 ~, [e4,g4]@4 ~@3 e4@2 ~@15", // C5 Dsus2 Em
  CQ: "~ [bb3,e4,a4,e5,d6]@4 ~@7 [e3,ab3,bb3,db4]@3 ~@2 [ab3,c4,f4]@6 ~, a5 ~@5", // Bbmaj7 Bbm7b5 Fm
  CR: "~ [bb3,f4,a4,f5,d6]@4 ~@8 [bb3,e4,g4,e5,c6]@4 ~@7, a5 ~@2 g5 ~@2", // Bbmaj7 C7
  CS: "~ [ab3,f4,ab4,f5,c6]@4 ~@8 [bb3,e4,ab4,e5,db6]@4 ~@7, ab5 ~@2 ab5 ~@2", // Fm Bbm7b5
  CT: "[f3,bb3,f4,g4,d5]@11 ~@2 [bb3,e4,g4,e5,c6]@4 ~@7, ~@3 g5 ~@2", // Gm7 C7
  CU: "~@3 [e3,bb3,d4,a4]@2 ~@4 [e3,bb3,d4,a4]@2 ~ [e3,bb3,e4,g4,d5]@11 ~", // Dsus2 Em7b5
  CV: "~ bb3@15 ~@4 e4@2 ab4 ~, [ab4,c5]@9 bb3@2 ~, ~ e4@18 ~@5, ~ e3@13 ~@2 e3@6 ~@2", // Ab
  CW: "~@4 [f3,bb3,d4,a4]@2 ~@7 c3@3 [e3,bb3,c4,g4]@2 ~@6", CX: "[f3,bb3,f4,a4,d5]@11 ~@5 [e3,ab3,bb3,db4]@2 ~@6",
  CY: "~@5 eb4 g4@4 ~ c5@5 ~ f2 [a3,eb4,g4,c5]@3 ~@3, a3@2 ~", CZ: "~@4 [ab3,db4,f4,bb4] ~@7 [ab3,db4,f4,bb4]@11 ~",
  DA: "~@4 [a3,eb4,f4,c5] ~@7 [a3,eb4,f4,c5]@11 ~", DB: "~@4 [g3,a3,c4,e4] ~@7 [g3,a3,c4,e4]@11 ~",
  DC: "b3@15 ~@5 gb4@2 bb4 ~, [gb4,bb4,eb5]@18 b3@5 ~, gb3@12 ~@4 gb3@7 ~", // Ebm
  DD: "[f3,bb3,f4,a4,d5]@11 ~@2 [bb3,e4,ab4,e5,c6]@4 ~@7, ~@3 ab5 ~@2", // Bbmaj7 Caug
  DE: "~ g2@3 [f3,bb3,d4,g4]@2 ~@10 [e3,bb3,c4,g4]@2 ~@6", // Gm7 C7
  DF: "~@5 e4 ab4@4 ~ db5@5 ~ c3 [bb3,e4,ab4,db5]@3 ~@3, bb3@2 ~", // Bbm7b5
  DG: "[f3,c4,f4,ab4,f5]@11 ~ [ab3,c4,f4]@3 ~@2 [e3,bb3,d4,a4]@6 ~", // Fm Dsus2
  DH: "~@4 [f3,bb3,b3,eb4]@2 ~@7 [bb3,e4,g4,e5,c6]@4 ~@7, ~@3 g5 ~@2", // Ebsus2 C7
  DI: "~@4 [f3,b3,eb4,bb4]@2 ~@6 [e3,bb3,e4,ab4,c5]@11 ~", DJ: "~@4 [eb3,g3,ab3,c4] ~@7 [eb3,g3,ab3,c4]@11 ~",
  DK: "~ db3@3 [f3,b3,eb4,bb4]@2 ~@6 [e3,bb3,e4,g4,c5]@11 ~", DL: "~@2 [f3,bb3,d4,a4] ~@5 [e3,bb3,db4,ab4] ~@3",
  DM: "~ g2@3 [f3,bb3,d4,a4]@2 ~@6 [e3,bb3,e4,ab4,c5]@11 ~", // Bbmaj7 Eaug
  DN: "~ [bb3,d5]@3 bb3@2 ~@2 a4 ~ d5 ~ [e3,bb3,e4,g4,c5]@11 ~, [f4,a4]@4 ~@3 f4@2 ~@15", // Bb C7 F
  DO: "[eb3,bb3,eb4,g4,d5]@11 ~ [eb3,a3,eb4,f4,c5]@11 ~", DP: "~@12 [ab3,bb3,db4,f4]@3 ~@2 [ab3,bb3,db4,f4]@2 ~@5",
  DQ: "ab3@15 ~@5 db4@2 f4 ~, [db4,f4,bb4]@18 ab3@5 ~, db3@12 ~@4 db3@7 ~", // Bbm
  DR: "~ f3@3 [ab3,f4,c5]@2 ~@6 [ab3,f4,c5]@4 ~@5 [a3,d4,eb4,g4]@2 ~", // Fm Dsus4
  DS: "~ ab3@15 ~@4 db4@2 f4 ~, [f4,bb4]@9 ab3@2 ~, ~ db4@18 ~@5, ~ db3@13 ~@2 db3@6 ~@2", // Bb5
  DT: "~@4 [g3,c4,e4,a4] ~@7 [g3,c4,e4,a4]@11 ~", DU: "~@12 [gb3,b3,eb4,bb4]@3 ~@2 [gb3,b3,eb4,bb4]@2 ~@5",
  DV: "~ g2@3 [f3,g3,bb3,d4]@2 ~@10 [e3,bb3,db4,ab4]@2 ~@6", // Gm7 Bbm7b5
  DW: "~ [bb3,f4,a4,f5,d6]@4 ~@8 c3@3 [e3,bb3,db4,g4]@2 ~@6, a5 ~@5", // Bbmaj7 Edim
  DX: "[eb3,ab3,eb4,f4,c5]@11 ~@2 db3@3 [f3,db4,ab4]@2 ~@6", DY: "~@12 [e3,g3,bb3,d4]@3 ~@2 [e3,g3,bb3,d4]@2 ~@5",
  DZ: "~@2 [f3,bb3,d4,g4] ~@5 [e3,g3,bb3,db4] ~@3", EA: "[e3,c4,g4]@3 ~@3 [e3,c4,g4]@14 ~@3 [f3,db4,ab4]",
  EB: "~ [e3,c4,g4]@3 ~ [e3,c4,g4] ~@4 [e3,c4,g4]@9 ~@5", EC: "~@12 [e3,c4,g4]@3 ~@2 [e3,c4,g4]@2 ~@5",
  ED: "[e3,c4,e4,g4,e5]@11 ~ [e3,g3,c4]@3 ~@2 [e3,a3,bb3,d4]@6 ~", // C Dsus2
  EE: "[e3,bb3,d4,a4]@4 ~@2 [e3,g3,bb3,d4]@4 ~@3 c3@3 [e3,bb3,d4,a4]@2 ~@6", // Dsus2 Em7b5 Dsus2
  EF: "~@12 [e3,bb3,d4,a4]@3 ~@2 [e3,bb3,d4,a4]@2 ~@5", EG: "bb3 ~@7",
})).s("gm_piano").gain(0.39)

// other · alto sax
const alto_sax = note(`<
  A B C B D B E ~@18 F G ~ H@3 I J ~@8 K L M L M N ~ O@3 P@2 Q ~@67 R S@3 T U@2 V W X@2 Y Z AA AB@3 AC AD AE AF AG AH@2
  AI AJ@4 AK AL AM AN AO ~@5 AP@4 AQ@2 AR@2 AS AT AU@2 ~ AV@2 AW@2 AX@2 ~@10 AY@2 AZ@3 ~@2
>`.pickRestart({
  A: "~@6 f4 ~", B: "f4@2 f4 ~@6 eb4@2 ab3", C: "b3@4 b3@3 ~@11 f4@2 ~@4", D: "b3@2 b3 ~@6 f4 ~@2", E: "b3@2 b3 ~@9",
  F: "~@4 f4@8 db4@4 ~ f4@2 ~@3 db4@2", G: "f4@5 ~ f4@6 db4@4 f4@2 ~@6",
  H: "[~@22 f4@14 db4@4 ~ bb3@3 ~@2 e4@8 c4@4 ~ a3@13]/3", I: "~@4 eb4@2 ~@4 b3@2 ~@4 ab3@3 ~@3 ab3@2",
  J: "g3@2 ab3 bb3 c4 bb3@3 ~@4", K: "f4@2 f4 ~@2 ab4@7", L: "b3@2 b3 ~@2 g4@7", M: "f4@4 f4@2 ~@4 ab4@13 ~",
  N: "b3@2 b3 ~@2 g4@4 ~@3", O: "[~@8 ab4 ab4@2 g4@12 g4@13]/3", P: "[~@4 g4@2 g4@4 g4@6 g4@2 ~ g4@3 g4@25 ~]/2",
  Q: "ab4@2 ab4 ~@9", R: "~@2 f4 e4 f4 e4 f4@2 d4 bb3@2 ab3",
  S: "[g3@4 a3@2 bb3@4 c4@2 db4@4 e4@2 g4@4 a4@11 a4 a4@2 f4@4 g4@2 a4@4 db4@6 eb4@2 f4@4 g4@2 ~@4 e4@2 ~@4 db4@2]/3",
  T: "d4@2 ~ eb4@2 ~ f4@2 ~ g4@2 ab4", U: "[~@19 bb4@2 e4@2 ~ ab4@4 ab4@14 ~@4 f4@2, ~@18 c5@2 ~@3 g4@2 ~@23]/2",
  V: "g4@4 gb4@13 ~@5 db4@2", W: "ab4 d5 g4 c5 f4 bb4 eb4 ab4 d4 g4 c4 f4",
  X: "[db4@4 e4@2 g4@4 bb4@6 bb4 ~ e4@4 eb4@24 c4@2, ~@17 g4@2 ~@29]/2", Y: "f4@2 gb4 g4@2 e4@5 bb3 g3",
  Z: "eb4@4 eb4@2 ~@16 ab4 ~", AA: "db5!2 bb4 c5@2 bb4@6 bb4",
  AB: "[ab4@3 bb4 ab4 f4@4 ~ g4@6 ab4@2 bb4@4 bb4@14 ~@4 db5@2 e5@4 f5@6 eb5 d5 c5@4 eb5@2 d5@4 ab4@2 g4 ~ g4 ~ f4@2, ~@67 ab4@2 ~@3]/3",
  AC: "g4@2 a4 eb4@2 c4 ~@2 a4 ~@2 gb4", AD: "ab4@9 f4 db4 bb3 ab3@4 bb3@2 db4@4 f4@2",
  AE: "ab4@3 ~ c5@2 bb4@4 ab4@2 ~@12", AF: "~@4 ab4@2 g4@2 ab4 g4 f4@2 ab4@4 f4@2 eb4@4 d4@2",
  AG: "eb4@4 gb4@2 a4@4 c5@7 a4@4 ~ bb4@2",
  AH: "[~@6 ab4@2 ~ ab4 g4@2 gb4@4 g4@2 ~@4 c5@8 a4@2 ab4@2 g4@2 f4@4 gb4@2 ~@6, ~@4 a4 ~@19]/2",
  AI: "~@2 f4 gb4@2 f4 gb4@2 b3 ab3@2 g3",
  AJ: "[~@8 a3 bb3 ~ c4 db4@2 eb4 e4@2 gb4 g4@2 a4 bb4 ~@2 c5@5 eb5@4 ~ c5@8 d5@4 ab4@8 c5@4 g4@8 bb4@4 ab4@5 a4 ab4 g4 f4@4 g4@2 ab4@4 eb4@2 ~@6, ~@23 b4@2 ~@4 db5 ~@66]/4",
  AK: "~@6 g4@4 eb4@3 ~@11",
  AL: "ab4 bb4 ab4 ~ f4@2 ~ db4@2 ~ bb3@2 ~ c4@2 ~ eb4@2 ~ g4@2 ~ c5@2, ~@3 g4@2 ~ eb4@2 ~ c4@2 ~ ab3@2 ~ db4@2 ~ f4@2 ~ ab4@2 ~",
  AM: "~ a4@2 ~ gb4@2 g4@2 ~@5 eb4@2 ~ c4@2 ~ a3@2 ~ db4@2, db5@2 ~ bb4@2 ~@10 e4@2 ~ db4@2 ~ bb3@2 ~",
  AN: "eb4 f4 eb4 ~ c4 d4@4 ~ eb4@2 f4@4 ab4@8",
  AO: "~@4 e5 [d5,eb5] ~ bb4@2 ~ g4@2 ~ e4@2 ~ c4@2 ~@6, ~@6 db5@2 ~ ab4@2 ~ f4@2 ~ db4@2 ~@7", // Ebmaj7
  AP: "[~@22 db4@11 ~ db4@12 eb4@14 ~@4 g3@2 bb3@4 c4@5 ~ c4@2 bb3@4 c4@14]/4",
  AQ: "[~@4 db4@2 f4@4 g4@5 ~ g4@2 e4@4 c4@5 ~ c4@2 bb3@4 c4@14]/2",
  AR: "[~@4 g4@3 ~@3 g4@3 ~@3 e4@3 ~@3 d4@5 ~ d4@2 c4@4 d4@14]/2",
  AS: "~@4 f4@2 ab4@4 bb4@8 ~ g4@2 ~ e4@2, ~@9 ab4 ~@2", AT: "eb4@2 c4 eb4@2 c4@7",
  AU: "[~@9 d4 db4 ~ c4@4 eb4@2 gb4@4 ab4@18 ab4@2 g4@4 ab4@2]/2", AV: "[~@2 ab4 eb4@2 c4 ab3@2 d4 bb3@2 c4@13]/2",
  AW: "[~@2 ab4@4 f4@2 db4 ~@2 g4@4 e4@2 c4 ~@6]/2", AX: "[~@4 gb4@8 eb4@4 b3@2 ~@4 bb3@11 ~ bb3@14]/2",
  AY: "[~@4 ab4@2 g4@4 d4@2 f4@3 ~ g4@2 ~@3 ab4@8 ~@2 ab4@2 ~ d4@2 f4@4 g4@2 ~@6, ~@30 g4@2 ~ g4@2 ~@13]/2",
  AZ: "[~@4 ab4@2 g4@4 d4@2 f4@4 g4@2 ~@3 db4@12 ~ e4@12 g4@19 ~@7]/3",
})).s("gm_alto_sax").gain(0.36).pan(0.4)

// … 503 more lines