Strudelify

Xenoblade Chronicles OSTs

Ace

KeyC♯ minorTempo168 bpm
0:00/0:00
// Xenoblade Chronicles OSTs — ACE+
// 168 bpm, 4/4, key C# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Transcription provider: pdmx. https://musescore.com/score/845746; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 115 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(168/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 · violin
const violin = note(`<
  ~@16 A@2 B@2 C@2 D E F@2 G H I J K L M@2 N O P@2 ~@2 M@2 N Q R@2 ~@19 S T@2 U@2 V@2 W X Y@2 Z@2 AA AB AC@2 AD AE R@2
  ~@2 AC@2 AD Q R@2 ~@21
>`.pickRestart({
  A: "f#5/2", B: "[f#5 g#5 e5@6]/2", C: "[e5 f#5 d#5@5 b4]/2", D: "c#6 a#5 f#5 c#5", E: "f#4 f#5 c#6@2",
  F: "[g#5 a5 f#5@5 c#6]/2", G: "b5 f#5", H: "e5 d#5", I: "c#5", J: "c#5 d#5 e5 f#5", K: "[e5,e6]", L: "[d#5,d#6]",
  M: "[d#6@5 g#5 a5 f#6]/2", N: "d#6", O: "b5", P: "[g#5 f#5 b5 g#5@5]/2", Q: "e5 f#5", R: "[g#5 f#5 c#6 g#5@5]/2",
  S: "~@4 c#5@2 g#5 f#5", T: "[b5@7 e6]/2", U: "[d#6@3 b5@3 g#5@2]/2", V: "[f#6@3 d#6@3 b5@2]/2", W: "c#5 a4 g#4 e4",
  X: "c#5@2 a4@2 c#5@2 g#5 f#5", Y: "[[b4,b5]@5 [c#5,c#6] [g#4,g#5] [f#4,f#5]]/2", Z: "[g#4,g#5] d#5 c#5 g#4",
  AA: "d#5 c5 f#4 d#4", AB: "c4 g#5@2 f#4", AC: "[d#5@5 g#4 a4 f#5]/2", AD: "d#5", AE: "b4",
})).s("gm_violin").gain(0.2)

// chords · piano · "Grand Piano"
const piano = note(`<
  A B A C D@2 E F A B A G H F E F I ~ J K L M N O P Q R S T U V W X Y Z AA AB@2 ~@2 AC Y Z AD AE@2 ~@2 AF AG AH AI AJ AK
  AL@2 AM AN AO Z AP AQ AH AR AS AT AU@2 AV@2 AW AX AY@2 AZ@2 BA@2 BB BC BD@2 Z AA BE@2 ~@2 BF@2 Z AD AE@2 ~@2 BG@2 BH@2
  BI@2 BJ@2 BK@2 BL BM U V W BN BO BP@2
>`.pickRestart({
  A: "[d#5,e5,g#5]!2, d#6@15 ~", B: "g#5!2 a5 f#6, [c#5,e5] [c#5,e5,g#5]", C: "[c#5,e5,g#5]!2, b5@15 ~",
  D: "[g#6 f#6 b6 ~ [a4,c#5,e5]@2 [a4,c#5,e5]@2, [b4,c#5,e5]!2 ~@2, ~@12 g#6@19 ~]/2", E: "[b4,c#5,e5]!2",
  F: "[a4,c#5,e5]!2", G: "[c#5,e5,g#5,e6] [c#5,e5,g#5,f#6]", H: "g#6 f#6 c#7 g#6, [b4,c#5,e5]!2",
  I: "[d5,f#5,g#5]@15 ~", J: "[c#4,c#5,e5]@15 ~", K: "~ [f#5,b5]@15, c#5", L: "[b3,b4]@15 ~", M: "[f#5,b5]@15 ~",
  N: "c#5 a#4 f#4 c#4", O: "f#3 f#4 c#5@2", P: "[a4,e5,g#5]@15 ~", Q: "[g#5,c#6]@15 ~", R: "[g#5,b5,d#6]@15 ~",
  S: "[d#5,e5,b5]@15 ~", T: "[c#5,f#5,a#5]@15 ~", U: "c#5 d#5 e5 f#5", V: "[e4,e5]@15 ~", W: "[d#4,d#5]@15 ~",
  X: "[e4,g#4,b4,d#5]", Y: "[g#4,d#5] g#4 a4 f#5", Z: "d#5@15 ~", AA: "b4@15 ~",
  AB: "[[b4,e5,g#5]@4 f#5@4 b5@4 g#5@19 ~]/2", AC: "[e4,g#4,b4,d#5]@15 ~", AD: "e5 f#5",
  AE: "[[c#5,e5,g#5]@4 f#5@4 c#6@4 g#5@19 ~]/2", AF: "[f#5,g#5,c#6]@15 ~", AG: "g#6@15 ~", AH: "[c#6,e6,g#6]@15 ~",
  AI: "[c#6,e6,g#6,c#7] g#6", AJ: "[d#6,f#6]@15 ~", AK: "d#6@15 ~", AL: "[c#6 a#5 f#5 c#5@2 f#5 a#5@2]/2",
  AM: "[g#5,c#6,e6,g#6]@15 ~", AN: "b5@15 ~", AO: "[b4,d#5,f#5,b5]@15 ~", AP: "c#5@11 ~ c#6@2 d#6@2",
  AQ: "e6@11 ~ e6@2 f#6@2", AR: "[g#5,c6,d#6,g#6]@15 ~", AS: "c#5 a4 g#4 e4",
  AT: "c#6@2 a5@2 [c#5,g#5]@2 g#5 f#5, ~@3 e5", AU: "[c#6 a5 g#5 e5 c#6 a5 g#5 e6, b5@27 ~@5]/2",
  AV: "[[c#4,c#5] b5 g#5 e5 d#6 b5 ~ e5, d#6@11 ~ b5@8 ~@4 g#5@8]/2", AW: "d#6 b5 g#5 [e5,d#6], f#6@11 ~@5",
  AX: "~ b5 g#5 e5, d#6@7 ~ b5@8",
  AY: "[[c#4,c#5]@2 a3@2 g#3@2 e3@2 c#4@2 a3@2 [c#4,c#5]@2 [g#4,g#5] [f#4,f#5], [f#3,f#4]@15 ~]/2", // C# G# F#
  AZ: "[[a3,a4] a5 g#5 e5 c#6 [c#5,a5,c#6] [g#4,g#5] [f#4,e5,f#5], [b4,b5]@19 ~@13]/2", // A F#m G# F#7 B
  BA: "[[g#4,g#5] d#5 c#5 g#4 [g#4,g#5] d#5 c#5 g#4, c#6@15 ~]/2", BB: "[d#5,d#6] [c5,c6] [f#4,f#5] [d#4,d#5]",
  BC: "[c4,c5] g#4 d#4 [c4,f#4], ~ g#5@2 ~", BD: "[[e4,g#4,b4,d#5]@19 ~ g#4@4 a4@4 f#5@4]/2",
  BE: "[[b4,c#5,g#5]@4 f#5@4 c#6@4 g#5@19 ~]/2", BF: "[[g#4,b4,d#5]@15 ~ [g#4,d#5]@4 g#4@4 a4@4 f#5@4, e4@19 ~@13]/2",
  BG: "[[g#4,g#5]@4 [a4,a5]@4 [f#4,f#5]@19 ~ [b3,b4]@4]/2", BH: "[[f#4,f#5]@4 [g#4,g#5]@4 [e4,e5]@19 ~ [g#3,g#4]@4]/2",
  BI: "[[e4,e5]@4 [f#4,f#5]@4 [d#4,d#5]@19 ~ [b3,b4]@4]/2", BJ: "[[f#4,a#4,c#5]@8 [f#4,a#4]@23 ~]/2",
  BK: "[[g#4,g#5]@4 [a4,a5]@4 [f#4,f#5]@19 ~ c#6@4]/2", BL: "b5 f#5 e5 d#5", BM: "c#5@15 ~", BN: "c#4@2 f#4 g#4",
  BO: "c#5 [f#4,f#5] [g#4,g#5] [c#5,c#6]", BP: "[~@16 c#4@15 ~, [g#4,c#5,f5]@15 ~]/2",
})).s("gm_piano").gain(0.4)

stack(violin, piano)

More by Ace