Strudelify

metamorph trumpet trio

for Bb Trumpetby Gustavo Ibarra

KeyF majorTempo165 bpm
0:00/0:00
// metamorph trumpet trio — for Bb Trumpetby Gustavo Ibarra
// 165 bpm, 4/4, key F 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, 6/4 at bar 10, 4/4 at bar 18, 3/4 at bar 21, ...) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5850043; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 176 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(165/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 · "B♭ Trumpet"
const trumpet = note(`<
  A@5 B C@3 D@2 E@3 F@3 G@2 ~ H@4 I J K L M ~@2 N O P Q R S T U V ~@2 W X W X ~ Y Z AA ~@2 AB AC AD AE AF AG@3 ~ AH AI
  AJ AK AL ~ AM@3 AN AO@3 AP AQ AR@4 AS@4 ~@13 AT AU@3 AV AW AX@7 AY@2 ~@2 AZ@4 BA@2 BB@2 BC@3 BD BE BF BG BH BI@2 BJ BK
  BL BM BN@3 BO@3 BP BQ@6 BR@2 ~ BS BT@2 ~ BU BV BW ~@2 BX@3 BY@4 ~@2 BZ@6
>`.pickRestart({
  A: "[~@9 g5@24 f5@8 eb5@23 d5@8 eb5@8]/5", B: "g5 bb4", C: "[eb5 f5@4 ~]/3", D: "[~ eb5@3]/2", E: "[f5 eb5]/3",
  F: "[f5 d5]/3",
  G: "eb5 [d5,eb5] d5 [d5,eb5] eb5 [d5,eb5] d5 [d5,eb5] eb5 [d5,eb5] d5 [d5,eb5] eb5 [d5,eb5] d5 [d5,eb5]", // Ebmaj7
  H: "[g5@3 g5@6 ab5@7]/4", I: "bb5@3 ~@13", J: "bb5 a5 ab5 g5 ab5 g5 gb5 f5 gb5 f5 e5 eb5 d5 db5 c5 b4",
  K: "eb5 d5 db5 c5 db5 c5 b4 bb4 b4 bb4 a4 ab4 g4 gb4 f4 e4",
  L: "g4 gb4 f4 e4 ab4 bb4 c5 d5 eb5 d5 db5 c5 b4 bb4 a4 ab4", M: "bb4 a4 ab4 g4 c5 db5 eb5 f5 gb5 f5 e5 eb5 d5 ~@3",
  N: "bb4 a4 ab4 g4 gb4 b4 bb4 a4 bb4 a4 ab4 g4 gb4 g4 ab4 a4",
  O: "bb4 a4 ab4 g4 gb4 ~ b4 ~ bb4 a4 ab4 g4 gb4 g4 ab4 a4", P: "bb4 a4 ab4 g4 ab4 g4 gb4 f4 e4 f4 gb4 g4 ab4 ~ a4 ~",
  Q: "bb4 a4 ab4 g4 ab4 g4 gb4 f4 e4 f4 gb4 g4 ab4 a4 bb4 b4", R: "bb4 ~@7 eb4@2 ~@2 f4@2 ~@2", S: "eb4 ~@3 eb4 ~ f4 ~",
  T: "eb4 ~ e4 ~ eb4 ~ eb4 ~", U: "g4 ab4 a4 bb4 b4 c5 db5 d5 b4 c5 db5 d5 eb5 e5 f5 gb5", V: "f5 ~@15",
  W: "d5!4 c5 ~ d5 ~ d5!3 ~ c5 ~ bb4 ~", X: "d5!3 ~ c5 ~ bb4 ~ d5!4 c5 ~ d5 ~", Y: "d5!7 ~ d5!7 ~",
  Z: "d5 ~ e5 ~ f5 ~ a5 ~ d5 db5 c5 b4 c5 b4 bb4 a4", AA: "bb4 a4 ab4 g4 gb4 f4 e4 eb4 ~@8", AB: "~@8 bb4!4 b4 ~ b4 ~",
  AC: "b4!4 db5 ~ db5 ~ c5 b4 bb4 a4 ab4 db5 c5 b4", AD: "c5 b4 bb4 a4 ab4 a4 bb4 b4 c5 b4 bb4 a4 ab4 db5 c5 b4",
  AE: "c5 b4 bb4 a4 ab4 a4 bb4 b4 c5 b4 bb4 a4 bb4 a4 ab4 g4",
  AF: "gb4 g4 ab4 a4 bb4 b4 c5 db5 d5 eb5 e5 f5 gb5 g5 ab5 a5", AG: "[~ e5@4 ~]/3",
  AH: "~@6 c5 b4 bb4 a4 bb4 a4 ab4 g4 bb4 a4", AI: "ab4 [gb4,g4] f4 e4 eb4!2 ~@7 eb4 ~@2", AJ: "~ c4 ~@2 c5 ~@7 c5 ~@3",
  AK: "a4 ~@2 c5 db5 d5 eb5 e5 f5 gb5 g5 ab5 g5 gb5 f5 e5", AL: "eb5 d5 db5 c5 ~@12", AM: "[~@4 bb3@15 ~@5]/3",
  AN: "~@5 f5@11", AO: "[~ gb5@11 f5@11 d5@23 ~@2]/3", AP: "~@2 c4@4 db4@3 c4@7", AQ: "~ a3@15",
  AR: "[d5@6 eb5@5 f5@8 gb5@7 f5@8 g5@11 g5@6 g5@6 g5@3 g5@3 ~]/4", AS: "[g5@3 ~@12 g5@45 ~@4]/4", AT: "~@5 bb3@2 f4",
  AU: "[~ g4@3 ~ f4@3 eb4@36 ~@4]/3", AV: "~@9 eb4@2 ~ d4@2 c4@2", AW: "bb3@2 c4@5 eb4@9",
  AX: "[f4@36 ~@9 c4@5 eb4@4 d4@9 a3@5 f4@4 eb4@18 a3@18 ~@4]/7", AY: "[~@5 bb3@18 ~@9]/2", AZ: "[~@3 bb4@47 ~@14]/4",
  BA: "[~@15 bb3@2 c4@2 eb4@2 ~ f4 ~@5 f4@2 eb4@2]/2", BB: "[f4@2 eb4@2 ~ ab4@17 ~@4 f5 ~ c5@2 eb5@2]/2",
  BC: "[f5@2 f5@4 ~ c5@4 f5@34 c5 bb4 ~]/3", BD: "ab4 f4 ~ eb4 db4 c4@3 db4 ~ f4 ab4 ~ c5 eb5@2",
  BE: "~ db5 ab4 ~ c5@2 bb4@4 c5@2 db5@2 ~ eb5", BF: "f5 ~ g5 ab5 ~ bb5 b5 c6@5 ab5 f5 ~ db5",
  BG: "c5@2 db5@2 c5@6 ~@3 g4 ab4 ~", BH: "bb4 c5@2 ~ db5@2 ~@2 eb5 f5 g5 ab5@2 ~ bb5@2",
  BI: "[~@2 b5 c6@16 ~ c6@2 bb5@2 ab5@2 g5@2 ab5 g5 f5 eb5]/2", BJ: "db5 bb4 ab4 g4 f4 eb4 f4 g4 ab4@5 ~@3",
  BK: "~@2 bb4 c5 db5@2 ~@2 eb5 d5 ~ db5 c5 ~ eb5 d5", BL: "~ db5 c5 eb5 ~ d5 db5 ~ c5 e5 ~ eb5 db5 c5 ~ bb4",
  BM: "ab4 ~ g4 f4 ~ eb4 e4@2 f4@4 ~@3 e4",
  BN: "[f4 ab4@2 c5@2 eb5@2 g5@2 f5@9 ~@4 eb4@2 e4@2 ~ f4@8 eb5@4 ~ c5@4 ~@2 ab4@2, ~@7 eb5 ~@40]/3",
  BO: "[a4@2 c5 ~ b4 bb4 ~ a4@2 c5@2 db5@2 eb5@17 c5@9 db5@9]/3", BP: "eb5 c6",
  BQ: "[~ ab5@9 bb5@8 bb5@35 bb5@30 eb5 f5 g5 ab5 bb5@4 bb5@4 ~]/6", BR: "[bb5@4 c6@2 ab5@15 ~@11]/2",
  BS: "~@8 eb5 f5 g5 ab5 bb5@4", BT: "[bb5@4 ~ bb5@4 c6@2 ab5@15 ~@6]/2",
  BU: "~@4 ab4 ~ bb4 c5 ~ db5 eb5 f5 ~ g5 ab5 ~", BV: "a5 bb5@4 ~ bb5@4 bb5@4 c6@2", BW: "ab5@15 ~",
  BX: "[~@2 eb5 f5 g5 ab5 bb5@4 ~ bb5@4 bb5@4 c6@2 ab5@15 ~@12]/3", BY: "[~@10 ab5@4 ab5@4 ~ db6@43 ~@2]/4",
  BZ: "[~@52 eb6@35 ~@9, ab5@43 ~@5]/6",
})).s("gm_trumpet").gain(0.45)

// other · trumpet · "B♭ Trumpet"
const trumpet_2 = note(`<
  A@5 B C@3 D E F@2 G H@2 I J@2 K L@2 M@2 N ~@6 O P Q R S T U V W X Y Z ~@4 AA AB AC AD@2 AE AF AG AH ~ AI ~@3 AJ AK AL
  AM AN AO AP@3 AQ AR@3 AS AT AU@4 AV@4 AW@3 AX@8 AY@3 AZ@3 BA@6 BB@4 BC BD@6 BE@3 BF BG@3 ~@8 BH BI BJ BK@3 BL@2 ~ BM@7
  BN BO@2 BP@5 BQ@6 BR@5 ~@2 BS@6
>`.pickRestart({
  A: "[~@9 eb5@24 d5@8 c5@23 ab4@8 bb4@8]/5", B: "eb5 g4", C: "[bb4 c5@4 ~]/3", D: "~ b4", E: "eb4 ab4",
  F: "[f4 ab4 db5@4 ~@2]/2", G: "b4 eb4!2 ab4", H: "[ab3 db4 f4 ab4 db5@8 ~@2 bb4@2]/2", I: "ab4 f4",
  J: "[d5@2 f5@4 ~ d5]/2", K: "f5", L: "[e5@3 e5@3 c5 bb4]/2", M: "[g4 db5@7]/2", N: "eb5@3 ~@13",
  O: "bb3 ~@7 bb3 ~@3 ab3 ~@3", P: "bb3 ~@7 bb3 ~@3 c4@2 ~@2", Q: "bb3 ~ b3 ~ bb3 ~ bb3 ~", R: "bb3 ~ b3 ~ bb3 ~ d4 ~",
  S: "eb4 ~@3 b3 ~ db4 ~", T: "b3 ~@3 b3 ~ db4 ~", U: "b3 ~ db4 ~ b3 ~ db4 ~",
  V: "g4 ab4 a4 bb4 b4 c5 db5 d5 ab4 a4 bb4 b4 c5 db5 d5 eb5", W: "d5!2 eb5!2 d5!2 eb5!2 e5!2 eb5!2 f5!2 e5!2",
  X: "d5!2 eb5!2 e5 ~ eb5 ~ d5!2 eb5!2 e5!2 eb5!2", Y: "g4 ~ bb4 ~ c5 ~ f4 ~ d5!4 c5 ~ f4 ~", Z: "g4 ~@15",
  AA: "bb4!4 a4!2 f4 ~ bb4!4 a4!2 f4 ~", AB: "g4 ~ a4 ~ bb4 ~ d5 ~@9", AC: "~@8 d4 db4 c4 b3 c4 b3 bb3 a3",
  AD: "[bb3 a3 ab3 g3 gb3 eb4 d4 c4 bb3@16 ~@8]/2", AE: "~@8 g4!4 a4 ~ a4 ~", AF: "a4!4 b4 ~ b4 ~ f4@3 ~@5",
  AG: "f4@3 ~ bb4@3 ~ f4@3 ~@5", AH: "f4@3 ~ bb4@3 ~@9", AI: "ab4 g4 gb4 f4 e4 eb4 d4 db4 c4 ~@7",
  AJ: "~@6 ab4 ~@7 ab4 ~", AK: "~ eb4 ~@3 g4 gb4 f4 e4 f4 e4 eb4 d4 f4 e4 eb4",
  AL: "d4 db4 [b3,c4] bb3 eb4 d4 db4 c4 db4 c4 b3 bb3 a3 ab3 g3 gb3", AM: "f3 gb3 [g3,ab3] g3 ~@12",
  AN: "~@3 [d4,eb4] db4 c4 b3 bb3 a3 ab3 g3 ab3 a3 bb3 b3 c4", // Ebmaj7
  AO: "db4 d4 c4 [db4,d4] eb4 e4 f4 gb4 g4 ab4 a4 bb4 b4 c5 db5 d5", AP: "[eb5 e5 ~@6 e3@30 ~@10]/3", AQ: "~@5 c5@11",
  AR: "[~ db5@11 c5@11 a4@23 ~@2]/3", AS: "~@2 a3@4 bb3@3 a3@7", AT: "~ gb3@15",
  AU: "[a4@6 bb4@5 c5@8 db5@7 c5@8 eb5@11 eb5@6 eb5@6 eb5@3 eb5@3 ~]/4", AV: "[eb5@3 ~@12 eb5@45 ~@4]/4",
  AW: "[~@5 bb4@5 a4@5 g4@13 d4@18 d4@2]/3", AX: "[~@3 bb4@49 bb4@5 a4@4 g4@9 ~ d4@4 bb4@50 ~@2 bb4]/8",
  AY: "[~ c5@7 d5@2 bb4@5 c5@4 db5 d5@26 ~@2]/3", AZ: "[~@8 eb5@4 d5@9 bb4@5 eb5@4 d5@5 bb4@4 d5@5 eb5@2 d5@2]/3",
  BA: "[c5@2 bb4@2 ~ c5@40 c5@5 d5@13 eb5@5 e5 f5@26 ~]/6", BB: "[~@8 eb5@14 d5@4 c5@9 a4@5 eb5@4 d5@18 ~@2]/4",
  BC: "~@3 c5@4 bb4@5 f4@4", BD: "[~ bb4@34 bb4@47 ~@14]/6", BE: "[~@7 c5@34 ~@7]/3", BF: "~@10 f4 ~ c4@2 eb4@2",
  BG: "[f4@2 db5@4 ~ c5@4 eb5@34 ~@3]/3", BH: "~@6 f3@6 f3 ~@3", BI: "~@7 e3@6 e3 ~@2", BJ: "~@2 f3 ~",
  BK: "[~ e4@8 f4@9 ab4@3 ab4 ~@5 bb3@17 ~@4]/3", BL: "[~@13 c4@17 ~@2]/2", BM: "[db4@34 eb4@17 ab4@17 ~ eb5@35 ~@8]/7",
  BN: "ab4@13 ~@3", BO: "[~ eb5@9 g5@22]/2", BP: "[~@4 g5@8 f5@22 ~@4 f5@9 eb5@22 ~@4 eb5@7]/5",
  BQ: "[~ db5@22 ~@4 db5@9 c5@22 ~@4 g4@8 f4@22 ~@4]/6", BR: "[ab4@9 ~@51 bb5@17 ~@3, ~@9 eb5@69 ~@2]/5",
  BS: "[~@52 c6@35 ~@9, eb5@43 ~@5]/6",
})).s("gm_trumpet").gain(0.4)

stack(trumpet, trumpet_2)