Strudelify

hauch mich mal an

Das Lumpenpack

KeyE♭ majorTempo120 bpm
0:00/0:00
// hauch mich mal an — Das Lumpenpack
// 120 bpm, 4/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (2/4 at bar 1, 4/4 at bar 2, 2/4 at bar 71, 4/4 at bar 71, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5966667; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 118 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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 in B"
const trumpet = note(`<
  ~@2 A B C ~ D E F ~ G H I J K J L J M N O P Q R S T Q R S R O U V W X W X W X W X W X W Y J K J L J M N O Z AA AB AC Z
  AA AD AE AF AG AH AI AJ AH AK AI AJ AL AM AN AM AN AM AN AO AP AQ AR AQ AR AQ AS AT AU AV AW AX AY AZ BA@2 BB BC BD@2
  BE@2 BF BG ~@3 BH BI BJ BK T BL T BK T BM BN BO BP
>`.pickRestart({
  A: "~@6 c4 d4", B: "eb4@2 eb4@2 eb4 eb4@2 f4@3 f4@2 f4@2 f4@2", C: "f4@3 ab4@2 g4 ~ f4 g4@2 ~@6", D: "~@7 d4",
  E: "eb4@2 eb4@2 eb4 eb4@2 eb4 f4@2 f4@2 f4@2 f4@2", F: "d4@2 f4@2 eb4 [eb4,f4] d4@2 c4@4 ~@4", G: "~@7 c4",
  H: "eb4@2 g4@2 f4@2 eb4@2 f4@3 ab4@2 g4@3", I: "g4!2 f4 ab4 g4@2 ~@2", J: "c5!6 d5 c5", K: "c5@2 c5@4 ~ b4",
  L: "c5@4 ~@3 d5", M: "eb5 d5 ~ db5 c5@8 ~@2 c5@2", N: "b4@2 b4@2 b4@2 b4@2 b4@2 c5@4 d5 c5", O: "b4 ~@7",
  P: "~@2 eb4!2 ~@2 eb4@2 ~@2 eb4!2 ~@2 eb4@2", Q: "~@2 c4!2 ~@2 c4@2 ~@2 c4@2 ~@2 c4@2",
  R: "~@2 c5!2 ~@2 c5@2 ~@2 c5@2 ~@2 c5@2", S: "~@2 g4!2 ~@2 g4@2 ~@2 g4@2 ~@2 g4@2",
  T: "~@2 eb4!2 ~@2 eb4@2 ~@2 eb4@2 ~@2 eb4@2", U: "~@2 c4!2 ~@2 c4@2 ~@2 eb4!2 ~@2 eb4@2",
  V: "~@2 ab4!2 ~@2 ab4 [a4,bb4] c5@2 ~@6, ~@8 b4 ~@7", W: "~@2 c4!2 ~@2 c4@2 ~@2 f4!2 ~@2 f4@2",
  X: "~@2 g4!2 ~@2 g4@2 ~@2 c4@2 ~@2 c4@2", Y: "~@2 g4!2 ~@2 g4@2 ~@2 c4@2 ~@4", Z: "c5@3 c5 eb5@2 eb5@2",
  AA: "c5@3 g4 ~@2 g4@2 ab4@2 bb4 g4 f4@2 g4@2", AB: "c5", AC: "~@2 g5!3 ~ g5 ~ ab5@2 g5@2 ab5@2 g5@2", AD: "ab4",
  AE: "~@2 bb4!3 ~ bb4 ~ c5@2 bb4@2 c5@2 bb4@2", AF: "ab4@8 ~@2 ab4!2 ab4@2 ab4@2", AG: "g4",
  AH: "eb4@2 eb4!6 eb4@2 eb4!6", AI: "g4@2 g4!6 g4@2 g4!6", AJ: "d4@2 d4!6 d4@2 d4!6", AK: "c4@2 c4!6 c4@2 c4!6",
  AL: "eb4 ~@3 g4@4", AM: "c5 d5", AN: "g4!2", AO: "c5@2 d5 f4", AP: "g4@8 ~@2 c4!2 ~@2 c4@2",
  AQ: "~@2 f4!2 ~@2 f4@2 ~@2 g4!2 ~@2 g4@2", AR: "~@2 c4@2 ~@2 c4@2 ~@2 c4!2 ~@2 c4@2", AS: "~ c4 ~ c4 eb4 ~@3",
  AT: "ab4 ~@3 b4 ~@3", AU: "~@4 c5!4", AV: "f5@2 f5!2 d5 f5 eb5 d5", AW: "eb5@2 ~ c5!5", AX: "f5@3 f5 d5 f5 eb5 d5",
  AY: "c5!2 bb4!2 c5@4", AZ: "g4@2 g4@2 ab4@2 ~ g4", BA: "[f4 g4 ab4 g4 c5@8 g5@4]/2", BB: "d5 bb4 c5@2",
  BC: "g4@2 g4@2 f4@2 ~ c5", BD: "[c5@2 c5@2 c5 c5@3 eb5@16 eb5@3 f5@2 eb5@3]/2",
  BE: "[d5@3 eb5@2 d5@3 c5@16 g4@4 ~@4]/2", BF: "~@8 c4@3 eb4@2 g4@3", BG: "bb4@3 c5@2 eb5@3 g5@8",
  BH: "~@2 g4@2 c5@2 d5@2 eb5@2 d5@4 c5 d5", BI: "eb5@3 ab4 ab4@12", BJ: "g4@3 ~",
  BK: "~@2 b4!2 ~@2 b4@2 ~@2 b4@2 ~@2 b4@2", BL: "~@2 ab4!2 ~@2 ab4@2 ~@2 ab4!2 ~@2 ab4@2", BM: "~@3 f5!2 ~@3",
  BN: "~@6 g5@2 g5@3 ab5@2 f5@3", BO: "g5", BP: "g5 ~@3",
})).s("gm_trumpet").gain(0.25)

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

// other · french horn · "Horn in F"
const french_horn = note(`<
  ~@20 A B C D E B F G H I J K ~ L M ~@6 N O ~@4 P I Q R@2 A B S D E B F G H I ~ T U V W T U X Y Z AA ~ AB AC AD AE AF
  ~@3 AG@2 AH AI AJ AK AL AM AN AO AP@2 AQ AO AP@2 AR@2 AS ~ AT AU AV AU AW AX AY AZ BA BB BC BD BE BF BG AA
>`.pickRestart({
  A: "~ f4 eb4 d4", B: "g4@2 eb4 d4", C: "c4@2 ~ g4!5", D: "ab4@4 eb4 ~ ab4@2 ab4@2 ab4@2 bb4@2 ab4@2", E: "ab4 g4 ~@2",
  F: "c4@4 ~@2 g4@2 g4@2 g4@2 g4 g4@3", G: "ab4 ~ ab4@2 ab4@2 ab4@2 ab4@2 ab4@2 bb4@2 ab4@2",
  H: "g4@2 ~ g4!2 f4 eb4 d4", I: "eb4", J: "~@2 d4@2 d4@2 eb4@2 f4 eb4@3 d4@2 eb4@2", K: "c4 ~",
  L: "eb4@2 eb4@2 eb4 c4@2 f4@3 f4@2 g4@2 f4@2", M: "d4 f4 eb4 d4 c4@2 ~@2",
  N: "eb4@2 g4@2 f4@2 eb4@2 f4@3 g4 ~@2 f4@2", O: "d4@2 f4@2 eb4 [eb4,f4] d4@2 c4@4 ~@4", P: "~@8 eb4@3 d4@2 eb4@3",
  Q: "~@4 eb4 d4 c4 bb3", R: "d4", S: "c4@2 ~ g4 ab4 g4 f4 g4", T: "ab4@2 g4 f4", U: "g4@2 f4 eb4", V: "d4 f4 eb4 f4",
  W: "g4 ~@3", X: "d4 f4 eb4 d4", Y: "c4 ~@2 eb4!5", Z: "f4@3 f4 d4 f4 eb4 d4", AA: "c4 ~@3", AB: "~@3 g4 f4 g4!3",
  AC: "ab4@3 ab4 f4 ab4 g4 f4", AD: "eb4@2 ~@2 eb4!4", AE: "f4@4 f4@2 f4@2 d4@2 f4@4 eb4 d4", AF: "c4 ~@7",
  AG: "[~@8 g4@2 g4@2 g4 g4@2 ab4@3 ab4@2 ab4@2 ab4@2 f4@3 ab4@2 g4 ~ f4]/2", AH: "eb4@2 ~ d4 eb4 ~@3",
  AI: "~@3 eb4 d4 f4 ~@2", AJ: "~@8 g3@2 ~ g3@2 ~ g3@2", AK: "c4@2 ~ c4@2 ~ c4@2 d4@2 ~ d4@2 ~ d4@2",
  AL: "g3@2 ~ g3@2 ~ g3@2 g3@2 ~ g3@2 ~ g3@2", AM: "c4@2 ~ c4@2 ~ c4@2 d4@2 ~@6", AN: "~@4 c4@3 c4",
  AO: "eb4@4 eb4@4 c4@3 g3 ~@2 g3@2", AP: "[ab3@2 bb3 g3 f3@2 g3@2 ab3@16 ~@2 bb3!3 ~ bb3 ~]/2",
  AQ: "c4 bb3 c4 bb3 c4@3 c4", AR: "[c4 bb3 c4 bb3 c4@8 g3@2 ~@2]/2", AS: "~ g3", AT: "f4!4", AU: "c4!4", AV: "g3!4",
  AW: "f4!3 ~", AX: "c4!3 ~", AY: "g3!2 ab3 g3", AZ: "c4@2 c4 d4 eb4 d4 c4 d4", BA: "f4@3 d4@2 f4@3 f4@3 d4@2 f4@3",
  BB: "eb4@3 c4@2 eb4@3 eb4@3 c4@2 eb4@3", BC: "d4@3 d4@2 eb4@3 f4@3 eb4@2 d4@3", BD: "eb4 g3 c4 d4 eb4 d4 c4 d4",
  BE: "f4@3 d4@2 f4@3 f4@3 g4@2 f4@3", BF: "g4@3 f4@2 f4@3 g4@3 c4@2 c4@3", BG: "d4@3 d4@2 f4@3 eb4@4 d4@4",
})).s("gm_french_horn").gain(0.4)

// other · french horn · "Horn in F" · soft notes
const french_horn_soft = note("<~ A B A B A B A B C D C E F G F G F G H I ~@97>".pickRestart({
  A: "c4 f4", B: "g3 c4", C: "c4@2 ~ c4@3 c4@2 f4@2 ~ f4@3 f4@2", D: "g3@2 ~ g3@3 g3@2 c4@2 ~ c4@3 g3@2",
  E: "g3@2 ~ g3@3 g3@2 c4@2 ~@6", F: "ab3@2 ~ ab3@3 ab3@2 ab3@2 ~ ab3@3 ab3@2",
  G: "eb4@2 ~ eb4@3 eb4@2 eb4@2 ~ eb4@3 eb4@2", H: "b3@2 ~ b3@3 b3@2 b3@2 ~ b3@3 b3@2", I: "b3 ~@7",
})).s("gm_french_horn").gain(0.2)

// other · trombone · "Posaune"
const trombone = note(`<
  ~@9 A@2 ~@2 B C B C B D E F G H I J K L M N O P Q ~@2 R S T ~ U V W ~ X Y Z AA AB AC AB AD AE E F ~@2 AF@2 K AG M N O
  ~ AH AI AJ AK AL AM AN AO ~ AP@2 AQ ~@9 AR AS AT AU AV AW AX AY AZ BA BB AY AZ BA BC BD ~ BE BF BG BH AB BI BJ BK BL
  ~@3 BM BN BO BP BQ
>`.pickRestart({
  A: "c4/2", B: "[f3,gb3,g3] [ab3,a3,bb3,b3,c4] [db4,d4] ~@11 [b3,c4] [a3,bb3], ~ eb4@6 ~", C: "g3, ab3 ~@15",
  D: "g3@12 ~@2 [d2,eb2] [e2,f2], ab3 ~@15", E: "g2@6 [d3,eb3] [e3,f3] g3@6 [d4,eb4] [e4,f4], gb2 ~@7 gb3 ~@7",
  F: "g4 ~@7, gb4 ~@15", G: "g3@2 eb3 d3", H: "c3@2 ~ g3!5", I: "ab3@4 eb3 ~ ab3@2 ab3@2 ab3@2 bb3@2 ab3@2",
  J: "ab3 g3 ~@2", K: "c4@2 g3!2", L: "ab3@4 ~@2 c4@2 c4@2 c4@2 c4 c4@3", M: "c4 ~ c4@2 c4@2 c4@2 c4@2 c4@2 d4@2 c4@2",
  N: "bb3@2 ~ bb3!5", O: "ab3", P: "~@2 d3@2 d3@2 eb3@2 f3 eb3@3 d3@2 eb3@2", Q: "c3 ~", R: "~@6 c3 d3",
  S: "eb3@2 eb3@2 eb3 eb3@2 f3@3 ~@2 c3@2 f3@2", T: "f3@3 ab3@2 f3 ~ c3 g3@2 ~@6", U: "~@7 d3", V: "eb3!5 e3 f3@2",
  W: "d3 eb3 ~ e3 f3 e3 [d3,eb3] db3 c3@4 ~@4", X: "~@7 g3", Y: "eb3@2 g3@2 f3@2 eb3@2 f3@3 ab3@2 g3@3",
  Z: "g3 f3 eb3 d3 eb3@2 ~@2", AA: "~@8 ab3@3 g3@2 f3@3", AB: "g3", AC: "~@8 ab3@3 g3@2 ab3@3", AD: "~@4 ab3 g3 f3 eb3",
  AE: "g3@12 ~@2 [d2,eb2] [e2,f2]", AF: "[c4@6 bb3 g3]/2", AG: "g3@4 ~@2 c4@2 c4@2 c4@2 c4 c4@3", AH: "eb4!4",
  AI: "b3!2 ~@2", AJ: "d4!2 ~@2", AK: "c4!2 eb4 c4", AL: "~ c4!3", AM: "~ c4 eb4 c4", AN: "g3 ab3!3", AO: "c4 ~@3",
  AP: "[~@4 c3@2 d3@2 eb3@2 eb3@2 eb3 eb3@2 f3@3 f3@2 f3@2 f3@2 f3@3 ab3@2 g3 ~ f3]/2", AQ: "g3 ~@7", AR: "~@4 eb3 ~@3",
  AS: "ab3 ~@3 b3 ~@3", AT: "~@8 eb3@2 ~ eb3@2 ~ eb3@2", AU: "ab3@2 ~ ab3@2 ~ ab3@2 b3@2 ~ b3@2 ~ b3@2",
  AV: "eb3@2 ~ eb3@2 ~ eb3@2 eb3@2 ~ eb3@2 ~ eb3@2", AW: "ab3@2 ~ ab3@2 ~ ab3@2 b3@2 ~@6", AX: "~@10 c3!2 ~@2 c3@2",
  AY: "~@2 c3!2 ~@2 c3@2 ~@2 f3!2 ~@2 f3@2", AZ: "~@2 f3@2 ~@2 f3@2 ~@2 ab3!2 ~@2 ab3@2",
  BA: "~@2 ab3@2 ~@2 ab3@2 ~@2 eb3!2 ~@2 eb3@2", BB: "~@2 bb2!2 ~@2 bb2@2 ~@2 c3!2 ~@2 c3@2",
  BC: "~@2 bb2!2 ~@2 bb2@2 ~@2 ab3!2 ~@2 ab3@2", BD: "~ ab3 ~ ab3 g3@2 ~@2", BE: "~@8 c3 db3 d3 eb3 e3 f3 gb3 g3",
  BF: "ab3@2 g3 f3", BG: "g3@8 g3@3 f3@2 eb3@3", BH: "d3@6 c4 d4", BI: "~@11 f4@2 eb4@3", BJ: "c4",
  BK: "b3@2 c4@2 d4@8 g3 ab3 [a3,bb3] b3", BL: "c4 ~", BM: "~@3 g3", BN: "ab3@8 ab3@3 bb3@2 ab3@3", BO: "g3@3 ~",
  BP: "d3 f3 eb3 d3", BQ: "c3 ~@3",
})).s("gm_trombone").gain(0.25)

// bass · tuba
const bass = note(`<
  ~@13 A B A B A B C ~@4 D E F G H I J K L M N M O M N O N M N M O P Q P Q P Q J ~ E F G H E F G H I C R S T U R S V W X
  Y X Y X Z AA AB AC R AD R AC AE AF AG AH AI AJ AK AL AM AN AO AL AM AN AP AQ ~@2 AR AS AT AU AR AS AT AV AR AS AT AV
  AR AS AT AW
>`.pickRestart({
  A: "f2", B: "c2", C: "g2", D: "~ eb2 d2 c2 bb1 c2 bb1 b1", E: "c2!2 g2!2", F: "f2@2 f2 eb2 f2@2 f2@2",
  G: "ab2 g2 bb2 ab2", H: "eb2 g2 bb2 ab2", I: "c2 eb2 f2 ab2", J: "g2 ~@7", K: "c2@2 ~ c2@3 ~@2 d2@2 ~ d2@3 ~@2",
  L: "g2@2 ~ g2@3 g2 bb2 c3@2 ~@6", M: "c2 ~ c2 ~ f2 ~ f2 ~", N: "g2 ~ g2 ~ c2 ~ c2 ~", O: "g2 ~ g2 bb1 c2 ~ c2 ~",
  P: "f2@4 f2@4 f2@3 f2!2 ~ f2@2", Q: "c2@4 c2@4 c2@3 c2!2 ~ c2@2", R: "c2 ~ c2 ~ c2 ~ c2 ~", S: "g2 ~ g2 ~ g2 ~ g2 ~",
  T: "d2 ~ d2 ~ d2 ~ d2 ~", U: "eb2 ~ eb2 ~ eb2 ~ d2 ~", V: "d2 ~ f2 ~ eb2 ~ d2 ~", W: "c2 ~ c2@2", X: "f2 g2",
  Y: "c2!2", Z: "c2@2 c2 eb2", AA: "f2 d2 g2 eb2", AB: "c2@4 c2 ~ c2 ~", AC: "f2 ~ f2 ~ g2 ~ g2 ~",
  AD: "f2 ~ f2 ~ g2 ~ g2 bb1", AE: "c2 ~ c2 ~ c2 ~@3", AF: "f2@2 ~@6 g2@2 ~@4 eb2 d2",
  AG: "c2@2 ~@6 c2@2 ~ c2@2 ~ c2@2", AH: "f2@2 ~ f2@2 ~ f2@2 g2@2 ~ g2@2 ~ g2@2",
  AI: "c2@2 ~ c2@2 ~ c2@2 c2@2 ~ c2@2 ~ c2@2", AJ: "f2@2 ~ f2@2 ~ f2@2 g2@2 ~@6",
  AK: "~@2 c2@2 bb1@2 bb1@2 c2@3 c2 c2@2 eb2@2", AL: "g2@2 g2@2 f2@2 f2 c2", AM: "f2@2 f2 d2 ab2@2 g2@2",
  AN: "bb2@4 ab2@4 eb2@3 eb2@3 eb2@2", AO: "bb2@4 bb2@4 c2@3 c2 c2@2 eb2@2", AP: "bb2!2 c2 eb2", AQ: "f2 ab2 g2 ~",
  AR: "f2@3 f2 f2@2 c3@2 f2@3 f2 f2@2 ab2@2", AS: "c3@3 c3 c3@2 bb2@2 c3@3 c3 c3@2 ab2@2",
  AT: "g2@3 g2 g2@2 d3@2 g2@3 g2 g2@2 bb2@2", AU: "c3@3 c3 c3@2 bb2@2 c3@3 c3 c3@2 g2@2",
  AV: "c3@3 g2 c3@2 d3@2 eb3@2 d3@2 c3@2 d3@2", AW: "c3 ~@3",
})).s("gm_tuba").gain(0.45)

// drums · kick
const kick = s("bd").struct(`<
  ~@25 A@5 B A C A@18 B ~ A@9 B C@6 A C D@5 E A E A@5 C D F G@2 H I A@8 C ~ A D@15 B
>`.pickRestart({
  A: "x!4", B: "x", C: "x!3 ~", D: "x!2", E: "x ~ x!2", F: "~@8 x ~@2 x ~@4", G: "x ~@2 x ~@4 x ~@2 x ~@4",
  H: "x ~@2 x ~@4 x ~@7", I: "~@2 x!2",
})).gain(0.3)

// drums · rim
const rim = s("rim").struct(`<
  ~@33 A B A B A B A B A B A B A B A B A B ~@2 A B A B A B A B C D E@6 A ~@16 F G@2 H I A J A J A J A K L ~@18
>`.pickRestart({
  A: "x ~ x ~ x!3 ~ x ~ x ~ x!3 ~", B: "x ~ x ~ x!3 ~ x ~ x ~ x!4", C: "x ~ x ~ x ~ x!3 ~ x!3 ~ x!2", D: "x",
  E: "x ~ x ~ x!3 ~@4 x ~@2 x ~", F: "~@7 x", G: "~@3 x ~@3 x", H: "~@3 x ~@4", I: "~@8 x ~ x ~ x!3 ~",
  J: "x ~ x ~ x!5 ~ x ~ x!3 ~", K: "x ~ x ~ x!5 ~ x ~ x ~ x!2", L: "x ~ x!3 ~ x!3 ~@7",
})).gain(0.3)

// drums · snare
const snare = s("sd").struct("<~@101 [x!16] [~ x ~ x]!7 [~ x!3 ~ x!2 ~] [~ x ~ x]!3 [~@4 x ~@7 x ~ x!2] [~ x ~ x]!3 ~>")
  .gain(0.3)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@21 A B@3 C B C B C ~ C D A@18 E ~ A@9 ~ A@7 E ~@7 F C G C G C D ~@5 H A@8 I ~@2 A J A J A J A J A J A K A J A ~
>`.pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~@2 x!2 ~@2 x ~@3 x ~@3 x ~", C: "~@2 x!2 ~@2 x ~@3 x!2 ~@2 x ~", D: "~@2 x!2 ~@2 x ~@9",
  E: "x", F: "~@10 x!2 ~@2 x ~", G: "~@2 x ~@3 x ~@3 x!2 ~@2 x ~", H: "~@5 x ~ x", I: "~ x ~ x ~@4",
  J: "~@2 x ~@3 x ~@3 x ~@3 x!2", K: "~ x ~ x ~ x ~@2",
})).gain(0.3)

// drums · open hat
const open_hat = s("oh").struct("<~@70 [~ x ~@2] ~@47>").gain(0.3)

// drums · crash
const crash = s("cr").struct("<~@70 [~ x] ~@39 x ~@3 x!4>").gain(0.3)

stack(trumpet, trumpet_2, french_horn, french_horn_soft, trombone, bass, kick, rim, snare, hihat, open_hat, crash)