Strudelify

Three Brass Cats

Chris Hazell

KeyD majorTempo120 bpm
0:00/0:00
// Three Brass Cats — Chris Hazell
// 120 bpm, 12/8, key D 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 65, 9/8 at bar 65, 4/4 at bar 129, ...) are rendered on a constant 12/8 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5858210; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 184 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/6)

// 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 · muted trumpet
const muted_trumpet = note("<A B@4 C@2 D@3 ~@3 E@2 F@2 G H@8 I@3 J@3 K L@5 M@4 ~@142>".pickRestart({
  A: "~@19 g4@5",
  B: "[~@2 g4@13 g4@13 g4@12 g4@13 g4@13 g4@12 g4@13 g4@44 g4@13 f4@12 e4@6 ~@4 g4@3 a4@3 a#4@3 c5@3 d5@3 ~ e5@3 f5@3]/4",
  C: "[g5@95 ~]/2", D: "[~@5 f4@50 g4@50 ~@39]/3", E: "[~@20 g4@13 g4@12 e4@13 e4@13 g4@25]/2",
  F: "[c4@25 a3@50 ~ g3@12 c4@3 ~@5]/2", G: "~@5 c4@25 e5@18",
  H: "[~@7 d5@25 ~ c5@25 b4@25 c5@25 ~ b4@25 a4@38 a4@6 c5@6 b4@6 ~ c5@12 g4@25 ~ c5@6 b4@12 c5@6 ~ g4@19 e4@12 a4@99]/8",
  I: "[~@2 e4@19 e4@3 ~@4 e4@3 ~@3 e4@19 f#4@3 ~@3 f#4@13 e4@32 ~@40]/3",
  J: "[~@10 f#4@3 g4@3 f#4@3 g4@3 ~ a4@38 ~@28 d4@3 e4@3 f#4@3 g4@3 ~ a4@3 b4@3 c#5@3 d5@6 c#5@13 b4@13 ~]/3",
  K: "~@5 f#4@38 ~@5", L: "[~@20 a3@101 a#3@50 ~ d#4@6 ~@6 d#4@19 ~@19 d4@18]/5",
  M: "[~ c4@25 a#3@25 ~ c4@31 d4@19 c4@32 d#4@44 ~@14]/4",
})).s("gm_muted_trumpet").gain(0.25)

// other · muted trumpet · soft notes
const muted_trumpet_soft = note("<~@9 A@5 ~@170>".pickRestart({
  A: "[~@10 e4@25 d4@25 ~ f4@25 d4@25 e4@25 d4@25 ~ f4@50 ~@28]/5",
})).s("gm_muted_trumpet").gain(0.15)

// other · muted trumpet
const muted_trumpet_2 = note("<~@47 A B C D@4 E F ~@128>".pickRestart({
  A: "~@8 d5@3 g5@3 a5@3 ~ b5@3 a5@3 g5@3 a5@3 b5@6 ~ d6@3 c#6@3 d6@3 c#6@2", B: "~ b5@3 c#6@3 d6@32 ~@9",
  C: "~@16 g5@3 f#5@3 ~ g5@6 g5@3 f#5@3 g5@6 ~ d5@3 e5@3",
  D: "[f#5@3 g5@3 a5@3 b5@3 ~ c#6@25 b5@25 a5@16 g5@3 f#5@3 e5@3 d5@63 ~@41]/4",
  E: "~@3 d5@4 e5@4 f#5@5 g5@6 d5@6 b5@8 g5@12", F: "d6",
})).s("gm_muted_trumpet").gain(0.45)

// other · trombone
const trombone = note(`<
  ~@2 A B@2 C@4 ~@17 D@4 E@2 F@6 G H I@4 J K L@4 M N@4 O ~@3 P Q ~@6 R S@2 T@2 U@2 ~@2 V@3 W X Y Z AA@2 AB@2 AC AD AE@2
  ~@2 AF AG@3 AH@2 AI AJ AK AL AM AN AO AP@2 AQ AR@2 AS AT@2 AU AV AW AX AY AZ BA BB BC BD BE@2 AL ~ BF BG@2 ~@2 BH@2
  BI@2 BJ@2 BK BL@2 BM@2 BN@3 BO BP BQ@3 BR BS@2 ~ BT@3 BU@3 BV@2 BW BX@2 BY@2 BZ@2 CA CB CC@2 CD@2 CE CF CG@3 CH@2
>`.pickRestart({
  A: "~@43 f3@5", B: "[~ e3@6 d3@6 ~ f3@12 e3@6 ~ d3@6 e3@13 d3@12 e3@6 ~ f3@25]/2",
  C: "[g2@13 c2@6 c2@12 g2@6 ~ c3@6 c3@13 a2@6 c2@13 g2@25 a3@50 ~@41]/4",
  D: "[~@2 f#3@19 a3@3 ~@4 a3@3 ~@3 a3@19 b3@3 ~@3 b3@13 c#4@31 a3@13 a3@13 b3@12 b3@13 f#3@13 f#3@12 a3@13]/4",
  E: "[a3@13 b3@6 c#4@12 d4@32 g3@6 a3@13 b3@13 ~]/2",
  F: "[~@5 b3@63 a3@38 a3@3 ~@3 a2@3 ~@4 f#3@38 b3@3 ~@3 b2@3 ~@3 g3@57 ~@6 g3@38 ~@7 f3@6 a#3@3 ~@2]/6",
  G: "~ a3@19 g3@13 ~@6 g3@6 a#3@3", H: "~@4 c4@19 f3@13 ~@6 f3@6",
  I: "[a#3@3 ~@3 a3@19 ~@13 g3@25 g3@25 a#3@13 a#3@6 a3@6 ~ g3@12 g3@13 d3@12 f3@13 a#3@13 f3@12 g3@3]/4",
  J: "~ g#3@3 g3@3 g#3@3 a#3@38", K: "b3@3 c4@3 b3@3 c4@3 ~ d4@12 c#4@6 c#4@6 ~@11",
  L: "[~@12 f#4 f#4@2 f#4@6 e4@25 ~ d4@25 b3@31 a3@9 ~ f#4@2 f#4 f#4@6 e4@25 ~ d4@15 d4@2 d4@2 d4@22 d4 d4@2]/4",
  M: "d4@13 c#4@12 c#4@13 b3@10", N: "[~@2 b3@13 a3@19 f#3@6 f#3@13 f#3@13 d3@50 g3@76]/4", O: "a3",
  P: "~ g4!2 [d#3,f4]", Q: "[d3,f4]@2 a#4 a4 [c3,g4]@2 f4@2, ~ g2 ~@2", R: "~@3 g4",
  S: "[d#4@12 c4@12 f4@36 g4@12 g#4 a4 a#4@10 g4@12]/2",
  T: "[f4@2 [e3,e4] d#4 c4 [d#3,d#4] [g#3,g4] [g#3,f4], ~@3 d#3@2 ~@3]/2", U: "[[g#3,d#4] f3!3 e3!3 ~, ~ d4@6 ~]/2",
  V: "[~@9 [g3,c4]@5 [g3,d#4]@4 [f3,c#4]@9 [f3,d4]@5 [f3,d4]@4]/3", W: "[d#3,d4]@3 [d#3,g4]",
  X: "[d#3,d#4] [d#3,c4] [f3,f4]@2", Y: "[d#3,d#4]@3 [f3,d4]@2 ~ [c3,a#4]@3 [d#3,g#4]@3",
  Z: "[c3,f4] [d#3,g#4] [f3,g4] [a#2,d#4]", AA: "[[f2,g4]@3 [g2,f4]@3 [c3,c4]@16 ~@2]/2",
  AB: "[g#3@24 d#3@12 ~@12 e5 f5@3 d5@4 a#4@4 a4 a#4 a4@2 f4@4 d4@4 c4@16 ~@4 c4@4, ~@3 a#3@2 f3 g#3@2]/2",
  AC: "d#4@4 g4@4 a#4@4 ~@2 f4 g4 ~ g#4 a#4 ~ c5 d5 ~ d#5 [a#3,f5]@12 [a3,e5]@12, d#3 a#3 ~@2", // A#5 A5
  AD: "f5 e5 d#5@10 d5 c#5 ~@2 g#3@8 g#3@8 g#3@8 c5@4 g#4@4, g#3@7 c5@5 d#5@8 g#3@4",
  AE: "[g#3@8 ~@8 g#3@8 f4 d#4 ~@14 g3@8 c3@8 c3@4 a#2@4 a#2@8 a#2@8 a#2@16, f4@6 d#4@6 ~ f4@17 e4@18, ~ g#3 ~ g3@2 ~@7]/2",
  AF: "~@6 c5@3 [g#3,c#5]@2 ~", AG: "[[g3,d#4]@9 [f3,c#4]@9 a#4@2 c5 a#4@3 a#4@2 c5 a#4@3 g4@3 d#4@3, ~@2 f3 d#3]/3",
  AH: "[[d#3,c4]@9 [f3,d4]@6 [d#3,c4]@3 [f3,a#3]@2 ~ [c2,g4]@3]/2", AI: "[d#2,f4] [c3,d4] [d#2,f4] [f2,d#4]",
  AJ: "[a#2,c4] [g3,d#4] [f3,d4] f3", AK: "f3!4", AL: "f3 d3 f3 g3", AM: "a3 f3 g3 a#3", AN: "a#3 f3 g3@2",
  AO: "a3 d3@2 f3", AP: "[g3@2 g3 d3@2 f3 g3@2]/2", AQ: "g3 d3 f3 g3", AR: "[g3 a3 c4 d4@2 d4 c4@2]/2",
  AS: "e4 f4@2 f4", AT: "[e4@2 c4 d4@2 d4 c4@2]/2", AU: "f3 a#3 a3 g3", AV: "f3@2 c4 d4", AW: "f4 d4 c4 g3",
  AX: "a3 a#3@2 d4", AY: "d4 c4@2 c4@3 a#3@3 f3@3", AZ: "a#3@3 f3@3 f3 e3@2 e3@3", BA: "g3 a3 f4!2", BB: "f4 e4 a3 ~",
  BC: "f3 a3 ~ g3", BD: "c4 d4 e4 d4", BE: "[e4 c4!2 a3@2 g3 g3@2]/2", BF: "~ f3 c#4!2",
  BG: "[f4@12 a#3@12 f#3@61 ~@11]/2", BH: "[~@5 c2@5 c2@17 ~@7 c2@5 c2@17 ~@7 c2@5 c2@17 ~@7 c2@4]/2",
  BI: "[~ c2@17 ~@7 f2@5 f2@7 f2@2 ~ f2@7 f2@5 f2@2 f2@5 f2@10 f2@5 f2@2 f2@2 ~ f#2@2 g2@2 g#2@5 g#2@7 ~]/2",
  BJ: "[g#2@2 g#2@7 g#2@5 g#2@2 ~ g#2@4 g#2@10 g#2@5 g#2@2 a2@2 ~ a#2@2 b2@2 ~ c3@4 b2@2 ~ a#2@2 ~@3 a2@7 g#2@7 g2@7 ~ f#2@7 f2@7 a#2@2]/2",
  BK: "~ c3@2 b2@2 a#2@2 ~ a2@5 g#2@2 g2@2 ~@3 f#2@7 f2@7 e2@7 ~ d#2@6",
  BL: "[~ d2@7 d2@2 ~ g2@5 g2@2 c2@5 c2@17 ~@7 c2@5 c2@17 ~@7 c2@5 c2@15]/2",
  BM: "[~@9 c2@5 c2@17 ~@15 a#3@4 a3@10 ~@15 g#3@5 g3@10 ~@6]/2",
  BN: "[~@8 a#3@5 a3@10 ~@14 g#3@5 g3@10 ~@14 g3@7 f3@5 d#3@10 g3@7 f3@5 d#3@7 d#3@7 ~@10 a#3@7 g#3@5 f#3@8]/3",
  BO: "~@2 a#3@7 g#3@5 f#3@7 f#3@7 ~@3 c4@5 b3@2 a#3@2 ~@3 a3@5",
  BP: "~@2 g#3@7 ~ g3@7 f#3@7 f3@7 ~ a#3@7 a#3@2 a3@5 g#3@2",
  BQ: "[~ g3@2 ~@2 f#3@7 ~ f3@7 e3@7 d#3@7 d3@7 ~ g3@10 ~@7 a#3@5 a3@9 a3@2 a3@2 ~@11 g#3@5 g3@9 g3@2 g3@2 ~@11 a#3@5 a3@10 ~@12]/3",
  BR: "~@2 g#3@5 g3@10 ~@7 d#4@5 d4@2 c4@2 ~@3 d4@7 f#3@5",
  BS: "[~@2 g3@7 ~ a3@7 a#3@7 e3@2 ~ f3@5 g3@2 g#3@5 f#3@2 f3@2 ~@3 f#3@7 c3@7 ~ d#3@7 g#2@7 g2@7 c#3@10 ~@4]/2",
  BT: "[~@6 c3@5 c3@53 ~ c2@4 c2@2 ~ f2@2 f#2@2 ~ g2@2 c2@5 c2@2 f2@2 ~ f#2@2 g2@2 ~ c2@4 c2@2 ~ f2@2 f#2@2 ~ g2@2 c2@5 c2@2 f2@2 ~ f#2@2 g2@2 ~ c2@5 c2@2 f2@2 f#2@2 ~ g2@2 c2@5 c2@2]/3",
  BU: "[~ f2@2 f#2@2 g2@2 ~ c2@5 c2@2 f2@2 ~ f#2@2 g2@2 c2@5 c2@2 ~ f2@2 f#2@2 g2@2 ~ d#2@5 d#2@2 g#2@2 ~ a2@2 a#2@2 d#2@5 d#2@2 ~ g#2@2 a2@2 ~ a#2@2 d#2@5 d#2@2 g#2@2 ~ a2@2 a#2@2 ~ d#2@4 d#2@2 ~ g#2@2 a2@2 ~ a#2@2 f#2@5 f#2@2 c#3@2 ~ d3@2 d#3@2 ~ f#2@4 f#2@2 ~ c#3@2 d3@2 ~ d#3@2 f#2@5 f#2@2 c#3@2 ~ d3@2 d#3@2 ~ f#2@5]/3",
  BV: "[f#2@2 c#3@2 d3@2 ~ d#3@2 ~@5 a3@17 b3@5 b3@2 ~@5 a3@17 b3@2 ~@10 c4@15 d4@9]/2",
  BW: "~@5 d#4@24 ~ f#4@4 f4@2 ~ d#4@2 ~@3 f4@6",
  BX: "[~ a3@2 a#3@5 c4@2 ~ c#4@5 c4@2 a#3@2 ~@3 c4@7 f#3@2 ~ g3@2 ~@2 a3@2 ~ a#3@5 g#3@2 g3@2 ~@3 g#3@7 b2@7 d3@7 ~ g#2@7 g2@7 ~@8]/2",
  BY: "[~@9 g4@5 f#4@17 ~@7 f4@5 d#4@17 ~@7 g4@5 f#4@17 ~@7]/2",
  BZ: "[~ f4@4 d#4@17 c4@10 d4@2 c4@2 ~ a3@5 f#4@15 ~@11 c4 ~@2 c4 ~ a#3@2 ~ c4@2 c4 ~@2 a#3@2 c4@2 c4 ~@10]/2",
  CA: "~@2 a3@2 a#3@2 c4@2 ~ a#3@2 a3@2 ~@20 c3@2 ~@13", CB: "~@2 g3@7 f3@5 d#3@10 g3@7 f3@5 d#3@7 d#3@5",
  CC: "[~@12 a#3@7 g#3@5 f#3@10 a#3@7 g#3@5 f#3@7 f#3@7 ~@3 c4@5 b3@2 a#3@2 ~@3 a3@7 g#3@7 ~ g3@6]/2",
  CD: "[~ f#3@7 f3@7 ~ a#3@7 a#3@2 a3@5 g#3@2 ~ g3@2 ~@2 f#3@7 ~ f3@7 e3@7 d#3@7 d3@7 ~ g3@10 ~@7 a#3@5]/2",
  CE: "a3@9 a3@2 a3@2 ~@11 g#3@5 g3@9 g3@2 g3@2 ~@6", CF: "~@5 a#3@5 a3@10 ~@14 g#3@5 g3@9",
  CG: "[~@8 e3@5 f3@2 f#3@2 ~@3 g3@46 g3@5 g#3@2 a3@2 ~@3 a#3@46 f#3@5 g3@2 g#3@2 ~@3 a3@7 ~]/3",
  CH: "[a#3@7 b3@7 c4@7 c4@7 ~ a#3@2 c#4@5 ~@10 a#3@4 a3@17 ~@8 f3@5 g3@2 ~@14]/2",
})).s("gm_trombone").gain(0.3)

// other · trombone · soft notes
const trombone_soft = note(`<
  A B@2 ~@5 C@7 D E F G@8 ~@31 H I J K H L M N@2 O P Q R S ~@2 T@3 U ~@14 V@2 W ~@33 X ~@2 Y@3 ~@21 Z AA@2 ~@27
>`.pickRestart({
  A: "~@19 g3@5", B: "[~@2 g3@13 g3@13 g3@12 f3@13 f3@13 g3@12 g3@13 ~@5]/2",
  C: "[~@14 b3@12 g3@13 e3@6 g3@13 c3@19 c3@6 c3@19 c3@6 ~ c3@18 c3@6 ~ c3@19 c3@6 c3@19 c3@6 c3@19 c3@6 ~ c3@19 c3@6 c3@19 c3@6 e2@19 e2@6 f2@19 f2@6 ~ g2@19 g2@6]/7",
  D: "a2@19 a2@6 a#2@19 a2@4", E: "~@2 g2@19 f2@6 ~ d#2@6 f2@6 g2@3 ~@5", F: "~@5 g2@25 c4@6 ~ c4@11",
  G: "[~ c4@6 b3@6 ~ b3@12 b3@6 ~ a3@6 a3@13 a3@6 g3@6 g3@13 g3@6 c4@6 ~ c4@12 c4@6 ~ b3@6 b3@6 b3@6 a3@13 a3@13 a3@12 a3@13 a3@6 c4@13 c4@13 c4@12 c4@13 d4@12 d4@13 c4@13 c4@12 f3@19 f3@6 ~ f3@6 c4@3 ~@10 a#3@19 c4@6 c#4@12 c4@6 ~ c#4@10]/8",
  H: "[a#2,f4] [a#2,g4]!2 [a#2,f4]", I: "[d3,a#3] [c3,d#4] [a#2,d4] [f2,c4]", J: "[f3,f4] f3 d#3 ~", K: "~@3 f2",
  L: "[a2,a4] [g2,a#4] [c3,a#4] [f2,a4]", M: "[d3,f4] [d#3,g4] [c3,g4] [d3,f4]",
  N: "[[g2,a#3]@2 d#4 d4 [f2,c4]@2 d#3@2 d#3@2 d#3@2 f3@2 f3@2, ~ c3 ~ a#3@3 ~@2]/2", O: "f3 g3!3", P: "f3!3 d#3",
  Q: "d#3@4 ~@2 f3@3 f3@3", R: "f3@3 d#3@3 d#3@4 ~@2", S: "f3!2 ~@2", T: "[~ [d#3,g#3] [f3,a#3] [d#3,c4]]/3",
  U: "[g#3,c#4]@3 ~", V: "[~@3 g4@2 g#4 [d#3,g4]@3 g4@2 g#4 g4@3 [f3,g4]@3 g4@2 g#4 g4@3, d#3@2 ~ f3@2 ~ d#3@2]/2",
  W: "[d#3,g#4] g#3@2 ~, ~ a#4 ~@2", X: "f3 ~@2", Y: "[~@37 g#3@16 a#3@48 ~@43]/3", Z: "~@11 c3",
  AA: "[~ c3@53 ~@42]/2",
})).s("gm_trombone").gain(0.2)

// other · trumpet
const trumpet = note("<~@100 A ~ B C@2 D E@2 F G ~@74>".pickRestart({
  A: "~@3 c4", B: "~ d4 f4 g4", C: "[a4 a#4 c5 d5@2 d5 c5@2]/2", D: "f4 a#4@2 a4", E: "[g4@2 c5 d5@2 d5 c5@2]/2",
  F: "c5 f5 e5 d5", G: "c5@3 ~",
})).s("gm_trumpet").gain(0.3)

// other · trumpet
const trumpet_2 = note("<~@116 A B C@2 D E ~@62>".pickRestart({
  A: "~@6 a#5 ~@2 a5 ~@2 g5 ~@2 a5 ~@2 g5 ~@2 f5 ~@2 f5@6 d5@6 e5@12",
  B: "f5 ~@2 g5 ~@2 a5@3 ~@3 a5@6 a#5 ~@2 a5 ~@2 a#5@6 a5@6 g5 ~@2 f5 ~@2 e5 ~@2 d5 ~@2",
  C: "[c5@24 ~@18 a#5@12 g5 ~@2 a5 ~@2 a#5 ~@2 a5 ~@2 a#5 ~@2 g5 ~@2 c6@15 a#5 ~@2 a5 ~@2 a#5 ~@2]/2",
  D: "g5@12 a5@6 f5 ~@2 g5 ~@2 a5@12 b5 c6 b5 c6 b5 c6 b5 c6 b5 c6 b5 c6", E: "c6 ~",
})).s("gm_trumpet").gain(0.4)

// other · trumpet
const trumpet_3 = note("<~@124 A@2 B C@2 D@4 ~@51>".pickRestart({
  A: "[~@2 f4 a4@2 g4 g4@2]/2", B: "f4 f4@2 e4", C: "f4/2", D: "[f3@12 f3@12 a#3@30 g#3@47 f3@48 ~@43]/4",
})).s("gm_trumpet").gain(0.2)

// other · trumpet
const trumpet_4 = note(`<
  ~@133 A@2 B@2 C ~@2 D E F G H I@2 J K L@2 M N O@2 P Q R@2 S T U V@2 W ~@2 X Y Z AA@2 AB AC@2 AD@2 ~ AE AF AG@2 AH@2
>`.pickRestart({
  A: "[~@12 g4@5 f#4@10 ~@14 f4@5 d#4@10 ~@14 g4@5 f#4@10 ~@11]/2",
  B: "[~@3 f4@5 d#4@10 ~@15 d#4@7 d4@5 c4@9 d#4@7 ~ d4@4 c4@10 ~@15 f#4@5]/2",
  C: "~@2 f4@5 d#4@10 f#4@7 f4@5 d#4@10 ~@9", D: "~@25 g4@5 f#4@10 ~@8", E: "~@6 f4@5 d#4@10 ~@14 g4@5 f#4@8",
  F: "~@17 f4@4 d#4@10 ~@7 c5@10", G: "d5@2 c5@2 ~ a4@5 f#5@10 ~@16 c5 ~@2 c5 ~ a#4@2 ~ c5@2 c5 ~",
  H: "~ a#4@2 c5@2 c5 ~@12 a4@2 a#4@2 c5@2 ~ a#4@2 a4@2 ~@19",
  I: "[~ c5@2 ~@15 d#5@7 d5@5 c5@10 d#5@7 d5@5 c5@7 ~@17 f#5@7 f5@5 d#5@8]/2",
  J: "~@2 f#5@7 f5@5 d#5@7 ~@10 g5@5 g5@2 g5@2 ~@3 g5@5", K: "~@2 d#5@7 ~ d#5@7 d#5@7 d#5@7 ~ c5@9 d#5@5 d#5@2",
  L: "[~ d#5@2 ~@2 d#5@7 ~ c5@7 c5@7 c5@7 c5@7 ~ a4@10 ~@44]/2", M: "~@35 f#4@2 f#4@2 ~@9",
  N: "~@17 d#4 d#4@2 ~@4 d#5@5 d5@2 c5@2 ~@3 d5@7 f#4@5",
  O: "[~@2 g4@7 ~ a4@7 a#4@7 e4@2 ~ f4@5 g4@2 g#4@5 f#4@2 f4@2 ~@3 f#4@7 c4@7 ~ d#4@7 g#3@7 g3@7 ~@14]/2",
  P: "~ c5@7 a#4@10 ~@7 g4@5 g4@2 ~ f4@4 g4@10 ~", Q: "~@11 c5@7 a#4@10 ~@7 g4@5 g4@2 ~ f4@5",
  R: "[g4@10 ~@11 c5@7 ~ a#4@10 ~@7 g4@4 g4@2 ~ f4@5 g4@10 ~@12 c5@7 a#4@9]/2",
  S: "~@8 g4@5 g4@2 f4@5 g4@10 ~@12 d#5@6", T: "~ c#5@10 ~@7 a#4@5 a#4@2 g#4@5 a#4@10 ~@8",
  U: "~@4 d#5@7 c#5@10 ~@7 a#4@5 a#4@2 g#4@5 a#4@8", V: "[~@17 e5@4 d#5@17 ~@8 c#5@4 d#5@17 ~@8 g5@5 f#5@16]/2",
  W: "~@8 a#5@5 a5@17 ~@18", X: "~@21 d5@2 ~@25", Y: "~@2 c5@2 ~@25 d5@2 ~@3 d5@2 ~@3 d5@2 ~@7",
  Z: "~@10 c5@2 ~@3 c5@2 ~@3 c5@2 ~@8 g4@4 f#4@7 ~ a4@2 ~@4",
  AA: "[~@11 f4@5 d#4@7 g4@2 ~@15 g4@5 f#4@5 a4@2 ~@2 a4@2 ~@3 a4@2 ~@8 f4@5 d#4@5 g4@2 ~@2 g4@2 ~@3 g4@2 ~@6]/2",
  AB: "~@2 d#5@7 d5@5 c5@10 d#5@7 d5@5 c5@7 ~@5",
  AC: "[~@12 f#5@7 f5@5 d#5@10 f#5@7 f5@5 d#5@7 ~@10 g5@5 g5@2 g5@2 ~@3 g5@7 d#5@7 ~ d#5@6]/2",
  AD: "[~ d#5@7 d#5@7 ~ c5@9 d#5@5 d#5@2 ~ d#5@2 ~@2 d#5@7 ~ c5@7 c5@7 c5@7 c5@7 ~ a4@10 ~@12]/2",
  AE: "~@19 f#4@2 f#4@2 ~@25",
  AF: "~ d#4 d#4@2 ~@4 d#4@5 e4@2 f4@2 ~@3 f#4@2 f#4 g4 [g#4,a4] a#4 [b4,c5] c#5@5 ~@2 c#5@5 ~@3 c#5@5 ~", // Amaj7 Cmaj7
  AG: "[~ c#5@2 b4@7 ~ c#5@5 ~@2 f#4@5 g4@2 g#4@2 ~@3 a4@2 ~ [a4,a#4] b4 [c5,c#5] d5 e5@5 ~@3 e5@5 ~@2 e5@5 ~@2 e5@2 ~ d5@7 e5@5 ~@2 a4@5 a#4@2 b4@2 ~@3 c5@7 ~, ~@37 d#5 ~@58]/2", // A#maj7 C#maj7
  AH: "[c#5@7 d5@7 d#5@7 d#5@7 ~ c#5@2 f5@5 ~@10 g5@4 f#5@17 ~@8 f5@5 e5@2 ~@14]/2",
})).s("gm_trumpet").gain(0.4)

// other · french horn · "Horn in F"
const french_horn = note(`<
  ~@2 A B@2 C@3 ~@7 D E F ~@4 G@3 H I@2 J@2 K@2 L@6 M@7 N O@2 P@2 ~@2 Q R@2 S ~@3 T U ~@9 V@2 W X Y Z AA AB@2 AC AD AE
  AF AG@2 AH@2 AI AJ AK AL ~@2 AM AN@3 AO@2 AP AQ AR AS AT@2 AU AV@2 AW AX AY AZ BA@2 BB BC@2 BD BE@2 BF BG BH BI BJ@2
  BK ~ BL BM@3 ~ BN@2 BO@2 BP@3 BQ BR BS@2 BT@3 BU BV BW@3 BX ~@2 BY BZ CA@2 CB CC CD CE@2 CF ~@2 CG@2 CH@3 CI CJ@2 CK@2
  CL CM CN CO@2 CP CQ
>`.pickRestart({
  A: "~@43 d4@5", B: "[~ c4@6 a#3@6 ~ d4@12 c4@6 ~ a#3@6 c4@13 a#3@12 c4@6 ~ d4@25]/2",
  C: "[e4@13 e4@12 d4@13 d4@12 f4@13 f4@13 e4@6 e4@19 ~@6 a4@13 f4@13 d4@11]/3", D: "~@19 f3@5",
  E: "~@2 f3@13 f3@13 g3@12 a3@3 ~@5", F: "~@11 a4@3 ~@4 c4@13 ~@17",
  G: "[~@27 d4@3 e4@3 f4@3 ~ g4@3 a4@3 b4@25 a4@6 g4@6 ~ f4@6 e4@6 d4@38 d4@13]/3", H: "g3@19 g3@6 g3@19 ~@4",
  I: "[~@2 c#4@3 ~ d4@3 c#4@3 d4@3 c#4@25 a3@6 ~ f#3@6 b3@13 f#4@6 e4@13 c#4@6 a3@5]/2",
  J: "[~ a4@38 g4@6 f#4@6 ~ g4@6 f#4@13 e4@12 g4@13]/2", K: "[f#4@13 d4@6 e4@12 f#4@32 f#4@6 e4@13 d4@13 ~]/2",
  L: "[~@5 b4@38 f#4@25 d4@50 ~ f#4@6 e4@6 d4@6 ~ d4@12 e4@6 ~ f#4@12 g4@6 f4@6 ~ d#4@6 d#4@13 f4@6 g4@13 d#4@6 ~@6 d#4@6 ~ a#3@3 c4@3 d#4@6 d#4@6 ~ d4@6 c4@6 a#3@18]/6",
  M: "[~ a3@25 g3@25 ~ a3@31 a#3@19 a3@25 ~@7 d4@3 d#4@3 d4@3 d#4@3 d4@6 ~ a#3@13 ~@6 g4@6 a#4@6 a4@6 ~ a#4@12 f4@25 ~ a#4@6 a4@12 a#4@6 ~ f4@19 d4@12 g4@28 ~ g#4@3 g4@3 g#4@3 a#4@3 ~@4 g4@3 ~@3]/7",
  N: "e4@25 e4@6 e4@6 ~@11", O: "[~@12 d4 d4@2 d4@6 c#4@25 ~ b3@6 d4@6 b3@6 ~ g3@6 a3@24]/2",
  P: "[~@7 a3@9 ~ d4@2 d4 d4@6 c#4@25 ~ b3@16 ~@28]/2", Q: "~@24 b3@6 d4@6 ~ f#4@11",
  R: "[~ d4@6 ~@20 b3@6 d4@7 f#4@15 d4@41]/2", S: "d4", T: "~@3 a3", U: "f3!2 a#3 ~", V: "[~@2 c#4 c4@2 c4 d#4!2]/2",
  W: "c4 a#3!3", X: "a#3!3 ~", Y: "g4@2 g#4 g4@3 g4@2 g#4 g4@3", Z: "g4@3 g4@2 g#4 g4@3 g#4@3",
  AA: "a#4@3 c5@3 c#5@3 c5@2 ~", AB: "[~@3 c4@3 c4@9 a#3@5 a#3@4]/2", AC: "a#3@3 g#3", AD: "g#3!2 a#3!2",
  AE: "g#3@3 g3@2 ~ d#4@3 c#4@3", AF: "a#3 c#4 c4 g#3", AG: "[a#3@3 a3@3 g3@16 ~@2]/2", AH: "[c4@2 g#3 d4@2 d4 c4@2]/2",
  AI: "g#3 d4 f4 e4", AJ: "d#4@2 d#4 c4!3", AK: "c4!3 a#3@2 a#3", AL: "a#3@2 a#3 g3 g3@2 g3@2 g3@4", AM: "~@9 c#4@2 ~",
  AN: "[c4 a#3]/3", AO: "[g4@3 d#4@3 c4@3 f4@6 d#4@3 d4@2 ~ d#4@3]/2", AP: "c#4 a#3 c#4 c4", AQ: "g#3 a#3 a3 a#3",
  AR: "a#3!2 a3!2", AS: "a3 a#3@3", AT: "[c4 d4 e4 f4@2 d4 f4 e4]/2", AU: "d4 a#3@2 d4",
  AV: "[g3@3 g3@3 c4@3 d4@6 d4@3 d4 e4@2 e4@3]/2", AW: "e4 a4!2 f4", AX: "f4 e4 c4 a#3", AY: "a#3 a3 g3!2",
  AZ: "c4 e4!2 d4", BA: "[c4@2 c4 f3@2 g3 a3@2]/2", BB: "d4!3 a#3",
  BC: "[c#4 d4@11 d4@12 f4@3 g4@3 a4@3 c5@3 a#4@24 a4@12 g4@24]/2", BD: "f4 f4@2 f4",
  BE: "[d4 e4@5 g4@3 a#4@6 a4@3 g4@6]/2", BF: "c5 c5@2 b4", BG: "g4@2 d4!2", BH: "a#3 d4 f4 e4", BI: "e4 f4 c5 b4",
  BJ: "[g4!2 f4 f4@2 e4 e4@2]/2", BK: "c4 a#3 d4 e4", BL: "~ g#3 a#3!2", BM: "[c4@12 c#4@61 c4@28 ~@43]/3",
  BN: "[~@12 a#3@5 a3@10 ~@14 g#3@5 g3@10 ~@14 a#3@5 a3@10 ~@11]/2",
  BO: "[~@3 g#3@5 g3@10 ~@15 g3@7 f3@5 d#3@9 g3@7 ~ f3@4 d#3@10 ~@15 a#3@5]/2",
  BP: "[~@2 g#3@5 f#3@10 a#3@7 g#3@5 f#3@10 ~@7 d#4@4 d4@2 ~ c#4@2 ~@3 c4@7 b3@7 a#3@7 ~ a3@7 g#3@7 g#3@10 c4@5 b3@2 a#3@2 ~@3 a3@7 g#3@7 g3@7 ~ f#3@6]/3",
  BQ: "~ f3@7 f3@10 ~@7 a#3@5 a3@10 ~@8", BR: "~@6 g#3@5 g3@10 ~@14 a#3@5 a3@8",
  BS: "[~@17 g#3@4 g3@10 ~@15 d#4@4 d4@10 ~@15 c#4@5 c4@10 ~@6]/2",
  BT: "[~@8 d#4@5 d4@10 ~@14 c#4@5 c4@10 ~@14 d#4@7 d4@5 c4@10 d#4@7 d4@5 c4@7 a3@7 ~@10 f#4@7 f4@5 d#4@8]/3",
  BU: "~@2 f#4@7 f4@5 d#4@7 c4@7 ~@3 g4@5 g4@2 g4@2 ~@3 g4@5", BV: "~@2 d#4@7 ~ d#4@7 d#4@7 d#4@7 ~ c4@9 d#4@5 d#4@2",
// … 100 more lines