Strudelify

Project Waluigi

thuniks

KeyE♭ majorTempo155 bpm
0:00/0:00
// Project Waluigi — thuniks
// 155 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 8 "Bass Clarinet" clarinet (copy of ch 7 "Trombone" trombone)
// note: Transcription provider: pdmx. https://musescore.com/score/5888269; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 96 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(155/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 · trumpet · "B♭ Trumpet 1"
const trumpet = note(`<
  A B C ~@3 D E F@2 G H I@2 J K@2 L M N O P ~@8 Q R S T U V W@2 X Y Z AA AB AC AD@3 AE AF AG AH AI AJ@2 AK@2 ~ AL@3 AM
  AN AO AP@2 AQ AR AS AT AU AV AW ~ AX ~ AY AZ@3 BA@2 BB BC BD BE@5 BF@2 BG BH BI BJ@2
>`.pickRestart({
  A: "~@3 db4 eb4 db4 ab4@6", B: "~@3 ab4 bb4 b4 gb5 ~ f5 ~ eb5 ~", C: "db5 ~@7", D: "db5@5 c5 eb5 db5",
  E: "ab4@5 f4 gb4 ab4", F: "[ab4 ~@2 gb4@9 ~@4]/2", G: "eb5@5 d5 f5 eb5", H: "db5 ~@2 c5@2 bb4@2 c5",
  I: "[bb4 ~@2 ab4@9 ~@4]/2", J: "b4 ~@2 b4 ~@2 b4 ~", K: "bb4 ~@2 bb4 ~@2 bb4 ~", L: "a4 ~@2 a4 ~@2 a4 ~",
  M: "ab4 ~@2 ab4 ~@2 ab4 ~", N: "g4 ~@2 g4 ~@2 g4 ~", O: "bb4 ~@2 ab4 ~@2 ab4 ~",
  P: "a4@3 ~@6 gb4@3 gb4 ~@2 gb4 ~@2 gb4@3 gb4 ~@2", Q: "ab4@5 g4 bb4 ab4", R: "gb4 ~@2 f4@5", S: "gb4@5 f4 ab4 gb4",
  T: "f4 ~@2 eb4@5", U: "f4@5 e4 gb4 f4", V: "eb4 ~@2 a4 ~ b4 ~ db5", W: "[db5@12 ~ db5 ~@2]/2",
  X: "e4@2 eb4@2 e4@2 f4 ~@5 d4@2 db4@2 d4@2 e4 ~@5", Y: "c4@2 b3@2 c4@2 d4 ~@5 b3@12",
  Z: "c5@9 c5@6 e5 ~@2 e5 ~@2 e5 ~@2", AA: "g4", AB: "f4@9 f4@6 a4 ~@2 a4 ~@2 a4 ~@2", AC: "gb4@7 f4",
  AD: "[g4@3 g4@3 g5@3 g4@3 g4@2 g5@3 g4@3 g4@2 g5@2]/3", AE: "d5", AF: "c5@3 ~@6 c5@6 e5 ~@2 e5 ~@2 e5 ~@2",
  AG: "[g4,g5]", AH: "[f4,f5]@9 [f4,f5]@6 [a4,a5] ~@2 [a4,a5] ~@2 [a4,a5] ~@2", AI: "gb4@6 gb4 [f4,f5], gb5@7 ~",
  AJ: "[e5@3 e5@3 g4@3 e5@3 g4@2 b4@2]/2", AK: "[g4@7 ~]/2",
  AL: "[c5@5 a4@2 ~@2 c5@5 d5@2 c5 ~@6 e4@5 f4@5 gb4@4 g4@2 ~@8 g4@2 g3@2 ~@2 g4@2 ~@17]/3", AM: "~ g4 ~@6 g4 ~@3",
  AN: "~@2 g4 ~@3 g4@3 ~@7 f4@2 ~@6", AO: "~@6 f4@2 ~@7 f4 ~@4 f4@3 ~",
  AP: "[~@5 c5@2 ~@12 c5@2 ~@2 c5@2 ~@12 c5@2 ~@3 c5@2 ~@4]/2", AQ: "~ c5@12 ~@11", AR: "~@7 g4@2 ~@12 g4@2 ~",
  AS: "~@6 g4 ~@4 g4@3 ~@6 f4@2 ~@2", AT: "~@10 f4@2 ~@8 gb4 ~@3", AU: "gb4@3 ~@7 c5@2 ~@12", AV: "c5 ~ c5 ~@9",
  AW: "~@8 g4@2 a4@5 c5@2 ~@7", AX: "~@16 e5@2 e5 [db5,d5,eb5] [b4,c5] [ab4,a4,bb4] [f4,gb4,g4] ~",
  AY: "~@5 eb5@2 eb5 [db5,d5] [bb4,b4,c5] [ab4,a4] [gb4,g4] f4 ~@11", AZ: "[~@9 g4@19 a4@5 ~@2 c5@2 ~@5 d5@14 ~@16]/3",
  BA: "[~@16 c5@2 ~@3 d5@2 e5@2 ~@3 c5@2 ~@18]/2", BB: "~@5 c5@2 ~@3 eb5@2 d5@2 ~@3 c5@2 ~@5",
  BC: "~@14 g4@5 ~@2 g4@2 ~", BD: "~@4 g4@5 ~@4 c5@2 ~@3 bb4@2 b4@2 ~@2",
  BE: "[~ c5@2 ~@8 e5@2 ~ f5@2 g5@2 ab5@2 f5@13 f5@4 e5@13 eb5@4 d5@4 ~@2 e5@2 ~@4 c5@13 e5@2 f5@2 g5@2 ab5@2 ~ f5@12 f5@4 e5@13 eb5@3]/5",
  BF: "[~ d5@4 ~@3 b4@2 ~@4 c5@13 ~@8 f5@2 ~@2 f5@2 ~@3 f5@2 ~@2]/2",
  BG: "f5@2 ~@2 e5@2 ~@2 e5@2 ~@3 e5@2 ~@2 e5@2 ~@2 d5@3", BH: "~@3 e5@2 ~@5 c5@13 ~",
  BI: "~@7 f5@2 ~@2 f5@2 ~@2 f5@2 ~@3 f5@2 ~@2",
  BJ: "[e5@2 ~@2 e5@2 ~@2 e5@2 ~@2 e5@2 ~@3 d5@4 ~@2 b4@2 ~@4 c5@4 ~ [c5,db5,d5] [eb5,e5,f5] [gb5,g5,ab5] [a5,bb5,b5] c6@4 ~@6]/2",
})).s("gm_trumpet").gain(0.3)

// other · trumpet · "B♭ Trumpet 1" · soft notes
const trumpet_soft = note("<~@14 A B@2 C D E F G ~@74>".pickRestart({
  A: "~@3 b4 ~@2 b4 ~@5 b4 ~@2 b4 ~@5 b4 ~@2", B: "~@3 bb4 ~@2 bb4 ~@5 bb4 ~@2 bb4 ~@5 bb4 ~@2",
  C: "~@3 a4 ~@2 a4 ~@5 a4 ~@2 a4 ~@5 a4 ~@2", D: "~@3 ab4 ~@2 ab4 ~@5 ab4 ~@2 ab4 ~@5 ab4 ~@2",
  E: "~@3 g4 ~@2 g4 ~@5 g4 ~@2 g4 ~@5 g4 ~@2", F: "~@3 bb4 ~@2 bb4 ~@5 ab4 ~@2 ab4 ~@5 ab4 ~@2",
  G: "~@3 a4 ~@2 a4 ~@17",
})).s("gm_trumpet").gain(0.2)

// other · trumpet · "B♭ Trumpet 2"
const trumpet_2 = note(`<
  ~@2 A B C D E@2 D@4 E F G H@2 I J K L M N@2 O@4 P Q R S T U V W X@2 ~@2 Y@4 Z AA Y AB Y AC Y@2 Z AD AE@2 ~ AF@3 AG AH
  AI AJ@2 AK AL AM AN AO AP AQ ~ AR ~ AS AT@3 AU@2 AV AW AX AY@5 AZ@2 BA BB BC BD@2
>`.pickRestart({
  A: "db4@3 db4 ~@2 db4 ~@2 db4@3 db4 ~@2 db4 ~@2 db4@3 db4 ~@2",
  B: "d4@3 d4 ~@2 d4 ~@2 d4@3 d4 ~@2 d4 ~@2 d4@3 d4 ~@2", C: "e4@3 e4 ~@2 e4 ~@2 e4@3 e4 ~@2 e4 ~@2 e4@3 e4 ~@2",
  D: "gb4@3 gb4 ~@2 gb4 ~@2 gb4@3 gb4 ~@2 gb4 ~@2 gb4@3 gb4 ~@2",
  E: "f4@3 f4 ~@2 f4 ~@2 f4@3 f4 ~@2 f4 ~@2 f4@3 f4 ~@2",
  F: "ab4@3 ab4 ~@2 ab4 ~@2 ab4@3 ab4 ~@2 ab4 ~@2 ab4 ~@2 ab4 ~@2", G: "b4 ~@2 b4 ~@2 b4 ~", H: "bb4 ~@2 bb4 ~@2 bb4 ~",
  I: "a4 ~@2 a4 ~@2 a4 ~", J: "ab4 ~@2 ab4 ~@2 ab4 ~", K: "g4 ~@2 g4 ~@2 g4 ~", L: "bb4 ~@2 ab4 ~@2 ab4 ~",
  M: "a4 ~@2 gb4 ~@2 gb4 ~", N: "f4 ~@2 f4 ~@4", O: "eb4 ~@2 eb4 ~@4", P: "eb4 ~@2 db4 ~@4", Q: "ab4 ~@2 ab4 ~@4",
  R: "ab4@5 g4 bb4 ab4", S: "gb4 ~@2 f4@5", T: "gb4@5 f4 ab4 gb4", U: "f4 ~@2 eb4@5", V: "f4@5 e4 gb4 f4",
  W: "eb4 ~@2 a4 ~ b4 ~ db5", X: "[db5@12 ~ db5 ~@2]/2", Y: "c4 ~@2 c4 ~@2 c4 ~@2 c4 ~@2",
  Z: "d4 ~@2 d4 ~@2 d4 ~@2 d4 ~@2", AA: "db4 ~@2 db4 ~@2 db4 ~@2 db4 ~@2", AB: "b3 ~@2 b3 ~@2 b3 ~@2 b3 ~@2",
  AC: "bb3 ~@2 bb3 ~@2 bb3 ~@2 bb3 ~@2", AD: "c4 ~@2 c4 ~@2 b3 ~@2 b3 ~@2", AE: "[e4@7 ~]/2",
  AF: "[c5@5 a4@2 ~@2 c5@5 d5@2 c5 ~@6 e4@5 f4@5 gb4@4 g4@2 ~@8 g4@2 g3@2 ~@2 g4@2 ~@17]/3", AG: "~ c4 ~@6 c4 ~@3",
  AH: "~@2 c4 ~@3 c4@3 ~@7 a3@2 ~@6", AI: "~@6 a3@2 ~@7 a3 ~@4 a3@3 ~",
  AJ: "[~@5 e4@2 ~@12 e4@2 ~@2 eb4@2 ~@12 eb4@2 ~@3 d4@2 ~@4]/2", AK: "~ d4@12 ~@11", AL: "~@7 c4@2 ~@12 c4@2 ~",
  AM: "~@6 bb3 ~@4 bb3@3 ~@6 a3@2 ~@2", AN: "~@10 a3@2 ~@8 a3 ~@3", AO: "a3@3 ~@7 e4@2 ~@12", AP: "e4 ~ eb4 ~@9",
  AQ: "~@8 g4@2 a4@5 c5@2 ~@7", AR: "~@16 e5@2 e5 [db5,d5,eb5] [b4,c5] [ab4,a4,bb4] [f4,gb4,g4] ~",
  AS: "~@5 eb5@2 eb5 [db5,d5] [bb4,b4,c5] [ab4,a4] [gb4,g4] f4 ~@11", AT: "[~@9 g4@19 a4@5 ~@2 c5@2 ~@5 d5@14 ~@16]/3",
  AU: "[~@16 c5@2 ~@3 d5@2 e5@2 ~@3 c5@2 ~@18]/2", AV: "~@5 c5@2 ~@3 eb5@2 d5@2 ~@3 c5@2 ~@5",
  AW: "~@14 g4@5 ~@2 g4@2 ~", AX: "~@4 g4@5 ~@4 c5@2 ~@3 bb4@2 b4@2 ~@2",
  AY: "[~ c5@2 ~@8 e4@2 ~ f4@2 g4@2 ab4@2 c5@13 c5@4 c5@13 c5@4 c5@4 ~@2 b4@2 ~@4 g4@13 e4@2 f4@2 g4@2 ab4@2 ~ c5@12 c5@4 c5@13 c5@3]/5",
  AZ: "[~ c5@4 ~@3 g4@2 ~@4 g4@13 ~@8 c5@2 ~@2 c5@2 ~@3 c5@2 ~@2]/2",
  BA: "c5@2 ~@2 c5@2 ~@2 c5@2 ~@3 c5@2 ~@2 c5@2 ~@2 c5@3", BB: "~@3 b4@2 ~@5 g4@13 ~",
  BC: "~@7 c5@2 ~@2 c5@2 ~@2 c5@2 ~@3 c5@2 ~@2",
  BD: "[c5@2 ~@2 c5@2 ~@2 c5@2 ~@2 c5@2 ~@3 c5@4 ~@2 g4@2 ~@4 g4@13 ~@6]/2",
})).s("gm_trumpet").gain(0.3)

// other · trumpet · "B♭ Trumpet 2" · soft notes
const trumpet_soft_2 = note("<~@14 A B@2 C D E F G H@2 I@4 J K ~@66>".pickRestart({
  A: "~@3 b4 ~@2 b4 ~@5 b4 ~@2 b4 ~@5 b4 ~@2", B: "~@3 bb4 ~@2 bb4 ~@5 bb4 ~@2 bb4 ~@5 bb4 ~@2",
  C: "~@3 a4 ~@2 a4 ~@5 a4 ~@2 a4 ~@5 a4 ~@2", D: "~@3 ab4 ~@2 ab4 ~@5 ab4 ~@2 ab4 ~@5 ab4 ~@2",
  E: "~@3 g4 ~@2 g4 ~@5 g4 ~@2 g4 ~@5 g4 ~@2", F: "~@3 bb4 ~@2 bb4 ~@5 ab4 ~@2 ab4 ~@5 ab4 ~@2",
  G: "~@3 a4 ~@2 a4 ~@5 gb4 ~@2 gb4 ~@5 gb4 ~@2", H: "~@3 f4 ~@2 f4 ~@5 f4 ~@2 f4 ~@2 f4 ~@2 f4 ~@2",
  I: "~@3 eb4 ~@2 eb4 ~@5 eb4 ~@2 eb4 ~@2 eb4 ~@2 eb4 ~@2", J: "~@3 eb4 ~@2 eb4 ~@5 db4 ~@2 db4 ~@2 db4 ~@2 db4 ~@2",
  K: "~@3 ab4 ~@2 ab4 ~@17",
})).s("gm_trumpet").gain(0.2)

// other · french horn · "Horn 1"
const french_horn = note(`<
  A B C D E F G@2 H@3 G I J K L H M G N O P Q R S@2 T U V@2 ~@6 W X Y Z ~ AA AB AC AD AE@2 AF AG AH AB AC AI AJ AK@2 AL
  AM@2 AN AO AP AQ AR@2 AS AT AU AV AW AX@2 AY AZ BA BB BC@2 BD BE BF BG BH BI BJ@5 BK@2 BL BM BN BO@2
>`.pickRestart({
  A: "~@3 db4 eb4 db4 ab4@6", B: "~@3 ab3 bb3 b3 gb4 ~ f4 ~ eb4 ~", C: "db4 ~@2 db4 ~@4", D: "d4 ~@2 d4 ~@4",
  E: "e4 ~@2 e4 ~@4", F: "gb4 ~@2 gb4 ~@4", G: "ab4@3 ab4 ~@2 ab4 ~@2 ab4@3 ab4 ~@2 ab4 ~@2 ab4 ~@2 ab4 ~@2",
  H: "gb4@3 gb4 ~@2 gb4 ~@2 gb4@3 gb4 ~@2 gb4 ~@2 gb4 ~@2 gb4 ~@2",
  I: "gb4@3 gb4 ~@2 gb4 ~@2 f4@3 f4 ~@2 f4 ~@2 f4 ~@2 f4 ~@2",
  J: "eb4@3 eb4 ~@2 eb4 ~@2 f4@3 f4 ~@2 eb4@3 eb4 ~@2 eb4 ~@2",
  K: "eb4@3 eb4 ~@2 eb4 ~@2 eb4@3 eb4 ~@2 eb4 ~@2 eb4 ~@2 eb4 ~@2",
  L: "d4@3 d4 ~@2 d4 ~@2 d4@3 d4 ~@2 d4@3 d4 ~@2 d4 ~@2", M: "gb4@3 gb4 ~@2 gb4 ~@2 gb4@3 ~@3 a4@3 a4 ~@2 a4 ~@2",
  N: "bb4@3 bb4 ~@2 bb4 ~@2 bb4@3 bb4 ~@2 bb4 ~@2 bb4 ~@2 bb4 ~@2",
  O: "bb4@3 bb4 ~@2 bb4 ~@2 ab4@3 ab4 ~@2 ab4 ~@2 ab4 ~@2 ab4 ~@2", P: "a4@3 a4 ~@2 a4 ~@2 b4@15",
  Q: "db4@5 c4 eb4 db4", R: "ab3@5 f3 gb3 ab3", S: "[ab3 ~@2 g3@9 ~@4]/2", T: "eb4@5 d4 f4 eb4",
  U: "db4 ~@2 b3@2 a3@2 b3", V: "[a3 ~@2 ab3@9 ~@4]/2", W: "~@4 f4 gb4 ab4 a4", X: "a4 ab4 gb4 ab4@2 ~@3",
  Y: "~@12 a4 ~@5 g3@3 a4@3", Z: "g4", AA: "~@2 e4@2 d4@2 c4 b3", AB: "a3@3 ~", AC: "~@2 d4@2 c4@2 b3 a3", AD: "g3@3 ~",
  AE: "~@2 g3 a3 g3@4", AF: "~ g3 a3 g3 b3 a3 g3 f3", AG: "e3@3 ~", AH: "~@2 c4@2 bb3@2 a3 g3", AI: "g3@4 ~@2 e3 f3",
  AJ: "g3@4 ~ e3 f3 g3", AK: "e3/2", AL: "c4 ~@7", AM: "[c4@5 a3@2 ~@2 c4@5 d4@2 c4 ~@6 e3@5 f3@5 gb3@4 g3@2 ~@9]/2",
  AN: "~ g3@2 ~@2 g3@2 ~@17", AO: "~ e4 ~@6 e4 ~@3", AP: "~@2 e4 ~@3 e4@3 ~@7 c4@2 ~@6",
  AQ: "~@6 c4@2 ~@7 c4 ~@4 c4@3 ~", AR: "[~@5 e4@2 ~@12 e4@2 ~@2 eb4@2 ~@12 eb4@2 ~@3 d4@2 ~@4]/2", AS: "~ d4@12 ~@11",
  AT: "~@7 e4@2 ~@12 e4@2 ~", AU: "~@6 e4 ~@4 e4@3 ~@6 c4@2 ~@2", AV: "~@10 c4@2 ~@8 c4 ~@3", AW: "c4@3 ~@7 e4@2 ~@12",
  AX: "[e4@2 ~@2 eb4@2 ~@8 e4@2 ~@2 e4@2 ~@3 c4@19 ~@6]/2", AY: "~@6 c4 ~@5", AZ: "~@2 c4@2 ~@7 c4 ~@4 c4@3 ~@5",
  BA: "~ a3@2 ~@12 a3@2 ~@7", BB: "a3 ~@4 a3@3 ~@6 e4@2 ~@8",
  BC: "[~@4 e4@2 ~@3 eb4@2 ~@12 eb4@2 ~@3 d4@2 ~@5 d4@12 ~]/2", BD: "~@17 c4@2 ~@5", BE: "~@7 c4@2 ~@7 bb3 ~@4 bb3@3",
  BF: "~@3 a3 ~@6 a3 ~", BG: "~@5 c4 ~@4 c4@3 ~@6 e4@2 ~@3", BH: "~@9 e4@2 ~@3 eb4@2 ~@8", BI: "~@8 c4@5 ~@11",
  BJ: "[~@20 c4@13 c4@4 c4@13 c4@4 c4@4 ~@2 b3@2 ~@4 g3@13 ~@9 c4@12 c4@4 c4@13 c4@3]/5",
  BK: "[~ c4@4 ~@3 b3@2 ~@4 c4@13 ~@8 c4@2 ~@2 c4@2 ~@3 c4@2 ~@2]/2",
  BL: "c4@2 ~@2 c4@2 ~@2 c4@2 ~@3 c4@2 ~@2 c4@2 ~@2 c4@3", BM: "~@3 b3@2 ~@5 g3@13 ~",
  BN: "~@7 c4@2 ~@2 c4@2 ~@2 c4@2 ~@3 c4@2 ~@2",
  BO: "[c4@2 ~@2 c4@2 ~@2 c4@2 ~@2 c4@2 ~@3 c4@4 ~@2 g3@2 ~@4 g3@13 ~@6]/2",
})).s("gm_french_horn").gain(0.3)

// other · french horn · "Horn 1" · soft notes
const french_horn_soft = note(`<
  ~@2
  [~@3 db4 ~@2 db4 ~@5 db4 ~@2 db4 ~@2 db4 ~@2 db4 ~@2]
  [~@3 d4 ~@2 d4 ~@5 d4 ~@2 d4 ~@2 d4 ~@2 d4 ~@2]
  [~@3 e4 ~@2 e4 ~@5 e4 ~@2 e4 ~@2 e4 ~@2 e4 ~@2]
  [~@3 gb4 ~@2 gb4 ~@17]
  ~@90
>`).s("gm_french_horn").gain(0.2)

// other · french horn · "Horn 2"
const french_horn_2 = note(`<
  A B C D E D F@4 G@2 F H C I G@2 J G K L M@2 N@2 O@2 P Q R S T U J G V@2 W ~ X@2 Y@2 Z AA Y X@3 Y@2 Z AB AC@2 AD ~@15
  AE AF AG AH AI@2 AJ AK AL AM AN AO ~@3 AP@2 AQ@2 AR AS AT AU@2
>`.pickRestart({
  A: "~@3 db3 eb3 db3 ab3@6", B: "~@3 ab3 bb3 b3 gb4 ~ f4 ~ eb4 ~",
  C: "ab3@3 ab3 ~@2 ab3 ~@2 ab3@3 ab3 ~@2 ab3 ~@2 ab3 ~@2 ab3 ~@2",
  D: "a3@3 a3 ~@2 a3 ~@2 a3@3 a3 ~@2 a3 ~@2 a3 ~@2 a3 ~@2", E: "b3@3 b3 ~@2 b3 ~@2 b3@3 b3 ~@2 b3 ~@2 b3 ~@2 b3 ~@2",
  F: "db4@3 db4 ~@2 db4 ~@2 db4@3 db4 ~@2 db4 ~@2 db4 ~@2 db4 ~@2",
  G: "eb4@3 eb4 ~@2 eb4 ~@2 eb4@3 eb4 ~@2 eb4 ~@2 eb4 ~@2 eb4 ~@2",
  H: "c4@3 c4 ~@2 c4 ~@2 c4@3 c4 ~@2 c4 ~@2 c4 ~@2 c4 ~@2",
  I: "bb3@3 bb3 ~@2 bb3 ~@2 bb3@3 bb3 ~@2 bb3 ~@2 bb3 ~@2 bb3 ~@2",
  J: "f4@3 f4 ~@2 f4 ~@2 f4@3 f4 ~@2 f4 ~@2 f4 ~@2 f4 ~@2",
  K: "db4@3 db4 ~@2 db4 ~@2 eb4@3 eb4 ~@2 eb4 ~@2 eb4 ~@2 eb4 ~@2", L: "a3@3 a3 ~@2 a3 ~@2 b3@15",
  M: "db4@3 db4 ~@2 db4 ~@2 db4@3 db4 ~@2 db4 ~@2 db4@3 db4 ~@2",
  N: "g4@3 g4 ~@2 g4 ~@2 g4@3 g4 ~@2 g4 ~@2 g4@3 g4 ~@2",
  O: "gb4@3 gb4 ~@2 gb4 ~@2 gb4@3 gb4 ~@2 gb4 ~@2 gb4@3 gb4 ~@2",
  P: "gb4@3 gb4 ~@2 gb4 ~@2 f4@3 f4 ~@2 f4 ~@2 f4@3 f4 ~@2", Q: "eb4@3 eb4 ~@2 eb4 ~@2 f4@3 f4 ~@2 eb4@3 ~@6",
  R: "eb4@3 eb4 ~@2 eb4 ~@2 eb4@3 eb4 ~@2 eb4 ~@2 eb4@3 eb4 ~@2",
  S: "d4@3 d4 ~@2 d4 ~@2 d4@3 d4 ~@2 d4 ~@2 d4@3 d4 ~@2",
  T: "bb3@3 bb3 ~@2 bb3 ~@2 bb3@3 bb3 ~@2 bb3 ~@2 bb3@3 bb3 ~@2",
  U: "a3@3 a3 ~@2 a3 ~@2 a3@3 a3 ~@2 a3 ~@2 a3@3 a3 ~@2", V: "[db4@4 db4@3 eb4@4 db4@2 db4 ~@2]/2", W: "~@6 g3 ~",
  X: "g3 ~@2 g3 ~@2 g3 ~@2 g3 ~@2", Y: "a3 ~@2 a3 ~@2 a3 ~@2 a3 ~@2", Z: "b3 ~@2 b3 ~@2 b3 ~@2 b3 ~@2",
  AA: "bb3 ~@2 bb3 ~@2 bb3 ~@2 bb3 ~@2", AB: "a3 ~@2 a3 ~@2 g3 ~@2 g3 ~@2", AC: "~@3 c4@2 ~@4 c4@2 ~@4 c4@2 ~@4 c4@2 ~",
  AD: "c4 ~@7", AE: "~@6 g3 ~@5", AF: "~@2 g3@2 ~@7 g3 ~@4 g3@3 ~@5", AG: "~ f3@2 ~@12 f3@2 ~@7",
  AH: "f3 ~@4 f3@3 ~@6 a3@2 ~@8", AI: "[~@4 a3@2 ~@3 a3@2 ~@12 a3@2 ~@3 a3@2 ~@5 a3@12 ~]/2", AJ: "~@17 g3@2 ~@5",
  AK: "~@7 g3@2 ~@7 g3 ~@4 g3@3", AL: "~@3 f3 ~@6 f3 ~", AM: "~@5 gb3 ~@4 gb3@3 ~@6 a3@2 ~@3",
  AN: "~@9 a3@2 ~@3 a3@2 ~@8", AO: "~@8 c4@5 ~@11", AP: "[~@16 c4@12 c4@4 c4@13 c4@3]/2",
  AQ: "[~ c4@4 ~@3 b3@2 ~@4 c4@13 ~@8 c4@2 ~@2 c4@2 ~@3 c4@2 ~@2]/2",
  AR: "c4@2 ~@2 c4@2 ~@2 c4@2 ~@3 c4@2 ~@2 c4@2 ~@2 c4@3", AS: "~@3 b3@2 ~@5 g3@13 ~",
  AT: "~@7 c4@2 ~@2 c4@2 ~@2 c4@2 ~@3 c4@2 ~@2",
  AU: "[c4@2 ~@2 c4@2 ~@2 c4@2 ~@2 c4@2 ~@3 c4@4 ~@2 g3@2 ~@4 g3@13 ~@6]/2",
})).s("gm_french_horn").gain(0.25)

// other · trombone
const trombone = note(`<
  A B C@4 ~@31 D ~@2 E F G H I J K L M N K O P Q E R ~ S@3 T U@2 V@2 W X@3 Y Z@5 AA@3 AB@6 AC@5 AD AE AF AG AH AI@2
>`.pickRestart({
  A: "a2@6 a2 ~", B: "b2@6 b2 ~ b2 ~ b2 ~", C: "db3 ~@2 db3 ~@4", D: "~@5 db3 ~@2", E: "c3@2 ~ g2@2 ~ c3@2 ~ g2@2 ~",
  F: "c3@2 ~ g2@2 ~@7", G: "f3@2 ~ c3@2 ~ f3@2 ~ c3@2 ~", H: "gb3@2 ~ c3@2 ~ gb3@2 ~ c3@2 ~",
  I: "e3@2 ~ b2@2 ~ e3@2 ~ b2@2 ~", J: "eb3@2 ~ b2@2 ~ eb3@2 ~ b2@2 ~", K: "d3@2 ~ a2@2 ~ d3@2 ~ a2@2 ~",
  L: "g2@2 ~ d3@2 ~@7", M: "~@3 g2@2 ~ c3@2 ~ g2@2 ~", N: "db3@2 ~ g2@2 ~ db3@2 ~ g2@2 ~",
  O: "eb3@2 ~ a2@2 ~ eb3@2 ~ a2@2 ~", P: "e3@2 ~ e3@2 ~ eb3@2 ~ eb3@2 ~", Q: "d3@2 ~ d3@2 ~ g2@2 ~ b2@2 ~",
  R: "c3@2 ~ a2@2 ~ g2@2 ~ b2@2 ~", S: "[c4@5 a3@2 ~@2 c4@5 d4@2 c4 ~@6 e3@5 f3@5 gb3@4 g3@2 ~@8 g3@2 ~@4 g3@2 ~@17]/3",
  T: "~ c3@7 c3@4", U: "[~@2 c3@2 ~@2 c3@5 e3@5 f3@14 f3@9 f3@2 ~@3 f3@4]/2",
  V: "[~@5 e3@14 e3@4 eb3@14 eb3@5 d3@5 ~]/2", W: "~ g3@12 ~@4 bb2@7",
  X: "[b2@7 c3@14 c3@9 c3@2 ~@3 c3@5 e3@4 f3@14 f3@9 ~ f3@2 ~@2]/3", Y: "f3@5 ~@5 e3@14",
  Z: "[e3@4 eb3@14 eb3@5 c3@5 ~@2 c4@12 ~@4 bb2@7 b2@7 c3@14 c3@9 c3@2 ~@3 c3@5 e3@4 f3@14 f3@9]/5",
  AA: "[f3@2 ~@3 f3@5 ~@4 e3@14 e3@5 eb3@14 eb3@5 d3@5 ~@2 g3@12 ~]/3",
  AB: "[~@3 bb2@7 b2@7 c3@14 c3@9 c3@2 ~@3 c3@4 e3@5 f3@14 f3@9 f3@2 ~@3 f3@5 ~@4 e3@14 e3@5 eb3@14 eb3@4 c3@5 c3@2 ~@3 bb2@2 b2@2 ~@2]/6",
  AC: "[~ c3@2 ~@17 a3@13 ab3 ~@3 g3@13 gb3 ~@3 f3@4 ~@2 g3@2 ~@4 e3@8 ~@14 a3@12 ab3 ~@3 g3@13 gb3 ~@2]/5",
  AD: "~ f3@4 ~@3 g3@2 ~@4 e3@8 ~@2", AE: "~@11 a3@2 ~@2 a3@2 ~@3 ab3@2 ~@2",
  AF: "ab3@2 ~@2 g3@2 ~@2 g3@2 ~@3 gb3@2 ~@2 gb3@2 ~@2 f3@3", AG: "~@3 g3@2 ~@5 e3@13 ~",
  AH: "~@7 a3@2 ~@2 a3@2 ~@2 ab3@2 ~@3 ab3@2 ~@2",
  AI: "[g3@2 ~@2 g3@2 ~@2 gb3@2 ~@2 gb3@2 ~@3 f3@4 ~@2 e3@2 ~@4 c3@13 ~@6]/2",
})).s("gm_trombone").gain(0.3)

// other · trombone · soft notes
const trombone_soft = note("<~@6 A B C D E F A G H I E J K L M N A@3 O A@3 G H I E J K P Q R ~@18 S ~@39>".pickRestart({
  A: "db3 ~@2 db3 ~@4", B: "f3 ~@2 f3 ~@4", C: "gb3 ~@2 gb3 ~@4", D: "gb3 ~@2 gb3 ~ f3 ~@2", E: "eb3 ~@2 eb3 ~@4",
  F: "ab2 ~@2 ab2 ~@4", G: "c3 ~@2 c3 ~ c3 ~@2", H: "b2 ~@2 b2 ~@4", I: "bb2@3 ~@6 bb2@3 ~@3 bb2 ~@2 c3 ~@2 d3 ~@2",
  J: "gb3 ~@2 gb3 ~ gb3 ~@2", K: "ab3 ~@2 ab3 ~@4", L: "g3@3 ~@6 g3@3 ~@3 g3 ~@2 eb3 ~@2 g3 ~@2",
  M: "ab3 ~@2 ab3 ~ ab2 ~ ab2", N: "a2 ~@2 b2 ~ b2 ~ b2", O: "db3 ~@2 db3 ~ db3 ~@2", P: "ab3 ~@2 gb3 ~ ab3 ~ db3",
  Q: "db3@2 ~ db3@4 ab3", R: "db3 ~", S: "c3 ~@3",
})).s("gm_trombone").gain(0.2)
// … 41 more lines