Strudelify

Umbrella in Bb

Weslley França

KeyB♭ majorTempo100 bpm
0:00/0:00
// Umbrella in Bb — Weslley França
// 100 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5893746; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 104 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(100/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 · "Trompete Bb"
const trumpet = note(`<
  ~@15 A B@4 C@5 D@2 E@2 F@2 G ~@7 H I@4 J@5 K@2 L@2 M@2 N ~ O P ~ Q R@3 S T@2 U@3 V@3 W X Y Z W X AA AB AC AD AE AB AF
  AD AG AH AI AJ AK AH AI AJ AL ~@8
>`.pickRestart({
  A: "~@24 eb5 f5@3 eb5 f5@3",
  B: "[eb5@2 ~@2 eb5!3 ~ eb5@2 eb5 ~ eb5@2 f5 f5@3 d5@2 d5@2 d5 ~ d5@2 d5 ~ d5@2 eb5 d5@3 c5@2 c5@2 c5 ~ c5@2 c5 ~ d5@2 bb4 c5@3 bb4 g4 bb4@2 bb4 g4 bb4!3 ~ c5@2 bb4!2]/4",
  C: "[g4@4 ~@4 eb5@4 eb5@2 eb5@2 eb5@4 eb5@2 ~@2 eb5@4 f5@2 f5@6 d5@4 d5@4 d5@2 ~@2 d5@4 d5@2 ~@2 d5@4 eb5@2 d5@6 c5@4 c5@2 bb4@2 c5@2 ~@2 c5@2 bb4@2 c5@2 ~@2 d5@4 bb4@2 c5@6 f5@2 a5@2 bb5@2 a5@2 bb5@2 ~@2 bb5@2 a5@2 bb5@2 ~@2 bb5 c6@3 bb5@2 bb5@4 g5@6 ~@8 bb5@2 g5@6 ~@8]/5",
  D: "[bb5@4 ~@8 f5@2 g5@2 bb5@2 bb5@2 bb5@2 ~@2 b5 c6@3 bb5@2 bb5@4 a5@6 ~@8 bb5@2 a5@6 ~@8]/2",
  E: "[bb5@2 ~@2 [bb4,b4] [c5,db5,d5] [eb5,e5,f5] [gb5,g5,ab5] bb5@4 ~@4 bb5@2 bb5@2 bb5@2 ~@2 c6@4 bb5@2 bb5@4 g5@6 ~@8 bb5@2 g5@6 ~@8, ~@8 a5 ~@55]/2", // Bmaj7
  F: "[bb5@2 ~@4 f5 g5 bb5!3 ~ c6@2 bb5 bb5@2 a5@3 ~@4 bb5 a5@3 bb5@2 ~@2]/2", G: "a5 ~ g5 ~ bb5 ~ c6 d6",
  H: "~@6 a5!2",
  I: "[g5@4 ~@4 g5@2 g5@2 g5@2 ~@2 g5@4 g5@2 ~@2 g5@4 a5@2 bb5@6 f5@4 f5@4 f5@2 ~@2 a5 bb5@3 bb5@2 ~@2 bb5@4 bb5@2 bb5@6 a5@4 a5@4 a5@2 ~@2 a5@4 g5@2 ~@2 gb5@4 d5@2 g5@6 g5@2 d5@2 g5@4 g5@2 d5@2 g5@2 g5@2 g5@2 ~@2 g5@4 g5@2 g5@2]/4",
  J: "[eb5@4 ~@4 g5@4 g5@2 g5@2 g5@4 g5@2 ~@2 g5@4 a5@2 bb5@4 f5@6 f5@4 f5@2 ~@2 a5 bb5@3 bb5@2 ~@2 bb5@4 bb5@2 bb5@6 a5@4 a5@2 g5@2 a5@2 ~@2 a5@2 g5@2 a5@2 ~@2 bb5@4 g5@2 g5@6 f5@2 g5@2 bb5@2 a5@2 bb5@2 ~@2 bb5@2 a5@2 bb5@2 ~@2 bb5 c6@3 bb5@2 bb5@4 g5@6 ~@8 bb4@2 g4@6 ~@8]/5",
  K: "[bb4@2 ~@4 f4 g4 bb4!3 ~ c5@2 bb4 bb4@2 a4@3 ~@4 bb4 a4@3 ~@4]/2",
  L: "[bb4@2 ~@6 bb4!3 ~ c5@2 bb4 bb4@2 g4@3 ~@4 bb4 g4@3 ~@4]/2",
  M: "[bb4@8 ~@9 bb4@2 bb4@2 bb4@2 ~@2 c5@4 bb4@2 bb4@4 a4@6 ~@8 bb4@2 a4@6 bb5@4 ~@3]/2",
  N: "~ a5@4 ~@4 g5@4 ~@4 bb5@4 ~@4 c6@4 d6@3", O: "~@29 g4@3", P: "~ f4 g4@7 f4@4 f4@16 ~@3",
  Q: "~@9 c5@4 c5@2 ~@2 c5@4 c5@2 ~@2 c5@4 bb4@2 ~",
  R: "[~ bb4@8 bb4@2 bb4@2 bb4@2 ~@2 bb4@4 bb4@2 ~@2 bb4 c5@3 a4@36 d5@24 ~@7]/3", S: "~ g5@31", T: "~ a5@31",
  U: "[~ bb5@4 ~@4 g5@2 bb5@2 ~@2 c6@2 ~@2 bb5@2 d6@4 c6@2 bb5@2 g5@2 f5@2 ~@2 bb5@2 g5@24 g5@2 ab5@2 a5@28 ~@3]/3",
  V: "[~ a5@28 g5@2 a5@2 bb5@4 ~@4 bb5@2 a5@2 bb5@2 ~@2 bb5@2 a5@2 bb5@2 ~@2 bb5 c6@3 bb5@2 bb5@4 g5@6 bb4@2 g4@6 bb4@2 g4@6 bb4@2 g4@5]/3",
  W: "~@9 bb4@4 ~@4 bb4@4 ~@4 bb4@4 ~@3", X: "~ bb4@2 a4@6 bb4@2 a4@6 bb4@2 a4@6 bb4@2 a4@5",
  Y: "~@9 a4@4 ~@4 a4@4 ~@4 a4@4 ~@3", Z: "~ bb4@2 g4@6 bb4@2 g4@6 bb4@2 g4@6 bb4@2 g4@5",
  AA: "~@21 g4@2 a4@2 bb4@2 c5@2 d5@2 ~",
  AB: "~ d5@4 c5@2 ~@2 d5@4 c5@2 ~@4 [f4,gb4] [g4,ab4,a4,bb4,b4,c5] [db5,d5,eb5,e5] ~@3 d5@2 d5@2 d5@2 ~, ~@21 f5@4 ~@7", // Gbmaj7
  AC: "~ d5@4 c5@2 ~@2 d5@4 c5@2 ~@6 d5@4 d5@4 d5@3", AD: "~ c5 d5@7 c5@4 c5@16 c5@3",
  AE: "~ bb4 c5@7 bb4@4 bb4@16 d5@2 ~", AF: "~ d5@4 c5@2 ~@2 d5@4 c5@2 ~@2 d5@2 d5@2 d5@2 ~@2 d5@4 d5@2 ~",
  AG: "~ d5 eb5@3 d5@4 c5@4 c5@8 bb4@8 a5@3", AH: "~ bb5@4 a5@2 bb5@18 ~@4 a5@3", AI: "~ bb5@4 a5@2 bb5@18 ~@4 bb5@3",
  AJ: "~ bb5@8 a5@4 a5@16 a5@3", AK: "~ a5@8 g5@4 g5@16 a5@3", AL: "~ a5@8 g5@4 g5@16 ~@3",
})).s("gm_trumpet").gain(0.45)

// other · trumpet · "Trompete Bb" · soft notes
const trumpet_soft = note("<A B A B A B A B A B A B A B A C ~@16 A B A B A B A ~@57 D E D E ~@4>".pickRestart({
  A: "~@2 d5 c5 d5 ~@3", B: "bb4 c5 d5 f5 d5 f5 d5 ~", C: "bb4 c5 d5 f5 d5 ~@3", D: "~@9 d5@4 c5@4 d5@4 ~@11",
  E: "~ bb4@4 c5@4 d5@4 f5@4 d5@4 f5@4 d5@4 ~@3",
})).s("gm_trumpet").gain(0.2)

// other · alto sax · "Saxofone Alto"
const alto_sax = note(`<
  ~@8 A@2 B C A@2 B D E F G H E F G I@2 ~@5 J K A@2 B L M A B N E F G H E F G O@2 P Q P@2 R S T U@2 V ~ W X@3 Y@7 Z@2 AA
  AB AC AD AA AB AE AF AG AH AI AF AJ AH AK AL AM AN AO AL AM AN AP ~@8
>`.pickRestart({
  A: "~@7 bb3 ~ bb3 bb3@4 ~@2", B: "~@7 c4 ~ c4 c4@4 ~@2", C: "~@7 bb3 ~ g3 bb3@2 g3@2 ~@2", D: "d4 c4 d4 f4",
  E: "~ g3 bb3 eb4 ~@5 d4 eb4 f4 ~@4", F: "~ f3 bb3 d4 ~@5 bb3 c4 d4 ~@4", G: "~ gb3 a3 c4 ~@5 c4 d4 eb4 ~@4",
  H: "~ g3 c4 d4 ~@5 bb3 c4 d4 ~@4", I: "[~@2 bb3 c4 d4 c4 d4 ~ d4 c4 d4 ~ d4@2 d4 eb4@2 bb3@3 ~@12]/2", J: "~@6 d4 ~",
  K: "c4 ~ bb3 ~ d4 ~ c4 d4", L: "~@7 bb3 ~ g3 bb3 c4 d4 c4 bb3 a3", M: "g3@2 ~@5 bb3 ~ bb3 bb3@4 ~@2",
  N: "bb3@3 c4@3 d4@4 f4@6", O: "[~@2 bb3 c4 d4 c4 d4 ~ d4 c4 d4 ~ d4@2 d4 eb4@2 bb3@3 ~@2 bb3 ~@3 bb3 ~@3 bb3 ~]/2",
  P: "~@2 bb3 ~@3 bb3 ~@3 bb3 ~@3 bb3 ~", Q: "~@2 c4 ~@3 c4 ~@3 c4 ~@3 c4 ~",
  R: "~@5 bb3@2 ~@6 bb3@2 ~@6 bb3@2 ~@6 bb3@2 ~", S: "~@5 c4@2 ~@6 c4@2 ~@6 c4@2 ~@2 d4@4 ~@3",
  T: "~ c4@4 ~@4 bb3@4 ~@4 d4@4 ~@4 c4@4 d4@3",
  U: "[~ eb4@4 eb4@2 eb4@4 eb4@4 eb4@4 eb4@4 eb4@6 eb4@2 eb4@2 eb4@6 eb4@6 eb4@8 eb4@8 eb4@3]/2",
  V: "~ d4 eb4@7 d4@4 d4@16 ~@3", W: "~@5 ab3@4 eb4@4 eb4@2 ~@2 eb4@4 eb4@2 ~@2 f4@4 eb4@2 ~",
  X: "[~ eb4@8 eb4@2 eb4@2 eb4@2 ~@2 eb4@4 eb4@2 ~@2 f4@4 d4@36 gb4@24 ~@7]/3",
  Y: "[~@3 eb4@2 bb4@2 eb5@4 eb5@2 bb4@2 eb4@2 ~@2 eb4@2 bb4@2 eb5@4 eb5@2 bb4@2 eb4@2 ~@2 f4@2 c5@2 f5@4 f5@2 c5@2 f4@2 ~@2 f4@2 c5@2 f5@4 f5@2 c5@2 f4@2 ~@2 gb4@2 db5@2 gb5@4 gb5@2 db5@2 gb4@2 ~@2 gb4@2 db5@2 gb5@4 gb5@2 db5@2 gb4@2 ~@2 g4@2 d5@2 g5@4 g5@2 d5@2 g4@2 ~@2 g4@2 d5@2 g5@4 g5@2 d5@2 g4@2 ~@2 eb4@2 bb4@2 eb5@4 eb5@2 bb4@2 eb4@2 ~@2 eb4@2 bb4@2 eb5@4 eb5@2 bb4@2 eb4@2 ~@2 f4@2 c5@2 f5@4 f5@2 c5@2 f4@2 ~@2 f4@2 c5@2 f5@4 f5@2 c5@2 f4@2 ~@2 gb4@2 db5@2 gb5@4 gb5@2 db5@2 gb4@2 ~@2 gb4@2 db5@2 gb5@4 gb5@2 db5@2 gb4]/7",
  Z: "[~ g4@4 ~@4 d4@2 c4@2 d4@2 ~@2 d4@2 c4@2 d4@2 ~@2 d4@4 d4@2 eb4@4 bb3@6 f4@2 eb4@6 f4@2 eb4@6 f4@2 eb4@5]/2",
  AA: "~@9 f4@4 ~@4 f4@4 ~@4 f4@4 ~@3", AB: "~ g4@2 f4@6 g4@2 f4@6 g4@2 f4@6 g4@2 f4@5",
  AC: "~@9 a4@4 ~@4 a4@4 ~@4 a4@4 ~@3", AD: "~ f4@2 eb4@6 f4@2 eb4@6 f4@2 eb4@6 f4@2 eb4@5",
  AE: "~ d4@6 d4@6 g4@12 ~@7", AF: "~@9 g4@4 eb4@2 ~@2 g4@4 eb4@2 ~@9",
  AG: "~@5 d4@2 ~@2 f4@2 f4@2 f4@2 ~@2 f4@4 d4@2 ~@6 f4@3", AH: "~ f4@8 f4@4 f4@16 f4@3", AI: "~ g4@8 d4@4 d4@16 ~@3",
  AJ: "~@5 f4@2 ~@2 f4@2 f4@2 f4@2 ~@2 f4@4 d4@2 ~@6 f4@3", AK: "~ g4@4 ~@4 g4@2 g4@2 ~@2 g4@2 ~@2 g4@2 g4@8 f4@3",
  AL: "~ g4@4 f4@2 g4@18 ~@4 f4@3", AM: "~ g4@4 f4@2 g4@2 f4@16 ~@4 f4@3", AN: "~ f4@8 c4@4 c4@16 eb4@3",
  AO: "~ eb4@8 d4@4 d4@16 f4@3", AP: "~ eb4@8 d4@4 d4@16 ~@3",
})).s("gm_alto_sax").gain(0.4)

// other · tenor sax · "Saxofone Tenor"
const tenor_sax = note(`<
  A@2 B C A@2 B D E F@2 G F@2 H I J K L J@2 K L M@2 ~@5 N O E F P Q F@2 H R J K L J@2 K S@2 A@2 B C T U@2 V W@2 X Y@2
  Z@2 AA AB@7 AC@2 AD AE AF AG AD AE AH ~@8 AI@8 AJ@8
>`.pickRestart({
  A: "[d4@2 c4 d4@2 c4 d4@4 c4 bb3 c4 d4 f4 d4@3 c4 d4@2 c4 d4@3 c4 bb3 c4 d4 f4 d4 c4]/2",
  B: "bb3@2 a3 bb3@2 c4 bb3@4 g3 a3 bb3 c4 bb3 a3", C: "bb3@2 a3 bb3@2 c4 bb3@4 g3 a3 bb3 c4 bb3 c4",
  D: "bb3@2 a3 bb3@2 c4 bb3@4 ~@4 bb3@2", E: "c4@2 d4 d4@6 ~ bb3@2 bb3!2 bb3@2", F: "c4@2 d4 d4@6 ~ bb3@2 bb3@2 bb3@2",
  G: "c4@2 bb3 bb3@2 g3@6 ~@3 bb3@2", H: "c4@2 bb3 bb3@2 a3@4 ~ a3@2 a3@2 a3@2", I: "bb3 c4@2 g3@4 ~@9",
  J: "~@4 g4 eb4 bb3 g3@2 ~@3 f4 d4 bb3 f3", K: "~@4 f4 d4 bb3 f3@2 ~@3 f4 d4 bb3 gb3",
  L: "~@4 f4 d4 bb3 gb3@2 ~@3 f4 d4 bb3 g3", M: "[~@2 a3 bb3 d4 c4 d4 ~ d4 c4 d4 ~ d4@2 d4 eb4@2 bb3@3 ~@12]/2",
  N: "~@6 d4 ~", O: "c4 ~ g3 ~ d4 ~ c4 d4", P: "c4@2 bb3 a3@6 ~ a3@2 a3@2 a3@2", Q: "bb3@2 g3 g3@6 ~@5 bb3@2",
  R: "bb3 c4@2 d4@2 d4 c4@2 g3@3 ~@5",
  S: "[~@4 f4 d4 bb3 gb3@2 ~@3 f4 d4 bb3 g3@3 a3 bb3 d4 c4 d4 ~ d4 c4 d4 ~ d4@2 d4 eb4]/2",
  T: "d4@2 c4 d4@2 c4 d4@2 ~@8", U: "[~@21 g3@2 a3@2 bb3@2 c4@2 bb3@2 a3@2 bb3@4 a3@2 bb3@4 c4@2 bb3@4 ~@8 d4@4 ~@3]/2",
  V: "~ c4@4 ~@4 g3@4 ~@4 d4@4 ~@4 c4@4 d4@3", W: "[~@29 eb4@2 f4@2 g4@6 eb4@6 bb3@12 ~@7]/2", X: "~@17 d4@12 d4@3",
  Y: "[~ c4 d4@7 c4@4 c4@8 bb3@4 c4@4 bb3@2 c4@26 ~@7]/2",
  Z: "[~@9 g4@2 g4@2 g4@2 ~@2 g4@4 g4@2 ~@2 a4@4 gb4@8 c4@2 ~@4 d4@2 ~@4 c4@2 ~@4 d4@2 ~@4 c4@2 ~]/2",
  AA: "~@3 d4@2 ~@4 c4@2 ~@4 d4@2 ~@15",
  AB: "[~@3 eb4@4 ~@6 eb4@2 eb4@4 eb4@4 ~@6 eb4@2 f4@4 f4@4 ~@6 f4@2 f4@4 f4@4 ~@6 f4@2 gb4@4 gb4@4 ~@6 gb4@2 gb4@4 gb4@4 ~@6 gb4@2 g4@4 g4@4 ~@6 g4@2 g4@4 g4@4 ~@6 g4@2 eb4@4 eb4@4 ~@6 eb4@2 eb4@4 eb4@4 ~@6 eb4@2 f4@4 f4@4 ~@6 f4@2 f4@4 f4@4 ~@6 f4@2 gb4@4 gb4@4 ~@6 gb4@2 gb4@4 gb4@4 ~@6 gb4@3]/7",
  AC: "[~ g4@4 ~@4 d4@2 c4@2 d4@2 ~@2 d4@2 c4@2 d4@2 ~@2 d4@4 d4@2 eb4@4 bb3@6 eb4@2 bb3@6 eb4@2 bb3@6 eb4@2 bb3@5]/2",
  AD: "~@9 d4@4 ~@4 d4@4 ~@4 d4@4 ~@3", AE: "~ d4@2 c4@6 d4@2 c4@6 d4@2 c4@6 d4@2 c4@5",
  AF: "~@9 c4@4 ~@4 c4@4 ~@4 c4@4 ~@3", AG: "~ eb4@2 bb3@6 eb4@2 bb3@6 eb4@2 bb3@6 eb4@2 bb3@5",
  AH: "~ bb3@6 c4@6 d4@12 ~@7",
  AI: "[~ d4@4 c4@2 d4@4 c4@2 d4@8 c4@2 bb3@2 c4@2 d4@2 f4@2 d4@6 c4@2 d4@4 c4@2 d4@6 c4@2 bb3@2 c4@2 d4@2 f4@2 d4@2 c4@2 bb3@4 a3@2 bb3@4 c4@2 bb3@8 g3@2 a3@2 bb3@2 c4@2 bb3@2 a3@2 bb3@4 a3@2 bb3@4 c4@2 bb3@8 g3@2 a3@2 bb3@2 c4@2 bb3@2 c4@2 d4@4 c4@2 d4@4 c4@2 d4@8 c4@2 bb3@2 c4@2 d4@2 f4@2 d4@6 c4@2 d4@4 c4@2 d4@6 c4@2 bb3@2 c4@2 d4@2 f4@2 d4@2 c4@2 bb3@4 a3@2 bb3@4 c4@2 bb3@8 g3@2 a3@2 bb3@2 c4@2 bb3@2 a3@2 bb3@4 a3@2 bb3@4 a3@2 g3@8 g3@2 a3@2 bb3@2 c4@2 bb3@2 c4]/8",
  AJ: "[~ d4@4 c4@2 d4@4 c4@2 d4@8 c4@2 bb3@2 c4@2 d4@2 f4@2 d4@6 c4@2 d4@4 c4@2 d4@6 c4@2 bb3@2 c4@2 d4@2 f4@2 d4@2 c4@2 bb3@4 a3@2 bb3@4 c4@2 bb3@8 g3@2 a3@2 bb3@2 c4@2 bb3@2 a3@2 bb3@4 a3@2 bb3@4 c4@2 bb3@8 g3@2 a3@2 bb3@2 c4@2 bb3@2 c4@2 d4@4 c4@2 d4@4 c4@2 d4@8 c4@2 bb3@2 c4@2 d4@2 f4@2 d4@6 c4@2 d4@4 c4@2 d4@6 c4@2 bb3@2 c4@2 d4@2 f4@2 d4@2 c4@2 bb3@4 a3@2 bb3@4 c4@2 bb3@8 g3@2 a3@2 bb3@2 c4@2 bb3@2 c4@2 bb3@4 a3@2 g3@6 ~@19]/8",
})).s("gm_tenor_sax").gain(0.4)

// other · trombone
const trombone = note(`<
  ~@7 A B C@2 D C@2 E F G H@3 I@2 J K@2 L@2 M@2 N@2 O B C P Q C@2 E R G H@3 I@2 J S@2 T@2 U@2 V@2 W X@2 Y@2 Z@2 AA@2
  AB@4 AC@5 ~@3 AD@4 AE@3 AF AG@3 AH@2 AI AJ AK AL AI AJ AK ~@8
>`.pickRestart({
  A: "~@7 bb3", B: "c4@2 d4 d4@6 ~ bb3@2 bb3!2 bb3@2", C: "c4@2 d4 d4@6 ~ bb3@2 bb3@2 bb3@2",
  D: "c4@2 bb3 bb3@2 g3@6 ~@3 bb3@2", E: "c4@2 bb3 bb3@2 a3@4 ~ a3@2 a3@2 a3@2", F: "bb3 c4@2 g3@4 ~@9",
  G: "bb3@7 bb3@2 bb3 bb3@2 c4@4", H: "[d4@12 ~@2 bb3 bb3@3 a3@4 a3@4 bb3@2 c4@2 d4@6 ~@2 g4!5 ~ g4@2 f4!2]/3",
  I: "[eb4@2 ~ g3@2 bb3 c4 d4@5 bb3@3 bb3]/2", J: "a3@4 a3 bb3 a3@4 bb3@2 c4@2 ~@2",
  K: "[~@4 d4@2 f4@2 g4@2 f4@2 g4@2 ~@2 g4@2 f4@2 g4@2 ~@2 g4@4 f4@2 f4@4 eb4@6 f4@2 eb4@6 ~@8 bb3@2 [bb3,b3] [c4,db4,d4,eb4] f4@4, ~@60 e4 ~@3]/2", // Bmaj7
  L: "[~@4 [bb3,b3] [c4,db4,d4] [eb4,e4,f4] [gb4,g4,ab4] bb4@8 f4@2 f4@2 f4@2 ~@2 f4@4 g4@2 gb4@4 d4@6 gb4@2 d4@6 ~@8 d4 ~@2 d4 ~ d4 ~@2, ~@8 a4 ~@55]/2", // Bmaj7
  M: "[~@4 g4@2 ~@2 g4!3 ~ g4@2 f4 f4@2 eb4@3 f4 eb4@3 ~@4 f4@2 ~@2]/2",
  N: "[~@4 [bb3,b3] [c4,db4,d4] [eb4,e4,f4] [gb4,g4,ab4] bb4@8 f4@2 f4@2 f4@2 ~@2 f4@4 g4@2 gb4@4 d4@6 gb4@2 d4@6 ~@8 g4@4 ~@4, ~@8 a4 ~@55]/2", // Bmaj7
  O: "f4 ~ d4 ~ g4 ~ f4 g4", P: "c4@2 bb3 a3@6 ~ a3@2 a3@2 a3@2", Q: "bb3@2 g3 g3@6 ~@5 bb3@2",
  R: "bb3 c4@2 d4@2 d4 c4@2 g3@3 ~@5",
  S: "[~@2 d4 f4 g4 f4 g4 ~ g4 f4 g4 ~ g4@2 f4 f4@2 eb4@3 f4 eb4@3 ~@4 f4@2 ~@2]/2",
  T: "[~@4 f4@2 ~@2 f4!3 ~ f4@2 g4 gb4@2 d4@3 gb4 d4@3 ~@4 d4@2 ~@2]/2",
  U: "[~@4 g4@2 ~@2 g4!3 ~ g4@2 f4 f4@2 eb4@3 f4 eb4@3 ~@4 d4@4]/2",
  V: "[~@9 c4@8 f4@2 f4@2 f4@2 ~@2 f4@4 g4@2 gb4@4 d4@6 gb4@2 d4@6 ~@8 g4@4 ~@3]/2",
  W: "~ f4@4 ~@4 d4@4 ~@4 g4@4 ~@4 f4@4 g4@3", X: "[~ c4@24 ~@4 c4@2 d4@2 eb4@6 c4@6 bb3@12 ~@7]/2",
  Y: "[~ bb3@12 bb3@2 d4@2 ~@2 bb3@2 d4@8 eb4@2 d4@2 c4@16 ~@4 a3@6 bb3@5]/2",
  Z: "[~ c4@24 ~@4 c4@2 bb3@2 bb3@6 bb3@24 ~]/2",
  AA: "[~ d3@6 gb3@6 a3@6 eb4@6 d4@6 c4@6 a3@6 gb3@6 eb3@6 ~@2 eb4@4 eb4@3]/2",
  AB: "[~@9 eb4@2 eb4@2 eb4@2 ~@2 eb4@4 eb4@2 ~@2 eb4@4 f4@2 f4@6 d4@4 d4@4 d4@2 ~@2 d4@4 d4@2 ~@2 d4@4 eb4@2 d4@6 c4@2 ~@2 c4@4 c4@2 ~@2 c4@4 c4@2 ~@2 d4@4 bb3@2 c4@6 bb3@2 g3@2 bb3@4 bb3@2 g3@2 bb3@2 bb3@2 bb3@2 ~@2 c4@4 bb3@2 bb3]/4",
  AC: "[~ g3@4 ~@4 eb4@4 eb4@2 ~@2 eb4@4 eb4@2 ~@2 eb4@4 f4@2 f4@6 d4@4 d4@4 d4@2 ~@2 d4@4 d4@2 ~@2 d4@4 eb4@2 d4@6 c4@2 ~@2 c4@2 bb3@2 c4@2 ~@2 c4@2 bb3@2 c4@2 ~@2 d4@4 bb3@2 c4@4 bb3@2 g3@4 g4@2 f4@2 g4@2 ~@2 g4@2 f4@2 g4@2 ~@2 g4@4 f4@2 f4@4 eb4@6 ~@23]/5",
  AD: "[~ bb3@12 ~@8 bb3@2 c4@2 d4@2 c4@2 bb3@2 c4@2 d4@12 ~@4 d4@2 bb3@2 ~@2 bb3@2 d4@2 ~@2 eb4@2 d4@2 c4@12 ~@8 bb3@2 c4@2 d4@2 eb4@2 d4@2 c4@2 bb3@6 c4@6 d4@12 ~@7]/4",
  AE: "[~ bb3@12 ~@8 bb3@2 c4@2 d4@2 c4@2 bb3@2 c4@2 d4@12 ~@4 d4@2 bb3@2 ~@2 bb3@2 d4@2 ~@2 eb4@2 d4@2 a3@12 ~@8 a3@2 bb3@2 c4@2 d4@2 f4@3]/3",
  AF: "~ g4@8 d4@4 d4@12 c4@7",
  AG: "[~ bb3@12 ~@8 bb3@2 c4@2 d4@2 c4@2 bb3@2 c4@2 d4@12 ~@4 d4@2 bb3@2 ~@2 bb3@2 d4@2 ~@2 eb4@2 d4@2 c4@12 ~@8 a3@2 bb3@2 c4@2 d4@2 f4@3]/3",
  AH: "[~ g4@4 ~@4 g4@2 a4@2 ~@2 bb4@2 ~@2 bb4@2 g4@4 f4@2 eb4@2 d4@2 c4@2 d4@8 ~@2 c4@2 ~@2 d4@4 c4@2 d4@8 ~@3]/2",
  AI: "~ d4@8 ~@4 c4@2 ~@2 d4@2 d4@2 c4@2 d4@6 f4@3", AJ: "~ f4@8 c4@4 c4@16 eb4@3", AK: "~ eb4@8 d4@4 d4@16 ~@3",
  AL: "~ d4@8 ~@2 c4@2 ~@2 d4@4 c4@2 d4@8 ~@3",
})).s("gm_trombone").gain(0.4)

// other · trombone
const trombone_2 = note(`<
  ~@8 A B C D A B C E F G@3 H@2 I J@2 K@2 L@2 M@2 N A B C D A B O P F G@3 H@2 I Q@2 R@2 S@2 T@2 U V@2 W@2 X@2 Y@2 Z@4
  AA@5 ~@3 AB@4 AC@3 AD AE@3 AF@2 AG AH AI AJ AG AH AI ~@8
>`.pickRestart({
  A: "~@7 g3 ~ g3 g3@4 ~@2", B: "~@7 f3 ~ f3 f3@4 ~@2", C: "~@7 gb3 ~ gb3 gb3@4 ~@2", D: "~@7 g3 ~ d3 g3@2 d3@2 ~@2",
  E: "bb3 a3 bb3 d4", F: "g3@7 g3@2 g3 g3@2 a3@4",
  G: "[bb3@12 ~@2 g3 g3@3 gb3@4 gb3@4 g3@2 a3@2 bb3@6 ~@2 d4!5 ~ eb4@2 d4!2]/3",
  H: "[bb3@2 ~ eb3@2 g3 a3 bb3@5 f3@3 g3]/2", I: "gb3@4 gb3 g3 gb3@4 g3@2 a3@2 ~@2",
  J: "[~@4 g3@2 bb3@2 d4@2 c4@2 d4@2 ~@2 d4@2 c4@2 d4@2 ~@2 d4@4 d4@2 eb4@4 bb3@6 eb4@2 bb3@6 ~@8 f3@2 [f3,gb3,g3] [ab3,a3,bb3,b3,c4] d4@4, ~@60 db4 ~@3]/2",
  K: "[~@4 [f3,gb3] [g3,ab3,a3] [bb3,b3,c4] [db4,d4,eb4] f4@8 d4@2 d4@2 d4@2 ~@2 eb4@4 d4@2 d4@4 c4@6 d4@2 c4@6 ~@8 a3 ~@2 a3 ~ a3 ~@2, ~@8 e4 ~@55]/2", // Gbmaj7
  L: "[~@4 d4@2 ~@2 d4!3 ~ d4@2 d4 eb4@2 bb3@3 eb4 bb3@3 ~@4 d4@2 ~@2]/2",
  M: "[~@4 [f3,gb3] [g3,ab3] [a3,bb3] [b3,c4,db4] d4@8 d4@2 d4@2 d4@2 ~@2 eb4@4 d4@2 d4@4 c4@6 d4@2 c4@6 ~@8 d4@4 ~@4]/2", // Gbmaj7 Abmaj7 Bbmaj7
  N: "c4 ~ bb3 ~ d4 ~ c4 d4",
  O: "~@14 gb3@2 ~@2 gb3@2 gb3@4 d3@2 [d3,eb3,e3,f3] [gb3,g3,ab3,a3,bb3,b3] [c4,db4] ~@3, ~@14 d4 ~", // Dbmaj7
  P: "g3@3 a3@3 bb3@4 d4@6", Q: "[~@2 bb3 c4 d4 c4 d4 ~ d4 c4 d4 ~ d4@2 d4 eb4@2 bb3@3 eb4 bb3@3 ~@4 d4@2 ~@2]/2",
  R: "[~@4 d4@2 ~@2 d4!3 ~ eb4@2 d4 d4@2 c4@3 d4 c4@3 ~@4 bb3@2 ~@2]/2",
  S: "[~@4 d4@2 ~@2 d4!3 ~ d4@2 d4 eb4@2 bb3@3 eb4 bb3@3 ~@4 bb3@4]/2",
  T: "[~@9 a3@8 d4@2 d4@2 d4@2 ~@2 eb4@4 d4@2 d4@4 c4@6 d4@2 c4@6 ~@8 d4@4 ~@3]/2",
  U: "~ c4@4 ~@4 bb3@4 ~@4 d4@4 ~@4 c4@4 d4@3", V: "[~ ab3@24 ~@4 g3@2 ab3@2 bb3@6 ab3@6 g3@12 ~@7]/2",
  W: "[~ f3@12 d3@2 f3@2 ~@2 d3@2 bb3@8 g3@2 gb3@2 f3@16 ~@4 f3@6 g3@5]/2",
  X: "[~ ab3@24 ~@4 ab3@2 g3@2 g3@6 g3@24 ~]/2",
  Y: "[~ gb3@6 a3@6 c4@6 g4@6 gb4@6 eb4@6 c4@6 a3@6 gb3@6 ~@2 g4@4 g4@3]/2",
  Z: "[~@9 eb4@2 eb4@2 eb4@2 ~@2 eb4@4 eb4@2 ~@2 eb4@4 f4@2 f4@6 d4@4 d4@4 d4@2 ~@2 d4@4 d4@2 ~@2 d4@4 eb4@2 d4@6 c4@2 ~@2 c4@4 c4@2 ~@2 c4@4 c4@2 ~@2 d4@4 bb3@2 c4@6 bb3@2 g3@2 bb3@4 bb3@2 g3@2 bb3@2 bb3@2 bb3@2 ~@2 c4@4 bb3@2 bb3]/4",
  AA: "[~ g3@4 ~@4 eb4@4 eb4@2 ~@2 eb4@4 eb4@2 ~@2 eb4@4 f4@2 f4@6 d4@4 d4@4 d4@2 ~@2 d4@4 d4@2 ~@2 bb3@4 c4@2 bb3@6 a3@2 ~@2 c4@2 bb3@2 c4@2 ~@2 c4@2 bb3@2 c4@2 ~@2 d4@4 bb3@2 c4@4 bb3@2 g3@4 d4@2 c4@2 d4@2 ~@2 d4@2 c4@2 d4@2 ~@2 d4@4 d4@2 eb4@4 bb3@6 ~@23]/5",
  AB: "[~ g3@12 ~@8 g3@2 a3@2 bb3@2 a3@2 g3@2 a3@2 bb3@12 ~@4 bb3@2 f3@2 ~@2 f3@2 bb3@2 ~@2 c4@2 bb3@2 a3@12 ~@8 g3@2 a3@2 bb3@2 c4@2 bb3@2 a3@2 g3@6 a3@6 b3@12 ~@7]/4",
  AC: "[~ g3@12 ~@8 g3@2 a3@2 bb3@2 a3@2 g3@2 a3@2 bb3@12 ~@4 bb3@2 f3@2 ~@2 f3@2 bb3@2 ~@2 c4@2 bb3@2 c4@12 ~@8 f3@2 g3@2 a3@2 bb3@2 c4@3]/3",
  AD: "~ d4@8 bb3@4 bb3@12 a3@7",
  AE: "[~ g3@12 ~@8 g3@2 a3@2 bb3@2 a3@2 g3@2 a3@2 bb3@12 ~@4 bb3@2 f3@2 ~@2 f3@2 bb3@2 ~@2 c4@2 bb3@2 a3@12 ~@8 f3@2 g3@2 a3@2 bb3@2 c4@3]/3",
  AF: "[~ d4@4 ~@4 d4@2 f4@2 ~@2 g4@2 ~@2 g4@2 f4@4 d4@2 c4@2 bb3@2 a3@2 bb3@8 ~@2 a3@2 ~@2 bb3@4 a3@2 bb3@8 ~@3]/2",
  AG: "~ bb3@8 ~@4 a3@2 ~@2 bb3@2 bb3@2 a3@2 bb3@6 bb3@3", AH: "~ bb3@8 a3@4 a3@16 c4@3", AI: "~ c4@8 bb3@4 bb3@16 ~@3",
  AJ: "~ bb3@8 ~@2 a3@2 ~@2 bb3@4 a3@2 bb3@8 ~@3",
})).s("gm_trombone").gain(0.4)

// bass · tuba
const bass = note(`<
  ~@15 A B C D E F G H I J K L M J K N O P Q R S P Q T U V W X Y Z AA AB AC J K L AD J AE AF AG AH@2 AI AJ AK@2 AL@2
  AM@2 AN@3 AO AP AQ AR AS AT AU@2 AS AV AW AR AX AT AY AR AX AT AZ@3 BA BB@3 BC@2 AR BD AT BE@2 BD AT ~
>`.pickRestart({
  A: "f2 g2@7 f2@8 c2 d2@7 bb1@8", B: "eb2@6 ~ eb2 ~ d2 eb2@4 eb2@2", C: "bb1@6 ~ bb1 ~ bb1 bb1@4 c2@2",
  D: "d2@6 ~ d2 ~ d2!2 c2 d2 eb2 e2 f2", E: "g2@2 g1@4 g2@2 ~@2 g1 f1 eb1 eb2 f2@2",
  F: "eb2@4 eb2@2 ~ eb2 ~ eb2 eb2@3 f2 g2 a2", G: "bb2@6 ~ f2 d2 ~ f2 bb1@3 c2@2", H: "d2@6 ~ d2@3 d2 g2 d3!2 c3 bb2",
  I: "g2@4 g1@4 ~@4 d2@4 g2@3 ~@3 g2@6 bb2@4", J: "eb3 ~@7", K: "bb2@4 ~@12 bb2@3 ~@3 bb2@6 c3@4", L: "d3 ~@7",
  M: "g2@2 ~@6 g2!2 g2@2 g2 a2 bb2 c3", N: "d3 ~@5 d2 ~", O: "g2@2 ~@2 g1@2 ~@2 g1@3 g2 g1@2 g2@2", P: "eb2 ~@7",
  Q: "f2 ~@7", R: "d2 ~@7", S: "g2@4 ~@16 f2 g2 a2@2 bb2@2 a2@2 g2@2 f2@2",
  T: "d2@4 ~@20 d2@2 [d2,eb2,e2,f2] [gb2,g2,ab2,a2,bb2,b2] [c3,db3] ~@3, ~@14 d3 ~", U: "g1@3 a1@3 bb1@4 d2@6",
  V: "eb2@6 ~ eb2 ~ eb2 eb2@4 eb2@2", W: "bb1@6 ~ bb2 ~ f2 bb1@4 c2@2", X: "d2@4 d2@2 ~ d2@2 eb2 e2 f2 d2@2 f2 d2",
  Y: "g2@4 g1@8 g2@4 ~@4 f2 g2 a2@2 bb2@2 a2@2 g2@2 f2@2", Z: "eb2@4 eb2!2 ~ eb2 ~ eb2 eb2@4 f2@2",
  AA: "bb2@6 ~ bb2@2 f2 d2 c2 bb1@2 c1@2", AB: "d2@2 ~@2 d2@2 a1@2 d1@2 a1 d2 ~ c2 a1@2",
  AC: "g1@4 g1@4 g2@2 g2@4 ~@2 g2@3 ~@3 g2@6 bb2@4", AD: "g2@4 ~@12 g2@3 ~@3 g2@6 bb2@4",
  AE: "~@17 bb2@3 ~@3 bb2@6 c3@3", AF: "~ d3@4 ~@20 d2@4 ~@3", AG: "~ g2@4 ~@4 g1@4 ~@4 g1@6 g2@2 g1@4 g2@3",
  AH: "[~ ab1@24 ~@4 bb1@2 d2@2 eb2@6 bb1@6 eb1@12 ~@7]/2", AI: "~ bb1@12 d2@2 f2@2 ~@2 d2@2 bb2@11",
  AJ: "~ f2@16 ~@4 f1@6 g1@5", AK: "[~ ab1@24 ~@4 bb1@2 d2@2 eb2@6 eb1@24 ~]/2",
  AL: "[~ d2@6 gb2@6 a2@6 eb3@6 d3@6 c3@6 a2@6 gb2@6 eb2@6 d2@6 ~@3]/2",
  AM: "[~ eb2@14 eb2@4 eb2@2 eb2@8 bb1@2 d2@2 f2@14 f2@4 f2@2 f2@11]/2",
  AN: "[~ gb2@14 gb2@4 gb2@2 gb2@8 eb2@2 gb2@2 g2@4 g1@4 g2@4 ~@2 a2@2 ~@2 bb2@4 ~@2 c3@4 c3@2 d3@2 eb3@2 ~@2 eb3@10 eb3@3 ~@3 eb3@11]/3",
  AO: "~ f3@2 ~@2 f3@10 f3@3 ~@3 f3@11", AP: "~ gb3@2 ~@2 gb3@10 gb3@3 ~@3 gb3@11",
  AQ: "~ g3@4 ~@4 g3@2 g3@2 g3@2 ~@2 d3@3 ~@3 bb2@6 d2@3", AR: "~ eb2@4 ~@27", AS: "~ bb1@4 ~@27", AT: "~ f2@4 ~@27",
  AU: "[~ g1@4 ~@10 g1@4 g1@2 g1@4 g1@2 a1@2 bb1@2 c2@2 eb2@4 ~@27]/2", AV: "~ f1@4 ~@27",
  AW: "~ g2@6 d2@6 g1@8 g2@2 c3@2 b2@2 g2@2 d2@3", AX: "~ bb1@4 ~@12 bb1@3 ~@3 bb1@6 c2@3",
  AY: "~ g2@4 ~@12 g1@3 ~@3 g1@6 bb1@3",
  AZ: "[~ g1@6 g2@2 g2@4 g3@2 g3@2 ~@2 g3@2 g3@2 ~@2 g3@2 g3@2 f3@2 f3@2 eb3@4 ~@4 eb2@4 c3@2 eb3@4 c3@2 eb2@4 eb3@4 d3@2 c3@2 bb2@8 ~@4 bb1@2 bb2@2 ~@2 bb2@2 ~@2 f2@2 bb1@4 eb2@3]/3",
  BA: "~ f2@8 c2@4 f1@12 bb1@2 c2@2 d2@3",
// … 69 more lines