Strudelify

Space Battleship Yamato

Hiroshi Miyagi

KeyE♭ majorTempo125 bpm
0:00/0:00
// Space Battleship Yamato — Hiroshi Miyagi
// 125 bpm, 4/4, key Eb major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5261386; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 77 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(125/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 · trumpet · "B♭ Trumpet 2"
const trumpet = note(`<
  ~@3 A B C D E F G H I J K L M N F ~ O P O Q R ~@6 S T U O P O V W X Y Z Y Z ~@5 AA N AB AC O P O V W AD AE AF AG ~@2 S
  T U O P O V W X Y Z AH AI AJ
>`.pickRestart({
  A: "~@3 b4", B: "c5@4 bb4 ~ ab4 ~ bb4@4 g4@4", C: "ab4@4 g4 ~ f4 ~ g4@4 eb4@4",
  D: "g4 c5 d5 ~ g4 c5 d5 ~ g4 c5 d5 g4@2 c5 d5 ~", E: "d5 f5 g5 ~ d5 f5 g5 ~ d5 f5 g5 d5@2 f5 g5 ~", F: "c5",
  G: "~@6 g4!2", H: "c5@5 c5 d5 bb4", I: "c5@6 g4!2", J: "c5@5 d5 eb5 c5", K: "g5@6 ab5 g5", L: "f5@5 f5 eb5 f5",
  M: "g5", N: "d5 bb4", O: "c4 d4 eb4 d4 c4 d4 eb4 d4 c4 d4 eb4 d4 c4 eb4 d4 c4",
  P: "bb3 c4 d4 c4 bb3 c4 d4 c4 bb3 c4 d4 c4 bb3 d4 c4 bb3",
  Q: "d4 eb4 f4 eb4 d4 eb4 f4 eb4 d4 eb4 f4 eb4 d4 f4 eb4 d4", R: "eb4 d4", S: "c4!4",
  T: "g3 c4 d4 ~ g3 c4 d4 ~ g3 c4 d4 g3@2 c4 d4 ~", U: "d4 f4 g4 ~ d4 f4 g4!2 ~@4 bb3!4",
  V: "d4 eb4 f4 eb4 d4 eb4 f4 ab3 g3 a3 b3 c4 d4 eb4 f4 gb4", W: "g4 ~@7", X: "~ eb4 ~ d4",
  Y: "c4@3 g4 gb4@8 c4!2 ~ c4", Z: "c4@3 g4 gb4@8 ~@4", AA: "b4@3 a4@2 bb4@3 b4@3 c5@2 db5@3",
  AB: "c5@3 g5 gb5@8 c5!2 ~ c5", AC: "c5@3 g5 gb5@8 ~@4", AD: "~@4 g4@3 g4 c5@8", AE: "~@3 eb5@2 c5@3 g5@8",
  AF: "~@4 ab4@3 ab4 eb5@8", AG: "~@3 eb5@2 c5@3 ab5@8", AH: "c4@4 g4 ab4 ~ a4 bb4@8",
  AI: "g4 ab4 ~ a4 bb4@4 db4@4 db4 bb3 ~ db4", AJ: "c5@2 ~@2 c4!2 ~ c4 c4@2 ~@6",
})).s("gm_trumpet").gain(0.3)

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

// other · trombone
const trombone = note(`<
  A B@2 C D E F G H ~@6 I J K L H M N O P ~@4 Q H R H S T U V W X Y Z@2 ~ AA AB AC AD AE AF P J AG@2 AH AI AJ AK AL AB
  AC AM AN AO AP AQ AR@2 AH AI AS AT X Y Z@2 ~ AU AV
>`.pickRestart({
  A: "~@8 bb3@4 bb3@3 eb3", B: "[eb3@4 g3 f3 eb3@2 f3@3 bb3 bb3@8 c4 bb3 ab3@2 bb3@2 eb3@2 g3@2 bb3@2]/2",
  C: "d4@4 eb4 d4 eb4@2 bb3@4 b3@4", D: "c4@4 bb3 ~ ab3 ~ bb3@4 g3@4", E: "ab3@4 g3 ~ f3 ~ g3@4 eb3@4",
  F: "g3 c4 d4 ~ g3 c4 d4 ~ g3 c4 d4 g3@2 c4 d4 ~", G: "d4 f4 g4 ~ d4 f4 g4 ~ d4 f4 g4 d4@2 f4 g4 ~", H: "c4",
  I: "b3@3 a3@2 bb3@3 b3@3 c4@2 db4@3", J: "d4 bb3", K: "c4@3 g4 gb4@8 c4!2 ~ c4", L: "c4@3 g4 gb4@8 ~@4", M: "d4",
  N: "eb4", O: "f4", P: "g4", Q: "db4", R: "d4!4", S: "b3 ~", T: "c4@3 c4!2 ~ c4 ~ c4@2 eb4@2 g4@4",
  U: "f4@3 g4 f4 ~ eb4 ~ d4 ~ d4 ~ bb3@4", V: "c4@2 d4@2 eb4@3 c4", W: "f4@2 f4 ab4 g4@4",
  X: "d4 ~ d4@4 eb4@2 d4@4 bb3@4", Y: "eb4 d4", Z: "[c4@7 ~]/2", AA: "~@6 g3!2", AB: "c4@5 c4 d4 bb3", AC: "c4@6 g3!2",
  AD: "c4@5 d4 eb4 c4", AE: "g4@6 ab4 g4", AF: "f4@5 f4 eb4 f4", AG: "c4/2", AH: "c3@3 c3!2 ~ c3 ~ c3@2 eb3@2 g3@4",
  AI: "f3@3 g3 f3 ~ eb3 ~ d3 ~ d3 ~ bb2@4", AJ: "c3@2 c3!3 eb3 g3@2", AK: "bb3 bb3@2 c4 bb3@2 f3 ab3", AL: "g3@6 g3!2",
  AM: "c4@5 eb4 d4 bb3", AN: "c4@6 ab3 g3", AO: "f3@3 f3@2 f3 ab3 c4", AP: "g3@6 ab3 g3",
  AQ: "f3@6 f3@2 f3@3 ab3@2 c4@3", AR: "[d4@3 ~]/2", AS: "c3@2 d3@2 eb3@3 c3", AT: "f3@2 f3 ab3 g3@4",
  AU: "c3@4 g3 ab3 ~ a3 bb3@4 db4 bb3 ~ db4", AV: "c4@2 ~@2 c3!2 ~ c3 c3@2 ~@6",
})).s("gm_trombone").gain(0.4)

// bass · tuba
const bass = note(`<
  A@3 B C D E@2 F G@2 H F I J K L F G F M F M N O F P@2 Q R S E T F M P U V W F@3 G F H F I P K L F G F M F M N F@2 P@2
  Q R S E T F M P U V X F@2 Y Z AA
>`.pickRestart({
  A: "bb2!8", B: "bb2!4 bb2@2 g2@2", C: "ab2@4 g2 ~ f2 ~ g2@4 eb2@4", D: "f2@4 eb2 ~ d2 ~ eb2@4 c2@4",
  E: "g2@2 d2@2 g2@2 d2@2 g2@2 d2 g2@2 d2 g2 ~", F: "c3@4 g2@4 c3@3 g2 c3@2 g2@2", G: "c3@4 g2@4 c3@3 g2 c3!2 g2@2",
  H: "f2@4 c2@4 f2@3 c2 f2@2 bb2@2", I: "eb3@4 bb2@4 eb3@3 bb2 eb3@2 bb2@2", J: "ab2@4 eb2@4 ab2@3 eb2 ab2@2 f2@2",
  K: "g2@3 f2@2 gb2@3 g2@3 ab2@2 a2@3", L: "bb2 g2", M: "bb2@4 f2@4 bb2@3 f2 bb2@2 f2@2", N: "eb2 d2",
  O: "c2@4 g2@4 c3@3 g2 c3@2 g2@2", P: "ab2@4 eb2@4 ab2@3 eb2 ab2@2 eb2@2", Q: "db3@4 ab2@4 f2@3 ab2 f2@2 bb2@2",
  R: "c3@4 g2@4 eb2@3 g2 eb2@2 g2@2", S: "ab2", T: "g2@2 d2@2 g2@2 g2!2 ~@4 g2!4", U: "f2 g2", V: "g2 ~@7",
  W: "~ ab2 ~ d2", X: "~ c3 ~ bb2", Y: "c2 db2", Z: "c2@4 db2@8 db3 bb2 ~ db3", AA: "c3@2 ~@2 c2!2 ~ c2 c2@2 ~@6",
})).s("gm_tuba").gain(0.3)

stack(trumpet, french_horn, trombone, bass)