Strudelify

Blue Shades for DCI

Neb Bovak

KeyB♭ majorTempo180 bpm
0:00/0:00
// Blue Shades for DCI — Neb Bovak
// 180 bpm, 4/4, key Bb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (4/4 at bar 1, 3/4 at bar 26, 4/4 at bar 28, 3/4 at bar 33, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5956729; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 94 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 · trombone · "Trumpet"
const trombone = note(`<
  A ~ B C D@3 E@3 ~ F G H ~@4 I J ~ K L M N ~@5 O ~@6 P Q R@2 S T U@3 V@2 W@3 ~@4 X Y@2 Z@3 AA@3 AB@6 AC AD AE@4 AF AG@8
  ~ AH@6 ~@2
>`.pickRestart({
  A: "ab4 ~@7", B: "ab4@2 ~@10 bb4@3 ~", C: "ab4@2 f4@2 bb4@3 ~@9",
  D: "[f4 ~@3 g4 ~@3 bb4 ~@3 b4@2 ab4@22 ab4 ~@3 f4 ~@3 gb4 ~@3]/3", E: "[~@4 ab4@2 f4@2 c5 ~ eb5@24 ~@14]/3",
  F: "~@4 bb4 ~ ab4 ~@5 bb4 ~@3", G: "~@4 bb4 ~@7 bb4 ~@3", H: "c5@3 ~@13", I: "~@4 d4 ~@5 e4 ~@5",
  J: "g4 ~ b4 c5 ~ f3 ~@2", K: "eb4 ~@15", L: "~@2 f4 ~@7 ab3@2 a3 ~@3", M: "b3 ~@5 d4 ~@5 e4 ~@3", N: "bb4 ab4 ~@6",
  O: "eb4 ~ f4 ~ b4@2 ab4@2 db5@2 bb4@2 ~@4", P: "~@7 d4", Q: "f4 g4@2 bb4 ~@2 d4 f4",
  R: "[g4@2 bb4 b4 ~ d4 f4 g4@2 bb4 b4 c5@2 d5 ~ d4]/2", S: "f4 g4@2 bb3 b3 db4@2 d4", T: "e4 f4 g4 bb4 ~@4",
  U: "[~ [eb5,e5]@4 ~]/3", V: "eb5/2", W: "[eb5@5 ~]/3", X: "f4 gb4", Y: "[g4@4 ab4@3 a4@3 bb4@3 b4@3]/2",
  Z: "[c5@3 db5]/3", AA: "[a5@28 ~@2 [b4,e5] [c5,f5]@5 [b4,e5] [c5,f5]@5 [b4,e5] [c5,f5]@5]/3",
  AB: "[[b4,e5] [c5,f5]@3 [b4,e5] [c5,f5]@3 [b4,e5] [c5,f5]@3 d5@16 ~@2 [b4,e5] [c5,f5]@5 [b4,e5] [c5,f5]@5 [b4,e5] [c5,f5]@5]/3", // E5 F5 E5 F5 E5 F5 E5 F5 …
  AC: "[b4,e5] [c5,f5]@5 [b4,e5] [c5,f5]@5 [b4,e5] [c5,f5]@3", // E5 F5 E5 F5 E5 F5
  AD: "[b4,e5] [c5,f5]@3 [b4,e5] [c5,f5]@3 [b4,e5] [c5,f5]@3 [b4,e5] [c5,f5]@3", // E5 F5 E5 F5 E5 F5 E5 F5
  AE: "[[b4,e5] [c5,f5]@3 d5@24 d5@6 db5@6 c5@6 db5@6 d5@6 f5@4 d5@2]/4", AF: "g5 f5 d5 db5@3 ~@2",
  AG: "[~ db5@3 eb5@3 db5@3 d5@24 d5@8 d5@16 ~@6]/8", AH: "[~@4 f4 g4 a4 bb4 db5 d5 eb5 f5 [b4,d5]@80 ~@4]/6",
})).s("gm_trombone").gain(0.45)

// other · trombone · "Trumpet" · soft notes
const trombone_soft = note("<A ~ A ~@7 B ~@19 C D ~@20 E@3 ~@39>".pickRestart({
  A: "~ f4 ~@6", B: "~@4 bb4 ~@7 bb4 ~@3", C: "~@6 e4 f4", D: "~@2 db4 ~ c4 ~ bb3 ~@9", E: "[bb4 b4 c5 db5]/3",
})).s("gm_trombone").gain(0.25)

// other · trumpet
const trumpet = note(`<
  A ~ B C D@3 E@3 F G F H ~@12 I J K L M N ~@5 O P Q@2 R S T@3 U@2 V@3 ~ W X@2 Y Z AA AB AC@2 AD@3 AE@6 AF AG AH@4 AI
  AJ@8 ~ AK@6 ~@2
>`.pickRestart({
  A: "ab4 f4 ~@6", B: "ab4@2 f4@2 ~@8 ab4@3 ~", C: "ab4@2 f4@2 ab4@3 ~@9",
  D: "[db4 ~@3 ab4@2 f4@2 b3 ~@3 bb4@2 ab4@22 eb4 ~@3 db4 ~@3 eb4 ~@3]/3", E: "[~@4 ab3@2 f3@2 c4 ~ eb4@24 ~@14]/3",
  F: "~@4 gb4 ~@7 gb4 ~@3", G: "~@4 gb4 ~ eb4 ~@5 gb4 ~@3", H: "f4@3 ~@13", I: "f4 ~@5 f4 ~@5 f4 ~@3",
  J: "~@2 f4 ~@7 f4 ~@5", K: "~@2 f4 ~@9 gb4 ~@3", L: "g4 ~@3 ab4 ~@3 a4 ~@3 bb4 ~@3",
  M: "b4 ~@3 c5 ~@3 db5@2 bb4@2 d5@2 ~@2", N: "~@2 eb5 ~@13", O: "~@7 d4", P: "f4 g4@2 bb4 ~@2 d4 f4",
  Q: "[g4@2 bb4 b4 ~ d4 f4 g4@2 bb4 b4 c5@2 d5 ~ d4]/2", R: "f4 g4@2 bb3 b3 db4@2 d4", S: "e4 f4 g4 bb4 ~@4",
  T: "[~ [a4,bb4]@4 ~]/3", U: "bb4/2", V: "[bb4@5 ~]/3", W: "f4@3 ~", X: "[f4@5 f4@3]/2", Y: "~ bb4 db5@2 bb4@2 e5 eb5",
  Z: "~ db5 ~ c5 ~ f4 ab4 ~", AA: "bb4 ~ db5 bb4 ~@4", AB: "~@8 c5!4 c5@2 ~@2", AC: "[~@2 f5@4 f5 e5]/2",
  AD: "[d5@28 ~@2 g4 ab4@5 g4 ab4@5 g4 ab4@5]/3",
  AE: "[g4 ab4@3 g4 ab4@3 g4 ab4@3 a4@16 ~@2 g4 a4@5 g4 ab4@5 g4 ab4@5]/3", AF: "g4 ab4@5 g4 ab4@5 g4 ab4@3",
  AG: "g4 ab4@3 g4 ab4@3 g4 ab4@3 g4 ab4@3", AH: "[g4 ab4@3 c5@24 b4@6 bb4@6 a4@6 bb4@6 b4@6 bb4@6]/4",
  AI: "a4@3 bb4@3 b4@2", AJ: "[~ bb4@3 b4@3 bb4@3 b4@24 bb4@8 bb4@16 ~@6]/8",
  AK: "[~@4 a5 g5 f5 e5 db5 c5 bb4 a4 g4@80 ~@4]/6",
})).s("gm_trumpet").gain(0.4)

// other · french horn · "Mellophone"
const french_horn = note(`<
  A B A C D E F ~@4 G H I J K L M N O P ~@5 Q R S T U ~ V ~@3 W X@2 Y Z@2 AA AB@3 AC@2 AD@3 ~@5 AE@2 AF AG AH AI@2 ~@2
  AJ@2 ~ AK AL ~@2 AM@3 AN AO AP@5 AQ@4 AR@6 ~@2
>`.pickRestart({
  A: "ab4 f4 ~@6", B: "~@2 ab4 f4 ab4 f4 ab4 f4", C: "ab4 ~@7", D: "~@4 ab4@2 f4@2 b3 ~@7",
  E: "~@2 ab4 f4 ab4 f4 bb4 f4", F: "ab4 f4 eb4 ~@5", G: "ab4 f4 ~@2 ab4 f4 ~@2", H: "~@2 ab4 f4 bb4 f4 ~@2",
  I: "f3 c4 ab4 b4@4 c5", J: "eb4 f4 ~@3 f3 b3 c4", K: "ab3 a3 ~@6", L: "~@5 b3 d4 f4", M: "eb4 f3 c4 f4 ab3 a3 eb4 b3",
  N: "c4 f4 d4 eb4 ab4 e4 f4 bb4", O: "g4 ab4 b4 c5 ~ f3 ~@2", P: "ab4 f4 bb4 f4 ab4 f4 ~@2",
  Q: "eb4 ~@5 d4 ~@5 db4 ~@3", R: "~@2 c4 ~@7 b3 ~@5", S: "~@2 bb3 ~@5 a3 ~@7", T: "~@4 eb4 c4 b3 bb3",
  U: "~@4 db5 bb4 ~@2", V: "f3 ab3 ~ a3 c4 eb4 ~ f4 ab4@2 ~@6", W: "~@7 d4",
  X: "[f4 g4 ~@3 d4 f4 g4@2 bb4 ~@2 d4 f4 g4@2]/2", Y: "bb4 b4 ~ d4 f4 g4@2 bb4",
  Z: "[b4 db5@2 d5 ~ d4 f4 g4@2 bb4 b4 db5@2 d5 e5 f5]/2", AA: "~ g4 bb4 b4 ~@4", AB: "[~ bb4@4 ~]/3", AC: "eb5/2",
  AD: "[eb5@5 ~]/3", AE: "[~@3 f4@3 f4@2]/2", AF: "f4!2", AG: "f4@8 f4@4 gb4 g4 ab4@2", AH: "f4@2 f4 e4",
  AI: "[[f4,a4]@7 ~]/2", AJ: "[~@3 d4 f4@3 g4!2 ab4@2 g4 f4@3 d4@17]/2",
  AK: "d4 f4 ~ ab4 a4 c5 ~ d5 f5 d5 ~ c5 a4 g4 ~ f4", AL: "d4 c4 ~ a3 ~@12",
  AM: "[~@4 a4@24 d4@6 ~@2 [d4,eb4] [e4,f4,gb4] [g4,ab4,a4] [bb4,b4,c5] d5@8, ~@40 db5 ~@7]/3", // Ebmaj7
  AN: "~@4 d4@6 ~@2 [d4,eb4] [e4,f4,gb4] [g4,ab4,a4] [bb4,b4,c5]", // Ebmaj7
  AO: "d5@8 ~@4 [d4,eb4] [e4,f4,gb4] [g4,ab4,a4] [bb4,b4,c5], db5 ~@15", // Ebmaj7
  AP: "[d5@6 ~@2 [d4,eb4] [e4,f4,gb4] [g4,ab4,a4] [bb4,b4,c5] d5@6 ~@2 g4@48 ~@12, db5 ~@11 db5 ~@67]/5", // Ebmaj7
  AQ: "[[eb4,e4] [f4,gb4,g4] [ab4,a4,bb4] [b4,c5,db5] eb5@32 g4@2 d5@2 bb4@2 db5@14 d5@4 ~@4, ~@4 d5 ~@59]/4", // Emaj7
  AR: "[~@8 db5 d5 eb5 f5 g5@32 g5@48 ~@4]/6",
})).s("gm_french_horn").gain(0.4)

// other · french horn · "Mellophone"
const french_horn_2 = note(`<
  A ~@2 A B ~@3 C ~@2 D E ~@15 F G H ~ I ~@3 J K@2 L M@2 N O@3 P@2 Q@3 ~@4 R@2 ~@2 S T U@2 ~@2 V@2 ~ W X ~@2 Y@3 Z AA
  AB@2 AC AD ~ AE@3 AF AG@6 ~@2
>`.pickRestart({
  A: "ab4 ~@7", B: "~@4 ab4@2 f4@2 b3 ~@7", C: "~@7 f4", D: "ab4 f4 ~@2 ab4 f4 ~@2", E: "~@2 ab4 f4 bb4 f4 ~@2",
  F: "~@8 f3 ~@7", G: "~@4 d4 ~ db4 ~", H: "~@4 db4 bb3 ~@2", I: "~@5 eb4 ~ f4 ab4@2 ~@6", J: "~@7 d4",
  K: "[f4 g4 ~@3 d4 f4 g4@2 bb4 ~@2 d4 f4 g4@2]/2", L: "bb4 b4 ~ d4 f4 g4@2 bb4",
  M: "[b4 db5@2 d5 ~ d4 f4 g4@2 bb4 b4 db5@2 d5 e5 f5]/2", N: "~ g4 bb4 b4 ~@4", O: "[~ a4@4 ~]/3", P: "bb4/2",
  Q: "[bb4@5 ~]/3", R: "[f4@3 f4@4 ~]/2", S: "~@8 f4@4 gb4 g4 ab4@2", T: "f4@2 f4 e4", U: "[d4@7 ~]/2",
  V: "[~@3 d4 f4@3 g4!2 ab4@2 g4 f4@3 d4@17]/2", W: "d4 f4 ~ ab4 a4 c5 ~ d5 f5 d5 ~ c5 a4 g4 ~ f4",
  X: "d4 c4 ~ a3 ~@12", Y: "[~@4 a4@24 d4@6 ~@2 [d4,eb4] [e4,f4,gb4] [g4,ab4,a4] [bb4,b4,c5] d5@8, ~@40 db5 ~@7]/3",
  Z: "~@4 d4@6 ~@2 [d4,eb4] [e4,f4,gb4] [g4,ab4,a4] [bb4,b4,c5]", // Ebmaj7
  AA: "d5@8 ~@4 [d4,eb4] [e4,f4,gb4] [g4,ab4,a4] [bb4,b4,c5], db5 ~@15", // Ebmaj7
  AB: "[d5@6 ~@2 [d4,eb4] [e4,f4,gb4] [g4,ab4,a4] [bb4,b4,c5] d5@6 ~@6 f4@4 ~@4, db5 ~@11 db5 ~@19]/2", AC: "f4 ~ f4 ~",
  AD: "f4 ~ f4!2", AE: "[[eb4,e4] [f4,gb4,g4] [ab4,a4,bb4] [b4,c5,db5] eb5@32 g3@2 d4@2 f4@2 a4@6, ~@4 d5 ~@43]/3",
  AF: "a4@2 bb4 ~", AG: "[~@8 e4 f4 g4 a4 d5@80 ~@4]/6",
})).s("gm_french_horn").gain(0.45)

// other · french horn · "Mellophone" · soft notes
const french_horn_soft = note("<A B C ~@2 D E ~ F ~@6 D G ~@2 H I ~@5 J K L ~ M ~ N ~@19 O@3 ~@39>".pickRestart({
  A: "~ f4 ~@6", B: "~@2 ab4 f4 ab4 f4 ab4 f4", C: "ab4 ~@7", D: "~@2 ab4 f4 ab4 f4 bb4 f4", E: "ab4 f4 eb4 ~@5",
  F: "~@2 ab4 f4 ab4 f4 bb4 ~", G: "ab4 f4 ~@6", H: "~@6 ab4 f4", I: "ab4 f4 bb4 f4 ab4 f4 ~@2",
  J: "b3 ~@5 bb3 ~@5 a3 ~@3", K: "~@2 ab3 ~@7 g3 ~@5", L: "~@2 gb3 ~@13", M: "~@6 ab3 f3", N: "f3 ab3 ~ a3 c4 ~@11",
  O: "[db4 d4 eb4 e4]/3",
})).s("gm_french_horn").gain(0.2)

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

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

// other · french horn · "Baritone Horn"
const french_horn_5 = note(`<
  A ~ B C D ~ E ~@4 F G H ~@7 I ~@4 J K L M N O P ~@3 Q R S T@2 U V W@3 X@2 ~ Y Z AA AB@2 ~@4 AC AD AE AF AG AH AI AJ AK
  AI AL AM AI AN AO AP@4 AQ AR AS AT AU@4 ~ AV@6 ~@2
>`.pickRestart({
  A: "ab3 f3 ~@6", B: "ab2@2 ~@10 gb3@3 ~", C: "~@4 gb3@3 ~@9", D: "db3 ~@3 g3 ~@3 b3 ~@7",
  E: "~@4 db3 ~@3 ab2 ~@3 ab3 ~@3", F: "~@4 eb3 ~ gb3 ~@5 eb3 ~@3", G: "~@4 eb3 ~@7 eb3 ~@3", H: "c3@3 ~@13",
  I: "~@4 c4 ~@5 f4 ~@5", J: "eb3 ~@5 d3 ~@5 db3 ~@3", K: "~@2 c3 ~@7 b2 ~@5", L: "~@2 bb2 ~@5 a2 ~@3 gb2 ~@3",
  M: "g2 ~@3 ab2 ~@3 a2 ~@3 bb2 ~@3", N: "b2 ~@3 c3 ~@3 db3@2 bb2@2 d3@2 ~@2", O: "~@2 eb3 ~@13",
  P: "f2 ab2 ~ a2 c3 eb3 ~ f3 ab3@2 ~@6", Q: "~@5 d3 f3 g3", R: "~@3 d3 f3 g3@2 bb3", S: "~@2 d3 f3 g3@2 bb3 b3",
  T: "[~ d3 f3 g3@2 bb3 b3 db4@2 d4 ~ d3 f2 g2@2 bb2]/2", U: "b2 db3@2 d3 e3 f3 ~ g2", V: "bb2 b2 db3 d3 ~@4",
  W: "[~ [eb3,e3]@4 ~]/3", X: "bb2/2", Y: "f3 c4 ab3 c4 f3 c4 ~@2", Z: "ab3 c4 g3 c4 f3 ab3 g3 gb3",
  AA: "f3 e3 eb3 d3 db3 c3 b2@2", AB: "[f3@3 ~]/2", AC: "~@6 f3 ab3", AD: "a3 c4 d4 eb4 f4 ~@2 f2", AE: "c3 f3 a3 a2@5",
  AF: "d3 ~ f3 ~ d3 ~ g3 ~", AG: "f3 ~ e3 ~ d3 ~ a2 ~", AH: "c3 ~ d3 ~ f3 ~ d3 ~", AI: "g3 ~ f3 ~ e3 ~ d3 ~",
  AJ: "a2 ~ c3 ~ d3 g3 gb3 f3", AK: "e3 eb3 d3 ~ f3 ~ d3 ~", AL: "a2 ~ c3 ~ d3 a2 bb2 b2", AM: "c3 db3 d3 ~ f3 ~ d3 ~",
  AN: "a2 ~ c3 ~ d3 ~ f3 ~", AO: "e3 ~ d3 f3 e3 eb3 d3 db3",
  AP: "[d3 eb3 e3 f3 gb3@2 g2@8 ~ db3@2 c3 bb2 g2@7 ~ db3@2 c3 bb2 g2]/4", AQ: "~ db3@2 c3 bb2 g2@2 ~", AR: "d3 ~ g2 ~",
  AS: "bb2 ~ g2 ~", AT: "bb2 ~ bb2!2", AU: "[~ g2@12 ~@3]/4", AV: "[~@3 d3@20 ~]/6",
})).s("gm_french_horn").gain(0.4)

// bass · tuba
const bass = note(`<
  A ~@3 B ~ C ~@4 D E F ~@14 G H I J K L M N O P Q R S@2 T U@3 V@2 ~ W X Y Z AA AB AC AD AE AF AG AH AI AJ AK AL AM AN
  AL AO AP AL AQ AR AS@4 AT AU AV AW AX@4 ~ AY@6 ~@2
>`.pickRestart({
  A: "ab2 f2 ~@6", B: "ab2 ~@3 g2 ~@3 [b1,b2] ~@7", C: "~@4 c2 ~@3 ab2 ~@3 ab3 ~@3", D: "~@4 eb2 ~ gb2 ~@5 eb2 ~@3",
  E: "~@4 eb2 ~@7 eb2 ~@3", F: "f2@3 ~@13", G: "~@12 db2 ~@3", H: "d2 ~@3 eb2 ~@3 e2 ~@3 f2 ~@3",
  I: "gb2 ~@3 g2 ~@3 [db2,db3]@2 [bb1,bb2]@2 a2@2 ~@2", J: "~@2 bb2 ~@13", K: "~@4 c2 eb2 ~ f2 ab2@2 ~@2 [g1,g2]@2 ~@2",
  L: "[bb1,bb2]@2 ~@2 [g1,g2]@2 [c2,c3] ~@3 [bb1,bb2]@2 [a1,a2]@4", M: "[g1,g2] ~ d2 ~ f2 ~@2 [g1,g2]",
  N: "[bb1,bb2]@2 [g1,g2]@2 db3 d3 ~ a2", O: "bb2 ~@2 d2 f2 g2 ~@2", P: "~ d2 f2 g2@2 bb2 ~@2",
  Q: "d2 f2 g2@2 bb2 b2 ~ d2", R: "f2 g2@2 bb2 b2 db3@2 d3",
  S: "[~ d2 f2 g2@2 bb2 b2 db3@2 d3 e3 f3 ~ [g1,g2] [bb1,bb2] [b1,b2]]/2", T: "[db2,db3] [d2,d3] [d2,e3] [f2,f3] ~@4",
  U: "[~ [eb2,e2]@4 ~]/3", V: "[bb1,eb2]/2", W: "bb2 c2 ab2 c2 g2 c2 bb2 c2", X: "ab2 c2 g2 c2 f2 ab2 g2 gb2",
  Y: "f2 e2 eb2 d2 db2 c2 b1@2", Z: "~@2 bb2 ~ db3 ~ bb2 eb3", AA: "~ db3 c3@2 bb2 ~ f2 ~",
  AB: "ab2 ~@2 [bb1,bb2] [db2,db3]@2 [bb1,bb2]@2", AC: "[e2,e3] [eb2,eb3] ~ [db2,db3] ~ [c2,c3] ~ f2",
  AD: "ab2 ~ bb2 ~ db3 bb2 ~ f2", AE: "ab2@2 bb2 ~@3 f2@2 ab2@2 bb2@2 db3@2 eb3@2", AF: "~ f2 ab2 a2 c3 eb3 f3 ~",
  AG: "~@7 f2", AH: "c3 eb3 a3 ~@2 a1@3", AI: "d2 ~ f2 ~ d2 ~ g2 ~", AJ: "f2 ~ e2 ~ d2 ~ a1 ~",
  AK: "c2 ~ d2 ~ f2 ~ d2 ~", AL: "g2 ~ f2 ~ e2 ~ d2 ~", AM: "a1 ~ c2 ~ d2 g2 gb2 f2", AN: "e2 eb2 d2 ~ f2 ~ d2 ~",
  AO: "a1 ~ c2 ~ d2 a1 bb1 b1", AP: "c2 db2 d2 ~ f2 ~ d2 ~", AQ: "a1 ~ c2 ~ d2 ~ f2 ~", AR: "e2 ~ d2 f2 e2 eb2 d2 db2",
  AS: "[c2 b1 bb1 a1 ab1@2 g1@8 ~ db2@2 c2 bb1 g1@7 ~ db2@2 c2 bb1 g1]/4", AT: "~ db2@2 c2 bb1 g1@2 ~",
  AU: "d2 ~ [g1,g2] ~", AV: "[bb1,bb2] ~ [g1,g2] ~", AW: "[bb1,bb2] ~ [g1,g2] [bb1,bb2]", AX: "[~ [g1,g2]@12 ~@3]/4",
  AY: "[~@11 g1@12 ~, ~@3 g2@20 ~]/6",
})).s("gm_tuba").gain(0.4)

stack(
  trombone, trombone_soft, trumpet, french_horn, french_horn_2, french_horn_soft, french_horn_3, french_horn_4,
  french_horn_5, bass
)