Strudelify

Professor Layton

Elysium Barnett

KeyD♭ majorTempo190 bpm
0:00/0:00
// Professor Layton — Elysium Barnett
// 190 bpm, 4/4, key Db major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (4/4 at bar 1, 3/4 at bar 20, 4/4 at bar 92, 2/4 at bar 224) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/2700396; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 227 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(190/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [...]/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 · trumpet · "B♭ Trumpet"
const trumpet = note(`<
  ~ A B@4 ~ C@7 D@3 E F@5 G@7 H I@3 J@2 K@5 ~ L M@4 ~@3 N O@6 P Q ~@14 R@2 S@5 T@3 U@2 V@6 ~@2 W X Y Z AA@2 AB ~ W X Y
  AC AD AB AE@2 AF AG AH AI AJ AK AL@2 AF AG AH AM AN AO AP ~@4 AQ AR AS ~ AQ AT ~@4 AU AV ~@9 AW AX AW AX AW AY AW AZ
  ~@8 BA BB BC BD BE BF BG@4 W BH BI BJ@2 BK BL@3 ~ BM@2 BN@4 BO@4 BP@8 BQ@3 BR@8 BS@5 BT@8
>`.pickRestart({
  A: "~@3 bb3@13", B: "[eb4@13 f4@12 gb4@32 ~@7]/4", C: "[~@9 f4@12 eb4@13 d4@13 eb4@12 db4@13 c4@13 db4@13 ~@14]/7",
  D: "[~@11 f4@12 gb4@13 ab4@12]/3", E: "~ eb4@13 ~@2",
  F: "[~@4 f5@6 bb4@13 db5@6 a5@6 ab5@6 ~ gb5@13 ~@6 d5@13 ~@3 db5@3]/5",
  G: "[db5@12 db5@6 ~ d5@6 a5@6 b5@6 ~ ab5@19 gb5@6 e5@6 d5@6 ~ db5@19 db5@6 a5@6 ab5@5]/7", H: "~ b5@6 a5",
  I: "[~@2 ab5@3 e5@12 d5@6 ~ db5@13 ~@11]/3", J: "[~@7 a5@3 ~ b5@3 ab5@13 ~@5]/2",
  K: "[~ gb4@6 ab4@6 a4@6 ~ db5@16 gb5@3 db6@16 d6@3 b5@13 ~@9]/5", L: "~@12 gb4@3 ~",
  M: "[ab4@3 a4@19 ab4@12 ab4@6 ~ gb4@19 ~@4]/4", N: "eb4@11 eb4@3 ab4@2",
  O: "[~ eb4@11 eb4@3 ab4@3 b4@23 db5@6 b4@6 bb4@35 ~@5 eb4@3]/6", P: "~@3 eb4@3 ab4@3 ~@5 eb4@2",
  Q: "~@4 eb4@3 eb5@3 ~@6", R: "[eb4@6 eb4@3 bb4@3 ab4@3 bb4@2 b4@3 bb4@3 b4@3 db5@3 eb5@3]/2",
  S: "[~ eb5 db5 b4@3 db5@2 b4@3 bb4@3 ab4@35 ab4@3 bb4@2 b4@3 bb4@3 b4@3 gb5@3 eb5@4 eb5 db5 b4@3 db5@3 bb4@2]/5",
  T: "[b4@3 ab4@35 ab4@10]/3", U: "[~ ab4@6 ab4@6 gb5@6 eb5@5 db5@6 eb5@2]/2",
  V: "[~@7 bb4@3 gb4@17 e4@11 e4@6 e4@6 b4@6 a4@5 gb4@17 ~ bb4@17]/6", W: "db5", X: "d5", Y: "e5",
  Z: "~@2 e5@3 d5 db5 a4", AA: "gb4@7 e4", AB: "gb4", AC: "~@2 e5@3 d5 db5 c5", AD: "b4@7 a4", AE: "[e4@3 ~]/2",
  AF: "db5@3 db5@5", AG: "~@4 db5 d5 ~ e5 gb5@2 e5@2 d5@2 db5@2", AH: "db5@3 d5@5",
  AI: "~@4 gb4 b4 ~ db5 d5@2 e5@2 d5@2 db5@2", AJ: "b4@3 gb4@5", AK: "~@4 gb4 g4 ~ a4 b4@2 a4@2 g4@2 gb4@2",
  AL: "[e4@3 a4@3 gb4@4 ~ b3 db4 d4 gb4 b4]/2", AM: "~@4 b4 db5 ~ d5 e5@2 d5@2 db5@2 a4@2", AN: "a4@3 b4@3 b4@2",
  AO: "gb4 ~@3 gb4@4 db5@4 d5@4", AP: "db5@3 b4@5", AQ: "~@4 d5 db5 b4 a4", AR: "db5 ~ db5 ~ db5@2 ~@2",
  AS: "b4 ~ b4 ~ b4@2 ~@2", AT: "b4 ~ b4 ~ g4 b4 g4 b4", AU: "~ f5 e5 d5 e5 d5 db5 d5", AV: "db5@3 d4@5",
  AW: "~@2 b4@2 b4!2 ~@2", AX: "b4 ~ b4 ~", AY: "bb4 ~ bb4 ~", AZ: "db5!2", BA: "~@8 gb5@3 ~@2 e5@3",
  BB: "gb5@3 e5@3 ~@2 d5@3 e5@2 d5@3", BC: "~@3 db5@3 ~@2 gb4@3 ~@3 b4@2", BD: "db5@3 d5@3 ~@3 db5@2 d5@3 e5@2",
  BE: "~@3 d5@3 e5@3 d5@3 ~@2 db5@2", BF: "~@4 gb4@3 ~@2 b4@5 ~@2",
  BG: "[~@4 d5@5 db5@11 e5@11 d5@3 ~@3 d5@5 b4@5 gb5@5 ~ db5@11]/4", BH: "bb4@5 db5@4 f5@5 bb4@2",
  BI: "~ db5@2 f5@2 db5@2 ~ bb4@2 db5@2 f5@4", BJ: "[~ ab5@5 g5@9 eb5@5 g5@5 f5@2 db5@2 ~ bb4@2]/2",
  BK: "db5@2 f5@2 ~ db5@2 bb4@2 ~ db5@2 bb4@2 db5@2", BL: "[~ f5@2 ab5@2 g5@5 eb5@5 gb5@5 db5@2 gb5@2 f5@17 ~@7]/3",
  BM: "[~ eb5@3 b4@3 gb4@3 ab4@6]/2", BN: "[b4@17 bb4@6 b4@6 db5@6 eb5@23 b4@3 db5@3]/4",
  BO: "[eb5@6 b4@6 gb4@6 ab4@11 b4@18 e5@6 eb5@5 db5@6]/4",
  BP: "[b4@18 ~@9 db5@3 eb5@5 b4@6 gb4@6 e4@12 b4@11 bb4@6 bb4@6 b4@3 db5@6 eb5@3 eb5@23 eb5@3 e5@3 gb5@5]/8",
  BQ: "[~ eb5@6 b4@6 gb4@11 b4@18 bb4@6]/3",
  BR: "[eb5@6 db5@2 b4@3 eb5@12 ~@6 eb5@6 gb5@17 eb5@6 gb5@23 ~ eb5@5 db5@12 gb5@6 eb5@6 eb5@11 eb5@6]/8",
  BS: "[gb5@18 eb5@6 gb5@23 eb5@6 gb5@6 ab5@3 bb5@6 b5@2 b5@6 b4@4]/5",
  BT: "[~@2 bb4@6 eb5@3 db5@3 b4@6 e4@17 b4@3 b4@3 g4@23 gb4@23 ~ gb4@23 ~@15]/8",
})).s("gm_trumpet").gain(0.4)

// other · trumpet · "B♭ Trumpet" · soft notes
const trumpet_soft = note(`<
  ~@13 A@2 ~@32 B C D ~@9 E F G H I J K L M N O P Q@2 ~@61 R S T U ~@24 V W@2 X ~@30 Y ~@30
>`.pickRestart({
  A: "[~ ab4@3 ~ gb4@3 f4@6 eb4@13 ~@5]/2", B: "~@2 eb5@3 ~@2 eb5@3 ~@6", C: "~@3 ab4@3 ~@3 ab4@3 ~@4",
  D: "~@4 ab4@3 ~@3 ab4@3 ~@3", E: "eb4@3 ~@2 eb4@3 ~@8", F: "~ eb4@3 ~@3 eb4@3 ~@6", G: "~@2 e4@3 ~@3 e4@3 ~@5",
  H: "~@3 e4@3 ~@3 e4@3 ~@4", I: "~@5 eb4@3 ~@2 eb4@3 ~@3", J: "~@6 eb4@3 ~@3 eb4@3 ~", K: "~@7 e4@3 ~@3 e4@3",
  L: "~@8 e4@3 ~@3 e4@2", M: "~@10 eb4@3 ~@3", N: "eb4@3 ~@8 eb4@3 ~@2", O: "~ eb4@3 ~@8 e4@3 ~",
  P: "~@2 e4@3 ~@9 e4@2", Q: "[~@3 e4@3 ~@9 eb4@3 ~@3 eb4@3 ~@8]/2", R: "~@4 d5 eb5 e5@2 eb5@2 d5@2 db5@2 a4@2",
  S: "b4 ~ b4 ~", T: "b4@2 ~ bb4 gb4 bb4 ~@2", U: "b4 a5 gb5 d5 g4 a4 ~@2", V: "~@7 b4@3 db5@2 d5@3 ~",
  W: "[~@2 db5@2 d5@3 e5@3 ~@3 d5@2 e5@3 gb5@3 ~@2 g5@3 ~@3 db5@3]/2", X: "~@2 gb5@3 g5@3 ~@8", Y: "~@8 b4@3 ~@5",
})).s("gm_trumpet").gain(0.2)

// other · alto sax · "Alto Saxophone"
const alto_sax = note(`<
  ~ A B@2 C@3 D@8 E@2 F G@3 H@2 I@7 J K@4 L M@2 N@2 O@2 P Q@4 ~@3 R S@3 ~@28 T@2 U@7 V W V W X W V W X W V W X W V W X Y
  ~@7 Z AA AB AC AB AD AE AF AG AH AI AJ AK AL@2 AM AN AO AP AQ AR AS AT AU ~ AV@2 AW@2 AX@2 AY@2 ~@8 AZ BA BB BC BD BE
  BF@2 BG BH BI@2 BJ BK BL@4 BM BN@2 BO@3 BP@3 ~ BQ@6 BR@4 BS@8 BT@3 BU BV@3 ~@17
>`.pickRestart({
  A: "~@3 bb4@13", B: "[eb4@13 bb4@13 ~@6]/2", C: "[~@6 bb4@13 f4@12 bb4@13 ~@4]/3",
  D: "[~@9 bb4@12 eb4@13 bb4@13 eb4@12 bb4@13 c4@13 bb4@12 ab4@3 ~ gb4@3 bb4@6 bb4@13 ~@5]/8",
  E: "[~ bb4@6 bb4@13 ~@6 bb4@6]/2", F: "~ bb4@13 ~@2", G: "[~@4 bb4@6 bb4@13 ab4@6 gb5@6 gb5@6 ~ db5@6]/3",
  H: "[e4@6 e4@3 ~ gb4@3 d4@6 a4@6 b4@6 ~]/2",
  I: "[~@6 e4@6 ab4@6 ~ ab4@6 b4@6 b4@6 ~ b4@6 b4@6 db5@6 ~@7 a4@6 b4@6 ~ db5@6 e5@6 e5@6 ~ db4@6 db5@6 db5@5]/7",
  J: "~ db4@3 db5@3 a4", K: "[~@2 ab4@3 e4@13 ~@3 d4@3 db4@6 e4@6 e4@6 ~ d5@12 b4@6 ~@3]/4",
  L: "~@4 db4@6 db4@3 ~ db4@2", M: "[~ gb4@6 d4@6 d4@6 ~ db4@12]/2", N: "[~@4 gb4@3 d4@6 db5@6 db5@6 ~ e4@6]/2",
  O: "[b4@6 e5@6 ~ b4@6 e5@4 ~@6 ab4@3]/2", P: "gb4@12 gb4@3 ~",
  Q: "[ab4@3 a4@6 gb4@6 gb4@6 ~ ab4@6 b4@6 b4@6 ~ gb4@6 db5@6 b4@6 ~@5]/4", R: "bb4", S: "[~ bb4@17 b4@17 ~@13]/3",
  T: "[~@3 eb4@13]/2", U: "[~@8 eb4@35 b3@34 eb4@17 ~ eb4@17]/7", V: "b3 ~ gb4@2 b4 ~ b3 ~", W: "b3 ~ g4@2 b4 ~ gb4 ~",
  X: "b3 ~ a4@2 b4 ~ b3 ~", Y: "b3 ~ g4@2 b4@4", Z: "~@3 gb4", AA: "b3 gb4 ~ b4", AB: "b4 g4 ~ gb4", AC: "b3 a4 ~ b4",
  AD: "a4@3 b4@3 b4@2", AE: "bb4 ~@3 gb4@4 db4@4 d4@4", AF: "db4@3 b3@5", AG: "~ d5 e5 gb5", AH: "gb5@3 e5@5",
  AI: "a4@3 gb4@3 d4@2", AJ: "db4@3 d4@5", AK: "~@2 b4 db5 d5 eb5 e5 f5", AL: "[gb5@3 e5 ~@2 a4@4 gb4@2 e4 gb4 ~ d4]/2",
  AM: "~ db4 b3@6", AN: "~@2 gb4 g4 a4 b4 db5 d5", AO: "d5@3 db5@3 a4@2", AP: "~@4 a4 bb4 b4@2 bb4@2 a4@2 ab4@2 e4@2",
  AQ: "b4@2 gb4 db5@2 gb4 d5@2", AR: "~ f5 gb5 f5 e5 d5 db5 d5", AS: "~ gb5 d5 b4 e5 ~ gb5@2",
  AT: "~ f5 e5 d5 e5 d5 db5 d5", AU: "db5@3 b4@5", AV: "g4/2", AW: "gb4/2", AX: "b4/2", AY: "a4/2",
  AZ: "b3@5 gb4@3 ~@8", BA: "~@6 b3@5 gb4@3 ~@2", BB: "~ g4@3 ~@2 db4@3 ~@2 b3@5", BC: "~ gb4@3 ~@12",
  BD: "~ b3@5 ~ gb4@3 ~@2 db4@3 ~", BE: "~ gb3@3 ~@3 b3@5 gb4@3 ~", BF: "[~@13 b3@5 gb4@3 ~@2 g4@3 ~@3 db4@3]/2",
  BG: "~@2 b3@5 ~ gb4@3 ~@5", BH: "~@8 b3@5 gb4@3", BI: "[~@3 db4@3 ~@2 gb3@3 ~@3 b3@5 gb4@3 ~@10]/2",
  BJ: "~@3 b3@5 ~ gb4@3 ~@2 db4@2", BK: "~@4 gb3@3 ~@2 b3@5 ~@2",
  BL: "[~@4 b3@3 ~@2 bb3@11 db4@11 b3@3 ~@3 b3@5 b3@5 d4@3 ~@3 g3@11]/4", BM: "gb3",
  BN: "[bb3@5 db4@4 f4@5 bb4@5 a4@9 f4@4]/2", BO: "[~ ab4@5 g4@9 eb4@5 g4@5 f4@19 bb3@2 db4@2]/3",
  BP: "[~ f4@2 ab4@2 g4@5 eb4@5 gb4@5 db4@2 gb4@2 f4@17 ~@7]/3", BQ: "[~@2 b3@18 b3@29 db4@18 eb4@29]/6",
  BR: "[b3@18 b3@29 db4@17]/4",
  BS: "[gb3@18 ~@9 db4@3 gb3@5 b3@6 gb3@6 e3@12 b3@11 bb3@6 bb3@6 b3@3 db4@6 eb4@3 eb4@23 eb4@3 e4@3 gb3@5]/8",
  BT: "[~ eb4@6 b3@6 db4@11 b3@18 e4@6]/3", BU: "eb4@6 db4@2 b3@3 eb4@5", BV: "[~ b3@6 bb3@6 gb3@6 e3@6 b3@12 ~@11]/3",
})).s("gm_alto_sax").gain(0.3)

// other · alto sax · "Alto Saxophone" · soft notes
const alto_sax_soft = note(`<
  ~@47 A B C ~@3 D@4 E F G H I J K L M N O P Q R S@2 T U V W X Y Z AA@2 AB ~@66 AC AD AC AD AC AE AF AG ~@39 AH ~@12 AI
  AJ@8 AK@4 AL@5
>`.pickRestart({
  A: "~@2 b3@3 ~@2 b3@3 ~@6", B: "~@3 b4@3 ~@3 b4@3 ~@4", C: "~@4 b4@3 ~@3 b4@3 ~@3",
  D: "[~@9 eb4@3 ~@3 eb4@3 ~@3 gb4@35 ~@5 b3@3]/4", E: "~@3 b3@3 ~@8 b3@2", F: "~@4 b3@3 ~@9", G: "bb3@3 ~@2 bb3@3 ~@8",
  H: "~ bb3@3 ~@3 bb3@3 ~@6", I: "~@2 b3@3 ~@3 b3@3 ~@5", J: "~@3 b3@3 ~@3 b3@3 ~@4", K: "~@5 bb3@3 ~@2 bb3@3 ~@3",
  L: "~@6 bb3@3 ~@3 bb3@3 ~", M: "~@7 b3@3 ~@3 b3@3", N: "~@8 b3@3 ~@3 b3@2", O: "~@10 bb3@3 ~@3",
  P: "bb3@3 ~@8 bb3@3 ~@2", Q: "~ bb3@3 ~@8 db4@3 ~", R: "~@2 db4@3 ~@9 db4@2",
  S: "[~@3 db4@3 ~@9 bb3@3 ~@3 bb3@3 ~@8]/2", T: "bb3@3 ~@3 bb3@3 ~@7", U: "~ b3@3 ~@3 b3@3 ~@6",
  V: "bb4 ~@2 eb4@3 ~@2 eb4@3 ~@5", W: "~@4 e4@3 ~@3 e4@3 ~@3", X: "~@5 eb4@3 ~@3 eb4@3 ~@2",
  Y: "~@6 eb4@3 ~@3 eb4@3 ~", Z: "~@5 bb4 ~@2 eb4@3 ~@3 eb4@2", AA: "[~@9 e4@3 ~@3 e4@3 ~@8 eb4@3 ~@3]/2",
  AB: "eb4@3 ~@13", AC: "b3@2 g4@2 b3 g4 ~ b3", AD: "b4 b3 b4 b3", AE: "bb4 b3 bb4 b3", AF: "b3@2 g4@2 b3 gb4 ~ b3",
  AG: "gb4!2", AH: "~@8 b3@3 ~@5", AI: "~ e4@3",
  AJ: "[e4@12 e4@11 db4@12 db4@12 b3@11 eb4@12 e4@6 e4@6 e4@6 e4@6 e4@5 e4@6 e4@6 e4@6 db4@6 eb4@5]/8",
  AK: "[~ db4@5 eb4@6 eb4@6 ab4@6 ab4@6 ab4@6 e4@6 e4@5 e4@6 e4@6 e4@5]/4",
  AL: "[~ g4@6 e4@6 g4@5 gb4@6 gb3@6 bb3@6 db4@6 db4@23 ~@15]/5",
})).s("gm_alto_sax").gain(0.2)

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

// other · trombone · soft notes
const trombone_soft = note("<~@108 A B C D C B C D C B C D E F G H ~@103>".pickRestart({
  A: "db3 ~@3 db3@4", B: "~ gb3 ~@2", C: "~ g3 ~ gb3", D: "~ a3 ~@2", E: "~ g3 ~@2", F: "~ gb3 ~ b3",
  G: "bb3 ~ gb3@2 db4@2 d4@2", H: "db4@3 b3@5",
})).s("gm_trombone").gain(0.15)

// bass · tuba
const bass = note(`<
  A@3 B@3 C@7 D@2 ~@3 E@3 F@2 G@7 H@2 I@2 J@2 K@2 L@2 M@2 N@5 O P ~ Q R S T@4 U V W X Y Z@2 AA AB AC AD AE AF AG AH AI
  AJ AK Y AL@2 AM AN AC AO AP@2 AQ@7 AR AS AR AS AR AS AR AS AR AS AR AS AR AS AR AS AT AU AV AW AX AW AV AW AX AW AV AW
  AX AW AY AZ BA ~ BB BC BD BE BB BF BD BE BB BC BG BH BI BH BJ ~ BK@2 BL@2 BM@2 BN@2 BO BP BO BP BQ BP BR BS BT BU BV
  BW BX BY BZ CA CB CC CD CE CF CG@4 CH CI CJ@2 CK@3 CL@3 ~ CM@6 CN@4 BD CO@6 CP@8 CQ@8 CR@4 CS@5
>`.pickRestart({
  A: "[~@7 bb2@41]/3", B: "[~@3 gb2@13]/3", C: "[~@12 bb2@51 ab2@49]/7", D: "[~ eb2@25 ~@6]/2",
  E: "[~@4 f2@6 bb1@13 gb2@6 db3@6 db3@6 ~ db2@6]/3", F: "[db3@6 db3@6 ~ d2@6 gb2@6 gb2@6 ~]/2",
  G: "[db2@6 ab2@6 ab2@6 ~ db2@6 b2@6 b2@6 ~ b1@6 ab2@6 ab2@6 ~ d2@6 gb2@6 gb2@6 ~ db2@6 ab2@6 ab2@6 ~ gb2@6 gb2@6 gb2@5]/7",
  H: "[~@2 db2@6 ab2@6 ab2@6 ~ d2@6 a2@5]/2", I: "[~ a2@6 ~ db2@6 ab2@6 ab2@6 ~ b1@5]/2",
  J: "[~ e2@6 e2@6 ~ db2@6 b2@6 b2@6]/2", K: "[~ d2@6 a2@6 a2@6 ~ db2@6 ab2@6]/2",
  L: "[ab2@6 ~ d2@6 gb2@6 gb2@6 ~ e2@6]/2", M: "[b2@6 b2@6 ~ db2@6 b2@6 b2@6 ~]/2",
  N: "[gb1@6 gb2@6 gb2@6 ~ d2@6 a2@6 a2@6 ~ db2@6 e2@6 e2@6 ~ gb2@6 a2@6 ab2@6 ~ ab2@3 ~]/5", O: "~@13 e2@3",
  P: "~@7 e1", Q: "ab1@3 ~@13", R: "~ ab1@3 ~@12", S: "~@2 ab1@3 ~@11",
  T: "[~@9 ab2@3 ~@3 ab2@3 ~@3 gb1@34 ab2@3 ~@6]/4", U: "~@9 ab2@3 ~@4", V: "~@10 gb2@3 ~@3", W: "~@11 gb2@3 ~@2",
  X: "~@12 e2@3 ~", Y: "~@7 e2", Z: "[~@15 gb2@3 ~@14]/2", AA: "gb2@3 ~@13", AB: "~ e2@3 ~@12", AC: "~@3 e2@3 ~@10",
  AD: "~@4 eb2@3 ~@9", AE: "~@5 gb2@3 ~@8", AF: "~@7 db2@3 ~@6", AG: "~@8 db2@3 ~@5", AH: "~@9 eb2@3 ~@4",
  AI: "~@10 eb2@3 ~@3", AJ: "~@12 ab2@3 ~", AK: "~@13 gb2@3", AL: "[~@15 eb2@6 ~@11]/2", AM: "~ ab2@3 ~@12",
  AN: "~@2 gb2@3 ~@11", AO: "~@5 eb2@6 ~@5", AP: "[~@3 ab2@13]/2", AQ: "[~@8 gb2@35 e2@34 gb2@17 ~ g2@17]/7",
  AR: "b1 ~@5 b1@2", AS: "b1 ~@5 gb2@2", AT: "b1 ~@3 b1 ~@3", AU: "b1 ~@3 b1@4", AV: "b1 gb2 ~ b1", AW: "b1 g2 ~ gb2",
  AX: "b1 a2 ~ b1", AY: "b1 gb2 ~ b2", AZ: "gb2 ~ gb2@2 db2@2 d2@2", BA: "db2@3 b1@5", BB: "g2", BC: "gb2", BD: "b2",
  BE: "b1@3 ~ b1@4", BF: "a2", BG: "b1@2 b1 gb2 b1@2 a1@2", BH: "gb2@2 ~ bb2 gb2 bb2 ~@2", BI: "g2@2 ~ b2 g2 b2 ~@2",
  BJ: "b2@2 b2!2", BK: "g2/2", BL: "gb2/2", BM: "b1/2", BN: "a1/2", BO: "b1@2 g2@2 b1 g2 ~ b1", BP: "gb2 b1 gb2 b1",
  BQ: "b1@2 e2@2 b1 e2 ~ b1", BR: "b1@2 gb2@2 b1 gb2 ~ b1", BS: "db2!2", BT: "~@11 b2@3 ~@2", BU: "bb2@3 ~@13",
  BV: "~ db3@3 ~@2 b2@3 ~@7", BW: "~@6 d3@3 ~@3 db3@3 ~", BX: "~@12 db3@3 ~", BY: "~ b2@3 ~@12",
  BZ: "~@2 b2@3 ~@2 bb2@3 ~@6", CA: "~@7 db3@3 ~@3 b2@3", CB: "~@13 d3@3", CC: "~@3 db3@3 ~@10",
  CD: "~@3 db3@3 ~@2 b2@3 ~@5", CE: "~@9 b2@3 ~@2 bb2@2", CF: "~@7 db3",
  CG: "[~@4 b2@3 ~@2 b1@5 ~ gb2@3 ~@2 gb2@5 e2@11 g2@11 gb2@3 ~@3 b1@5 gb2@3 ~@3]/4", CH: "~@5 e2@11", CI: "db2",
  CJ: "[bb1@5 db2@4 f2@5 bb2@5 a2@9 f2@4]/2", CK: "[~ ab2@5 g2@9 eb2@5 g2@5 f2@19 bb1@2 db2@2]/3",
  CL: "[~ f2@2 ab2@2 g2@5 eb2@5 gb2@5 db2@2 gb2@2 f2@17 ~@7]/3", CM: "[~@2 b2@18 b2@29 db3@18 b2@29]/6",
  CN: "[b2@18 b2@29 db3@17]/4", CO: "[~@14 eb2@17 e2@29 gb2@18 ab2@18]/6",
// … 7 more lines