Strudelify
KeyE♭ majorTempo180 bpm
0:00/0:00
// malaguena — Ernesto Lecuonaarr. Justin Peng
// 180 bpm, 4/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: duplicate parts dropped: ch 15 "Euphonium (Treble Clef)" tuba (copy of ch 14 "Euphonium" tuba)
// note: Transcription provider: pdmx. https://musescore.com/score/5897855; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 127 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(180/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.

// other · flute
const flute = note(`<
  ~ A@3 B@4 ~ C@4 D@2 E@2 ~@3 F@6 G@2 ~@2 H@4 ~@4 I@2 J K L M N@2 O P Q R S T U@2 V W X Y Z V W AA AB AC AD@2 AE ~@3
  AF@2 AG AH AI@2 AJ@2 AK AL@3 AM AN AO ~@6 AP@3 AQ@4 AR@4 AS@4 AT AU AV AW AX ~@10 AY@6
>`.pickRestart({
  A: "[~@4 [g5,g6]@3 ~ [ab5,ab6]@3 ~@2 [bb5,bb6]@21 ~@6 [g5,g6]@3 ~ [ab5,ab6]@3 ~]/3", // G Ab Bb G Ab
  B: "[~ [bb5,bb6]@9 [ab5,ab6]@9 [g5,g6]@34 ~@11]/4", C: "[~@2 ab5@4 bb5@4 ~ c6@4 db6@4 ~ c6@43 ~]/4",
  D: "[~ c6@4 db6@4 ~ c6@4 [g5,g6]@13 ~ [f5,f6]@4]/2", E: "[[g5,g6]@4 ~ [c6,c7]@17 ~ e6@3 ~@6]/2",
  F: "[~@10 e5@2 f5@2 ~ g5@5 e5@2 ~ f5@2 g5@5 f5@5 ~@6 e5@2 f5@2 ~ g5@5 e5@2 f5@2 ~ g5@5 f5@5 e6@29 ~]/6",
  G: "[~ db6@29 ~@2]/2", H: "[[e6,g6]@61 ~@3]/4",
  I: "[[g5,g6]@4 [ab5,ab6]@4 [bb5,bb6]@11 ~ [bb5,bb6]@4 [bb5,bb6]@4 [bb5,bb6]@4]/2", // G Ab Bb
  J: "[bb5,bb6]@4 [ab5,ab6] [g5,g6] [f5,f6] [g5,g6]", K: "[ab5,ab6]@15 ~", L: "~ [f5,f6] [g5,g6] [ab5,ab6]",
  M: "[bb5,bb6]@2 [ab5,ab6] [g5,g6]", N: "[[f5,f6]@6 [e5,e6]@4 [f5,f6]@2 [g5,g6]@19 ~]/2", O: "~ e5@2 g5 f5 g5 ab5 g5",
  P: "bb5@4 db6@6 [f6,g6] f6@2 ~ db6@2, ~@11 eb6 ~@4", Q: "c6 g5 ab5 bb5", R: "[g5,g6]@4 ~ [bb5,bb6]@2 [ab5,ab6]",
  S: "[g5,g6]@2 [bb5,bb6]@3 [f5,f6]@3", T: "[ab5,ab6]@3 [eb5,eb6]@2 [f5,f6] [g5,g6] [f5,f6]",
  U: "[[c5,c6]@8 [bb5,bb6]@23 ~]/2", V: "~ c6 ~ db6 eb6 ~ db6 ~", W: "c6@2 g5 bb5 ab5 g5 ab5@2",
  X: "f5@9 ~ e5@2 f5@2 g5@2", Y: "ab5 g5 ~ bb5@2 ab5 g5 f5", Z: "e6@15 ~", AA: "db6@15 ~",
  AB: "c6 db6 eb6 db6 c6@2 ~@4 g5 bb5 ab5 g5 ab5@2", AC: "~@4 f5 e5 f5 g5 ab5@2 g5@2 f5@2 g5@2",
  AD: "[~@2 c6@2 c6!2 c6@2 db6@2 db6!2 db6@2 eb6@4 db6@2 eb6@4 db6@2 eb6@4 db6@2]/2", AE: "c6@15 ~",
  AF: "[[g5,g6]@3 ~ [ab5,ab6]@3 ~@2 [bb5,bb6]@11 ~@2 [bb5,bb6]@4 ~ [bb5,bb6]@3 [bb5,bb6]@2]/2", // G Ab Bb
  AG: "~@2 [bb5,bb6]@13 ~", AH: "~ [g5,g6]@3 [ab5,ab6]@2 ~@10, [ab5,ab6] ~@7",
  AI: "[~@12 g5@3 ab5@2 ~@4 ab5@4 ~ db6@3 ~ bb5@2, ~@11 f5@2 ~@7 g5@2 ~@7 c6@2 ~]/2",
  AJ: "[~ eb6@6 c6@4 ~ e6@3 g6@16 gb6]/2", AK: "f6 e6 eb6 ~ d6 db6 c6 b5 bb5 a5 ab5 g5 ~ gb5 f5 e5",
  AL: "[~@3 [e5,e6]@6 [f5,f6]@3 ~ [g5,g6]@9 [ab5,ab6] ~ [bb5,bb6] [c6,c7] ~ [bb5,bb6] [a5,a6] ~ [ab5,ab6] [g5,g6]@4 ~ [ab5,ab6]@7 [f5,f6]@2 ~@3]/3", // E F G Ab Bb C Bb A …
  AM: "~@4 f5@2 bb5@3 ~ g5@3 f5@2 ~, ~@9 f5@2 ~@5", AN: "~@2 [bb5,bb6]@6 [ab5,ab6]@3 ~@5",
  AO: "~@2 [g5,g6]@3 [f5,f6]@2 ~", // G F
  AP: "[~@6 [g5,g6]@4 [ab5,ab6]@4 [bb5,bb6]@11 ~ [bb5,bb6]@4 [bb5,bb6]@4 [bb5,bb6]@4 [bb5,bb6]@8 [ab5,ab6]@2]/3", // G Ab Bb Ab
  AQ: "[[g5,g6]@2 [f5,f6]@2 [g5,g6]@2 [ab5,ab6]@15 ~@5 [f5,f6]@4 [g5,g6]@4 [ab5,ab6]@4 [bb5,bb6]@8 [ab5,ab6]@4 [g5,g6]@4 [f5,f6]@6 [e5,e6]@4]/4", // G F G Ab F G Ab Bb …
  AR: "[[f5,f6]@2 [g5,g6]@19 ~@5 [e5,e6]@4 [f5,f6]@4 [g5,g6]@4 [bb5,bb6]@8 eb6@4 db6@11 ~ [ab5,ab6]@2]/4", // F G E F G Bb Ab
  AS: "[[g5,g6]@2 [f5,f6]@2 [g5,g6]@2 [ab5,ab6]@15 ~ [g5,g6]@4 [ab5,ab6]@4 [bb5,bb6]@8 ~@2 [f5,f6]@4 [g5,g6]@2 [ab5,ab6]@4 [bb5,bb6]@4 ~@2 c6@2 ~@2 db6@2 eb6@2]/4", // G F G Ab G Ab Bb F …
  AT: "~ db6 ~ c6@2 g5 bb5 ab5", AU: "g5@2 ab5@4 f5@9 ~", AV: "e5 f5 g5 ab5 g5 bb5 ab5 c6", AW: "db6 e6 f6 [g5,g6]@4 ~",
  AX: "~ [bb5,bb6]@3", AY: "[~@3 [c6,c7]@38 ~@7]/6",
})).s("gm_flute").gain(0.45)

// other · flute · soft notes
const flute_soft = note("<~@18 A B ~@89 C@2 D@4 E@7 ~@5>".pickRestart({
  A: "~@6 c6 db6 c6 ~ db6 c6 db6 c6 ~ db6", B: "c6 db6 ~ c6 db6 c6 db6 ~ c6 db6 c6 ~ db6 c6 db6 ~",
  C: "[~@7 [ab5,ab6]@3 ~@6]/2", D: "[~@6 [c6,c7]@15 ~ [eb5,eb6]@8 [g5,g6]@34]/4", E: "[~@6 c6@91 ~@15]/7",
})).s("gm_flute").gain(0.25)

// other · clarinet · "B♭ Clarinet"
const clarinet = note(`<
  A@5 B C D@2 E@8 ~@13 F@4 ~@4 G@2 H I J K L@2 M N O P Q R S@2 T U V W X T U Y Z AA AB@2 AC AD AE@2 AF@2 AG AH AI@2 AJ@2
  AK AL@3 AM AN AO@3 ~@4 AP@3 AQ@4 AR@4 AS@4 AT AU AV AW AX@2 ~@9 AY@6
>`.pickRestart({
  A: "[~@11 c6@2 db6@2 c6@2 ~ db6@2 c6@2 db6@2 c6@2 ~ db6@2 c6@2 db6@2 c6@2 ~ db6@2 c6@2 db6@2 c6@2 ~ db6@2 c6@2 db6@2 c6@2 ~ db6@2 c6@2 db6@2 c6@2 ~ db6@2 c6@2 db6@2 c6@2 ~ db6@2 c6@3 eb6@3]/5",
  B: "db6@3 c6@9 bb5@4", C: "ab5@4 ~ g5@11", D: "[~@7 g5@25]/2", E: "[~@11 [e5,g5]@67 f5@40 ~ e5@3 ~@6]/8", F: "c6/4",
  G: "[g5 ab5 bb5@3 bb5!3]/2", H: "bb5@4 ab5 g5 f5 g5", I: "ab5", J: "~ f5 g5 ab5", K: "bb5@2 ab5 g5",
  L: "[f5@3 e5@2 f5 g5@10]/2", M: "~ e5@2 g5 f5 g5 ab5 g5", N: "bb4@4 db5@6 [f5,g5] f5@2 ~ db5@2, ~@11 eb5 ~@4",
  O: "c5 g4 ab4 bb4", P: "g5@4 ~ bb5@2 ab5", Q: "g5@2 bb5@3 f5@3", R: "ab5@3 eb5@2 f5 g5 f5", S: "c6/2",
  T: "~ c5 ~ db5 eb5 ~ db5 ~", U: "c5@2 g4 bb4 ab4 g4 ab4@2", V: "f4@5 e4 f4 g4", W: "ab4 g4 ~ bb4@2 ab4 g4 f4",
  X: "e5", Y: "db5", Z: "c5 db5 eb5 db5 c5@2 ~@4 g5 bb5 ab5 g5 ab5@2", AA: "~@4 f5 e5 f5 g5 ab5@2 g5@2 f5@2 g5@2",
  AB: "[~@2 g5@2 g5!2 g5@2 ab5@2 ab5!2 ab5@2 bb5@4 ab5@2 bb5@4 ab5@2 bb5@4 ab5@2]/2", AC: "g5",
  AD: "c6 db6 c6@4 bb5 c6 db6@2 c6@2 bb5@2 g5@2", AE: "[c6 db6 c6 bb5 g5@10 ~@2]/2",
  AF: "[g5@3 ~ ab5@3 ~@2 bb5@12 ~ bb5@4 ~ bb5@3 bb5@2]/2", AG: "~@2 bb5@13 ~", AH: "~ g5@3 ab5@2 ~@10, ab5 ~@7",
  AI: "[~@12 g4@3 ab4@2 ~@4 ab4@4 ~ bb5@3 ~ g5@2, ~@11 f4@2 ~@7 g4@2 ~@7 ab5@2 ~]/2",
  AJ: "[~ c6@6 bb5@4 ~ c6@3 c6@16 b5]/2", AK: "bb5 a5 ab5 ~ g5 gb5 f5 e5 eb5 d5 db5 c5 ~ b4 bb4 a4",
  AL: "[~@3 c5@6 db5@3 ~ e5@9 e5 ~ f5 gb5 ~ g5 gb5 ~ f5 e5@4 ~ ab5@7 f5@2 ~@3]/3",
  AM: "~@4 db5@2 f5@3 ~ eb5@3 db5@2 ~, ~@9 db5@2 ~@5", AN: "~@2 f5@6 ~@3 g5@5",
  AO: "[~ f5@11 ~@2 eb5@4 ~ db5@2 f5@2 e5@2 ~ c5@20 ~@2]/3", AP: "[~@3 g5@2 ab5@2 bb5@6 bb5@2 bb5@2 bb5@2 bb5@4 ab5]/3",
  AQ: "[g5 f5 g5 ab5@8 ~@2 f5@2 g5@2 ab5@2 bb5@4 ab5@2 g5@2 f5@3 e5@2]/4",
  AR: "[f5 g5@10 ~@2 e5@2 f5@2 g5@2 bb5@4 eb6@2 db6@6 ab5]/4",
  AS: "[g5 f5 g5 ab5@8 g5@2 ab5@2 bb5@4 ~ f5@2 g5 ab5@2 bb5@2 ~ c6 ~ db6 eb6]/4", AT: "~ db6 ~ c6@2 g5 bb5 ab5",
  AU: "g5 ab5@2 f5@5", AV: "e5 f5 g5 ab5 g5 bb5 ab5 c6", AW: "db6 e6 f6 e5@4 ~", AX: "[~@2 g5@7 ~@7]/2",
  AY: "[~@3 [g5,g6]@40 ~@5]/6", // G
})).s("gm_clarinet").gain(0.45)

// other · clarinet · "B♭ Clarinet" · soft notes
const clarinet_soft = note("<~@18 A B C@3 D@5 ~@81 E@2 F G@8 ~@7>".pickRestart({
  A: "~@6 e5 f5 e5 ~ f5 e5 f5 e5 ~ f5", B: "e5 f5 ~ e5 f5 e5 f5 ~ e5 f5 e5 ~ f5 e5 f5 ~",
  C: "[~@7 g5!2 ~ g5@2 g5 ~ g5 g5@2 f5@3 g5@3 f5@13 ~@2 g5!2 ~ g5@2 g5!2 ~ g5@2]/3",
  D: "[f5@3 g5@2 f5@13 e5@31 f5@31]/5", E: "[~@7 f5@3 ~@6]/2", F: "~@3 c6@5", G: "[~@3 eb5@4 g5@57]/8",
})).s("gm_clarinet").gain(0.25)

// other · clarinet · "B♭ Clarinet"
const clarinet_2 = note(`<
  ~ A@3 B@4 ~ C@6 D@2 ~@13 E@4 ~@4 F@2 G H I J K@2 L M H N O P Q R S T U V W S T X Y Z AA@2 R AB AC@2 AD@2 AE AF AG@2
  AH@2 AI AJ@3 AK AL AM@3 ~@4 AN@3 AO@4 AP@4 AQ@4 AR AS AT AU AV@2 ~@9 AW@6
>`.pickRestart({
  A: "[~@4 g5@3 ~ ab5@3 ~@2 bb5@22 ~@5 g5@3 ~ ab5@3 ~]/3", B: "[~ bb5@9 ab5@9 g5@36 ~@9]/4",
  C: "[~@2 ab4@4 bb4@4 ~ c5@4 db5@4 ~ c5@45 c5@4 db5@4 ~ c5@4 g5@13 ~ f5@4]/6", D: "[g5@4 ~ c6@18 g5@3 ~@6]/2",
  E: "g5/4", F: "[e5 f5 g5@3 ab5 g5!2]/2", G: "f5@4 f5 eb5 db5 eb5", H: "f5", I: "~ db5 eb5 f5", J: "g5@2 f5 eb5",
  K: "[db5@3 c5@2 db5 e5@10]/2", L: "~ e5@2 g5 f5 g5 ab5 g5", M: "g5@4 bb5@6 [c6,d6] c6@2 ~ g5@2, ~@11 bb5 ~@4",
  N: "g5@2 ab5 bb5 g5@4", O: "g5@2 f5@3 db5@3", P: "f5@3 eb5@2 f5 g5 f5", Q: "c5@2 bb5 g5", R: "g5",
  S: "~ c5 ~ db5 eb5 ~ db5 ~", T: "c5@2 g4 bb4 ab4 g4 ab4@2", U: "f4@5 e4 f4 g4", V: "ab4 g4 ~ g4@2 f4 e4 db4", W: "c5",
  X: "db5", Y: "c5 db5 eb5 db5 c5@2 ~@4 g4 bb4 ab4 g4 ab4@2", Z: "~@4 f4 e4 f4 g4 ab4@2 g4@2 f4@2 g4@2",
  AA: "[~@2 g4@2 g4!2 g4@2 ab4@2 ab4!2 ab4@2 bb4@4 ab4@2 bb4@4 ab4@2 bb4@4 ab4@2]/2",
  AB: "e5 f5 e5@4 db5 e5 f5@2 e5@2 d5@2 c5@2", AC: "[e5 f5 e5 db5 c5@10 ~@2]/2",
  AD: "[e5@3 ~ f5@3 ~@2 g5@12 ~ g5@4 ~ g5@3 g5@2]/2", AE: "~@2 f5@13 ~", AF: "~ eb5@3 f5@2 ~@10, f5 ~@7",
  AG: "[~@12 g5@3 ab5@2 ~@4 ab5@4 ~ bb4@3 ~ g4@2, ~@11 f5@2 ~@7 g5@2 ~@7 ab4@2 ~]/2",
  AH: "[~ c5@6 bb4@4 ~ c5@3 c5@16 b4]/2", AI: "bb4 a4 ab4 ~ g4 gb4 f4 e4 eb4 d4 db4 c4 ~ b3 bb3 a3",
  AJ: "[~@3 c5@6 db5@3 ~ e5@9 e5 ~ f5 gb5 ~ g5 gb5 ~ f5 e5@4 ~ c5@7 ab4@2 ~@3]/3",
  AK: "~@4 db5@2 f5@3 ~ eb5@3 db5@2 ~, ~@9 db5@2 ~@5", AL: "~@2 f5@6 ~@3 g4@5",
  AM: "[~ f4@11 ~@2 eb4@4 ~ db4@2 f4@2 e4@2 ~ c4@20 ~@2]/3", AN: "[~@3 g4@2 ab4@2 bb4@6 bb4@2 bb4@2 bb4@2 bb4@4 ab4]/3",
  AO: "[g4 f4 g4 ab4@8 ~@2 f4@2 g4@2 ab4@2 bb4@4 ab4@2 g4@2 f4@3 e4@2]/4",
  AP: "[f4 g4@10 ~@2 e4@2 f4@2 g4@2 bb4@4 eb5@2 db5@6 ab4]/4",
  AQ: "[g4 f4 g4 ab4@8 g4@2 ab4@2 bb4@4 ~ f4@2 g4 ab4@2 bb4@2 ~ c5 ~ db5 eb5]/4", AR: "~ db5 ~ c5@2 g4 bb4 ab4",
  AS: "g4 ab4@2 f4@5", AT: "e4 f4 g4 ab4 g4 bb4 ab4 c5", AU: "db5 e5 f5 e5@4 ~", AV: "[~@2 g5@7 ~@7]/2",
  AW: "[~@3 [e5,e6]@40 ~@5]/6", // E
})).s("gm_clarinet").gain(0.45)

// other · clarinet · "B♭ Clarinet" · soft notes
const clarinet_soft_2 = note("<~@18 A B C@3 D@5 ~@81 E@2 F@4 G@7 ~@5>".pickRestart({
  A: "~@6 c5 db5 c5 ~ db5 c5 db5 c5 ~ db5", B: "c5 db5 ~ c5 db5 c5 db5 ~ c5 db5 c5 ~ db5 c5 db5 ~",
  C: "[~@7 g4!2 ~ g4@2 g4 ~ g4 g4@2 f4@3 g4@3 f4@13 ~@2 g4!2 ~ g4@2 g4!2 ~ g4@2]/3",
  D: "[f4@3 g4@2 f4@13 c5@31 ab4@31]/5", E: "[~@7 f5@3 ~@6]/2", F: "[~@3 c5@8 eb5@4 g5@17]/4", G: "[~@3 e5@48 ~@5]/7",
})).s("gm_clarinet").gain(0.25)

// other · tenor sax · "Tenor Saxophone"
const tenor_sax = note(`<
  A@6 B@2 C D@8 ~@3 E@5 ~@6 F G@2 ~@4 H@2 I@2 J K L@2 M N O P Q@2 R@2 S T U V W X Y Z AA AB AC@2 AD AE AF@2 AG AH AI
  AJ@2 AK AL AM@2 AN@3 AO AP AQ@3 ~@4 AR@2 AS AT AU AS AV@2 AW AX@2 AY AZ@3 BA BB BC BD@3 BE BF@8 ~ BG BH@4
>`.pickRestart({
  A: "[~@11 e3@27 e3@9 f3@27 f3@9 ~@9 g3@4]/6", B: "[ab3@4 ~ bb3@18 ~@9]/2", C: "g3@4 ab3@4 ~ bb3@7",
  D: "[~@2 ab3@9 e3@36 c3@4 db3@4 ~ c3@4 g3@18 bb3@40 ~ g3@3 ~@6]/8", E: "[~@5 c4@20 ab3@10 c4@21 ab3@10 ~@14]/5",
  F: "~@4 c4 db4 c4 g3", G: "[e3 f3 e3@14]/2", H: "[e4 f4 g4@3 ab4 g4!2]/2", I: "[ab4@20 eb4@4 g4@4 ab4 g4 f4 eb4]/2",
  J: "db4@2 eb4 f4", K: "g4@2 f4 eb4", L: "[db4@3 c4@2 db4 c4@4 db4@2 e4@2 f4@2]/2", M: "~ c4@2 e4 db4 e4 f4 e4",
  N: "g4@4 bb4@6 [c5,d5] c5@2 ~ g4@2, ~@11 bb4 ~@4", O: "f4", P: "~@2 ab4 bb4 g4@4", Q: "[eb4 db4@4 bb3@3]/2",
  R: "[c4 db4 c4 db4@5]/2", S: "c3 ~@5 c3 ~", T: "~@5 c3!2 ~", U: "~@2 c3 ~ c3!2 ~@2", V: "~ c3 ~ c3!2 ~@3",
  W: "~ c3 ~ db3 eb3 ~ db3 ~", X: "c4@2 g3 bb3 ab3 g3 ab3@2", Y: "f3@5 e3 f3 g3", Z: "ab3 g3 ~ bb3@2 ab3 g3 f3",
  AA: "c4 db4 eb4 db4 c4@2 ~@4 g3 bb3 ab3 g3 ab3@2", AB: "~@4 f3 e3 f3 g3 ab3@2 g3@2 f3@2 g3@2",
  AC: "[~@2 e4@2 e4!2 e4@2 f4@2 f4!2 f4@2 g4@4 f4@2 g4@4 f4@2 g4@4 f4@2]/2", AD: "e4",
  AE: "e4 f4 e4@4 db4 e4 f4@2 e4@2 d4@2 c4@2", AF: "[e4 f4 e4 db4 c4@10 ~@2]/2", AG: "~@13 c4@3", AH: "db4@2 c4@13 ~",
  AI: "~@2 bb4@13 ~", AJ: "[~ g4@3 ab4@2 ~@3 g4@4 f4@2 bb4@3 ~ g4@3 f4@10, ab4 ~@8 ab4 ~@6]/2", AK: "~ eb4@9 f4@6",
  AL: "~ ab4@11 ~@4", AM: "[~@9 g4@4 ~ c5@18]/2",
  AN: "[~@3 e4@6 f4@3 ~ g4@9 g4 ~ ab4 a4 ~ bb4 a4 ~ ab4 g4@4 ~ c4@7 db4@2 ~@3]/3",
  AO: "~@4 bb4@2 bb4@3 bb4 bb4@3 bb4@2 ~", AP: "~@11 g4@5", AQ: "[~ f4@11 ~@2 eb4@4 ~ db4@2 f4@2 e4@2 ~ c4@20 ~@2]/3",
  AR: "[~@3 c4 db4 c4 g3 e3@2 c4 db4 c4 g3 e3@2 c4]/2", AS: "db4 c4 g3 f3@2 c4 db4 c4", AT: "g3 f3@2 ~ eb3 f3 g3 ab3",
  AU: "bb3 g3 f3 ab3@4 c4", AV: "[g3 f3@2 c4 db4 c4 g3 e3@2 g3 ab3 c4!3 bb3 c4]/2", AW: "bb3 g3@4 c4 db4 c4",
  AX: "[g3 e3@2 c4 db4 c4 g3 e3@2 c4 db4 c4 g3 f3@2 f3]/2", AY: "eb3 db3 eb3 ~ db3 f3 g3 ab3",
  AZ: "[bb3 g3 ab3 ab3@16 ~ c4 ~ db4 eb4]/3", BA: "~ db4 ~ c4@2 g3 bb3 ab3", BB: "g3 ab3@2 f3@5",
  BC: "e3 f3 g3 ab3 g3 bb3 ab3 c4", BD: "[db4 e4 f4 c4@4 db4@3 bb4@7 ~@7]/3", BE: "~@3 c4 db4 c4 g3 c4",
  BF: "[db4 c4@18 g4@45]/8", BG: "~@5 c4 db4 c4", BH: "[bb3 g3@26 ~@5]/4",
})).s("gm_tenor_sax").gain(0.45)

// other · trumpet · "B♭ Trumpet"
const trumpet = note(`<
  ~ A@3 B@2 C@2 D@7 E@2 ~@13 F@4 ~@4 G@2 H I J K L@2 M N O P Q R S T U V W X Y U V Z AA AB AC@2 AD ~@3 AE@2 AF AG AH@2
  AI@3 AJ@3 AK AL AM ~@5 AN@4 AO@4 AP@4 AQ@4 AR AS AT AU AV@2 AW@3 AX@6 AY@6
>`.pickRestart({
  A: "[~@4 g4@3 ~ ab4@3 ~@2 bb4@22 ~@5 g4@3 ~ ab4@3 ~]/3", B: "[~ bb4@9 ab4@9 g4@9 e4@4]/2", C: "[f4@4 ~ g4@18 ~@9]/2",
  D: "[e4@4 f4@4 ~ g4@9 ab4@4 bb4@4 ~ c5@4 db5@4 ~ c5@4 g4@4 ~ e4@36 c5@4 db5@4 ~ c5@4 db5@13 ~ f5@4]/7",
  E: "[g5@4 ~ [f5,c6]@18 [g5,c6]@3 ~@6]/2", F: "[e5,g5]/4", G: "[g4 ab4 bb4@3 bb4!3]/2", H: "bb4@4 ab4 g4 f4 g4",
  I: "ab4", J: "~ f4 g4 ab4", K: "bb4@2 ab4 g4", L: "[f4@3 e4@2 f4 g4@10]/2", M: "~ e4@2 g4 f4 g4 ab4 g4",
  N: "bb4@4 db5@6 [f5,g5] f5@2 ~ db5@2, ~@11 eb5 ~@4", O: "c5 g4 ab4 bb4", P: "g4@4 ~ bb4@2 ab4", Q: "g4@2 bb4@3 f4@3",
  R: "ab4@3 eb4@2 f4 g4 f4", S: "c4 bb4", T: "bb4", U: "~ c5 ~ db5 eb5 ~ db5 ~", V: "c5@2 g4 bb4 ab4 g4 ab4@2",
  W: "f4@5 e4 f4 g4", X: "ab4 g4 ~ bb4@2 ab4 g4 f4", Y: "e4", Z: "db5", AA: "~@4 c5 db5 eb5 db5 c5@2 ~@4 g4 bb4",
  AB: "ab4 g4 ab4@2 ~@4 f4 e4 f4 g4 ab4@2 bb4@2",
  AC: "[~@2 c5@2 c5!2 c5@2 db5@2 db5!2 db5@2 eb5@4 db5@2 eb5@4 db5@2 eb5@4 db5@2]/2", AD: "c5",
  AE: "[g5@3 ~ ab5@3 ~@2 bb5@12 ~ bb5@4 ~ bb5@3 bb5@2]/2", AF: "~@2 bb5@13 ~", AG: "~ g5@3 ab5@2 ~@10, ab5 ~@7",
  AH: "[~@12 g4@3 ab4@2 ~@4 ab4@4 ~ db5@3 ~ bb4@2, ~@11 f4@2 ~@7 g4@2 ~@7 c5@2 ~]/2",
  AI: "[~ eb5@6 c5@4 ~ e5@3 g5@18 ~@15]/3",
  AJ: "[~@3 e4@6 f4@3 ~ g4@9 ab4 ~ bb4 c5 ~ bb4 a4 ~ ab4 g4@4 ~ ab4@7 f4@2 ~@3]/3",
  AK: "~@4 f5@2 bb4@3 ~ g5@3 f5@2 ~, ~@9 f5@2 ~@5", AL: "~@2 bb4@6 ab5@3 ~@5", AM: "~@2 g5@3 f5@2 ~",
  AN: "[~@13 c5@2 db5@2 eb5@2 ~ f5@2 g5@4 ab5@4 bb5@12 bb5@4 bb5@4 bb5@4 bb5@8 ab5@2]/4",
  AO: "[g5 f5 g5 ab5@8 ~@2 f5@2 g5@2 ab5@2 bb5@4 ab5@2 g5@2 f5@3 e5@2]/4",
  AP: "[f5 g5@10 ~@2 e5@2 f5@2 g5@2 bb5@8 ~ bb5@2 bb5 ab5]/4",
  AQ: "[g5 f5 g5 ab5@8 g5@2 ab5@2 bb5@4 ~ f5@2 g5 ab5@2 bb5@2 ~ c5 ~ db5 eb5]/4", AR: "~ db5 ~ c5@2 g4 bb4 ab4",
  AS: "g4 ab4@2 f4@5", AT: "e4 f4 g4 ab4 g4 bb4 ab4 c5", AU: "db5 e5 f5 g5@4 ~",
  AV: "[~@2 bb5@7 ~@2 c5 db5 c5 g4 c5]/2", AW: "[db5 c5@23]/3", AX: "[~ e5@15]/6", AY: "[~@3 [e5,c6]@40 ~@5]/6",
})).s("gm_trumpet").gain(0.45)

// other · trumpet · "B♭ Trumpet" · soft notes
const trumpet_soft = note("<~@17 A B@5 C@2 ~ D@2 ~@81 E@2 ~@16>".pickRestart({
  A: "~@4 [g4,c5]@3 ~@7 [g4,c5]@2", // C5
  B: "[~@3 [g4,c5]@3 [ab4,db5]@31 ~@2 c5!2 ~ c5@2 c5 ~ c5 c5@2 bb4@3 c5@3 bb4@13 ~@2 c5!2 ~ c5@2 c5!2 ~ c5@2]/5", // C5 Db5
  C: "[bb4@3 c5@2 bb4@13 ~@14]/2", D: "[~ [f4,ab4]@31]/2", E: "[~@7 ab5@3 ~@6]/2",
})).s("gm_trumpet").gain(0.25)

// other · trumpet · "B♭ Trumpet"
const trumpet_2 = note(`<
  ~ A@3 B@2 C@2 D@5 E@4 ~@13 F@4 ~@4 G@2 H I J K L@2 M N I O P Q R S T U V W X T U Y Z AA AB@2 AC ~@3 AD@2 AE AF AG@2
  AH@3 AI@3 AJ AK AL ~@6 AM@3 AN@4 AO@4 AP@4 AQ AR AS AT AU@2 AV@3 AW@6 AX@6
>`.pickRestart({
  A: "[~@4 g4@3 ~ ab4@3 ~@2 bb4@22 ~@5 g4@3 ~ ab4@3 ~]/3", B: "[~ bb4@9 ab4@9 g4@9 e4@4]/2", C: "[f4@4 ~ g4@18 ~@9]/2",
  D: "[e4@4 f4@4 ~ g4@9 ab4@4 bb4@4 ~ c5@4 db5@4 ~ c5@4 g4@4 ~ e4@35]/5",
  E: "[~ c5@4 db5@4 ~ c5@4 db5@40 ~ c5@3 ~@6]/4", F: "c5/4", G: "[e4 f4 g4@3 ab4 g4!2]/2", H: "f4@4 f4 eb4 db4 eb4",
  I: "f4", J: "~ db4 eb4 f4", K: "g4@2 f4 eb4", L: "[db4@3 c4@2 db4 e4@10]/2", M: "~ e4@2 g4 f4 g4 ab4 g4",
  N: "g4@4 bb4@6 [c5,d5] c5@2 ~ g4@2, ~@11 bb4 ~@4", O: "g4@2 ab4 bb4 g4@4", P: "g4@2 f4@3 db4@3",
  Q: "f4@3 eb4@2 f4 g4 f4", R: "c4@2 bb4 g4", S: "g4", T: "~ c5 ~ db5 eb5 ~ db5 ~", U: "c5@2 g4 bb4 ab4 g4 ab4@2",
  V: "f4@5 e4 f4 g4", W: "ab4 g4 ~ g4@2 f4 e4 db4", X: "c4", Y: "db5", Z: "~@4 c5 db5 eb5 db5 c5@2 ~@4 g4 bb4",
  AA: "ab4 g4 ab4@2 ~@4 f4 e4 f4 g4 ab4@2 bb4@2",
  AB: "[~@2 e4@2 e4!2 e4@2 f4@2 f4!2 f4@2 g4@4 f4@2 g4@4 f4@2 g4@4 f4@2]/2", AC: "e4",
  AD: "[e4@3 ~ f4@3 ~@2 g4@12 ~ g4@4 ~ g4@3 g4@2]/2", AE: "~@2 f4@13 ~", AF: "~ eb4@3 f4@2 ~@10, f4 ~@7",
  AG: "[~@12 g4@3 ab4@2 ~@4 ab4@4 ~ db5@3 ~ bb4@2, ~@11 f4@2 ~@7 g4@2 ~@7 c5@2 ~]/2",
  AH: "[~ eb5@6 c5@4 ~ c5@3 e5@18 ~@15]/3",
  AI: "[~@3 c4@6 db4@3 ~ e4@9 e4 ~ f4 gb4 ~ g4 gb4 ~ f4 e4@4 ~ c4@7 ab3@2 ~@3]/3",
  AJ: "~@4 db4@2 f4@3 ~ eb4@3 db4@2 ~, ~@9 db4@2 ~@5", AK: "~@2 f4@6 f4@3 ~@5", AL: "~@2 eb4@3 db4@2 ~",
// … 158 more lines