Strudelify

Metamorph Ballad But It's Only Mellophone

SOOOUBWAY

KeyF majorTempo160 bpm
0:00/0:00
// Metamorph Ballad But It's Only Mellophone — SOOOUBWAY
// 160 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Transcription provider: pdmx. https://musescore.com/score/5861628; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 56 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(160/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 · french horn · "Horn in F"
const french_horn = note(`<
  ~@7 A B C D@2 E F G H I J ~@6 K L M N O P Q@3 ~@3 R S T U ~ V W@2 X@2 ~@4 Y@2 Z@2 AA@2
>`.pickRestart({
  A: "~@4 bb3@3 bb3", B: "bb4@2 bb4@2 a4 g4 ~ f4 g4@2 d4@4 d4 ~", C: "c4 bb3 bb3@6",
  D: "[~@14 b4 c5@3 c5@2 bb4@2 db5 d5@9]/2", E: "c5 b4 bb4 ~ c5@2 d5@8 ~@2", F: "~@6 g4@2 f4@3 f4@2 f4@3",
  G: "e5 f5@5 c5@8 ~@2", H: "~@2 d4@2 eb4@2 e4@2 f4@2 g4@2 a4 bb4 a4@2", I: "g4@2 f4@2 eb4@2 gb4 g4 ~ db5 d5@4 bb4@2",
  J: "c5 d5 ~ c5@13", K: "~@2 d5@3 eb5@2 c5@7 bb4@2", L: "d5 eb5 c5@6", M: "~@4 bb4@2 c5@2 d5@4 d5 eb5@3",
  N: "d5@4 d5 eb5 d5 bb4 f4@8", O: "g5@6 g5 ~@5 g5@4", P: "~ g5", Q: "[~@2 bb4@2 c5@2 d5@2 c5@4 e5 f5@35]/3", R: "~ f5",
  S: "d5", T: "~@8 e5 f5@7", U: "d5 c5 c5@6", V: "~@6 g4 bb4",
  W: "[c5@2 db5 c5 ~ db5 c5 db5 ~ c5 db5 c5 ~ db5 c5 bb4@9 ~@4 bb4@4]/2", X: "[gb5 g5@31]/2",
  Y: "[~@12 db5 d5@5 ~ d5 ~ c5@3 ~ d5 ~ c5@2 bb4 ~ c5]/2", Z: "[bb4 c5 ~ bb4@17 ~@12]/2", AA: "[f4,bb4]/2",
})).s("gm_french_horn").gain(0.5)

// other · french horn · "Horn in F"
const french_horn_2 = note(`<
  ~@8 A B C D E F G H ~ I J K L@2 M N O@2 P@2 Q R S@3 T U V W@2 X Y U T U V Z@2 AA AB AC@2 AD@6
>`.pickRestart({
  A: "eb4@2 ~@5 bb3", B: "eb4 ~ bb3 ~ eb4@8 bb3@4", C: "d4@2 ~@5 bb3", D: "d4 ~ bb3 ~ d4@8 bb3@4", E: "[c3,c4]@3 ~@5",
  F: "c4", G: "[d3,d4]", H: "~@4 c4@3 bb3", I: "~ eb3 bb3 g4", J: "f4@3 ~", K: "~ bb3 c4 a4", L: "[g4@3 ~]/2",
  M: "~ a4 f4 g4", N: "d4 f4 c4 d4", O: "[[bb3,g4]@6 bb3 g4]/2", P: "f4/2", Q: "~ d4!3 eb4 ~@2 d4",
  R: "f4!2 g4 ~@2 g4 bb4 c5", S: "[e5 [d5,f5]@11 [c5,f5]@36]/3", T: "~@2 eb4 f4 c5@3 bb4", U: "bb4",
  V: "~@2 eb4 f4 c5@2 bb4@2", W: "[f4 g4@8 ~ c5@2 bb4@2 f4@2]/2", X: "~ c4 d4 eb4", Y: "f4@2 g4@2 c5@2 bb4 c5",
  Z: "[f4 g4@8 ~ c5@2 bb4@2 f4@2, ~@3 d5]/2", AA: "~@2 eb4 f4 g4@2 f4 eb4, ~ d5", AB: "ab4@2 g4 f4 bb4@2 ab4 g4",
  AC: "[bb4,d5]/2", AD: "[d5 d5, bb4]/6",
})).s("gm_french_horn").gain(0.5)

// other · french horn · "Horn in F" · soft notes
const french_horn_soft = note("<A B C D E F C D ~@48>".pickRestart({
  A: "eb4@4 ~@3 bb3", B: "eb4", C: "d4@4 ~@3 d4", D: "d4", E: "c4@4 ~@3 g3", F: "c4",
})).s("gm_french_horn").gain(0.2)

stack(french_horn, french_horn_2, french_horn_soft)