Strudelify

'Round Midnight

Herman

KeyE♭ minorTempo80 bpm
0:00/0:00
// 'Round Midnight — Herman
// 80 bpm, 4/4, key D# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 81 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(80/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.

// chords · piano · "Piano - T"
const piano = note(`<
  ~@9 A@6 B@2 C D E F G H I@2 J K L M N O P Q@4 R S T U V ~@2 W X Y Z AA AB AC AD W X Y Z AA AB AC AE@8 AF AG@6 AH@3 ~@3
  AI@2
>`.pickRestart({
  A: "[eb3,eb4] [d3,d4]", // Eb D
  B: "[[eb3,eb4]@24 [d3,d4]@23 ~ eb3@24 [d3,d4]@12 [bb2,e3,ab3,b3,d4]@9 ~@3, ~@47 eb4@26 ~@23]/2", // Eb D E7
  C: "~@36 [c3,gb3,bb3,c4,eb4]@11 ~", D: "[f3,ab3,b3,eb4]@5 ~@3 [bb2,e3,ab3,b3,db4]@8",
  E: "[eb3,bb3,db4,gb4]@23 ~ [ab2,bb3,c4,gb4]@24", F: "[b2,gb3,a4] [e3,ab4] ~ [eb3,g4], d4, ~ [bb2,f3,ab4]",
  G: "[ab2,eb3,b3,gb4] [db3,f3,b3,eb4,ab4]", H: "[eb3,gb3,db4,f4,bb4]@17 ~@7 [c3,eb3,gb3,d4,bb4]@24",
  I: "[~@12 f4@12 ~@12 d3@10 ~@2 [eb3,bb3,d4,f4]@47 ~, g3@95 ~, [b2,gb3,a3,db4,gb4]@12 [bb2,eb3,ab3,b3,f4]@11 ~@25]/2", // Bb Gbm Fm7b5
  J: "[c3,gb3,bb3,eb4] [f2,a3,b3,eb4]", K: "[b3,db4,e4], [bb2,d3]@43 ~@5, f3@35 ~@13",
  L: "[c3,gb3,bb3,eb4]@24 [a3,b3,eb4]@11 ~@13, ~ f2", M: "[b3,db4,e4], [bb2,d3,f3]@7 ~@5",
  N: "[ab2,gb3,b3,eb4]@24 [f2,ab3,b3,eb4]@11 ~ [bb2,d3,ab3,b3,db4]@12", // Abm7 Fm7b5 Abdim
  O: "[eb3,gb3,bb3,db4,f4]@23 ~@13 [f2,a3]@11 ~, ~@24 [eb3,bb3,db4,gb4]@23 ~", // Ebm7 F Ebm7
  P: "[ab2,gb3,eb4]@16 [ab2,gb3,c4,eb4]@4 [ab2,gb3,c4,eb4]@4 [gb2,e3,a3,db4]@16 [gb2,e3,a3,db4]@4 [gb2,e3,a3,db4]@3 ~, bb3 ~", // Ab7 Gbm7
  Q: "[[f2,eb3,ab3,b3]@16 [f2,eb3,ab3,b3]@4 [f2,eb3,ab3,b3]@4 bb1@4 bb2@4 ab2@4 f2@4 d2@4 b1@3 ~@51 gb4@6 eb5@6 f5@6 bb5@26 ~@2 [b3,eb4]@23 ~ [e3,ab3]@24, ~@47 bb3@19 bb3@77 ~@49, ~@48 bb2@95 ~@24 [bb2,b3,db4]@24 ~, ~@53 eb3@19 gb3@7 eb4@6 f4@6 bb4@11 ~@90, ~@59 f3@43 ~@41 [f3,ab3]@24 ~@25]/4", // Fm7b5 B E Bbm Fm
  R: "[eb3,bb3,db4,gb4]@23 ~@2 [bb3,c4,gb4]@23, ~@24 ab2@23 ~", // Ebm7 Cm7b5
  S: "~ gb3@11 [e3,ab4]@11 ~@14 [eb3,g4]@10 ~, d4@47 ~, a4@12 ~@13 ab4@22 ~, ~ b2@17 ~@6 [bb2,f3]@22 ~@2", // E Eb Bb5
  T: "[ab2,eb3,b3,gb4]@23 ~ [db3,f3,b3,ab4]@23 ~, ~@23 eb4@23 ~@2", // Abm7 Db7
  U: "[eb3,gb3,db4,f4,bb4]@23 ~ [c3,gb3]@22 ~@2, ~@23 [eb4,bb4]@22 ~@3", // Ebm7 Cdim Eb5
  V: "~@12 b3@11 ~ [bb2,ab3,c4,db4,gb4]@22 ~@2, [b2,d4,gb4]@23 ~@25", W: "~@22 [eb3,bb3,db4,f4,ab4] ~@25, ~@11 g3 ~@12",
  X: "~@22 [f3,b3,eb4,f4,g4,bb4] ~@25", Y: "~@21 gb3 [db4,f4,ab4] ~@25, ~@21 eb3@2 ~@25, ~@11 bb3 ~@12",
  Z: "~@10 [d4,e4,ab4,a4] ~@23 [bb2,f3,bb3]@2 ~@12, ~@10 [b2,gb3,b3]@2 ~@22 [db4,eb4,ab4] ~@13", // Dsus2 Bb5 B5 Dbsus2
  AA: "~@22 [ab2,eb3,ab3,b3,db4,gb4] ~@25", AB: "~@5 [eb3,gb3,bb3] ~@18, ~@10 [db4,f4,ab4] ~@37",
  AC: "~@10 [g3,bb3,f4,a4,c5] ~@23 [db4,e4,ab4,c5] ~@13, ~@5 d4 ~@11 [ab3,a3] ~@6", // F Dbm Amaj7
  AD: "~@10 [a3,b3,eb4,g4,bb4] ~@23 [e3,ab3,b3,d4,f4,bb4]@14, ~@5 f3 ~@18", // Eb E7
  AE: "[~@10 [a3,b3,eb4,g4,bb4] ~@23 [e3,a3,d4,f4,bb4]@12 [eb3,g3,bb3,d4,f4,a4]@35 [c3,gb3,bb3,eb4]@23 ~ [f2,a3,b3,eb4]@24 [b3,db4,e4]@48 [c3,gb3,bb3,eb4]@24 [a3,b3,eb4]@11 ~@13 [b3,db4,e4]@48 [ab2,gb3,b3,eb4]@24 [f2,ab3,b3,eb4]@11 ~ [bb2,d3,ab3,b3,db4]@12 [eb3,gb3,bb3,db4,f4]@23 ~@13 [f2,a3]@11 ~ [ab2,gb3,bb3,eb4]@15, ~@10 f3@2 ~@117 [bb2,d3]@43 ~@29 f2@24 [bb2,d3,f3]@28 ~@131, ~@129 f3@35 ~@181 [eb3,bb3,db4,gb4]@23 ~@16]/8", // Eb Bbmaj7 Ebmaj7 Cm7b5 F7 Dbm7 Cm7b5 B7 …
  AF: "~ [ab2,gb3,c4,eb4]@4 [ab2,gb3,c4,eb4]@4 [gb2,e3,a3,db4]@16 [gb2,e3,a3,db4]@4 [gb2,e3,a3,db4]@3 ~ [f2,eb3,ab3,b3]@15", // Ab7 Gbm7 Fm7b5
  AG: "[~ [f2,eb3,ab3,b3]@4 [f2,eb3,ab3,b3]@4 bb1@4 bb2@4 ab2@4 f2@4 d2@4 b1@4 bb2 ~@49 gb4@6 eb5@6 ~ f5@5 bb5@26 ~@3 b3@23 [bb2,e3,ab3,b3,db4]@24 ~ [eb3,bb3,db4,gb4]@23 ~ [ab2,bb3,c4,gb4]@23 ~ gb3@12 [e3,ab4]@11 ~@13 [eb3,g4]@10 ~@2 b3@14, ~@33 bb3@18 bb3@77 ~@97 d4@47 ~@16, ~@34 bb2@23 gb3@7 eb4@6 f4@7 bb4@11 ~@137 a4@12 ~@51, ~@39 eb3@49 ~@138 b2@17 ~@7 [bb2,f3,ab4]@22 ~ [ab2,eb3,gb4]@15, ~@45 f3@43 ~@41 [f3,ab3,eb4]@24 ~@135]/6", // Fm7b5 Bbm7b5 Ebm7 Ab7 E Eb Bb7 Ab7 …
  AH: "[~@10 f3@22 ~ [eb3,gb3,db4,f4,bb4]@23 ~ [c3,gb3,eb4,bb4]@22 ~@14 b3@11 ~@2 [ab3,c4,db4,gb4]@22 ~@16, ~@9 [db3,b3,eb4,ab4]@23 ~@49 [b2,d4,gb4]@23 ~ bb2@22 ~@17]/3", // Ebm7 Cm7b5 Ab7 Abm Bm
  AI: "[~@42 [eb1,eb2]@29 ~@25]/2", // Eb
})).s("gm_piano").gain(0.26)

// other · electric guitar jazz · "Guitar"
const electric_guitar_jazz = note("<~@7 A B C D C@4 D E F ~@15 G H ~@40 I@6>".pickRestart({
  A: "~@2 eb5@10 ~ eb5@8 db5@19 bb4@4 db5@4", B: "eb5@11 ~ eb5@8 db5@20 bb4@3 ~ db5@4", C: "[eb4,eb5] [d4,d5]",
  D: "[eb4,eb5]@24 [d4,d5]@23 ~", E: "[eb4,eb5]@6 [d4,d5]@3 d5 ~@2", F: "bb3@6 eb4@5 ~ f4@5 bb4@6 ~ gb4@12 ~@12",
  G: "bb2@5 eb3@6 f3@7 bb3@6 gb3@7 eb4@6 f4@6 bb4@5", H: "~ gb4@3 eb5@3 f5@3 bb5@13 ~",
  I: "[~@56 ab3@12 ~@136 bb3@28 ~@2 [eb4,eb5]@27 ~@27, ~@32 bb3@36 f4@79 f5@42 gb5@7 f4@36 ~@56, ~@45 eb4@24 ~@9 bb4@31 f5@28 ab4@96 ~@55, ~@88 eb5@31 bb4@37 a5@77 ~@55, ~@99 ab4@29 eb5@36 d5@8 g4@9 c5@52 ~@55]/6", // Eb
})).s("gm_electric_guitar_jazz").gain(0.26)

// bass · acoustic bass · "Bas"
const bass = note(`<
  ~@7 A B C@7 D E F G H I J K L M N O P Q R S T U@3 V W X Y Z AA AB AC AD AE AF AG AH AI AJ AC AD AE AF AG AH AI AJ AK@8
  AL@3 AM@6 ~@3 AN@2
>`.pickRestart({
  A: "~@2 eb2@10 ~ eb2@8 db2@19 bb1@4 db2@4", B: "eb2@5 ~ eb2@4 db2@10 bb1@2 db2@2", C: "eb3 d3",
  D: "eb3@24 d3@12 bb2@11 ~", E: "~@3 c2", F: "f2@23 ~ bb2@24", G: "eb2@9 ~ eb2@2 ab1@12",
  H: "b1@11 ~ e2@12 bb1@12 eb2@12", I: "ab1@23 ~ db2@24", J: "eb2@20 db2@4 c2@11 ~ c2@12", K: "b1@23 ~ bb1@23 ~",
  L: "eb2@23 ~ eb2@10 ~@2 eb2@7 ~ eb2@4", M: "c2 f2", N: "bb1@23 ~ bb2@20 ab2@4", O: "gb2@11 ~ c2@11 ~ f2@18 ~@2 f2@4",
  P: "bb1 bb2", Q: "ab2@23 ~ f2@12 bb1@12", R: "eb2@2 c2 f2", S: "ab2 db2 gb2 b1",
  T: "f2@19 ~ f2@5 ~@3 bb2@4 ab2@4 f2@4 c2@4 b1@4, ~@27 bb1@4 ~@17", U: "[bb1@95 f2@18 ~ f2@6 bb1@12 bb2@12]/3",
  V: "eb2@23 ~ ab2@12 ab1@12", W: "b1 e2 bb1 eb2", X: "ab1@23 db2@24 ~", Y: "eb2@19 db2@6 c2@23",
  Z: "b1@12 b2@12 bb2@12 bb1@11 ~", AA: "eb2 bb2 eb2 eb3 db3 db2 bb1 db2",
  AB: "eb2@5 ~ eb2@6 bb2@6 eb2@6 db2@6 db3@6 bb2@6 db2@5 ~", AC: "eb2 eb3 db3 bb2 eb3 bb2 eb2 e2",
  AD: "f2 b2 f2 b2 f2 f3 e3 e2", AE: "eb2 bb2 eb2 eb3 eb2 eb3 db3 c3",
  AF: "b2@3 gb2@3 b1@3 b2@3 bb2@3 f2@3 bb1@3 bb2@2 a2", AG: "ab2 ab1 ab2 eb2 ab1 ab2 bb2 db3",
  AH: "eb3 eb2 eb3 bb2 eb3 db3 bb2 eb2", AI: "g2@6 d2@6 g2@6 g1@6 gb2@6 db3@6 gb2@6 gb1@5 ~",
  AJ: "f1@6 f2@6 b2@6 f2@6 e2@6 e3@6 b2@6 e2@5 ~",
  AK: "[eb2@10 ~ eb2@3 eb2@14 d2@4 ~ c2@24 f2@24 bb1@23 ~ bb2@20 ab2@4 gb2@11 ~ c2@11 ~ f2@18 ~@2 f2@4 bb1@24 bb2@24 ab2@23 ~ f2@12 bb1@12 eb2@24 c2@12 f2@12 ab2@12 db2@12 gb2@12 b1@12 f2@15]/8",
  AL: "[~@5 f2@5 ~@3 bb2@4 ab2@4 f2@4 c2@4 b1@4 bb1@95 f2@16, ~@3 bb1 ~@32]/3",
  AM: "[~@4 f2@5 bb1@12 ~ bb2@12 eb2@23 ab2@12 ab1@12 b1@12 ~ e2@11 bb1@12 eb2@12 ab1@24 db2@24 eb2@20 ~@5 c2@23 b1@12 ~ b2@11 bb2@12 bb1@11 ~@16, ~@197 db2@8 ~@83]/6",
  AN: "[~@42 eb2@29 ~@25]/2",
})).s("gm_acoustic_bass").gain(0.26)

// chords · alto sax
const alto_sax = note(`<
  ~ A@3 B@4 C D E F@2 G@4 ~@2 H I J K L M ~@3 N@2 O P Q R@2 ~ S T U V ~ W@2 X Y Z AA AB AC AD AE X Y Z AA AB AC AD AF@2
  ~@3 AG AH AI AJ AK AL@2 AM@4 ~@2 AN@2 AO@3
>`.pickRestart({
  A: "[~@29 f4@87 ~@28, ~@15 eb4@101 ~@28]/3",
  B: "[~@72 ab4@73 ~ eb5@11 [ab4,eb5]@7 [gb4,db5]@20 [eb4,bb4]@3 [gb4,db5]@4 ~, ~@15 f4@130 ab4@11 ~@36]/4", // Ab5 Gb5 Eb5 Gb5
  C: "[ab4,eb5]@11 ~ [ab4,eb5]@7 ~ db5@20 [eb4,bb4]@3 ~ db5@4, ~@19 gb4@20 ~@4 gb4@4 ~", // Ab5 Eb5
  D: "~@11 bb3@4 eb4@2 f4@3 bb4@4 gb4@18 bb3@3 ~@3", E: "~@6 eb4@12 d4@2 eb4@3 bb4@6 ab4@5 ~@14",
  F: "[~@12 eb4@3 gb4@3 bb4@3 db5@3 ~ c5@17 ~ eb4@3 a4@13 ab4@11 ~ ab4@12 g4@12 ~]/2",
  G: "[~@12 ab4@3 b4@2 eb5@3 gb5@3 f5@18 b4@5 ~ bb4@35 ~@6 eb4@3 f4@4 gb4@17 f4@3 gb4@3 f4@20 ~ eb4@4 d4@7 bb4@41 ~]/4",
  H: "[db4,f4]@23 ~ bb4@13 c5@11, ~@23 f4@25", I: "~ a4@11 ab4@12 ~ ab4@12 g4@11, db5 c5",
  J: "~@8 bb4@15 ~ ab4@24, db5@7 ~@41, ~ eb4@21 ~ eb4@25", K: "[db4,f4] [d4,gb4]", L: "[db4,ab4] [b3,bb4]",
  M: "~ bb4@47, d4@47 ~", N: "[~@28 db4@2 d4@3 e4@3 f4@3 g4@3 ab4@2 bb4@3 b4@18 ~ b4@5 bb4@20 ~ bb4@4]/2",
  O: "ab4@18 gb4@2 ab4@3 f4@20 ~ f4@4",
  P: "~ bb4@15 [bb4,eb5]@4 ~ bb4@3 [ab4,db5]@15 ~ [ab4,db5]@4 [ab4,db5]@4, eb5@15 ~@5 eb5@5 ~@23", // Eb5 Db5
  Q: "~ eb4@15 [eb4,b4]@4 [eb4,b4]@4 [d4,bb4]@24, b4@5 ~@11", R: "[~@49 gb4@47, ~@43 bb4@51 ~@2]/2",
  S: "~ eb4@11 f4@11 gb4@13 ab4@12", T: "a4 b4 db5 eb5", U: "b4 db5 eb5 f5", V: "gb5 ~@3",
  W: "~@5 [f4,bb4] ~@9 [eb4,ab4] ~@8", X: "~@22 [f4,bb4] ~@25", Y: "~@22 [eb4,bb4] ~@25", Z: "~@11 [f4,bb4] ~@12",
  AA: "~@5 [gb4,a4] ~@11 [f4,ab4] ~@6", AB: "~@22 [eb4,gb4] ~@25", AC: "~@5 [f4,bb4] ~@18",
  AD: "~@10 [a4,d5]@2 ~@22 [ab4,db5] ~@13", AE: "~@10 [g4,b4] ~@22 f4@2 ~ e4@4 d4@8",
  AF: "[~@10 [g4,b4] ~@23 f4@2 e4@6 e4@4 [d4,f4]@25 ~@25]/2", AG: "~@13 db4@2 d4@3 e4@3 f4@3 g4@3 ab4@2 bb4@3 ~ b4@15",
  AH: "~@3 b4@5 bb4@20 ~ bb4@4 ab4@15", AI: "~@4 gb4@2 ab4@3 f4@20 f4@4 ~ bb4@14, ~@11 eb5@5",
  AJ: "~@2 bb4@3 ~ bb4@3 ~ [ab4,db5]@15 [ab4,db5]@4 [ab4,db5]@4 ~ eb4@14, ~ eb5@3 ~ eb5@5 ~@23 b4@15", // Db5
  AK: "~ [eb4,b4]@4 [eb4,b4]@4 ~ d4@23 ~@15, ~@3 bb4@8 ~@5", AL: "[~@34 gb4@47 ~@15, ~@28 bb4@51 ~@17]/2",
  AM: "[~@34 eb4@11 f4@11 ~ gb4@12 ab4@12 a4@12 b4@12 db5@12 ~ eb5@12 b4@11 db5@12 eb5@12 f5@12 gb5@12 ~@3]/4",
  AN: "[~@61 f4@9 ~@26, ~@41 eb4@31 ~@24]/2", AO: "[~@45 gb4@73 ~@26, ~@2 f4@117 ~@25]/3",
})).s("gm_alto_sax").gain(0.26)

// chords · tenor sax
const tenor_sax = note(`<
  ~ A@3 B@4 C D E F@2 G@4 ~@2 H I J K L@2 ~@3 M@2 N O P Q@3 R S T@2 U@3 V W X Y Z AA AB AC V W X Y Z AA AB AD@2 ~@3 AE
  AF AG AH AI AJ@2 AK@4 AL@7
>`.pickRestart({
  A: "[~@11 ab3@47 ~@14, ~@2 bb3@27 ~@7]/3",
  B: "[~@82 gb3@64 [db4,f4]@10 ~ [db4,f4]@7 ~ eb4@19 [ab3,c4]@3 ~ eb4@4, ~@7 ab3@139 ~@18 b3@20 ~@3 b3@4 ~]/4", // Db Ab
  C: "[db4,f4]@11 ~ [db4,f4]@8 [b3,eb4]@20 [ab3,c4]@3 ~ eb4@4, ~@43 b3@4 ~", // Db B Ab
  D: "~@11 bb3@4 eb4@2 f4@3 bb4@4 gb4@18 bb3@3 ~@3", E: "~@6 eb4@12 d4@2 eb4@3 bb4@6 ab4@5 ~@14",
  F: "[~@12 eb4@3 gb4@3 bb4@3 db5@3 ~ c5@17 ~ eb4@3 a4@13 ab4@11 ~ ab4@12 g4@12 ~]/2",
  G: "[~@12 ab4@3 b4@2 eb5@3 gb5@3 f5@18 b4@5 ~ bb4@35 ~@6 eb4@3 f4@4 gb4@17 f4@3 gb4@3 f4@20 ~ eb4@4 d4@7 bb4@41 ~]/4",
  H: "[gb3,bb3]@23 [gb3,eb4]@25", I: "~ gb3@10 ~ e3@12 f3@12 ~ eb3@11, ~ d4@23 db4@24", J: "~ [gb3,b3]@22 [f3,b3]@25",
  K: "[gb3,bb3] [eb3,bb3]", L: "[[eb3,a3]@23 ~ ab3@23 ~ f3@48, ~@23 f3@24 g3@49]/2",
  M: "[~@28 db4@2 d4@3 e4@3 f4@3 g4@3 ab4@2 bb4@3 b4@18 ~ b4@5 bb4@20 ~ bb4@4]/2", N: "ab4@18 gb4@2 ab4@3 f4@20 ~ f4@4",
  O: "~ [b3,gb4]@15 ~ b3@3 ~ b3@3 ~ a3@14 ~ [a3,eb4]@3 ~ [a3,eb4]@4, ~@16 f4@3 ~ f4@4 e4@15 ~@9", // B5 Adim
  P: "~ b3@15 ~ [ab3,b3]@3 [ab3,b3]@3 ~ [ab3,b3]@24, ab3 ~@2", // Abm
  Q: "[~@36 f4@59 eb3@17 d3@3 eb3@4 ~ g3 ~@7 ab3@16, ~@30 eb4@65 ~@24 bb3@9 ~@16, ~@119 f3@2 ~@23]/3",
  R: "eb3@12 eb3@3 gb3@2 bb3@2 ~ db4@3 gb3@12 ab3@9 eb3@4, ~@12 f3@11 c4@21 ~@4",
  S: "~@4 gb3 d3 b3@6 ~@4 f3 db3 [g3,eb4]@6, a3@4 ab3@7 ~@5, ~@2 db4 ~", // Cm
  T: "[b3@11 ~ gb3@3 eb3@2 b2@2 ~ eb3@3 ~ eb4@11 ~@8 f3@4 ~ gb3@12 eb3@3 ~ d3@3 db3@4 ~ c3@7 bb3@12 eb3@2 f3@3, ~@12 db4@11 db3@21 ~@3 eb4@12 ~@37, ~@35 f4@13 ~@48]/2",
  U: "[gb3@19 f3@2 eb3@3 f3@18 eb3@3 d3@2 ~@11 db4@2 ~@18 b3@2 ~@26 db4@2 ~@18 b3@2 ~@16, ~@47 eb4@84 ~@13]/3",
  V: "~@22 db4 ~@25", W: "~@22 b3 ~@25", X: "~@11 db4 ~@12", Y: "~@5 db4 ~@11 c4 ~@6", Z: "~@22 bb3 ~@25",
  AA: "~@5 db4 ~@18", AB: "~@10 f4@2 ~@22 e4 ~@13", AC: "~@10 eb4 ~@23 f3@2 e3@4 d3@8",
  AD: "[~@10 eb4 ~@23 f3@2 e3@6 e3@4 g3@25 ~@25]/2", AE: "~@13 db4@2 d4@3 e4@3 f4@3 g4@3 ab4@2 bb4@3 ~ b4@15",
  AF: "~@3 b4@5 bb4@20 ~ bb4@4 ab4@15", AG: "~@4 gb4@2 ab4@3 f4@20 f4@4 ~ [b3,gb4]@14",
  AH: "~@3 b3@3 [b3,f4]@4 [a3,e4]@15 [a3,eb4]@3 ~ [a3,eb4]@4 ~ [ab3,b3]@14, ~@2 f4@3 ~@43", // Bdim A5 Adim Abm
  AI: "~@2 [ab3,b3]@3 ~ ab3@3 [ab3,b3]@25 ~@14, ~@5 b3@3 ~@40", AJ: "[~@21 f4@59 eb3@16, ~@15 eb4@65 ~@16]/2",
  AK: "[~ d3@4 eb3@3 ~ bb3@9 ab3@15 eb3@12 eb3@3 gb3@3 bb3@2 db4@4 gb3@11 ab3@9 eb3@4 ~@8 gb3@2 d3@2 b3@12 db4@9 ~ db3@2 [g3,eb4]@13 b3@11 gb3@3 eb3@2 b2@2 ~ eb3@3 ~ eb4@11 ~@9 f3@4 [gb3,eb4]@13 eb3@2, ~@8 f3@2 ~@35 f3@11 ~@58 f3@2 ~@36 db3@21 ~@19, ~@9 g3 ~@47 c4@21 ~@3 a3@12 ab3@21 ~@27 db4@12 ~@12 f4@13 ~@14]/4", // Cm Ebm
  AL: "[~ d3@4 db3@4 c3@8 bb3@11 eb3@2 f3@3 gb3@19 f3@2 eb3@3 f3@18 ~ eb3@2 d3@3 ~@65 ab3@20 ~@19 ab3@126 ~@25, ~@81 eb4@230 ~@25]/7",
})).s("gm_tenor_sax").gain(0.31)

// chords · trumpet
const trumpet = note(`<
  ~@4 A@4 ~@20 B ~ C D E ~ F@2 G H I@2 J@4 K L M N@5 K L M O@5 ~@2 P@2 ~ Q R S T@2 U V@3 W@7
>`.pickRestart({
  A: "[~@31 c4@41 ~@24, ~@25 bb4@122 ~@45, ~@34 gb4@111 ~@47, ~@53 d4@92 ~@47]/4",
  B: "~@11 e5@7 d5@2 db5@2 b4@2 bb4@24", C: "~@11 f4",
  D: "[gb4,ab4,bb4,eb5]@16 [f4,ab4,bb4,eb5]@3 ~ [f4,ab4,bb4,eb5]@4 [e4,gb4,ab4,db5]@16 [e4,gb4,ab4,db5]@4 [e4,gb4,ab4,db5]@4", // Ebm Fm7 Dbm
  E: "[eb4,f4,g4,b4]@15 ~ [eb4,f4,g4,b4]@3 ~ [eb4,f4,b4]@4 [d4,e4,g4,bb4]@24, ~@19 g4@4 ~@25", // Ebaug Fm7b5 Em7b5
  F: "[~@20 ab5@25 ~@2 eb4@17 d4@3 eb4@4 ~ g4 ~@7 ab4@16, ~@8 eb5@35 ~@28 bb4@9 ~@16, ~@13 f5@30 ~@28 f4@2 ~@23]/2",
  G: "~@12 eb4@3 gb4@2 bb4@2 ~ db5@3 c5@21 eb4@4", H: "a4@4 gb4 d4 ab4@10 f4 db4 g4@6",
  I: "[~ b4@11 g4@3 b4@2 eb5@2 ~ gb5@3 ~ eb5@12 ~@7 b4@4 ~ bb4@12 eb4@3 ~ d4@3 db4@4 ~ c4@7 bb4@12 eb4@2 f4@3, ~@12 db5@11 f5@13 f5@11 gb5@12 ~@37]/2",
  J: "[gb4@19 f4@2 eb4@3 f4@18 eb4@3 d4@2 ~ [gb4,eb5]@17 ~ [gb4,ab4,eb5]@4 [e4,gb4,db5]@14 [db4,eb4,bb4]@4 [gb4,db5]@2 ~@4 gb4@20 [gb4,ab4,eb5]@4 [e4,gb4,db5]@14 [db4,eb4,bb4]@4 [e4,gb4,db5]@2 ~@4 [gb4,ab4,eb5]@11 ~ ab4@30 [g4,a4,e5]@8, ~@47 ab4@18 ~@28 [ab4,eb5]@20 ~@40 [gb4,eb5]@30 ~@9, ~@48 eb4@36 ~@4 e4 ~@103]/4", // Ebm Ab7 Gb7 Eb7 Gb5 Ab7 Gb7 Eb7 …
  K: "~ bb4@9 [ab4,bb4,eb5]@26 [g4,a4,d5]@12, [ab4,eb5]@3 ~@13", // Absus2 Gsus2 Ab5
  L: "[gb4,ab4,eb5]@9 ~ [gb4,ab4,eb5]@29 ~ [f4,d5]@8, ~@13 eb4@3", // Ab7 Dm
  M: "[d4,e4,db5]@15 ~ [d4,e4,db5]@8 [db4,eb4,c5]@22 [c4,d4,b4]@2", // Dbm Cm G
  N: "[[b3,db4,bb4]@36 [db4,eb4,bb4]@4 [e4,gb4,db5]@2 ~@4 [ab4,eb5]@19 ~ [ab4,eb5]@23 ~ [gb4,ab4,eb5]@4 [bb4,c5,f5]@20 [bb4,c5,f5]@4 [a4,b4,e5]@19 ~ [a4,b4,e5]@4 [ab4,bb4,eb5]@19 ~ [ab4,bb4,eb5]@4 [ab4,bb4,d5]@24 [gb4,ab4,eb5]@11 ~ ab4@30 [g4,a4,e5]@8, ~@45 gb4@19 ~ gb4@23 ~@113 [gb4,eb5]@30 ~@9]/5", // Gb Eb7 Gb7 Ab5 Ab7 Bbsus2 Asus2 Absus2 …
  O: "[[b3,db4,bb4]@36 [db4,eb4,bb4]@4 [e4,gb4,db5]@2 ~@4 [ab4,eb5]@19 ~ [ab4,eb5]@23 ~ [gb4,ab4,eb5]@4 [bb4,c5,f5]@20 [bb4,c5,f5]@4 [a4,b4,e5]@19 ~ [a4,b4,e5]@4 [ab4,bb4,eb5]@19 ~ [ab4,bb4,eb5]@4 [ab4,bb4,d5]@20 [ab4,bb4,d5]@4 [g4,a4,d5]@24 ~@26, ~@45 gb4@19 ~ gb4@23 ~@152]/5", // Gb Eb7 Gb7 Ab5 Ab7 Bbsus2 Asus2 Absus2 …
  P: "[~@44 e5@7 ~@2 db5@2 b4@2 bb4@24 ~@15, ~@26 d5 ~@21]/2", Q: "~@29 f4@4 ~ bb4@14, ~@11 [gb4,ab4,eb5]@5",
  R: "~@2 ab4@3 [f4,ab4,bb4,eb5]@4 [e4,gb4,ab4,db5]@16 ~ [ab4,db5]@3 [e4,gb4,ab4,db5]@4 ~ [f4,g4]@14, ~ [f4,bb4,eb5]@3 ~@21 [e4,gb4]@4 ~@4 [eb4,b4]@15", // Fm7 Dbm Db5 Dbm Fsus2 Ebsus2 Esus2 Abm
  S: "~ [eb4,f4,g4,b4]@4 [eb4,f4,g4,b4]@4 [d4,e4,g4,bb4]@25 ~@14", // Ebaug Em7b5
  T: "[~@53 ab5@25 ~@2 eb4@16, ~@41 eb5@35 ~@20, ~@23 f5@15 ~@10]/2",
  U: "~ d4@4 eb4@3 ~ bb4@9 ab4@16 ~@11 eb4@3, ~@4 f4 ~@19, ~@9 g4 ~@38",
  V: "[gb4@3 bb4@2 db5@4 c5@20 eb4@4 a4@8 gb4@2 d4@2 ab4@21 ~ db4@2 g4@12 ~ b4@11 g4@3 b4@2 eb5@2 ~ gb5@3 ~ eb5@12 ~@8 b4@4 [bb4,gb5]@13 eb4@2, ~@66 f4@2 ~@25 db5@11 f5@13 f5@12 ~@15]/3", // Ebm
  W: "[~ d4@4 db4@4 c4@8 bb4@11 eb4@2 f4@3 gb4@19 f4@2 eb4@3 f4@18 ~ eb4@2 d4@2 ~@149 c4@82 ~@25, ~@80 eb4@231 ~@25, ~@203 a4@108 ~@25, ~@106 d4@49 ~@13]/7",
})).s("gm_trumpet").gain(0.26)

// chords · muted trumpet · "Trumpet-M"
const muted_trumpet = note("<~ A@3 ~@3 B C ~@8 D E@2 F G@2 H I ~@56>".pickRestart({
  A: "[~@59 f5@56 ~@29, ~@37 bb4@80 ~@27, ~@44 eb5@71 ~@29, ~@13 ab4@16 ~@7]/3",
  B: "~@2 f4@10 ~ [f4,ab4,eb5]@7 ~ db5@19 [c4,eb4,f4,bb4]@3 ~ [eb4,gb4,db5]@4, ~ [ab4,bb4,eb5]@11 bb4@7 ~ [eb4,gb4,ab4]@20 ~@3 ab4@5", // Fm7 Cm7 Ebm7 Absus2 Ab7
  C: "[f4,ab4,bb4,eb5]@11 ~ [f4,bb4,eb5]@7 ~ db5@19 ~ [c4,bb4]@3 ~ [gb4,ab4,db5]@4, ~@11 ab4@7 ~ [eb4,gb4,ab4]@20 [eb4,f4]@4 eb4@4 ~", // Fm7 Ebsus2 C7 Gbsus2 Ab7 Ebsus2
  D: "~@43 bb3@5",
  E: "[eb4@16 f4@2 ~ d4@2 eb4@2 ~ bb4@5 ab4@27 ~@4 eb4@2 gb4@3 bb4@2 db5@4 c5@20 eb4@5, ~@9 eb4 ~@38]/2",
  F: "a4@9 gb4@2 d4@2 ab4@11 ~ ab4@8 f4@2 ~ g4@12, ~@35 db4@2 ~@11",
  G: "[~ ab4@10 ~@4 ab4@2 b4@2 eb5@2 gb5@2 f5@20 b4@4 bb4@40 ~ eb4@4 f4@4]/2", H: "gb4@11 f4@12 eb4@13 d4@11 ~",
  I: "d4@4 eb4@3 f4@5 eb4@36",
})).s("gm_muted_trumpet").gain(0.2)

// chords · trombone
const trombone = note(`<
  A@8 B C ~@7 D ~@6 E F G@2 H I@2 J K@3 ~ L M N O P@4 Q R S T@5 Q R S U@7 V@4 W X@3 Y@4 ~ Z@6
>`.pickRestart({
  A: "[~@49 f3@115 ~@120 bb1@53 [eb3,gb3,bb3,db4]@10 ~@2 gb3@7 [db3,e3,ab3,b3]@20 [bb2,db3,f3,ab3]@3 ~ [e3,ab3,b3]@4, ~@14 bb2@68 ~@13 eb4@73 ~@24, ~@35 eb3@129 ~@17 bb3@156 ~@47, ~@42 ab2@122 ~@71 f3@103 ~@10 [eb3,bb3,db4]@8 ~@23 db3@4 ~]/8", // Ebm7 Dbm7 Bbm7 E Eb7
  B: "[eb3,gb3,bb3,db4]@11 ~ [eb3,gb3,db4]@7 ~ e3@20 [bb2,db3,f3,ab3]@4 [e2,b2,ab3,b3]@4, ~@11 bb3@8 [db3,ab3,b3]@20 ~@9", // Ebm7 Bbm7 E Db7
  C: "[eb2,bb2,gb3,eb4]", D: "~@18 bb3@5 gb3@24 ~, bb2, ~ eb3@7, ~@11 d4@37",
  E: "~@35 [eb3,eb4]@6 ~ f4@6, ~@41 [d3,f3,d4]@7", F: "gb4@19 f4@2 eb4@3 f4@19 ~ eb4@4, eb3@43 f3@5, [bb3,c4] [a3,b3]",
  G: "[[ab3,b3,db4,d4]@27 ~@3 bb3 bb3@4 ~@6 f4@6 ~ gb4@15 ~@4 eb4@2 ~@4 f4@5 e4@6 eb4@11 ~, ~@35 b3@12 [eb3,bb3,c4]@16 ~@3 [gb3,bb3,c4]@3 ~ gb4@4 ~@22, ~@35 e4@6 ~@23 b3@4 ~ [bb3,c4,eb4]@4 b3@23, ~@12 [d3,ab3]@4 ~@5 [c3,eb3,gb3] ~@2 [f3,a3]@8]/2", // Abdim Cm7 Cm7b5 Cm7 Ddim Cdim F
  H: "[ab3,b3,db4,d4]@23 ~", // Abdim
  I: "[~ gb3@22 f2@12 ~ b3@11 ~ [db4,f4]@22 ~@14 [f2,a3]@12, [b3,eb4]@35 [bb2,d4]@13 gb3@47 ~, ab2@23 ab3@24 eb3@23 c3@14 ~@12, ~@71 bb3@12 ~@13, ~@72 eb4@23 ~]/2", // Db F B Bb
  J: "[ab3,b3,db4,eb4]@4 [ab3,b3,db4,eb4]!2 [gb3,a3,b3,db4]@4 [gb3,a3,b3,db4]!2", // Abm Gbm
  K: "[[f3,ab3,bb3,b3]@15 ~ [f3,ab3,bb3,b3]@4 [f3,ab3,bb3,b3]@4 bb2@4 bb3@4 ab3@4 f3@4 d3@4 b2@3 bb2@5 ~@19 gb3@70 ~@3, ~@4 b3@4 ~@3 bb3@13, ~@24 f3@12 ~@17 eb3@90 ~, ~@24 ab3@8 ~@27 f3@83 ~@2]/3", // Fdim
  L: "[eb3,gb3,bb3,db4] [ab2,gb3,bb3,c4]", M: "a3@12 ab3@11 ~ ab3@12 g3@12, [b2,d3,db4] [bb2,db3,c4]",
  N: "[ab2,gb3] [db2,f3], [b3,eb4]", O: "[eb2,gb3,bb3,db4]@13 ~@35",
  P: "[~@48 [bb3,f4]@18 [eb3,bb3,db4,f4]@4 [db3,ab3,b3,eb4]@14 [bb2,f3,ab3,c4]@4 [ab3,b3,eb4]@2 ~@4 [db4,f4]@20 [eb3,bb3,db4,f4]@4 [db3,ab3,b3,eb4]@14 [bb2,f3,ab3,c4]@4 [db3,ab3,b3,eb4]@2 ~@4 [eb3,bb3,db4,f4]@11 ~ [eb3,bb3,db4,f4]@30 [e3,b3,d4,gb4]@8, ~@47 [eb3,db4]@18 ~@23 db3 ~@4 [eb3,bb3]@20 ~@79]/4", // Bb5 Bbm Abm Fm Abm Db Bbm Abm …
  Q: "[f3,b3,eb4,g4]@5 [f3,b3,eb4,g4]@13 [e3,b3,d4,gb4]@6", // Ebaug Bm
  R: "[eb3,bb3,db4,f4]@9 ~ [eb3,bb3,db4,f4]@30 [c3,gb3,bb3,d4]@8", // Bbm Daug
  S: "[b2,gb3,a3,db4]@15 ~@2 gb3@7 [bb2,f3,ab3,c4]@22 [a2,e3,g3,b3]@2, ~@5 b2@3 ~@8, ~@2 [a3,db4] ~@3", // Gbm Fm Em A
  T: "[[ab2,eb3,gb3,bb3]@36 [bb2,f3,ab3,c4]@4 [db3,ab3,b3,eb4]@2 ~@4 db4@20 [eb3,bb3,db4,f4]@24 [eb3,bb3,db4,f4]@4 [g3,d4,f4,a4]@20 [g3,d4,f4,a4]@4 [gb3,db4,e4,ab4]@19 ~ [gb3,db4,e4,ab4]@4 [f3,b3,eb4,g4]@20 [f3,b3,eb4,g4]@4 [e3,b3,d4,f4]@24 [eb3,bb3,db4,f4]@11 ~ [eb3,bb3,db4,f4]@30 [e3,b3,d4,gb4]@8, ~@9 [eb3,bb3,f4]@4 ~@35]/5", // Ebm Fm Abm Bbm Dm Dbm Ebaug Bdim …
  U: "[[ab2,eb3,gb3,bb3]@36 [bb2,f3,ab3,c4]@4 [db3,ab3,b3,eb4]@2 ~@4 db4@20 [eb3,bb3,db4,f4]@24 [eb3,bb3,db4,f4]@4 [g3,d4,f4,a4]@20 [g3,d4,f4,a4]@4 [gb3,db4,e4,ab4]@19 ~ [gb3,db4,e4,ab4]@4 [f3,b3,eb4,g4]@20 [f3,b3,eb4,g4]@4 [e3,b3,d4,f4]@19 ~ [e3,b3,d4,f4]@4 [eb3,bb3,d4,f4]@23 ~ [eb3,eb4]@5 [d3,f3,d4,f4]@6 ~ gb4@19 f4@2 eb4@2 ~@20 eb4@4 [ab3,b3,db4,d4]@27 ~@3 bb3 bb3@4 ~ e4@5 f4@6 ~ [bb3,gb4]@15, ~@45 [eb3,bb3,f4]@20 ~@160 eb3@43 f3@5 ~@36 [d3,ab3]@12 ~@15, ~@225 [bb3,c4]@24 b3@24 ~@35 b3@12 ~@16, ~@249 f4@20 ~@67, ~@125 a3@12 ~@23 [eb3,c4]@8]/7", // Ebm Fm Abm Bbm Dm Dbm Ebaug Bdim …
  V: "[~@4 [gb3,eb4]@2 ~ gb4@3 f4@5 ~ e4@6 eb4@11 [ab3,b3,db4,d4]@46 ~@3 gb3@22 f2@12 ~ b3@12 [eb3,db4,f4]@23 ~ bb3@12 [f2,a3]@12 [ab3,b3,db4,eb4]@15, [eb3,gb3]@3 [bb3,c4]@3 [bb3,c4,eb4]@4 [f3,a3,b3]@24 ~@47 b3@35 [bb2,d4]@13 ~@23 c3@14 ~@26, ~ [c3,b3]@4 ~@76 ab2@23 ab3@24 ~ gb3@47 ~@16, ~@82 eb4@35 ~@36 eb4@23 ~@16]/4", // Ebm Abdim Db F Abm Ebm Bbsus2 Cm7 …
  W: "~ [ab3,b3,db4,eb4]@4 [ab3,b3,db4,eb4]@4 [gb3,a3,b3,db4]@16 ~ db4@3 ~ db4@3 ~ [f3,ab3,b3]@14, ~@25 [gb3,a3,b3]@4 [gb3,a3,b3]@4 bb3@15", // Abm Gbm Fdim B7
  X: "[~@2 [f3,ab3]@3 [f3,ab3,bb3,b3]@4 bb2@4 bb3@4 ab3@4 f3@4 d3@4 b2@3 ~ bb2@5 ~@19 gb3@70 ~@17, ~ [bb3,b3]@4 ~@4 b3@24 ~@18 bb3@78 ~@15, ~@9 f3@12 ~@17 eb3@89 ~@17, ~@9 ab3@8 ~@27 f3@83 ~@17]/3", // Fm Fdim Bmaj7
  Y: "[~@33 [eb3,gb3,bb3,db4]@24 [ab2,gb3,bb3,c4]@24 a3@12 ab3@11 ~ ab3@12 g3@12 [ab2,gb3]@24 [db2,f3]@24 [eb2,gb3,bb3,db4]@13 ~@2, ~@27 [b2,d3,db4]@8 [bb2,db3,c4]@8 [b3,eb4]@16 ~@5]/4", // Ebm7 Ab7 Db Ebm7 Bm Bbm B
// … 59 more lines

More by Herman