Strudelify

Final Fantasy XIV Heaven Sword

Bing

KeyD♭ majorTempo67 bpm
0:00/0:00
// Final Fantasy XIV Heaven Sword — Bing
// 67 bpm, 4/4, key Db major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 4 "大低音竖笛, flute2" named as a pipe, played on flute (its piano patch is not one); ch 3 "钢琴, bass-lute" named as a bass, played on electric bass finger (its piano patch is not one)
// note: Transcription provider: pdmx. https://musescore.com/score/5911000; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 45 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(67/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// chords · flute · "大低音竖笛, flute2"
const flute = note(`<
  ~@7 A B C D E F G H I J K L M N O P Q R G S I T U V W F X H Y B Z AA AB AC AD AE AF ~
>`.pickRestart({
  A: "f4@2 ab4 bb4 c5@2 f4 ab4", B: "bb4@2 c5@2 ab4@3 f4", C: "eb4 db4 eb4 gb4 f4@2 f4 eb4", D: "db4@4 ~@2 ab4 bb4",
  E: "c5 ~", F: "db4 c4 db4 f4 eb4@2 c4 ab3, bb3@4 ab3@3 ~", G: "[g3,bb3] gb3",
  H: "db4 eb4 f4 ~@2 ab4 g4 eb4, db3 eb3, ~@3 bb4@2 ~@3", I: "f4@2 ab4 bb4 c5@2 f4 ab4, f3 ~",
  J: "bb4@2 c5@2 ab4@3 f4, db3!2", K: "eb4 db4 eb4 gb4 [c4,f4]@2 db4@2, bb3 ~",
  L: "gb4 f4 gb4 bb4 ab4@2 c4 ab3, eb4 f4", M: "[bb3,f4] f4 bb4 c5 db5@4", N: "db5 c5 bb4 ab4 gb3@4, bb3@2 bb4 ~",
  O: "bb4 ab4 gb4 eb4 [f3,f4]@2 eb3@2, eb3 ~", P: "db5 c5 db5 f5 eb5@2 c5 ab4, db4 c4", Q: "[bb3,bb4] ~",
  R: "f4 eb4 f4 bb4 ab4@2 c4 ab3, bb3@4 ab3@3 ~", S: "[db3,bb4] [eb3,g4]", T: "bb4@2 c5@2 ab4@3 f4, db4!2",
  U: "eb4 db4 eb4 gb4 [c4,f4]@2 f4 eb4, bb3@2 ~ db4", V: "[db4,eb4]@4 ~ bb3 c4 db4, ~@4 db4@3 ~", W: "c4, eb4 ~",
  X: "g3 gb3, bb3@11 ~@5", Y: "f4 c4 ab4 bb4 c5 ~ f4 ab4, f3 ~", Z: "eb4 db4 eb4 gb4 f4@2 ~@2",
  AA: "db4 c4 db4 f4 eb4@2 c4 ab3", AB: "bb3@2 bb4 c5", AC: "db5 c5 bb4 ab4 bb4@2 ~@2",
  AD: "bb4 ab4 gb4 eb4 f4@2 eb4@2", AE: "db5@2 c5@2 db5@2 f5@2 eb5@3 [eb5,f5] ab5@4", AF: "bb5 ~",
})).s("gm_flute").gain(0.4)

// other · piano · "钢琴"
const piano = note(`<
  A B C D E F G H I J K L E M G N I O E P Q R S T E F G N I J U V E M G N I O E P Q W X M ~
>`.pickRestart({
  A: "bb3 ab3", B: "g3 gb3", C: "db4 c4", D: "bb3 ~", E: "db5 c5 db5 f5 eb5@2 c5 ab4", F: "bb4@15 ~",
  G: "db5 eb5 f5 bb5@2 ab5 g5 eb5", H: "f5@11 ~ f5@2 ab5@2", I: "bb5@2 c6@2 ab5@3 f5", J: "gb5 f5 gb5 bb5 ab5@2 f5 eb5",
  K: "db5@4 ~ bb4 c5 db5", L: "eb5@11 ~@5", M: "bb4@11 ~@5", N: "f5@4 ~@2 f5 ab5", O: "gb5 f5 gb5 bb5 ab5@4",
  P: "bb4 ~", Q: "db5 c5 bb4 ab4 bb4@4", R: "bb4 ab4 gb4 eb4 f4@4", S: "f4 eb4", T: "db4 ~",
  U: "db5@9 ~ bb4@2 c5@2 db5@2", V: "eb5 ~", W: "bb4 ab4 gb4 eb4 f4@2 eb4@2", X: "db4 c4 db4 f4 eb4@2 ab4@2",
})).s("gm_piano").gain(0.4)

// bass · electric bass finger · "钢琴, bass-lute"
const bass = note("<A@6 B C D E F C A@3 C D E G H I G A@4 B C D E F C A@3 C D E G F I J K L ~>".pickRestart({
  A: "bb3 ~ bb3 ~", B: "bb3 ~ eb3 ~", C: "f3 ~ f3 ~", D: "gb3 ~ f3 ~", E: "eb3 ~ bb3 ~", F: "gb3 ~ gb3 ~",
  G: "eb3 ~ f3 ~", H: "db3 ~", I: "bb3 ~ gb3 ~", J: "eb3 ~ f3 eb3", K: "eb3 ~ ab3 ~", L: "bb3 ~@3",
})).s("gm_electric_bass_finger").gain(0.4)

stack(flute, piano, bass)