Strudelify

Entry March of the Boyares

Johann Halverson

KeyG minorTempo110 bpm
0:00/0:00
// Entry March of the Boyares — Johann Halverson
// 110 bpm, 2/4, key G minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5842303; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 307 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(110/2)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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.

// other · alto sax · "Alto Saxophone"
const alto_sax = note(`<
  ~@2 A@3 B C@3 B D@2 E@2 F@2 E@2 G@3 B H@3 B I@2 E@2 F@2 J K L@8 M N@3 O@2 P@2 Q@2 R@5 ~ S@8 T@7 U@3 ~@2 V W X Y Z@5
  AA@6 X Y Z@5 AB@3 AC@8 AD@3 AE AF AG AH@8 AI AJ AK AL AM AN@4 AO AP ~ AQ AR AS AT AU AV AW AX AQ AR AS AY AZ BA AZ
  BB@6 ~ BC ~@2 BD BE BF@3 BE BG@3 BH@2 BI@2 BH@2 BJ BK BE BL@3 BE BM@3 BH@2 BI@2 BN@7 BO BP BQ BR BS BP BQ BR BT BU BV
  BU BW BU BV BX BY BZ CA ~ CB@3 CC CD CE@2 CC CF CG@6 CH@2 ~@3 CI CJ CK CL CM@2 CN CO CP CQ@3 CR CD CS CT CU@2 CV CW
  CX@2 CY CZ DA DB DC DD@3 DE@2 DF@2 DG DH@2 DI DJ DK DL DM DN DO DP ~ DQ DR DH DR DG DS DQ CZ DQ DR DH DT DG DT DG DU
  DV DW@2 DX DY ~ DZ
>`.pickRestart({
  A: "[~@7 d4@2 g4@2 ~@2 g4 ~ d4@2 f4@2 ~@2 f4 ~ bb3@2 d4@2 ~@2 d4 ~ g3@2 bb3@2 ~@2 bb3 ~ eb3@2 d3@2 eb3@2 e3 ~ f3]/3",
  B: "~ gb3@2 g3@2 ab3 ~ bb3 ~ a3 bb3 a3 bb3 a3 bb3 a3",
  C: "[bb3 ab3 a3 d4@2 ~@2 d4@2 g4@2 ~@2 g4 ~ d4@2 f4@2 ~@2 f4 ~ bb3@2 d4@2 ~@2 d4 ~ g3@2 bb3@2 ~@2 bb3 ~ eb3@2 d3@2 eb3@2 e3 ~ f3]/3",
  D: "[bb3 g3 a3 g3@2 ~@4 a3@2 ~@2 a3@2 d3@2 d4@4 d4 ~ c4@2 bb3@2 a3@2 g3 ~ gb3]/2",
  E: "[~ g3@2 bb3@2 a3 ~ g3 ~ a3@2 ~@2 a3@2 d3@2 d4@4 d4 ~ c4@2 bb3@2 a3@2 g3 ~ gb3]/2",
  F: "[~ g3@6 bb3@2 a3@2 ~@2 a3@2 d3@2 d4@4 d4 ~ c4@2 bb3@2 a3@2 g3 ~ gb3]/2",
  G: "[~ g3@4 d4 ~ e4 gb4 g4@2 ~@2 g4 ~ d4@2 f4@2 ~@2 f4 ~ bb3@2 d4@2 ~@2 d4 ~ g3@2 bb3@2 ~@2 bb3 ~ eb3@2 d3@2 eb3@2 e3 ~ f3]/3",
  H: "[bb3 ab3 a3 d4@2 d4 ~ e4 gb4 g4@2 ~@2 g4 ~ d4@2 f4@2 ~@2 f4 ~ bb3@2 d4@2 ~@2 d4 ~ g3@2 bb3@2 ~@2 bb3 ~ eb3@2 d3@2 eb3@2 e3 ~ f3]/3",
  I: "[bb3 g3 a3 g3@2 ~@2 bb3@2 a3@2 ~@2 a3@2 d3@2 d4@4 d4 ~ c4@2 bb3@2 a3@2 g3 ~ gb3]/2",
  J: "~ g3@2 bb3@2 a3 ~ g3 ~ eb5@7", K: "~ d5@8 eb5@4 eb5@3",
  L: "[~ d5@8 c5@2 eb5@2 d5@2 c5@2 bb4@2 d5@2 c5@2 bb4@2 a4@2 c5@2 bb4@2 a4@2 g4@2 bb4@2 a4@2 g4@2 f4@2 a4@2 g4@2 f4@2 eb4@2 g4@2 f4@2 eb4@2 d5@6 d4@6 e4@7 gb4@9 g4@8 f4@8 d4@8 bb3@8 bb3@11]/8",
  M: "~ g3@4 gb3@11", N: "[~ d4@4 g4@8 f4@8 d4@8 bb3@8 bb3@11]/3",
  O: "[~ g3@4 d4@6 c4@2 bb3@6 bb3@2 a3@2 ~@2 a3@2 d3@2 d4@3]/2",
  P: "[~ d4@2 c4@2 bb3@2 a3@2 g3 ~ gb3 ~ g3@2 bb3@2 a3 ~ g3 ~ a3@2 ~@2 a3@2 d3@2 d4@3]/2",
  Q: "[~ d4@2 c4@2 bb3@2 a3@2 g3 ~ gb3 ~ g3@6 bb3@2 a3@2 ~@2 a3@2 d3@2 d4@3]/2",
  R: "[~ d4@2 c4@2 bb3@2 a3@2 g3 ~ gb3 ~ g3@2 bb3@2 a3 ~ g3 ~ eb4@6 g4@2 d4@6 a4@2 eb4@2 g4@2 eb4 ~ g4 ~ d4@6 a4@2 eb4@6 g4@2 d4@2 bb3@2 d4@2 g4@2 a4@2 bb4@2 c5@2 d5@2 d5 ~@2]/5",
  S: "[~@5 b3@48 b3@16 c4@16 b3@32 b3@11]/8", T: "[~@5 c4@8 b3@8 d4@32 d4@32 d4@27]/7", U: "[~@5 d4@28 ~@15]/3",
  V: "~@13 f4@3", W: "~ bb4!3 ~ eb5@11", X: "~ bb4!3 ~ d5@11", Y: "~ bb4!3 ~ c5@2 d5@3 bb4@3 c5@2 ~",
  Z: "[~ d5@2 ~@2 c5@2 d5@3 bb4@3 c5@24 ab4@2 bb4@3 c5@3 d5@8 g4@2 ab4@3 bb4@3 c5@8 f4@2 g4@3 ab4@3 bb4@3]/5",
  AA: "[~ ab4@4 g4@2 ab4@3 gb4@3 g4@26 ab4@3 g4@3 f4@2 eb4@3 d4@3 c4@2 d4@3 b3@3 c4@20 bb4!3 ~ eb5@11]/6",
  AB: "[~ ab4@4 g4@2 ab4@3 gb4@3 g4@26 ab4@3 g4@3 f4@2 eb4]/3",
  AC: "[~@2 d4@3 c4@2 d4@3 b3@3 c4@8 c4@16 eb4@16 [d4,eb4] d4 b3 ~@2 d4 ~@2 eb4@6 eb4@2 d4@30 eb4@2 gb4@16 [f4,gb4] f4 d4 ~@2 f4 ~@2 gb4@3]/8", // Ebmaj7 Gbmaj7
  AD: "[~@3 gb4@2 f4@32 db4 ~ ab3 ~@2 db4 ~@2 f4 ~ db4]/3", AE: "~@2 f4 ~@2 g4@4 ~@7",
  AF: "~@5 c4 ~ a3 ~@2 c4 ~@2 f4 ~ c4", AG: "~@2 f4 ~@2 a4@4 ~@7",
  AH: "[~@5 f4@2 f4@3 f4@3 f4@2 f4@3 f4@3 f4@16 f4@16 f4@16 a4@2 a4@3 a4@3 a4@2 a4@3 a4@3 a4@2 a4@3 a4@3 a4@2 a4@3 a4@3 ab4@2 ab4@3 ab4@3 ab4@2 ab4@3 ab4@3 ab4@2 ab4@3 ab4@3 ab4@2 ab4]/8",
  AI: "~@2 ab4@3 ~@4 g4@4 ~@3", AJ: "~ g4@4 ~@4 eb4@4 ~@3", AK: "~ eb4@4 ~@4 eb4@4 ~@3", AL: "~ eb4@4 ~@8 g4 ab4 bb4",
  AM: "c5 d5 eb5 ~ f5 g5 f5 eb5 d5 c5 bb4 ~ ab4 g4 ab4 g4",
  AN: "[ab4 g4 ab4 g4 ab4 ~@8 d5@2 eb5@3 f5@3 g5 ab5 g5 ab5 g5@4 c5@2 d5@3 eb5@3 f5 g5 f5 g5 f5@4 d5@2 eb5@3 f5@3 g5@4 ~@4 g4 a4 b4]/4",
  AO: "~ c5 d5 eb5 ~ f5 eb5 d5 ~ c5 b4 a4 ~ g4 a4 g4", AP: "a4 g4 a4 g4 a4 gb4 g4@3 ~@7", AQ: "~@9 bb4@4 ~@3",
  AR: "~ bb4@4 ~@4 ab4@4 ~@3", AS: "~ ab4@4 ~@4 eb4@4 ~@3", AT: "~ eb4@4 ~@4 ab4@4 ~@3", AU: "~ ab4@4 ~@4 g4@4 ~@3",
  AV: "~ g4@4 ~@4 a4@4 ~@3", AW: "~ a4@4 ~@4 bb4@4 ~@3", AX: "~ bb4@4 g4@4 ~@7", AY: "~ eb4@4 ~@4 b4@4 ~@3",
  AZ: "~ b4@4 ~@4 g4@4 ~@3", BA: "~ g4@4 ~@4 b4@4 ~@3",
  BB: "[~ g4@4 ~@4 eb4@2 eb4@2 ab4@8 ~@4 eb4@2 eb4@2 g4@8 ~@4 c5@2 c5@2 eb5@24 g4@2 f4@2 g4@2 ab4@2 a4@2 bb4@2 c5@2 d5@2 eb5@2 bb4@2 c5@2 d5@2 eb5@2 ~]/6",
  BC: "~@13 g4@3", BD: "~@3 d4@2 g4@2 ~@2 g4 ~ d4@2 f4@2 ~", BE: "~ f4 ~ bb3@2 d4@2 ~@2 d4 ~ g3@2 bb3@2 ~",
  BF: "[~ bb3 ~ eb3@2 d3@2 eb3@2 e3 ~ f3 ~ gb3@2 g3@2 ab3 ~ bb3 ~ a3 bb3 a3 bb3 a3 bb3 a3 bb3 ab3 a3 d4@2 ~@2 d4@2 g4@2 ~@2 g4 ~ d4@2 f4@2 ~]/3",
  BG: "[~ bb3 ~ eb3@2 d3@2 eb3@2 e3 ~ f3 ~ gb3@2 g3@2 ab3 ~ bb3 ~ a3 bb3 a3 bb3 a3 bb3 a3 bb3 g3 a3 g3@2 ~@4 a3@2 ~@2 a3@2 d3@2 d4@3]/3",
  BH: "[~ d4 ~ c4@2 bb3@2 a3@2 g3 ~ gb3 ~ g3@2 bb3@2 a3 ~ g3 ~ a3@2 ~@2 a3@2 d3@2 d4@3]/2",
  BI: "[~ d4 ~ c4@2 bb3@2 a3@2 g3 ~ gb3 ~ g3@6 bb3@2 a3@2 ~@2 a3@2 d3@2 d4@3]/2",
  BJ: "~ d4 ~ c4@2 bb3@2 a3@2 g3 ~ gb3 ~ g3@3", BK: "~ d4 e4 gb4 ~ g4@2 ~@2 g4 ~ d4@2 f4@2 ~",
  BL: "[~ bb3 ~ eb3@2 d3@2 eb3@2 e3 ~ f3 ~ gb3@2 g3@2 ab3 ~ bb3 ~ a3 bb3 a3 bb3 a3 bb3 a3 bb3 ab3 a3 d4@2 d4 e4 gb4 ~ g4@2 ~@2 g4 ~ d4@2 f4@2 ~]/3",
  BM: "[~ bb3 ~ eb3@2 d3@2 eb3@2 e3 ~ f3 ~ gb3@2 g3@2 ab3 ~ bb3 ~ a3 bb3 a3 bb3 a3 bb3 a3 bb3 g3 a3 g3@2 ~@2 bb3@2 a3@2 ~@2 a3@2 d3@2 d4@3]/3",
  BN: "[~ d4 ~ c4@2 bb3@2 a3@2 g3 ~ gb3 ~ g3@2 bb3@2 a3 ~ g3 ~ eb5@8 d5@8 eb5@4 eb5@4 d5@8 c5@2 eb5@2 d5@2 c5@2 bb4@2 d5@2 c5@2 bb4@2 a4@2 c5@2 bb4@2 a4@2 g4@2 bb4@2 a4@2 g4@2 f4@2 a4@2 g4@2 f4@2 eb4@2 g4@2 f4@2 eb4@2 d5@6 d4@5]/7",
  BO: "e4@7 gb4@9", BP: "g4 f4", BQ: "d4 bb3", BR: "bb3@3 g3", BS: "gb3@3 d4", BT: "d4@3 c4 bb3@3 bb3",
  BU: "a3 ~ a3 d3 d4@2 d4 c4", BV: "bb3@2 a3@2 g3 ~ gb3 ~ g3@2 bb3@2 a3 ~ g3 ~", BW: "bb3@2 a3@2 g3 ~ gb3 ~ g3@6 bb3@2",
  BX: "eb4@3 g4 d4@3 a4", BY: "eb4@2 g4@2 eb4 ~ g4 ~ d4@6 a4@2", BZ: "eb4@3 g4 d4 bb3 d4 g4",
  CA: "a4@2 bb4@2 c5@2 d5@2 d5 ~@7", CB: "b3/3", CC: "b3", CD: "c4", CE: "b3/2", CF: "c4 b3", CG: "d4/2",
  CH: "[d4@7 ~]/2", CI: "~@8 f4@4 bb4!2 ~ bb4", CJ: "eb5@12 bb4!2 ~ bb4", CK: "d5@12 bb4!2 ~ bb4",
  CL: "c5@3 d5@2 bb4@3 c5@2 ~@2 d5@2 ~@2", CM: "[c5@3 d5@2 bb4@3 c5@24]/2", CN: "ab4@3 bb4@2 c5@3 d5@8",
  CO: "g4@3 ab4@2 bb4@3 c5@8", CP: "f4@3 g4@2 ab4@3 bb4@4 ab4@4",
  CQ: "[g4@3 ab4@2 gb4@3 g4@27 ab4@2 g4@3 f4@3 eb4@2 d4@3]/3", CR: "c4@3 d4@2 b3@3 c4@8", CS: "eb4",
  CT: "d4 [d4,eb4] ~ b3 ~ d4 ~@2 eb4@6 eb4@2", CU: "[d4@15 eb4]/2", CV: "gb4",
  CW: "f4 [f4,gb4] ~ d4 ~ f4 ~@2 gb4@6 gb4@2", CX: "f4/2", CY: "db4 ~@2 ab3 ~ db4 ~@2 f4 ~@2 db4 ~ f4 ~@2",
  CZ: "g4 ~@3", DA: "c4 ~@2 a3 ~ c4 ~@2 f4 ~@2 c4 ~ f4 ~@2", DB: "a4 ~@3", DC: "f4@3 f4@2 f4@3 f4@3 f4@2 f4@3",
  DD: "f4", DE: "a4@3 a4@2 a4@3 a4@3 a4@2 a4@3", DF: "ab4@3 ab4@2 ab4@3 ab4@3 ab4@2 ab4@3", DG: "~ g4 ~ g4",
  DH: "~ eb4 ~ eb4", DI: "~@8 g4 ab4 bb4 c5 ~ d5 eb5 f5", DJ: "g5 f5 eb5 d5 ~ c5 bb4 ab4 g4 ab4 g4 ab4 g4 ab4 g4 ab4",
  DK: "~@8 d5@3 eb5@2 f5@3", DL: "g5 ab5 g5 ab5 g5@4 c5@3 d5@2 eb5@3", DM: "f5 g5 f5 g5 f5@4 d5@3 eb5@2 f5@3",
  DN: "g5@4 ~@4 g4 a4 ~ b4 c5 d5 ~ eb5", DO: "f5 eb5 ~ d5 c5 b4 ~ a4 g4 a4 g4 a4 g4 a4 g4 a4", DP: "gb4 g4@3 ~@12",
  DQ: "~ bb4 ~ bb4", DR: "~ ab4 ~ ab4", DS: "~ a4 ~ a4", DT: "~ b4 ~ b4", DU: "~@2 eb4!2 ab4@4", DV: "~@2 eb4!2 g4@4",
  DW: "[~@2 c5!2 eb5@12]/2", DX: "g4 f4 g4 ab4 a4 bb4 c5 d5", DY: "eb5 bb4 c5 d5 eb5 ~@3", DZ: "~@2 g4 ~",
})).s("gm_alto_sax").gain(0.4)

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

// other · tenor sax · "Tenor Saxophone" · soft notes
const tenor_sax_soft = note(`<
  ~@57 A B@4 C D B@2 E F G D B C G D B ~@38 H@5 ~@99 I J@4 K J@3 L K@2 J@2 K@2 J M ~@25 N O N O ~@43
>`.pickRestart({
  A: "~@9 b3@2 ~@2 g3@2 ~", B: "~ b3@2 ~@2 g3@2 ~@2 b3@2 ~@2 g3@2 ~", C: "~ b3@2 ~@2 g3@2 ~@2 c4@2 ~@2 g3@2 ~",
  D: "~ c4@2 ~@2 g3@2 ~@2 b3@2 ~@2 g3@2 ~", E: "~ b3@2 ~@2 g3@2 ~@2 a3@2 ~@2 g3@2 ~",
  F: "~ g3@2 ~@2 g3@2 ~@2 c4@2 ~@2 g3@2 ~", G: "~ c4@2 ~@2 g3@2 ~@2 c4@2 ~@2 g3@2 ~",
  H: "[~@5 f4@16 e4@8 f4@8 f4@16 e4@8 f4@8 ~@11]/5", I: "~@2 b3 ~ g3 ~ b3 ~", J: "g3 ~ b3 ~ g3 ~ b3 ~",
  K: "g3 ~ c4 ~ g3 ~ c4 ~", L: "g3 ~ a3 ~ g3 ~ g3 ~", M: "g3 ~ b3 ~ g3 ~@3", N: "f4", O: "e4 f4",
})).s("gm_tenor_sax").gain(0.2)

// other · baritone sax · "Baritone Saxophone"
const baritone_sax = note(`<
  A B ~@16 A C@13 D E F@6 G@13 H@3 I J ~@20 K L@4 M K L K N O P Q R L@4 M K L K N O P Q R S T U@2 M V W@2 X@2 R@2 M V@3
  Y@5 Z AA@3 AB AC AD AE AF AG AH AI AD AJ AK AL AM AN AO AI AD AJ AP AQ AP AQ AR@5 AS ~ AT AU ~@17 AU G@13 AV@6 AW
  AX@14 AY@2 AZ BA BB ~@20 BC BD@4 BE BC BD BC BF BG BH BI BJ BK BL BM@2 BE BN BO@2 BP@2 BJ@2 BE BN@3 BQ@2 BR BS BT BU@4
  BV BW BX BY BZ BY CA BU BX CB CC@2 CD CE CF BU BX CB CG CB CG CB CH@4 CI CJ ~ CK
>`.pickRestart({
  A: "~@9 g2@2 ~@2 d3@2 ~", B: "~ g2@2 ~@13", C: "~ g2@2 ~@2 d3@2 ~@2 g2@2 ~@2 d3@2 ~",
  D: "~ g2@2 ~@2 d3@2 ~@2 c3@2 eb3@2 d3 ~ c3", E: "~ d3@2 gb3@2 e3 ~ d3 ~ c3@2 eb3@2 d3 ~ c3",
  F: "[~ d3@2 gb3@2 e3 ~ d3 ~ c4@2 eb4@2 d4@2 c4@2 bb3@2 d4@2 c4@2 bb3@2 a3@2 c4@2 bb3@2 a3@2 g3@2 bb3@2 a3@2 g3@2 f3@2 a3@2 g3@2 f3@2 eb3@2 g3@2 f3@2 eb3@2 d3@6 c3@6 bb2@7 a2@9 g2@2 ~@2 d3@2 ~@2 g2@2 ~]/6",
  G: "~ d3@2 ~@2 g2@2 ~@2 d3@2 ~@2 g2@2 ~",
  H: "[~ d3@2 ~@2 c3@2 eb3@2 d3@2 c3@2 d3@2 gb3@2 e3@2 d3@2 c3@2 eb3@2 d3@2 c3@2 d3@2 gb3@2 e3@2 d3@2 c3@2 eb3@2 d3@2 c3@2 bb2@3]/3",
  I: "~ c3@4 d3@2 ~@2 d3@2 ~@2 g2 ~@2", J: "~@5 g2@2 ~@9", K: "~@13 bb2@3", L: "~@13 eb3@3", M: "~@5 eb3@4 ~@4 eb3@3",
  N: "~@13 g2@3", O: "~@5 g2@4 ~@4 g2@3", P: "~@5 g2@4 ~@7", Q: "~@13 c3@3", R: "~@5 c3@4 ~@4 c3@3",
  S: "~@5 b2@4 ~@4 b2@3", T: "~@5 bb2@4 ~@4 b2@3", U: "~@5 bb2@4 ~@4 bb2@3", V: "~@5 d3@4 ~@4 eb3@3",
  W: "~@5 d3@4 ~@4 d3@3", X: "~@5 db3@4 ~@4 db3@3",
  Y: "[~@5 f2@8 f2@8 f2@8 f2@8 bb2@8 bb2@8 bb2@2 a2@3 ab2@3 g2@2 gb2@3 f2@3 eb2@4 eb3@4 bb2@3]/5",
  Z: "~ eb3@4 eb3@4 g3@4 bb2@3", AA: "~ g3@4 eb3@4 g3@4 bb2@3", AB: "~ g3@4 f3@4 ab3@4 bb2@3",
  AC: "~ ab3@4 eb3@4 g3@4 ab2@3", AD: "~ g3@4 d3@4 f3@4 bb2@3", AE: "~ f3@4 b2@4 g3@4 g2@3",
  AF: "~ g3@4 a2@4 g3@4 bb2@3", AG: "~ g3@4 b2@4 g3@4 g2@3", AH: "~ g3@4 c3@4 ~@7", AI: "~@5 eb3@4 g3@4 bb2@3",
  AJ: "~ f3@4 eb2@4 bb2@4 g2@3", AK: "~ bb2@4 ab2@4 c3@4 ab2@3", AL: "~ c3@4 ab2@4 c3@4 ab2@3",
  AM: "~ c3@4 a2@4 c3@4 a2@3", AN: "~ c3@4 bb3@4 d3@4 bb2@3", AO: "~ d3@4 eb3@4 ~@7", AP: "~ bb2@4 ab2@4 eb3@4 b2@3",
  AQ: "~ eb3@4 eb2@4 bb2@4 g2@3", AR: "[~ bb2@4 c3@4 ~@4 ab2@12 ~@4 ab2@12 ~@4 ab2@12 ~@4 a2@8 bb2@4 f3@4 bb2@3]/5",
  AS: "~ f3@4 eb2@8 eb2@3", AT: "~@13 eb2@3", AU: "~@5 g2@2 ~@2 d3@2 ~@2 g2@2 ~",
  AV: "[~ d3@2 ~@2 c3@2 eb3@2 d3 ~ c3 ~ d3@2 gb3@2 e3 ~ d3 ~ c3@2 eb3@2 d3 ~ c3 ~ d3@2 gb3@2 e3 ~ d3 ~ c4@2 eb4@2 d4@2 c4@2 bb3@2 d4@2 c4@2 bb3@2 a3@2 c4@2 bb3@2 a3@2 g3@2 bb3@2 a3@2 g3@2 f3@2 a3@2 g3@2 f3@2 eb3@2 g3@2 f3@2 eb3@2 d3@6 c3@5]/6",
  AW: "bb2@7 a2@9", AX: "g2 ~ d3 ~ g2 ~ d3 ~", AY: "c3 eb3 d3 c3 d3 gb3 e3 d3", AZ: "c3 eb3 d3 c3 bb2@2 c3@2",
  BA: "d3@2 ~@2 d3@2 ~@2 g2 ~@7", BB: "g2 ~@7", BC: "~@2 bb2 ~", BD: "~@2 eb3 ~", BE: "eb3 ~ eb3 ~", BF: "~@2 g2 ~",
  BG: "g2 ~ g2 ~", BH: "g2 ~@3", BI: "~@2 c3 ~", BJ: "c3 ~ c3 ~", BK: "b2 ~ b2 ~", BL: "bb2 ~ b2 ~", BM: "bb2 ~ bb2 ~",
  BN: "d3 ~ eb3 ~", BO: "d3 ~ d3 ~", BP: "db3 ~ db3 ~", BQ: "f2!2", BR: "bb2!2", BS: "bb2@3 a2@2 ab2@3 g2@3 gb2@2 f2@3",
  BT: "eb2 eb3 bb2 eb3", BU: "eb3 g3 bb2 g3", BV: "f3 ab3 bb2 ab3", BW: "eb3 g3 ab2 g3", BX: "d3 f3 bb2 f3",
  BY: "b2 g3 g2 g3", BZ: "a2 g3 bb2 g3", CA: "c3 ~@3", CB: "eb2 bb2 g2 bb2", CC: "ab2 c3 ab2 c3", CD: "a2 c3 a2 c3",
  CE: "bb3 d3 bb2 d3", CF: "eb3 ~@3", CG: "ab2 eb3 b2 eb3", CH: "[c3 ~ ab2@3 ~ ab2@3 ~ ab2@3 ~ a2@2]/4",
  CI: "bb2 f3 bb2 f3", CJ: "eb2@2 eb2 ~", CK: "~@2 eb2 ~",
})).s("gm_baritone_sax").gain(0.4)

// other · baritone sax · "Baritone Saxophone" · soft notes
const baritone_sax_soft = note("<~ A B@16 C ~@38 D E@17 ~@86 E@17 F ~@38 G H@16 I ~@72>".pickRestart({
  A: "~@5 d3@2 ~@2 g2@2 ~@2 d3@2 ~", B: "~ g2@2 ~@2 d3@2 ~@2 g2@2 ~@2 d3@2 ~", C: "~ g2@2 ~@2 d3@2 ~@9",
  D: "~@9 d3@2 ~@2 g2@2 ~", E: "~ d3@2 ~@2 g2@2 ~@2 d3@2 ~@2 g2@2 ~", F: "~ d3@2 ~@13", G: "~@2 d3 ~ g2 ~ d3 ~",
  H: "g2 ~ d3 ~ g2 ~ d3 ~", I: "g2 ~ d3 ~ g2 ~@3",
})).s("gm_baritone_sax").gain(0.2)

stack(alto_sax, tenor_sax, tenor_sax_soft, baritone_sax, baritone_sax_soft)