Strudelify

St. Louis Blues March

Miller

KeyG majorTempo120 bpm
0:00/0:00
// St. Louis Blues March — Miller
// 120 bpm, 4/4, key G 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 103 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: edit a riff to change every repeat.

// chords · piano
const piano = note(`<
  A B A C A B A B D E F C ~@14 G H ~@6 I@2 ~@6 J@2 ~@10 K L ~ M N ~@2 O P Q@2 R ~@11 S T@2 U V@2 W@2 ~ X ~@6 Y@2 Z ~@3
  AA@2 ~ AB
>`.pickRestart({
  A: "[d3,g3,b3] ~@3 [d3,g3,b3] ~@3", B: "[d3,g3,b3] ~ [d3,g3,b3] ~ [d3,g3,b3] ~@3",
  C: "[d3,g3,b3]@3 ~@3 [d3,g3,b3]@3 ~@3 [d3,g3,b3]@2 ~@10", D: "[e3,g3,a#3]@3 ~@8 [e3,g3,a#3]@3 ~@10",
  E: "[e3,g3,a#3] ~ [e3,g3,a#3] ~ [e3,g3,a#3] ~@3", F: "[d3,g3,b3]@3 ~@9 [d3,g3,b3]@2 ~@10",
  G: "~@6 [g3,b3,d4]@5 ~ [a3,c4,e4]@4 ~@2 [a#3,c#4,f4]@4 ~@2", // G Am A#m
  H: "[b3,d4,f#4]@4 ~@2 [a3,c4,e4]@5 ~ [g3,b3,d4]@4 ~@2 [g3,a#3,d4]@5 ~", I: "[d4@8 ~@2 e4@11 ~ a4@11 e5@14 ~]/2",
  J: "[g4@10 a4@12 d5@15 ~@11]/2", K: "~@4 [g4,b4]@7 ~ [f#4,a4,d5]@2 ~@4 [e4,c5]@3 ~@3, ~ e5@2 ~@5",
  L: "[d4,b4]@3 ~@3 [d4,a4]@2 ~@2 [b3,d4,g4]@3 ~@11, ~@6 f#4 ~@17", // G D5 G
  M: "[a#4,d5,g5]@3 ~ [a#4,d5,g5] ~ [a#4,d5,g5]@3 ~@3 [a#4,d5,g5]@3 ~ [a#4,d5,g5] ~ [a#4,d5,g5]@3 ~@3", // Gm
  N: "[a#4,d5,g5]@3 ~ [a#4,d5,g5] ~ [a#4,d5,g5]@4 ~@2 [a#4,d5,g5]@3 ~ d5@2 f#5@4 g5@2", O: "a4@6 g#4@6 g4@6 f#4@5 ~",
  P: "f4 d#4 c#4 f#4", Q: "[g4@19 ~@5]/2", R: "[b4,d5,g5] ~@11",
  S: "[c#5,a5]@4 [c5,d#5,g#5]@7 ~ [g#4,b4,e5]@3 ~ [g4,a#4,d#5]@6 ~@2, e5 ~@11", // F#m G# E D#
  T: "[[d#4,f#4,b4]@3 ~ [d4,f4,a#4]@7 ~ [c#4,e4,a4]@4 ~@2 [c4,d#4,g#4]@3 ~ [b3,d4,g4]@8 ~@18]/2", // B A# A G# G
  U: "~@16 [b4,d5]@7 ~, ~@15 g5@7 ~@2", // Bm
  V: "[[d5,g5]@2 ~@13 [b4,d5,g5]@7 ~ [a#4,d5,g5]@2 ~@15 [a#4,d5,g5]@7 ~, b4 ~@47]/2", // G5 G Gm
  W: "[[b4,d5,g5]@8 ~ [b4,d5,g5]@3 ~@6 [b4,d5,g5]@10 [b4,d5] ~@7 [b4,d5,g5]@2 ~@4 [b4,d#5,g#5]@3 ~ a#4@2, ~@28 g5@2 ~@15 e5@3]/2", // G Bm G G#m
  X: "~@15 [g4,g5]@3 [g#4,g#5]@3 [a4,a5]@2 ~", // G G# A
  Y: "[~@9 [c5,d#5]@8 ~ [c#5,e5]@9 ~ f5@8 [d#5,f#5]@3 ~@3 [e5,g5]@3 ~@3, ~@27 d5@8 ~@13]/2", // Cm C#m D#m Em
  Z: "g#5@3 a5@14 ~@7, d5@17 ~@7", AA: "[[d#4,g#4]@3 [d4,g4]@34 ~@11]/2", AB: "~@4 [d5,f#5,b5] ~@3",
})).s("gm_piano").gain(0.4)

// chords · piano · soft notes
const piano_soft = note("<~@84 A ~@4 B@2 C@2 D ~@9>".pickRestart({
  A: "~@7 a5", B: "[[b3,d4]@9 [c4,d#4]@8 ~ [c#4,e4]@9 ~ [d4,f4]@8 [d#4,f#4]@6 [e4,g4]@6]/2",
  C: "[[f4,g#4]@9 [f#4,a4]@8 ~ [g4,a#4]@8 ~ [g#4,b4]@8 ~ [a4,c5]@5 ~ [a#4,c#5]@4 ~@2]/2", D: "[b4,d5] ~@2",
})).s("gm_piano").gain(0.15)

// bass · acoustic bass
const bass = note(`<
  A B A B A B A B C D A E ~@4 F@2 ~@2 G H ~@2 I J K L M N O ~ P Q M@2 R N S T U V W X Y@4 Z AA AB@2 AC AD AE AF M AG AH
  AI AJ AK AL AM AN AO ~@5 M@3 AP M AQ AR AS@2 AT AU AV AW@2 ~ AX ~@2 AY@2 AZ@2 BA@2 BB BC@3 BD@4
>`.pickRestart({
  A: "g2 ~ d2 ~", B: "g2@2 ~ d2@2 ~ g2@3 ~@3", C: "c3 ~ c3 ~", D: "c3@2 ~ g2@2 ~ c3@3 ~@3", E: "g2@2 ~ d2@2 ~ g2@2 ~@4",
  F: "[~@18 c#2@3 ~ c2@8 c2@5 ~ d#2@6 d2@4 g1@2]/2", G: "c2!3 c#2", H: "c2@3 c2@3 d#2@3 d2@2 g1", I: "d2!3 a#2",
  J: "a2@6 a2@5 ~ d2@6 d2@6", K: "g2!2 a2 a#2", L: "b2@3 a2@3 g2@3 d2@2 ~", M: "g2!4", N: "c2!2 d2 d#2", O: "d2 ~@5",
  P: "a2@6 a2@6 a2@6 a2@5 ~", Q: "d2!4", R: "g2 d2 g2!2", S: "d2 ~@3", T: "~@3 d2", U: "d2 d#2 d2 a2",
  V: "a#2 d#2 d2!2", W: "g1!2 a1!2", X: "d2@3 a1@3 d2@2 ~ d2@3", Y: "g1@2 ~ g1@2 ~ g1@2 ~ g1@2 ~",
  Z: "c2@2 ~ c2@2 ~ c2@2 ~ c2@2 ~", AA: "c2@2 ~ c2@2 ~ d2@2 ~ d2@2 ~", AB: "g2@3 g2@2 ~ g2@2 ~ g2@2 ~",
  AC: "g#2 f#2 e2 f#2", AD: "g#2 f#2 e2 d2", AE: "~@2 c2@4 b1@2 ~ a1@2 ~", AF: "g1@3 d2@2 ~ g1@2 ~ d2@3",
  AG: "c2@3 c2@2 ~ c2@2 ~ c2@3", AH: "c2@3 c2@3 c2@3 d2@2 ~", AI: "g2@3 g2@3 d2@3 d2@2 ~",
  AJ: "g1@3 g1@2 ~ d2@2 ~ d2@2 ~", AK: "a2 g#2 g2 f#2", AL: "f2@3 d#2@2 ~ c#2@2 ~ f#2@3", AM: "g2@3 g2@3 g2@2 ~ g2@3",
  AN: "g2@2 ~ g2@3 g2@3 g2@3", AO: "g2 ~@5", AP: "g2@3 g2@3 g2@3 g2@2 ~", AQ: "g2@2 ~ g2@3 g2@2 ~ g2@2 ~",
  AR: "a2@2 ~@2 g#2@8 e2@2 ~ d#2@8 ~", AS: "[b1 ~ a#1@4 a1@3 g#1@2 g1@4 g1@3 g1@3 ~@3]/2", AT: "~@2 g2",
  AU: "g2 ~@3 g2@2", AV: "c2 ~@3 c2@2", AW: "[g2@4 ~ g2 ~@3 g2@4 ~ g2 ~@3 g2@3 c#2@2 c2]/2",
  AX: "~@15 f1@2 ~ f#1@2 ~ g1@2 ~", AY: "[d2@9 d#2@8 ~ e2@8 ~ f2@8 ~ f#2@4 ~@2 g2@4 ~@2]/2",
  AZ: "[g#2@8 ~ a2@9 a#2@8 ~ b1@8 ~ c2@4 ~@2 c#2@3 ~@3]/2", BA: "[d2@8 ~ d#2@8 ~ e2@8 ~ f2@9 f#2@4 ~@2 g2@4 ~@2]/2",
  BB: "d2@4 ~@2 d2@3 ~@3 d2@4 ~@2 d2@4 ~@2", BC: "d2@2 ~ d2@2 ~ d2@2 ~ d2@2 ~", BD: "[g#1@3 ~ g1@74 ~@6 g1@2 ~@10]/4",
})).s("gm_acoustic_bass").gain(0.4)

// chords · alto sax
const alto_sax = note(`<
  A B A B A B A B C D A B ~@4 E@2 ~ F@3 ~ G@3 H@2 I J K L M@2 ~ N O P Q R S T U@2 V W X Y Z AA AB@2 AC AD@2 AE AF AG@2
  AH AI AJ@2 AK@3 ~@5 AL AM ~@2 AL AN AO AP ~ AQ AR AS AT@2 ~ AU ~ AV AW@4 AX@2 AY AZ BA@2 BB BC BD BE
>`.pickRestart({
  A: "[d3,b3] ~@5 [d3,b3] ~@5", B: "[d3,b3] ~@2 [d3,b3] ~@2 [d3,b3] ~@5", C: "[e3,c4] ~@5 [e3,c4] ~@5",
  D: "[e3,c4] ~@2 [e3,c4] ~@2 [e3,c4] ~@5", // C
  E: "[~@18 [g#3,f4]@3 ~ g3@14 [c#4,a#4]@6 [c4,a4]@3 [b3,g4]@2 ~, ~@11 e4@6 ~@7]/2", // C# F# F Em
  F: "[~@11 g3@10 [g#3,f4]@2 [g3,e4]@7 [c#4,a#4]@3 [c4,a4]@2 [b3,g4], ~@11 e4@9 ~@16]/3", // C# C F# F Em
  G: "[~@11 [f#3,d4]@10 [f3,d4]@2 [e3,c#4]@6 [d3,c4]@7]/3", // D Dm C#m D7
  H: "[~@2 b3@2 ~ [e3,c4]@2 ~ [f3,c#4]@2 ~ [f#3,d4]@3 [d3,b3] [e3,c4]@2 [f3,c#4] d4@2 ~@4, ~@3 d3@4 ~@29 e3@2 ~@10]/2", // C C# D G C C#
  I: "~@12 e3@11 ~", J: "d#3@12 e3@3 ~ d#3@8", K: "d3@4 ~@18 [f#3,a3,g4,a4] [e3,e4,f#4]",
  L: "[c#3,c#4]@2 [d3,d4] ~@9, d4 ~@23", M: "[~@9 d#3@2 d3@7 ~@6]/2", N: "~@8 [e4,d5] [e4,d5]@2 [d4,a#4]",
  O: "[e4,d5]@2 [d4,a#4] [d#4,c5]@2 [e4,d5]@7", // E7 Gm Cm E7
  P: "~@4 [d#4,c5]@2 [d#4,c5]@3 ~ [d#4,c#5]@2 e4@4 [c#4,a#4]@8, ~@6 d5 ~@5", Q: "[c4,a4] ~@11",
  R: "~@8 c5@3 [c4,a4], ~@4 e4 ~", S: "[e4,c5]@2 ~ c#4@2 c5@7, ~@2 [c4,a4] ~@2 e4@6 ~, ~@5 a#4@3 ~@16",
  T: "[f4,c#5]@2 [e4,c5] [c#4,a#4]@2 [a#3,g4] c5@2 a#4@4, ~@6 e4 ~ c4@3 ~", // C# C F# D#
  U: "[[b3,g4]@5 [c#4,a4]@6 c4@10 ~@3, ~@11 d5@9 ~@4]/2", V: "[d3,d4] ~ [d#3,d#4] ~ [d3,e4] ~ [d#3,d#4] ~",
  W: "[d3,d4] ~ [e3,d#4] ~ [d#3,e4] ~ [d3,d#4] ~", X: "~@4 a#3@2 b3@2 d4@2 e4@2 g4@2 e4@2 ~@6 [e4,f#4] [c4,d4], ~@2 g4",
  Y: "b3 ~@23", Z: "[e3,c4] ~ [e3,c4] ~ [e3,c4] ~ [e3,c4] ~",
  AA: "[e3,c4]@3 ~@3 [e3,c4]@4 ~@2 [e3,d4]@3 ~@3 [e3,d4]@3 ~@3", // C E7
  AB: "[~@4 a#3@2 b3@2 d4@2 e4@5 g4 g4@5 b4 b4@3 [g#4,a4] g4 ~@21]/2", // Amaj7
  AC: "[d#3,f#4] [d3,f4] [c#3,e4] [c3,d#4] [b2,d4] [c3,d#4] [c#3,e4] [d3,f4]", // D#m Dm C#m Cm Bm Cm C#m Dm
  AD: "[[d#3,f#4]@3 [d3,f4]@3 [c#3,e4]@3 [c3,d#4]@3 [b2,d4]@3 [a#2,c#4]@3 [b2,b3]@3 g3@26 ~]/2", // D#m Dm C#m Cm Bm A#m B
  AE: "b3@6 a3@3 g3 g3@2 ~@4 d4@2 e4@2 g4@2 a#4@2", AF: "a4@2 g4@2 ~ d4@2 e4@2 d4@2 e4@4 g4@5 ~@4, ~@2 e4 ~@9",
  AG: "[~@4 c5@8 a#4 a4 g#4 g4@6 c5@8 ~ a#4 a4 g#4 g4@6 ~ d4@2 f#4@4 g4@2]/2", AH: "~@2 d5@9 e5",
  AI: "b4@3 d5@6 ~ e5@2 a#4@4 ~@5 d#4 [c4,d4] b3, ~@2 g4", // Csus2
  AJ: "[g3@2 f#3 ~@2 f3 ~@2 e3 ~@2 d#3@3 d3 c#3@2 c3 b2@2 a#2 ~@2 c#3, a3 ~@47]/2",
  AK: "[d3@3 ~@7 d5@6 g5@2 d5@3 ~ a#4@2 b4@4 d5@2 d4@2 e4 ~@15 d3@2 ~@22, ~ d3@11 ~@6, ~@11 g4@6 ~@7]/3",
  AL: "~@2 [b3,d5] [f4,g5] [d4,f5] b3 [f4,g5]@4 [d4,f5] [b3,d5], ~@10 d5 ~@13", // Bm Fsus2 Dm Fsus2 Dm Bm
  AM: "[f4,g5] [d4,f5] [b3,d5] [f4,g5] [d4,f5] [b3,d5] [f4,g5]@3 ~@3", // Fsus2 Dm Bm Fsus2 Dm Bm Fsus2
  AN: "[f4,g5]@2 [d4,f5]@2 [b3,d5]@2 [f4,g5]@2 [d4,f5]@2 b3@2 [f4,g5]@10 [d5,e5] [e4,g4,b4], ~@10 d5 ~@13", // Fsus2 Dm Bm Fsus2 Dm Fsus2 Dsus2 Em
  AO: "[d4,e4] d#4 d4 d#4 d4 d#4 d4 d#4 d4 [d4,d#4]!12 d#4 [d4,d#4] d#4", // Dsus2 D#maj7
  AP: "d4 d#4 d4 d#4 d4 d#4 [d4,d#4]!6 [e3,e4]@6 [d#3,d#4]@3 [d3,d4]@3", AQ: "~@15 [b3,a4]@8 ~",
  AR: "b3@4 ~@11 [b3,a4]@8 ~, a4 ~@11", AS: "[e3,d4]@4 ~@11 [e3,d4]@8 ~",
  AT: "[[f3,d4]@9 [f3,d4]@2 ~@7 d4@8 ~ [f3,d4]@2 ~@7 d4@6 [f3,d#4]@3 [e3,e4]@2 ~, ~@17 f3@8 ~@11 f3@4 ~@8]/2", // Dm F7 E
  AU: "~@15 [c3,d4]@2 ~ [c#3,d#4]@2 ~ [d3,e4]@2 ~", AV: "~@7 [f#3,e4] [f3,d#4] [e3,d4] [d#3,c#4] [d3,c4]",
  AW: "[a2@8 ~ a#2@8 ~ [b2,c#4]@8 ~ [c3,d4]@8 ~ [c#3,d#4]@4 ~@2 [d3,e4]@4 ~@2 f4@7 ~@3 f#4@6 ~@2 g#3@8 ~ [a3,g#4]@8 ~ a4@4 ~@2 a#4@4 ~@2, b3@6 ~@3 c4@6 ~@32 f#3@3 ~@7 g3@6 ~@3 g4@6 ~@12 a#3@2 ~@4 b3@2 ~@4]/4", // Bsus2 Csus2 C#sus2 Dsus2 Amaj7
  AX: "[[f#3,e4]@8 ~ [g3,f4]@8 ~ [g#3,f#4]@8 ~ [a3,g4]@8 ~ [a#3,g#4]@4 ~@2 a4@4 ~@2, ~@21 b3 ~@2]/2", // F#7 G7 G#7 A7 A#7
  AY: "g#4 a4@7, f#3", AZ: "~@9 [f3,f4]@6 ~@3 d4@3 ~ c3@2, ~@15 f#4@2 d3@4 ~@3, ~@16 f#3@2 ~@3 b3@3",
  BA: "[~@4 c4@4 ~ [f#3,d#4]@4 ~@3 f#4@32, ~@3 d#3@4 ~@8 a3@32 ~]/2", // D#m
  BB: "~@4 [g4,g5] [d4,d5] [f4,f5] [c#4,c#5] [e4,e5] [d4,d5] [b3,b4] [g3,g4]", // G D F C# E D B G
  BC: "[a#3,a#4] [f#3,f#4] [a3,a4] [g3,g4] [f3,f4] [d3,d4] [e3,e4] [c3,c4] [d#3,d#4] [d3,d4] b3 [e3,g3]", // A# F# A G F D E C …
  BD: "a#3@2 f#3@2 a3@2 g3@2 g3@2 a3@2 a#3@2 ~ e4 e4@2 [g4,a4] g4 [g4,a4]!4, ~@7 d4 ~@4", // Gsus2
  BE: "[g4,a4]!3 a4 g4 ~@7 [d3,g4]@2 ~@10", // Gsus2 G5
})).s("gm_alto_sax").gain(0.54)

// other · alto sax
const alto_sax_2 = note(`<
  A B A B A B A B C D A B ~@4 E@2 ~ F@3 ~ G@3 H@2 ~@2 I J ~@3 K L M N O P Q R@2 S@2 T U V W X ~ Y Z@2 AA ~ AB@2 ~ AC
  AD@2 AE@2 AF ~@5 AG AH ~@2 AG AI AJ AK ~ AL AM AN AO@2 ~ AP ~ AQ AR@2 AS@2 AT@2 AU@2 AV@2 AW AX AY AZ
>`.pickRestart({
  A: "g3 ~@5 g3 ~@5", B: "g3 ~@2 g3 ~@2 g3 ~@5", C: "a#3 ~@5 a#3 ~@5", D: "a#3 ~@2 a#3 ~@2 a#3 ~@5",
  E: "[~@18 c#4@3 ~ c4@14 g4@6 f#4@3 e4@2 ~]/2", F: "[~@22 d4@20 d#4@4 d4@14 g4@6 f#4@3 ~ e4@2]/3",
  G: "[~@22 c4@19 ~ c4@4 b3@12 a3@14]/3", H: "[~@4 g3@4 ~@2 a3@4 ~@2 a#3@4 ~@2 b3@6 g3@2 a3@3 a#3@2 ~ b3@2 ~@10]/2",
  I: "~@22 a4 [d4,e4,f#4]", J: "c#4@2 d4 ~@9", K: "~@8 a#4 a#4@2 g4", L: "a#4@2 g4 a4@2 a#4@7",
  M: "~@4 a4@2 a4@4 a4@2 a#4@3 ~ g4@8", N: "f#4 ~@11", O: "~@8 a4@3 f#4", P: "a4@2 f#4 g4@2 a4@6 ~",
  Q: "a#4@2 a4 g4@2 f4 a4@2 g4@4", R: "[e4@5 g4@6 b4@9 ~@4]/2", S: "b3 ~@2 b3 ~@2 b3 ~@2 b3 ~@2",
  T: "~@4 a#3@2 b3@2 d4@2 e4@2 g4@2 e4@2 g4@7 f#4", U: "[c4,d4,e4] ~@23", V: "a3@2 ~@4 a3@2 ~@4 a3@3 ~@3 a3@3 ~@3",
  W: "a3 ~ a3 ~ b3 ~ b3 ~", X: "~@4 a#3@2 b3@2 d4@2 e4@4 ~ g4@6 b4@3",
  Y: "c4@2 ~ b3@3 a#3@3 a3@3 g#3@3 a3@3 a#3@3 b3@3", Z: "[c4@3 b3@3 a#3@3 a3@3 g#3@3 g3@3 b3@3 g3@26 ~]/2",
  AA: "b3@5 ~ a3@3 g3@2 ~@13", AB: "[~@4 c5@8 a#4 a4 g#4 g4@6 ~ c5@8 a#4 a4 g#4 g4@6 d4@2 ~ f#4@3 g4@2 ~]/2",
  AC: "~@11 d4", AD: "[a4@3 g#4@3 ~@4 g4@3 ~@3 f#4@3 ~@3 f4@5 ~ e4@2 d#4@4 d4@2 c#4@4 c4@2 ~@4 d#4@2]/2",
  AE: "[e4@3 ~ e4@44]/2", AF: "e4 ~@11", AG: "~@2 a4 d5 c5 a4 d5@4 c5 a4", AH: "d5 c5 a4 d5 c5 a4 d5@3 ~@3",
  AI: "d5@2 c5@2 a4@2 d5@2 c5@2 a4@2 d5@9 b4 a4 [e4,g4]", // Em
  AJ: "d4 d#4 d4 ~ d#4 d4 d#4 d4 d#4 d4 ~ d#4 d4 d#4 d4 d#4 d4 d#4 d4 ~ d#4 d4 d#4 d4",
  AK: "d#4 d4 d#4 d4 ~ d#4 d4 d#4 d4 d#4 d4 ~ c#4@6 c4@3 b3@3", AL: "~@15 f4@8 ~", AM: "f4@2 ~@13 f4@6 ~@3",
  AN: "a#3@2 ~@13 a#3@8 ~", AO: "[b3@8 ~ b3@2 ~@7 b3@8 ~ b3@2 ~@7 b3@6 b3@3 a#3@2 ~]/2",
  AP: "~@15 a3@2 ~ a#3@2 ~ b3@2 ~", AQ: "~@7 c#4 c4 b3 a#3 a3",
  AR: "[f#3@8 ~ g3@8 ~ g#3@8 ~ a3@8 ~ a#3@3 ~@3 b3@3 ~@3]/2", AS: "[c4@9 c#4@8 ~ d4@8 ~ d#4@8 ~ e4@3 ~@3 f4@3 ~@3]/2",
  AT: "[c4@8 ~ c#4@8 ~ d4@8 ~ d#4@8 ~ e4@3 ~@3 f4@3 ~@3]/2", AU: "[e4@26 ~@7 f4@6 f#4@2 d4@4 f#3@3]/2",
  AV: "[~@3 a3@4 ~@2 c4@5 ~ d#4@32 ~]/2", AW: "~@4 g5 d5 f5 c#5 e5 d5 b4 g4",
  AX: "a#4 f#4 a4 g4 f4 d4 e4 c4 d#4 d4 b3 g3",
  AY: "a#3@2 f#3@2 a3@2 g3@2 g3@2 a3@2 a#3@2 ~ e4@2 ~ g4 [g4,a4]!3 a4 [g4,a4], ~@7 d4 ~@4", // Gsus2
  AZ: "[g4,a4] g4 [g4,a4] a4@2 ~@7 f#4@2 ~@10", // Gsus2
})).s("gm_alto_sax").gain(0.3).pan(0.7)

// other · baritone sax
const baritone_sax = note(`<
  A B A B A B A B C D A B ~@4 E@2 ~ F@3 ~ G@3 H@2 I J K@2 ~@3 L M N O P Q R S@2 T@2 U ~ V W X@2 Y Z AA AB ~ AC@2 ~ AD
  AE@2 AF@2 AG ~@5 AH AI ~@2 AH AJ AK AL@2 AM AN AO@3 ~ AP ~ AQ AR@2 AS AT AU AV AW AX AY@2 AZ@4
>`.pickRestart({
  A: "g2 ~@5 d2 ~@5", B: "g2 ~@2 d2 ~@2 g2 ~@5", C: "c3 ~@5 g2 ~@5", D: "c3 ~@2 g2 ~@2 c3 ~@5",
  E: "[~@18 c#3@3 ~ c3@14 d#3@5 ~ d3@3 g2@2 ~]/2", F: "[~@11 c3@10 c#3@2 c3@7 d#3@3 d3@2 g2]/3",
  G: "[~@22 d3@20 d3@3 ~ c#3@12 c3@14]/3", H: "[~@4 g2@4 ~@2 a2@2 ~@3 a#2@2 ~@4 b2@6 ~ g2@2 a2@4 a#2@2 b2@2 ~@10]/2",
  I: "~@12 e3@11 ~", J: "d#3@3 e3 d#3@2", K: "[d3@4 ~@17 a2 f#2 c#2@4 ~ d2@2 ~@18, ~@23 e2 ~@24]/2",
  L: "~@16 d4@2 d4@3 ~ a#3@2", M: "d4@2 a#3 c4@2 d4@7", N: "~@4 c4@2 c4@3 ~ c#4@2 d4@2 ~ a#3@8 ~", O: "a3 ~@11",
  P: "~@8 c4@3 a3", Q: "c4@2 a3 a#3@2 c4@7", R: "c#4@3 ~ c4@2 a#3@4 g3@2 c4@4 a#3@8", S: "[g3@5 a3@6 f#3@10 ~@3]/2",
  T: "g2 ~@2 g2 ~@2 g2 ~@2 g2 ~@2", U: "~@2 a#2 b2 d3 e3 g3 e3 g3@4", V: "c3@2 ~ c3 ~@2 c3 ~@2 c3 ~@2",
  W: "c3 ~@2 c3 ~@2 d3@2 ~ d3 ~@2", X: "[~@4 a#2@2 b2@2 d3@2 e3@4 g3@7 ~ b3@4 ~@22]/2",
  Y: "g#2@3 g2@3 f#2@3 f2@3 e2@3 f2@2 ~ f#2@3 g2@3", Z: "g#2@3 g2@3 f#2@2 ~ f2@3 e2@3 d#2@3 b2@3 g2@3",
  AA: "~@3 c3@8 ~ b2@4 ~@2 a2@3 ~@3", AB: "g2@6 d2@3 g2@2 ~@13",
  AC: "[~@4 c4@8 a#3 a3 g#3 g3@6 ~ c4@8 a#3 a3 g#3 g3@6 ~ d3@2 f#3@4 g3@2]/2", AD: "~@22 [c3,d3] b2",
  AE: "[a2@2 g#2@2 ~ g2@2 ~ f#2@2 ~ f2@3 e2 d#2@2 d2 c#2@2 c2 ~@2 f#2]/2", AF: "[g2 g2@11]/2", AG: "g2 ~@11",
  AH: "~@2 g3 b3 a3 g3 b3@4 a3 g3", AI: "b3 a3 g3 b3 a3 g3 b3@3 ~@3",
  AJ: "b3@2 a3@2 g3@2 b3@2 a3@2 g3@2 b3@10 a3 [e3,f#3]", // Esus2
  AK: "[d3,d#3] d#3 d3 d#3 d3 d#3 d3 ~ d#3 d3 d#3 d3 [d3,d#3] ~ d#3 d3 [d3,d#3] ~ d#3 [d3,d#3] d3 d#3 d3 d#3", // D#maj7
  AL: "[d3 d#3 d3 d#3 d3 d#3 d3 d#3 d3 d#3 d3 d#3 a2@6 g#2@3 g2@5 ~@22]/2", AM: "~@15 g2@8 ~", AN: "g2@2 ~@13 g2@8 ~",
  AO: "[c2@4 ~@11 c2@8 g2@10 g2@2 ~@7 g2@9 g2@2 ~@7 g2@4 ~ c#2 c#2@3 c2@2 ~]/3", AP: "~@15 f2@2 ~ f#2@2 ~ g2@2 ~",
  AQ: "~@7 d3 c#3 c3 b2 a#2", AR: "[d2@6 ~@3 d#2@6 ~@3 e2@8 ~ f2@8 ~ f#2@4 ~@2 g2@3 ~@3]/2", AS: "g#2@2 ~ a2@2 ~ a#2@2",
  AT: "~@3 b2@6 ~@3 c3@4 ~@2 c#3@3 ~@3", AU: "d3@7 ~@2 d#3@6 ~@3 e3@6", AV: "~@3 f3@6 ~@3 f#3@4 ~@2 g3@3 ~@3", AW: "d3",
  AX: "~@10 f3@6 f#3@2 d3@3 b2@3", AY: "[~@3 c3@5 ~ d#3@5 ~ f#3@32 ~]/2", AZ: "[g#2@2 g2@38 ~@2 g2 ~@5]/4",
})).s("gm_baritone_sax").gain(0.4)

// other · brass section
const brass_section = note(`<
  ~@4 A B C B D E C B ~@3 F G H ~@2 I H ~@2 J K L ~@7 M@2 ~@7 N O P@2 Q R S@2 T U V ~@3 W X ~ Y Z@2 AA@2 AB ~@4 AC AD@2
  ~ AE AF@2 AG AH@2 AI@2 AJ AK@2 ~ AL ~@4 AM@4 AN@2 AO@6
>`.pickRestart({
  A: "g5@14 f5@2 e5@2 d5@2 ~ a4@2 ~, ~@10 b4 ~", B: "g4@3 ~", C: "g5@7 f5 e5 d5 b4 a4", D: "g5@7 e5 d5 a#4 g4 e4",
  E: "c4@3 ~", F: "~@11 a#4", G: "b4@3 ~ d5@2 b4@4 g4@8 ~@6", H: "~@2 d#4 e4@2 g4 a#4@3 a4@2 g4",
  I: "~@2 e4 g4@2 a4@6 ~", J: "f#4@2 a4 f#4@2 d4@6 ~", K: "~@4 a#4@2 b4@4 g4@2 a#4@3 ~ b4@2 ~ d#4@2 e4@2 ~, ~@9 d4 ~@2",
  L: "g4 ~@23", M: "[d4@3 ~@2 e4@4 ~@2 a4@4 ~@2 e5@6 ~]/2", N: "~@9 a#4@2 b4",
  O: "g4@3 ~@3 a#4@4 b4@2 g4@2 ~@4 a#4@4 b4@2", P: "[g4@4 a#4@2 b4@4 g4@2 a#4@3 b4@2 ~ d5@2 ~@2 g5@24 b5@2]/2",
  Q: "~ a5 [f#5,g5] [d5,e5] ~@14 a#4@4 b4@2", R: "a4@3 ~@3 a4@3 ~@3 g4@3 ~@3 a4@4 a#4@2",
  S: "[a4@2 g4 e4@2 a#4 b4@2 d5 e5 ~ g5@12 b5]/2", T: "~@16 d6@2 d6@3 ~ d6@2",
  U: "d6@4 d6@2 d6@4 d6@2 d6@3 d6@2 ~ d6@4 d6@2", V: "d6@3 d6@2 ~ d6@3 d6@2 ~ c#6@6 b5@3 g5@2 ~",
  W: "g5@3 ~ g5@2 g5@2 ~@4 g5@3 g5@2 ~ g5@2 ~@4", X: "g5@3 g5@2 ~ g5@2 ~@4 g5@3 d5@2 ~ f#5@4 g5@2",
  Y: "~@23 [e5,f#5], ~@11 d5", // Esus2
  Z: "[a5@2 ~@2 g#5@4 ~@2 g5@3 ~@3 f#5@4 ~@2 f5@5 ~ e5@2 d#5@4 d5@2 c#5@4 c5@4 ~@2 a#4@2, g5 ~@47]/2",
  AA: "[b4@3 ~ g4@41 b4 [c5,d5] [e5,f#5]]/2", AB: "g5 ~@11", AC: "~@6 g5 d5 f#5 g5@2 b5", AD: "[a#5 b5@6 ~@5]/2",
  AE: "~@6 b5 c6 g5 b5@2 c6", AF: "[a#5@2 b5@12 ~@7 d5 e5 d5]/2", AG: "a5@2 ~@2 g#5@8 e5@3 ~ d#5@8",
  AH: "[b4@2 ~ a#4@8 ~ a4@6 g#4@3 g4@8 ~@19]/2", AI: "[~@15 g5@8 g5@2 ~@15 g5@8]/2", AJ: "g5@2 ~@13 g5@8 ~",
  AK: "[g5@9 g5@2 ~@6 g5@9 ~ g5@2 ~@7 g5@5 ~ g5@3 a5@2 ~]/2", AL: "~@15 g5@2 ~ g#5@2 ~ a5@2 ~",
  AM: "[g#4@8 ~@2 a4@8 a#4@8 ~ b4@8 ~ c5@3 ~@3 c#5@3 ~@2 d5@8 ~@2 d#5@8 ~ e5@8 ~ f5@8 ~ f#5@4 ~@2 g5@3 ~@3]/4",
  AN: "[g#5@3 a5@4 ~@3 d5@2 f5@3 f#5@2 ~ d5@4 b4@6 c5@2 ~ g4 [d4,e4,f#4] ~@15, ~@15 a4 ~@8]/2", // D
  AO: "[~@22 a4@4 ~ c5@5 ~ d#5@5 ~ f#5@4 ~@2 a5@2 a#5@4 b5@74 ~@7 b5@4 ~@8]/6",
})).s("gm_brass_section").gain(0.7)

// other · trumpet
const trumpet = note(`<
  ~@4 A B C B D E C B ~@3 F G H ~@2 I H ~@2 J K L ~@7 M@2 ~@7 N O P@3 Q R@3 S T ~@3 U V ~ W X@2 Y@2 Z ~@4 AA AB@2 ~ AC
  AD@2 AE AF@2 AG@2 AH@3 ~ AI ~@2 AJ@2 AK@2 AL@2 AM@2 AN AO@5
>`.pickRestart({
  A: "g5@14 f5@2 e5@2 d5@2 ~ a4@2 ~, ~@10 b4 ~", B: "g4@3 ~", C: "g5@7 f5 e5 d5 b4 a4", D: "g5@7 e5 d5 a#4 g4 e4",
  E: "c4@3 ~", F: "~@11 a#4", G: "b4@2 d5 b4@2 g4@5 ~@2", H: "~@2 d#4 e4@2 g4 a#4@3 a4@2 g4",
// … 182 more lines

More by Miller