Strudelify

Mellophone Warm-Up

Keenan G.

KeyG majorTempo80 bpm
0:00/0:00
// Mellophone Warm-Up — Keenan G.
// 80 bpm, 4/4, key G 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/5924254; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 87 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(80/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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 · french horn · "Mellophone"
const french_horn = note(`<
  A B C D E F G H I J K L M N O P Q R S@2 T@2 U@2 V W X Y Z AA AB AC AD@3 ~ AE AF AG@5 ~@2 AH@3 ~ AI AJ AK@5 ~@2 AL@3 ~
  AM AN AO@5 ~@2 AP AQ AP AQ ~ AR AS AT ~ AU AI AV AW AX AY@2
>`.pickRestart({
  A: "f4@2 c4@2 f4 c4 f4 c4 f4@2 c4@2", B: "f3@4 e4@2 b3@2 e4 b3 e4 b3", C: "e4 b3 e3@2 d#4 a#3",
  D: "d#4 a#3 d#4 a#3 d#4@2 a#3@2 d#3@4", E: "d4@2 a3@2 d4 a3 d4 a3 d4@2 a3@2", F: "d3@4 d3 a3 d4 f#4 d4 a3 d3@2",
  G: "d#3 a#3 d#4 g4 d#4 a#3 d#3@2 e3 b3 e4 g#4", H: "e4 b3 e3@2 f3 c4 f4 a4 f4 c4 f3@2", I: "~@4 f4 c4",
  J: "f4 c4 f4 c4 f4@2 c4@2 f3@4", K: "e4@2 b3@2 e4 b3 e4 b3 e4@2 b3@2", L: "e3@4 d#4@2 a#3@2 d#4 a#3 d#4 a#3",
  M: "d#4 a#3 d#3@2 d4 a3", N: "d4 a3 d4 a3 d4@2 a3@2 d3@4", O: "d3 a3 d4 f#4 d4 a3 d3@2 d#3 a#3 d#4 g4",
  P: "d#4 a#3 d#3@2 e3 b3 e4 g#4 e4 b3 e3@2", Q: "f3 c4 f4 a4 f4 c4 f3@2 ~@4", R: "~ f2@2", S: "[e2 d#2 d2]/2",
  T: "[c#2 c2 b1]/2", U: "[~ b1 ~]/2", V: "f3 a3 c4 f4 [a3,a4] [c4,c5]", W: "[f4,f5] ~@2",
  X: "g3 b3 d4 g4 [b3,b4] [d4,d5]", Y: "[g4,g5] ~@2", Z: "a3 c#4 e4 a4 [c#4,c#5] [e4,e5]", AA: "[a4,a5] ~@2",
  AB: "a#3 d4 f4 a#4 [d4,d5] [f4,f5]", AC: "[a#4,a#5] ~@2", AD: "c3/3", AE: "c3", AF: "d3 e3", AG: "f3/5", AH: "c4/3",
  AI: "c4", AJ: "d4 e4", AK: "f4/5", AL: "c5/3", AM: "c5", AN: "d5 e5", AO: "f5/5", AP: "[f3,f4,f5]",
  AQ: "[b3,c4,d#4,e4,b4,c5,d#5,e5]", AR: "f4@2 d#4 f4", AS: "d#4", AT: "d#4 d4@7", AU: "d4", AV: "~@9 g3 b3 d4",
  AW: "b4 a4@3", AX: "~@7 a4", AY: "b4",
})).s("gm_french_horn").gain(0.3)

// other · french horn · "Mellophone"
const french_horn_2 = note(`<
  A B C D E F G H I J K L M N O P Q R S@2 T@2 U@2 V W X Y Z AA AB AC AD AE AF@5 ~ AG@3 ~@2 AH AI AJ@5 ~ AK@3 ~@2 AL AM
  AN@5 ~ AO@3 ~@2 AP AQ AP AQ ~ AR AS AT ~ AU AV AW AX AY AZ@2
>`.pickRestart({
  A: "f4@2 c4@2 f4 c4 f4 c4 f4@2 c4@2", B: "f3@4 e4@2 b3@2 e4 b3 e4 b3", C: "e4 b3 e3@2 d#4 a#3",
  D: "d#4 a#3 d#4 a#3 d#4@2 a#3@2 d#3@4", E: "d4@2 a3@2 d4 a3 d4 a3 d4@2 a3@2", F: "d3@4 d3 a3 d4 f#4 d4 a3 d3@2",
  G: "d#3 a#3 d#4 g4 d#4 a#3 d#3@2 e3 b3 e4 g#4", H: "e4 b3 e3@2 f3 c4 f4 a4 f4 c4 f3@2", I: "~@4 f4 c4",
  J: "f4 c4 f4 c4 f4@2 c4@2 f3@4", K: "e4@2 b3@2 e4 b3 e4 b3 e4@2 b3@2", L: "e3@4 d#4@2 a#3@2 d#4 a#3 d#4 a#3",
  M: "d#4 a#3 d#3@2 d4 a3", N: "d4 a3 d4 a3 d4@2 a3@2 d3@4", O: "d3 a3 d4 f#4 d4 a3 d3@2 d#3 a#3 d#4 g4",
  P: "d#4 a#3 d#3@2 e3 b3 e4 g#4 e4 b3 e3@2", Q: "f3 c4 f4 a4 f4 c4 f3@2 ~@4", R: "~ f2@2", S: "[e2 d#2 d2]/2",
  T: "[c#2 c2 b1]/2", U: "[~ b1 ~]/2", V: "f3 a3 c4 f4 [a3,a4] [c4,c5]", W: "[f4,f5] ~@2",
  X: "g3 b3 d4 g4 [b3,b4] [d4,d5]", Y: "[g4,g5] ~@2", Z: "a3 c#4 e4 a4 [c#4,c#5] [e4,e5]", AA: "[a4,a5] ~@2",
  AB: "a#3 d4 f4 a#4 [d4,d5] [f4,f5]", AC: "[a#4,a#5] ~@2", AD: "c3", AE: "d3 e3", AF: "f3/5", AG: "f3/3", AH: "c4",
  AI: "d4 e4", AJ: "f4/5", AK: "f4/3", AL: "c5", AM: "d5 e5", AN: "f5/5", AO: "f5/3", AP: "[f3,f4,f5]",
  AQ: "[b3,c4,d#4,e4,b4,c5,d#5,e5]", AR: "f4@2 c#4 f4", AS: "c#4", AT: "c#4 b3@7", AU: "b3", AV: "a3",
  AW: "~@9 g3 b3 d4", AX: "g4 f#4@3", AY: "~@7 f#4", AZ: "g4",
})).s("gm_french_horn").gain(0.3)

stack(french_horn, french_horn_2)