Strudelify

The good the bad and the ugly

Ennio Morricone

KeyB♭ majorTempo72 bpm
0:00/0:00
// The good the bad and the ugly — Ennio Morricone
// 72 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: Transcription provider: pdmx. https://musescore.com/score/724431; license: https://creativecommons.org/publicdomain/mark/1.0/
// note: Full arrangement: all 123 bars on a 48-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(72/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 · "C Trumpet"
const trumpet = note(`<
  A@2 B C D@2 E@7 F@7 G H I J K ~@4 L@4 ~@6 M@2 ~ N O@2 P@3 Q R S T U V W@2 X Y Z AA AB ~@2 AC@3 AD AE AF AG AH AI AJ AK
  AL AK AM@2 AN@2 AO AP AN@2 AQ AR AQ AS AT AU AV AW AX AY AZ ~ BA BB BC BD@2 BE@2 BF@4 BG BH@8 BI BJ BK@2 ~ BL BM
>`.pickRestart({
  A: "[~@24 a4@2 d5@2 a4@2 ~ d5@2 a4@19 f4@9 g4@9 ~ d4@25]/2", B: "~@3 a4@2 d5@2 a4@2 ~ d5@2 a4@19 f4@9 g4@8",
  C: "~@2 c5@28 a4@5 ~@13", D: "[~ a4@19 ~@18 g4@19 ~@39]/2",
  E: "[~@8 f4@19 a4@9 ~@10 g4@18 a4@9 ~@10 f4@19 a4@9 ~@10 g4@18 a4@47 g3@24 d4@24 a3@30 a3@6 bb3@3 a3@3 g3@3 a3@3 g3@24 g4@18 a4@6 a4@6]/7",
  F: "[~@6 d4@72 ~@12 d4@18 eb4@3 f4@3 g4@18 g4@6 c4@30 c4@6 d4@3 c4@3 bb3@3 c4@3 bb3@24 g4@18 g4@6 a3@60 ~@24 d4 ~ e4 f4 ~ g4 a4 ~ b4 c5 ~ db5 d5@2 ~@2 bb4@2]/7",
  G: "~ db5 ~ d5 ~ bb4 ~ db5 ~ d5 ~ bb4 ~ db5 ~ d5 ~ bb4 ~ db5 ~ d5 ~ a4",
  H: "~ db5 ~ d5 ~ a4 ~ db5 ~ d5 ~ a4 ~ db5 ~ d5 ~ a4 ~ db5 ~ d5 ~ g4",
  I: "~ db5 ~ d5 ~ g4 ~ db5 ~ d5 ~ g4 ~ db5 ~ d5 ~ g4 ~ db5 ~ d5 ~ a4",
  J: "~ db5 ~ d5 ~ a4 ~ db5 ~ d5 ~ a4 ~ db5 ~ d5 ~ a4 ~ db5 ~ d5 ~ a4",
  K: "~@2 db5@2 ~@2 d5@2 ~@2 a4@2 ~@2 db5@2 ~@2 d5@3 ~@3 a4@3 ~@3 db5@3 ~@3 d5@3 ~@9",
  L: "[~@30 d4 ~ e4 f4 ~ g4 a4 ~ b4 c5 ~ d5 g4@20 d5@20 ~ a4@25 a4@5 bb4@2 a4@2 ~ g4@2 a4@2 ~ g4@20 g5@15 a5@5 a5@10 d5@19]/4",
  M: "[~@14 a4@15 ~ g4@5 d4@5 eb4@5 e4@15 gb4@5 ab4@20 ~@11]/2", N: "~@10 e5@4 ~@5 e5@4 ~@4 e5@4 ~@5 e5@4 ~@4 e5@4",
  O: "[~@5 d5@6 e5@3 gb5@4 ~@4 e5@6 d5@3 e5@35 ~@30]/2",
  P: "[~@4 e5@4 ~@5 e5@4 ~@4 e5@4 ~@5 e5@4 ~@5 e5@4 ~@4 d5@6 e5@3 gb5@4 ~@5 e5@5 d5@3 e5@35 ~@8 a4 ~@5 a4 ~@2 a4@9 c5@9 ~]/3",
  Q: "~@7 g4@4 ~@13 g4@4 ~@14 gb4@4 ~@2", R: "~@11 gb4@4 ~@13 g4@4 ~@13 g4@3", S: "~@15 bb4@5 b4@3 ~@9 b4@9 ~@7",
  T: "~ g4@4 ~@14 g4@4 ~@13 g4@4 ~@8", U: "~@5 g4@4 ~@13 db5@4 ~ d5@4 ~@4 db5@4 ~ d5@4 ~@4",
  V: "~@9 a4 ~@5 a4 ~@10 a4@4 ~@14 a4 ~@3",
  W: "[~ a4 ~@11 a4@4 ~@13 a4 ~@5 a4 ~@10 a4@4 ~@14 a4 ~@4 a4 ~@11 a4@4 ~@10]/2",
  X: "~@3 a4 ~@5 a4 ~@10 a4@4 ~@14 a4 ~@5 a4 ~@3", Y: "~@7 a4@4 ~@37", Z: "~@11 a4 ~@5 a4 ~@10 a4@4 ~@13 a4 ~@2",
  AA: "~@3 a4 ~@11 a4@4 ~@13 a4 ~@5 a4 ~@9", AB: "~@19 a4@4 ~@25",
  AC: "[~@4 e4@5 a4@5 a4@4 e4@5 e4@14 c4@5 e4@4 b4@5 b4@5 e4@5 e4@14 e4@4 f4@14 f4@5 eb4@14 eb4@5 e4@9 g4@9 ~ g4@4 f4@4]/3",
  AD: "~ f4@5 e4@4 e4@9 ~ d4@19 g3@9", AE: "e4@5 f4 e4 d4", AF: "c4@3 c4", AG: "a4@2 f5@4 e5 d5", AH: "e5@3 d5",
  AI: "d5@2 c5@3 b4 c5 a4", AJ: "g4@3 g4", AK: "a4@2 f5@2 d5@3 c5", AL: "e5@3 g4", AM: "[c5@7 ~]/2",
  AN: "f4@3 ~@3 f4@2 f4@2 f4@2 f4@3 ~@3 f4@3 ~@3 f4@3 ~@3 f4@2 f4@2 f4@2 f4@2 f4@2 f4@2 f4@2 f4@2 f4@2",
  AO: "bb4@3 ~@3 bb4@2 bb4@2 bb4@2 bb4@3 ~@3 bb4@3 ~@3 bb4@3 ~@3 bb4@2 bb4@2 bb4@2 bb4@2 bb4@2 bb4@2 bb4@2 bb4@2 bb4@2",
  AP: "ab4@3 ~@3 ab4@2 ab4@2 ab4@2 ab4@3 ~@3 ab4@3 ~@3 ab4@3 ~@3 ab4@2 ab4@2 ab4@2 ab4@2 ab4@2 ab4@2 ab4@2 ab4@2 ab4@2",
  AQ: "gb4@3 ~@3 gb4@2 gb4@2 gb4@2 gb4@3 ~@3 gb4@3 ~@3 gb4@3 ~@3 gb4@2 gb4@2 gb4@2 gb4@2 gb4@2 gb4@2 gb4@2 gb4@2 gb4@2",
  AR: "db4@3 ~@3 db4@2 db4@2 db4@2 db4@3 ~@3 db4@3 ~@3 db4@3 ~@3 db4@2 db4@2 db4@2 db4@2 db4@2 db4@2 db4@2 db4@2 db4@2",
  AS: "db4 ab4 bb4 ab4", AT: "a4 db4 e4 a4", AU: "d5@4 ~@31 a4 d5 a4 d5 a4@4 a4!5", AV: "~ a4!11 ~@36",
  AW: "~@8 a4 d5 a4 d5 a4@4 a4!3 ~ a4!13 ~@15", AX: "~@29 a4 d5 a4 d5 d5@4 d5 ~ d5!9", AY: "d5!6 ~@42",
  AZ: "~@2 a4 d5 a4 d5 a4@4 ~ a4!14 ~ a4!2 ~@20", BA: "~@6 d4@3 g4@3 d5@2 bb4@3 f5@17 ~@14",
  BB: "~@3 d4@3 g4@3 d5@3 bb4@3 f5@17 ~@16", BC: "~ d4@3 g4@2 d5@3 bb4@3 f5@3 d5@3 a5@6 f5@2 c5@22",
  BD: "[~ d5@23 d5@8 d5@3 e5@11 ~ d5@8 d5@3 e5@11 d5@3 ~@3 e5@3 ~@3 d5@3 ~@2 e5@3 ~@3 d5 ~@2 bb4]/2",
  BE: "[~@2 c5 ~@2 a4 ~ bb4 ~@2 g4 ~@2 a4 ~@2 f4 ~@2 ab4@23 a4@5 db4@6 e4@6 a4@5 a4@3 ~@29]/2",
  BF: "[~@31 f5@5 g5@6 d5@17 ~@17 f4@6 g4@6 c5@17 ~@17 f5@5 e5@3 d5@3 c5@17 ~@17 g5@6 d5@11 ~@8]/4",
  BG: "~@4 c5@9 ~@5 c5 ~ c5 ~ c5@5 c5@2 c5@2 ~ c5@9 c5@7",
  BH: "[~@7 c5 ~@2 c5 ~ c5@5 c5@2 c5@2 c5@9 ~ d5@28 bb4@9 ab4@14 ab4@2 ~ ab4@2 ab4@19 c5@9 ~@5 c5 ~ c5 ~@2 c5@4 c5@2 ~ c5@2 c5@9 bb4@9 ~@6 bb4 ~ bb4 ~ bb4@5 bb4@2 bb4@2 ~ bb4@9 c5@9 eb5@19 eb5@9 ~ c5@14 c5 c5@2 c5 c5@19 c5@9 ~@5 c5 ~@2 c5 ~ c5@5 c5@2 c5@2 c5@9 ~ c5@9 ~@5 c5 ~ c5 ~@2 c5@4 c5@2 ~ c5@2 c5@9 d5@28 bb4@9 ~ ab4@14 ab4]/8",
  BI: "~ ab4@2 ~ ab4@18 c5@9 ~@6 c5 ~ c5 ~ c5@5 c5@2",
  BJ: "c5@2 ~ c5@9 bb4@9 ~@5 bb4 ~ bb4 ~@2 bb4@4 bb4@2 ~ bb4@2 bb4@8",
  BK: "[~@2 c5@9 eb5@19 eb5@9 c5@14 c5@2 c5 c5@2 c5@19 ~@19]/2",
  BL: "~ f5@3 f5!2 ~ f5@2 f5 ~ f5 f5@3 f5 ~ f5 f5@3 f5!2 ~ f5@2 f5 ~ f5 f5@3 f5 ~ f5 f5@3 f5!2 ~ f5@3 f5!2 f5@2",
  BM: "~ f5 ~ f5 f5@3 f5!2 ~ f5@3 f5!2 f5@3 eb5@3 f5@3 ~@3 f4!2 ~ f4!2 f4@3 ~@13",
})).s("gm_trumpet").gain(0.25)

// other · trumpet · "C Trumpet"
const trumpet_2 = note(`<
  A@2 B C@2 ~ D@2 E@4 F@7 G@6 H I J K@3 L M ~@6 N@2 O P Q R S T U@2 V@2 W X Y Z@2 AA AB AC AD AE Q AF ~ AG@2 AH ~@10 AI
  AJ AK AL AM AK AJ AK AJ AK AN AO AP AQ@2 AR AS AT@2 AU AV AW AX@2 AY@2 AZ BA BB BC BD BE@3 BF@6 BG BH@2 BI BJ BK
>`.pickRestart({
  A: "[~@24 a4@2 d5@2 a4@2 ~ d5@2 a4@19 f4@9 d4@35]/2", B: "~@3 a4@2 d5@2 a4@2 ~ d5@2 a4@19 ~@17",
  C: "[~@11 e5@5 d5@4 c5@5 g4@5 a4@2 d5@2 ~ a4@2 d5@2 a4@19 ~@38]/2",
  D: "[~@8 a4@19 d5@9 ~@10 b4@18 d5@9 ~@10 bb4@13]/2", E: "[~@6 d5@9 ~@10 bb4@18 d5@47 d4@96 d4@6]/4",
  F: "[~@3 c4@4 a3@16 d4@7 eb4 f4@8 d4@4 c4@4 d4@8 ~]/7",
  G: "[~@2 d4 gb4 a4 d5 gb4 a4 d5 f5 d4 gb4 a4 d5 g4@8 d5@8 a4@10 a4@2 bb4 a4 g4 a4 g4@8 g5@6 a5@2 a5@4 d5@24 ~@4 bb4 ~]/6",
  H: "bb4 ~ bb4 ~ bb4 ~ bb4 ~ bb4 ~ bb4 ~ bb4 ~ a4 ~", I: "a4 ~ a4 ~ a4 ~ a4 ~ a4 ~ a4 ~ a4 ~ g4 ~",
  J: "g4 ~ g4 ~ g4 ~ bb4 ~ bb4 ~ bb4 ~ bb4 ~ g4 ~",
  K: "[g4@3 ~@3 g4@3 ~@3 g4@3 ~@3 g4@3 ~@3 g4@3 ~@3 g4@3 ~@3 g4@3 ~@3 gb4@12 d4@3 gb4@3 a4@3 d5@3 gb4@3 a4@3 d5@3 gb5@3 d4@3 gb4@3 a4 ~@2 d5 ~@2 g4@10 g4@10 ~@11 g4@10 ~@10 f4@3]/3",
  L: "f4@3 f4@3 ~ f4@5 f4@5 f4@10 ~@10 g4@10 ~", M: "~@9 g4@10 ~@10 g4@3 g4@3 ~ g4@3 gb4@9",
  N: "[~@4 d4@40 ~ e4@40 ~@8 a4 ~@2]/2", O: "~@3 a4 ~@11 a4@4 ~@13 a4 ~@5 a4 ~@9",
  P: "~ a4@4 ~@14 a4 ~@4 a4 ~@11 a4@4 ~@8", Q: "~@5 a4 ~@5 a4 ~@10 a4@4 ~@14 a4 ~@4 a4 ~@2",
  R: "~@9 a4@4 ~@13 a4 ~@5 a4 ~@11 a4@4", S: "~@13 a4 ~@5 a4 ~@10 a4@4 ~@13 a4",
  T: "~@5 a4 ~@11 a4@4 ~@13 a4 ~@5 a4 ~@7",
  U: "[~@3 a4@4 ~@22 gb4@17 b4@4 ~@5 b4@4 ~@5 b4@4 ~@4 b4@4 ~@5 b4@4 ~@5 b4@4 ~@2]/2",
  V: "[~@2 b4@4 ~@5 a4@6 g4@3 b4@35 ~@34 b4@4 ~@3]/2", W: "~ b4@4 ~@5 b4@4 ~@5 b4@4 ~@4 b4@4 ~@5 b4@4 ~@4 b4@4",
  X: "~@5 a4@6 g4@3 a4@34", Y: "~@9 e4 ~@5 e4 ~@10 e4@4 ~@14 e4 ~@3",
  Z: "[~ e4 ~@11 e4@4 ~@13 e4 ~@5 e4 ~@10 e4@4 ~@14 e4 ~@4 e4 ~@11 e4@4 ~@10]/2",
  AA: "~@3 e4 ~@5 e4 ~@10 e4@4 ~@14 e4 ~@5 e4 ~@3", AB: "~@7 e4@4 ~@37", AC: "~@11 e4 ~@5 e4 ~@10 e4@4 ~@13 e4 ~@2",
  AD: "~@3 e4 ~@11 e4@4 ~@13 e4 ~@5 e4 ~@9", AE: "~@19 gb4@4 ~@25", AF: "~@9 a4@4 ~@5 a4@4 ~@26",
  AG: "[~@27 e4@4 f4@5 c5@5 c5@4 f4@5 gb4@5 c5@4 c5@5 gb4@5 g4@9 c5@5 b4@5 b4@4 a4@4]/2",
  AH: "~ a4@5 g4@4 g4@9 ~ f4@19 ~@9", AI: "~ ab3 eb4 ab4",
  AJ: "ab4@3 ~@3 ab4@2 ab4@2 ab4@2 ab4@3 ~@3 ab4@3 ~@3 ab4@3 ~@3 ab4@2 ab4@2 ab4@2 ab4@2 ab4@2 ab4@2 ab4@2 ab4@2 ab4@2",
  AK: "bb4@3 ~@3 bb4@2 bb4@2 bb4@2 bb4@3 ~@3 bb4@3 ~@3 bb4@3 ~@3 bb4@2 bb4@2 bb4@2 bb4@2 bb4@2 bb4@2 bb4@2 bb4@2 bb4@2",
  AL: "db5@3 ~@3 db5@2 db5@2 db5@2 db5@3 ~@3 db5@3 ~@3 db5@3 ~@3 db5@2 db5@2 db5@2 db5@2 db5@2 db5@2 db5@2 db5@2 db5@2",
  AM: "c5@3 ~@3 c5@2 c5@2 c5@2 c5@3 ~@3 c5@3 ~@3 c5@3 ~@3 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2", AN: "ab4 ~@3",
  AO: "~ db4!2 e4", AP: "a4 ~@11", AQ: "[~@12 f4@9 g4@9 d4@26 ~@26 f4@8 g4@6]/2", AR: "~@3 c5@26 ~@19",
  AS: "~@7 f4@8 e4@4 ~ d4@4 c4@24", AT: "[~@28 g4@8 d4@17 ~@43]/2", AU: "~@6 d4@3 g4@3 d5@2 bb4@3 d5@17 ~@14",
  AV: "~@3 d4@3 g4@3 d5@3 bb4@3 d5@17 ~@16", AW: "~ d4@3 g4@2 d5@3 bb4@3 f5@3 d5@3 bb4@6 g4@2 a4@22",
  AX: "[~ a4@23 bb4@8 bb4@3 c5@11 ~ bb4@8 bb4@3 c5@11 bb4@3 ~@3 c5@3 ~@3 bb4@3 ~@2 c5@3 ~@3 bb4 ~@2 g4]/2",
  AY: "[~@2 a4 ~@2 f4 ~ g4 ~@2 eb4 ~@2 f4 ~@2 d4 ~@2 e4@23 e4@22 f4@3 ~@29]/2", AZ: "~@14 a4 d5 ~ a4 d5 a4@11 ~@18",
  BA: "~@11 a4 ~ d5 a4 d5 ~ a4@11 ~@20", BB: "~@9 a4 d5 ~ a4 d5 a4@11 ~@23",
  BC: "~@6 a4 ~ d5 a4 d5 ~ a4@11 d5@6 a4@8 f5!4 ~@2 f5 ~@2 f5!2", BD: "~ f5!2 ~@19 f4@9 ~ c5@9 ~@7",
  BE: "[~@12 eb5@9 c5@9 ~ bb4@28 f4@9 eb4@9 ~ f4@4 f4@2 ~ f4@2 f4@19 ~@19 f4@9 c5@9 ~]/3",
  BF: "[~@18 g5@9 ~ eb5@9 ab4@9 c5@19 c5@9 ~ g4@14 g4 g4@2 g4 g4@19 ~@19 f4@9 c5@9 ~@20 eb5@9 c5@9 bb4@28 f4@9 ~ eb4@9 f4@5 f4@2 f4@2 ~ f4@19 ~@18 f4@7]/6",
  BG: "~@3 c5@9 ~@19 g5@9 eb5@8", BH: "[~@2 ab4@9 c5@19 c5@9 g4@14 g4@2 g4 g4@2 g4@19 ~@19]/2",
  BI: "~@26 f4@6 bb4@6 c5@5 eb5@5",
  BJ: "~ bb4@3 bb4!2 ~ bb4@2 bb4 ~ bb4 bb4@3 bb4 ~ bb4 bb4@3 bb4!2 ~ bb4@2 bb4 ~ bb4 bb4@3 bb4 ~ bb4 bb4@3 bb4!2 ~ bb4@3 bb4!2 bb4@2",
  BK: "~ bb4 ~ bb4 bb4@3 bb4!2 ~ bb4@3 bb4!2 bb4@3 bb4@3 a4@3 ~@3 f4!2 ~ f4!2 f4@3 ~@13",
})).s("gm_trumpet").gain(0.2)

// other · french horn · "F Mellophone"
const french_horn = note(`<
  A B C D E F G@4 ~@9 H@6 ~@4 I@2 J K L@5 M@2 N O P Q R S T U V W X Y Z ~@11 AA AB@2 ~@10 AC AD AE AF AG AH@2 ~ AI AJ AK
  AL AM AN@2 AO AP AQ@2 AR AS AT@2 AU@3 AV AW AX AY AZ BA@8 BB BC BD@2 ~ BE BF
>`.pickRestart({
  A: "~@24 d4@5 ~@19", B: "~@4 d4@9 b3@9 ~ a3@25", C: "~@3 d4@5 ~@23 d4@9 d4@8", D: "~@2 e4@28 f4@5 ~@13",
  E: "~ f4@19 ~@28", F: "~@9 a3@2 d4@2 ~ a3@2 d4@2 a3@19 ~@11",
  G: "[~@8 a3@28 ~@10 b3@28 ~@9 bb3@28 ~@10 eb4@28 ~@9 gb4@28 ~@6]/4",
  H: "[~@7 g4@2 bb3!2 bb3@2 bb3@2 a3@2 a3!2 a3@2 a3@2 bb3@2 bb3!2 bb3@2 bb3@2 a3@2 a3!2 a3@2 a3@2 a3@2 d4!2 c4@4 ~]/6",
  I: "[~@42 bb3@10 d4@10 ~@11 d4@10 ~@10 d4@3]/2", J: "d4@3 d4@3 ~ d4@5 d4@5 d4@10 ~@10 d4@10 ~", K: "~@9 c4@10 ~@29",
  L: "[~ eb4@10 f4@30 g4@5 f4@5 f4@10 c4@20 f4@5 bb4@5 ~ bb4@20 a4@15 bb4@5 a4@10 d4@20 d4@10 g4@30 g4@10 eb5@10 d5@10 c5@8]/5",
  M: "[~@2 bb4@10 a4@35 g4@5 g4@25 ~@19]/2", N: "~@45 e4 ~@2", O: "~@3 e4 ~@11 e4@4 ~@13 e4 ~@5 e4 ~@9",
  P: "~ e4@4 ~@14 e4 ~@4 e4 ~@11 e4@4 ~@8", Q: "~@5 e4 ~@5 e4 ~@10 e4@4 ~@14 e4 ~@4 e4 ~@2",
  R: "~@9 e4@4 ~@13 e4 ~@5 e4 ~@11 e4@4", S: "~@13 e4 ~@5 e4 ~@10 e4@4 ~@13 e4",
  T: "~@5 e4 ~@11 e4@4 ~@13 e4 ~@5 e4 ~@7", U: "~@3 e4@4 ~@13 e4 ~@5 e4 ~@2 d4@17 ~@2",
  V: "~@7 d4@4 ~@13 d4@4 ~@14 eb4@4 ~@2", W: "~@11 eb4@4 ~@13 e4@4 ~@13 e4@3", X: "~@15 gb4@5 g4@3 ~@9 g4@9 ~@7",
  Y: "~ e4@4 ~@14 e4@4 ~@13 e4@4 ~@8", Z: "~@5 e4@4 ~@13 ab4@4 ~ a4@4 ~@4 ab4@4 ~ a4@4 ~@4", AA: "~@31 c4@17",
  AB: "[~@2 c4@19 e4@19 f4@19 ~@37]/2", AC: "~@2 c4 eb4", AD: "~@3 ab3", AE: "f4@3 eb4 gb4@2 f4@2", AF: "eb4 db4@3",
  AG: "c4@3 bb3 ab3@2 ~@2", AH: "[~@2 bb3 c4 db4@2 f4@3 c4 ab3@4 ~@2]/2", AI: "db4 c4 b3 ab3",
  AJ: "gb3@3 bb3 ab3@2 gb3@2", AK: "f3 f4 gb4 f4", AL: "e4!2", AM: "f4 ~@11",
  AN: "[~@12 f4@9 g4@9 d4@26 ~@26 f4@8 g4@6]/2", AO: "~@3 c5@26 ~@19", AP: "~@7 f4@8 e4@4 ~ d4@4 c4@24",
  AQ: "[~@28 g4@8 d4@17 ~@6 d4@3 d4!2 ~ d4@3 d4!2 ~ d4@2 d4 ~ d4!2 ~ d4!2 ~ d4 d4@3 d4!2 ~ d4@2 d4 ~ d4 d4@3]/2",
  AR: "d4 ~ d4!3 ~ d4!2 ~ d4@3 d4!2 d4@3 d4 ~ d4 d4@3 d4!2 ~ d4!2 ~ d4!2 d4@3 d4 ~ d4 d4@3 d4!2 ~ d4@3 d4!2",
  AS: "d4 ~ d4!2 ~ d4 d4@3 d4!2 ~ d4@3 d4!2 ~ d4@2 d4 ~ d4!2 ~ d4!3 ~ d4@3 d4!2 ~ d4@2 d4 ~ d4 d4@3 d4 ~ d4!3",
  AT: "[~ d4!2 ~ d4@2 d4 ~ d4 d4@3 d4 ~ d4 d4@3 d4!2 ~ d4!2 ~ d4!2 ~@6 c4@6 f4@5 a4@11 ~ gb4@5 a4@6 d5@6 bb4 a4 ~ g4@8 c5@9 g4@3 bb4]/2",
  AU: "[a4 g4@9 c5@8 g4@3 bb4 ~ a4 g4@3 c5 ~@2 g4 ~@2 bb4 a4 ~ g4@2 c5 ~@2 g4 ~@2 g4@3 d4@3 f4@3 c4@2 eb4@3 bb3@3 d4@3 a3@3 b3@23 db4@22 d4@3 f4 ~ f4 f4@3 f4!2 ~ f4@2 f4 ~ f4 f4@3 f4@3 f4@3 f4!2 ~ f4@3]/3",
  AV: "f4!2 f4@3 f4 ~ f4 f4@3 f4@3 f4@3 f4!2 f4@3 f4 ~ f4 f4@3 f4!2 ~ f4@3 f4@2 g4@3 g4 ~ g4 g4@3 g4!2 ~",
  AW: "g4@3 g4!2 ~ g4@2 g4@3 f4@3 f4!2 ~ f4@3 f4!2 ~ f4@2 f4 ~ f4 f4@3 f4@3 e4@3 e4!2 ~ e4@2 e4 ~ e4 e4@3",
  AX: "e4 ~ e4 e4@3 e4@3 f4@3 f4!2 f4@3 f4 ~ f4 f4@3 f4!2 ~ f4@3 f4@2 e4@3 e4 ~ e4 e4@3 e4!2 ~ e4@3 e4!2",
  AY: "e4@3 e4@3 f4@3 f4!2 ~ f4@3 f4!2 ~ f4@3 ~@2 g4@6 f4@8 f4!4 ~@2 f4 ~@2 f4!2",
  AZ: "~ f4!2 ~ ab4@9 ~@5 ab4 ~ ab4 ~ ab4@5 ab4@2 ab4@2 ~ ab4@9 ab4@7",
  BA: "[~@7 ab4 ~@2 ab4 ~ ab4@5 ab4@2 ab4@2 ab4@9 ~ f4@28 d4@9 db4@14 db4@2 ~ db4@2 db4@19 ab4@9 ~@5 ab4 ~ ab4 ~@2 ab4@4 ab4@2 ~ ab4@2 ab4@9 g4@9 ~@6 g4 ~ g4 ~ g4@5 g4@2 g4@2 ~ g4@9 eb4@9 ab4@19 ab4@9 ~ f4@14 f4 f4@2 f4 f4@19 ab4@9 ~@5 ab4 ~@2 ab4 ~ ab4@5 ab4@2 ab4@2 ab4@9 ~ ab4@9 ~@5 ab4 ~ ab4 ~@2 ab4@4 ab4@2 ~ ab4@2 ab4@9 f4@28 d4@9 ~ db4@14 db4]/8",
  BB: "~ db4@2 ~ db4@18 ab4@9 ~@6 ab4 ~ ab4 ~ ab4@5 ab4@2",
  BC: "ab4@2 ~ ab4@9 g4@9 ~@5 g4 ~ g4 ~@2 g4@4 g4@2 ~ g4@2 g4@8",
  BD: "[~@2 eb4@9 ab4@19 ab4@9 f4@14 f4@2 f4 f4@2 f4@19 ~@19]/2",
  BE: "~@5 eb4 ~ eb4@2 eb4 ~ eb4 eb4@3 eb4 ~ eb4 eb4@3 eb4!2 ~ eb4@2 eb4 ~ eb4 eb4@3 eb4 ~ eb4 eb4@3 eb4!2 ~ eb4@3 eb4!2 eb4@2",
  BF: "~ eb4 ~ eb4 eb4@3 eb4!2 ~ eb4@3 eb4!2 eb4@3 bb3@3 c4@3 ~@3 f3!2 ~ f3!2 f3@3 ~@13",
})).s("gm_french_horn").gain(0.3)

// other · french horn · "F Mellophone" · soft notes
const french_horn_soft = note(`<
  ~@9 A@8 B@3 ~@4 C D E F G@2 ~@23 H I@2 J K L M N O P Q@2 ~ R S T U T V T W X W Y Z ~@42 AA AB ~
>`.pickRestart({
  A: "[~@7 bb3@2 bb3!2 bb3@2 bb3@2 a3@2 a3!2 a3@2 a3@2 bb3@2 bb3!2 bb3@2 bb3@2 g3@2 g3!2 g3@2 g3@2 gb3@2 gb3!2 gb3@2 gb3@2 bb3@2 bb3!2 bb3@2 bb3@2 g3@2 g3!2 f3@2 f3@2 g3]/8",
  B: "[~ g3!2 g3@2 g3@2 g3@2 g3!2 g3@2 g3@2 f3@2 a3 d4!2 a4!2 gb4 ~]/3", C: "~@14 g4 ~",
  D: "g4 ~ g4 ~ g4 ~ g4 ~ g4 ~ g4 ~ g4 ~ g4 ~", E: "g4 ~ g4 ~ g4 ~ f4 ~ f4 ~ f4 ~ f4 ~ eb4 ~",
  F: "eb4 ~ eb4 ~ eb4 ~ eb4 ~ eb4 ~ eb4 ~ eb4 ~ d4 ~",
  G: "[d4 ~ d4 ~ d4 ~ d4 ~ d4 ~ d4 ~ d4 ~ d4@4 d4 ~ d4 ~ d4 ~ d4 ~ c4 ~ a3 ~@3]/2",
  H: "~@9 c4 ~@5 c4 ~@10 c4@4 ~@14 c4 ~@3",
  I: "[~ c4 ~@11 c4@4 ~@13 c4 ~@5 c4 ~@10 c4@4 ~@14 c4 ~@4 c4 ~@11 c4@4 ~@10]/2",
  J: "~@3 c4 ~@5 c4 ~@10 c4@4 ~@14 c4 ~@5 c4 ~@3", K: "~@7 c4@4 ~@37", L: "~@11 c4 ~@5 c4 ~@10 c4@4 ~@13 c4 ~@2",
  M: "~@3 c4 ~@11 c4@4 ~@13 c4 ~@5 c4 ~@9", N: "~@19 d4@4 ~@25", O: "~@5 e4 ~@5 e4 ~@10 e4@4 ~@14 e4 ~@4 e4 ~@2",
  P: "~@9 e4@4 ~@5 e4@4 ~@26", Q: "[~@4 c4@75 ~@17]/2", R: "~@5 d4@14 ~@5", S: "c4 e4", T: "e4!2", U: "f4 c4",
  V: "c4!2", W: "c4 b3", X: "c4 b3 bb3 c4", Y: "~ g3 a3 g3", Z: "~ ab3 ~@2",
  AA: "~@3 f3@6 bb3@6 c4@5 eb4@6 eb4@3 eb4!2 ~ eb4@3 eb4!2 ~ eb4@2 eb4 ~ eb4 eb4@3 eb4!2", AB: "~ eb4@3 eb4 ~@43",
})).s("gm_french_horn").gain(0.2)

// bass · tuba · "C Tuba"
const bass = note(`<
  A@4 B C@4 D@8 E@8 ~@2 F@4 G H I J@3 K L@2 M N O@2 P Q R@3 S T U@2 V W X@3 Y Z AA@2 AB@3 AC@2 ~@29 AD AE AF AG@2 AH@2
  AI AJ@2 AK AL@3 AM@4 AN@6 ~ AO AP
>`.pickRestart({
  A: "[~@24 d3@5 ~@13 d3@56 ~ d3@5 ~@14 d3@56 ~@18]/4", B: "~ d3@19 ~@28", C: "[~@37 g2@9 ~ d2@37 d2@38 d2@37 d2@33]/4",
  D: "[~@11 d3@3 d3@4 d3@2 d3@2 d3@4 d3@4 d3@4 d3@2 d3@2 d3@4 d3@4 d3@4 d3@2 d3@2 d3@4 d3@4 d3@4 d3@2 d3@2 d3@4 d3@4 d3@4 d3@2 d3@2 d3@4 d3@4 d3@4 d3@2 d3@2 d3@4 d3@4 d3@4 d3@2 d3@2 d3@4 d3@4 d3@2]/8",
  E: "[~ d3!2 d3@2 d3@2 d3@2 d3!2 d3@2 d3@2 d3@4 c3@3 a2 g2@2 g2!2 g2@2 g2@2 d3@2 d3!2 d3@2 d3@2 d3@2 d3!2 d3@2 d3@2 d3@2 d3!2 d3@2 d3@2 d3@2 d3!2 d3@2 d3@2 ~]/8",
  F: "[~@42 d3@24 d3@12 d3@12 d3@18 d3@6 d3@12 d3@12 g2@10 g2@10 ~@11 g2@10 ~@10 f2@3]/4",
  G: "f2@3 f2@3 ~ f2@5 f2@5 f2@10 ~@10 eb2@10 ~", H: "~@9 eb2@10 ~@10 d3@3 d3@3 ~ d3@3 d3@9",
  I: "~ c3@10 bb2@10 bb2@10 bb2@10 bb2@7",
  J: "[~@3 a2@10 a2@10 ab2@10 ab2@10 ~ g2@10 g2@10 g2@10 g2@10 f2@10 f2@10 f2@10 f2@10 eb2@15 eb2@5]/3",
  K: "eb2@10 eb3@5 d3@5 c3@10 c3@10 c3@8", L: "[~@2 c3@10 d3@30 d2@10 g2@25 ~@19]/2", M: "~@17 e2@20 a2@9 ~@2",
  N: "~@6 e2@9 ~@8 a2@9 ~@9 e2@7", O: "[~@10 a2@9 ~@8 e2@9 ~@8 a2@9 ~@9 e2@9 ~@8 a2@9 ~@8]/2",
  P: "e2@9 ~@9 a2@9 ~@8 e2@9 ~@4", Q: "~@4 a2@9 ~@8 e2@9 ~@9 a2@9",
  R: "[~@8 e2@9 ~@8 a2@9 ~@9 e2@9 ~@8 a2@9 ~@8 d2@17 g2@9 ~@9 d2@9 ~@8 gb2@9 ~@6]/3",
  S: "~@2 b1@9 ~@9 e2@9 ~@8 e2@9 ~@2", T: "~@6 d2@9 ~@8 d2@9 ~@9 c2@7",
  U: "[~@10 c2@9 ~@8 c2@9 ~@8 a1@9 ~@9 c2@9 ~@8 c2@9 ~@8]/2", V: "a2@9 ~@9 e2@9 ~@8 a2@9 ~@4",
  W: "~@4 d2@9 ~@8 a2@9 ~@9 e2@9", X: "[~@8 a2@9 ~@8 e2@9 ~@9 a2@9 ~@8 e2@9 ~@8 a2@9 ~@8 d2@9 ~@41]/3",
  Y: "~@2 a2@9 ~@9 e2@9 ~@8 a2@9 ~@2", Z: "~@6 e2@9 ~@8 a2@9 ~@16", AA: "[~@10 d2@9 ~@25 a2@9 ~@9 e2@9 ~@8 a2@9 ~@8]/2",
  AB: "[e2@9 ~@9 a2@109 ab2@17]/3", AC: "[~@2 a2@19 c2@19 f2@19 ~@37]/2", AD: "~@31 d3@6 d2@6 d2@3 d2@2",
  AE: "~@29 d3@6 d2@5 d2@3 d2@3 ~@2", AF: "~@13 f2@11",
  AG: "[~ d2@23 g2@8 g2@3 c2@11 ~ g2@8 g2@3 c2@11 g2@3 ~@3 c3@3 ~@3 g2@3 ~@2 c3@3 ~@3 g2@4]/2",
  AH: "[~@2 f2@5 eb2@6 d2@6 e2@23 a1@22 d2@6 ~@3 a2@3 d3@6 ~@2 a2@3 d3@6 ~@3]/2",
  AI: "a2@2 d3@6 ~@3 a2@3 d3@6 ~@2 a2@3 d3@6 ~@3 a2@2 g2@6 ~@3 d3@3",
  AJ: "[g2@6 b2@5 d3@6 ~@3 a2@3 d3@6 ~@2 a2@3 c3@6 ~@2 g2@3 c3@6 e3@6 d3@6 ~@2 a2@3 d3@6 ~@3 a2@2 c3@6 ~@3 g2@3 c3@5]/2",
  AK: "e3@6 d3@6 ~@3 a2@3 d3@5 g2@6 d2@11 ~@8",
  AL: "[~@4 f2@33 g2@4 ab2@33 c3@5 bb2@33 c3@4 db3@14 f3@5 eb3@5 db3@4]/3",
  AM: "[~ c3@2 bb2@2 ab2@2 ~ g2@2 f2@33 c2@4 eb2@33 f2@2 ~ g2@2 ab2@38 c3@18 c2@19 f2@32]/4",
  AN: "[~ g2@5 ab2@33 c3@4 bb2@33 c3@5 db3@14 f3@5 eb3@4 db3@5 c3@2 bb2@2 ~ ab2@2 g2@2 f2@33 c2@5 eb2@33 f2@2 g2@2 ~ ab2@37 c3@19 c2@19 ~@19]/6",
  AO: "~@18 f2@3 ~@3 f2@3 ~@2 f2@3 ~@3 f2@3 ~@3 f2@3 ~@2 f2@2",
  AP: "~@4 f2@3 ~@3 f2@3 ~@2 f2@3 c2@3 f2@3 ~@3 f2@3 f2@2 f2@3 ~@13",
})).s("gm_tuba").gain(0.4)

// bass · tuba · "C Tuba" · soft notes
const bass_soft = note("<~@66 A B C D E F G H I H J K L M N O P Q R S R T F U@3 V@3 ~@24 W X Y ~>".pickRestart({
  A: "~@5 g2@14 ~@5", B: "c3 b2", C: "a2 g2", D: "f2!2", E: "g2!2", F: "a2!2", G: "e2!2", H: "f2 g2", I: "c2@2 c2 e2",
  J: "c2!2 f2 c2", K: "ab2!2", L: "db3!2 c3!2", M: "bb2!2 ab2!2", N: "gb2!4", O: "ab2!4", P: "bb2!4", Q: "f2!4",
  R: "gb2!2 ab2!2", S: "db3!4", T: "db2!2 gb2 db2",
// … 7 more lines

More by Ennio Morricone