Strudelify

Xenoblade Chronicles 2: Roaming the Wastes for Clarinet trio

From Xenoblade Chronicles 2

KeyE majorTempo123 bpm
0:00/0:00
// Xenoblade Chronicles 2: Roaming the Wastes for Clarinet trio — From Xenoblade Chronicles 2
// 123 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (1/4 at bar 1, 4/4 at bar 2) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5296408; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 90 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(123/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 · clarinet · "B♭ クラリネット"
const clarinet = note(`<
  A B C D E F G ~@2 H I J K L M N O P Q R S T U V W X Y Z AA AB ~ AC AD AE AF Z AG AH AI AJ@2 ~ AK AL AM AN AO AP AQ AR
  AS AT AU AV J AW AX AY AZ BA BB BC BD BE BF U V W X Y Z AA AB ~@2 BG BH BI Z AG BJ AI BK@2 BL D E F BM@2
>`.pickRestart({
  A: "~@12 b3!2 d4 e4", B: "b4 a4", C: "g4@8 e4 ~ e4 ~ e4@4", D: "b5 a5", E: "b5@8 e4 ~ e4 ~ e4@4", F: "~@4 g#4!4",
  G: "e5!2 ~ e5 ~ e5 ~ e5!2 ~@7", H: "~@5 e3 g#3 e3", I: "a3@2 b3 a3 ~ a3 ~ g#3@8 ~", J: "d5@3 c#5@8 ~@3 g4 a4",
  K: "g4 a4 f#4 a4", L: "a4@2 b4 a4 ~ f#4 ~ g#4@5 ~@4", M: "f#4@3 f#4@2 ~@11", N: "g4@3 d5@3 g5@8 ~@2",
  O: "g4@3 d5@3 g5@2 g5 a5@3 g5@4", P: "f#5@3 c#5@3 f#5@4 ~@4 a4@2", Q: "b4@8 b4@3 c#5@3 a4@2", R: "d5@4 ~ g#4 f#4 g#4",
  S: "d5@3 b4 ~@2 b4@6 ~@4", T: "b4 e4 d5 b4", U: "c#5", V: "f#4!2 ~ e4 ~ c#4 e4 f4 f#4 ~@7", W: "d5@3 c#5@3 b4@8 ~@2",
  X: "e5@3 d5@3 c#5@8 ~@2", Y: "f#5@3 e5@3 d5@6 e5@2 f#5@2", Z: "a5@3 b5 c#6@2 f#5@2",
  AA: "g4!2 ~ g4 ~ g4 ~ g4 g4@2 f#4@2 b4@2 a4@2", AB: "f#4!2 ~ f#4 ~ f#4 ~ f#4 f#4@2 e4@2 c#4@2 e4@2",
  AC: "~@5 f#5 a5 a#5", AD: "b5@12 ~@2 b5!2", AE: "e5@12 ~@2 e5!2", AF: "f#5@12 ~@2 f#5!2",
  AG: "g4!2 ~ g4 ~ g4 ~ g4 g4@2 e4@2 b4@2 a4@2", AH: "g4!2 ~ f#4 ~ g4 ~ b4 f#4@2 f#4@2 b4@2 c#5@2",
  AI: "f#4!2 ~@4 f#4!2 ~@4 f#4!2 ~@2", AJ: "[f#4 ~ f#4@2 e4@2 d4@2 e4@2 d4@2 a4@2 f#4@8 ~@10]/2",
  AK: "b3@3 a3@3 b3 c#4", AL: "d4@3 ~", AM: "b3 d4 c#4 e4 d4 f#4 e4 g4", AN: "f#4 a4 b4 c#5 d5 c#5 b4 a4",
  AO: "~ d4 c#4 e4 d4 f#4 e4 g4", AP: "f#4@2 a4@2 b4@2 c#5@2 d5!2 e5!2 c#5@4", AQ: "~ e4 g#4 b4",
  AR: "b4!2 ~ b4 ~ b4 ~ c#5 a#4 ~ b3@2 d4@2 b3@2", AS: "d5@4 a4@3 g#4@5 ~@2 g#4 a4", AT: "a4!2 f#4 c#5",
  AU: "a4@2 a4!2 ~ a4 ~ g#4@8 ~",
  AV: "a5@2 a5!2 ~ a5 ~ g#5 [f5,f#5,g5,g#5] [a#4,b4,c5,c#5,d5,d#5,e5] [g4,g#4,a4] ~ b4@2 f#4@2, ~@5 f#4 ~@2",
  AW: "b4 a4 b4 c#5", AX: "a4@2 b4 a4 ~ f#4 ~ g#4@5 c#4 d4 e4 f#4", AY: "a4@3 f#4 ~@12", AZ: "b4 f#4", BA: "b3 ~",
  BB: "~@5 f#5 g5 a5", BC: "b5@3 c#6@3 a5@2 b5@3 c#6@3 a5@2", BD: "g#5 ~", BE: "d5@3 c#5 ~@2 b4@6 ~@2 f#4@2",
  BF: "b4 g4 d5 b4", BG: "d5@12 ~@2 c#5 d5", BH: "e5@12 ~@2 d5 e5", BI: "f#5@12 ~@2 f#5 g5",
  BJ: "g4!2 ~ f#4 ~ g4 ~ b4 b4@2 b4@2 d5@2 e5@2", BK: "[f#4 ~ f#5@2 e5@2 d5@2 e5@2 d5@2 a5@2 b5@18]/2",
  BL: "~@8 e4 ~ e4 ~ e4@4", BM: "[e5!2 ~ e5 ~ e5 ~ e5!2 ~@3 c#5@3 d5@17]/2",
})).s("gm_clarinet").gain(0.3)

// other · clarinet · "B♭ クラリネット"
const clarinet_2 = note(`<
  ~ A B A B C D E F G@2 E F H I J K L M N O P Q R S T U V W X Y Z S T U V W AA AB AC AD AE AF AG AH AI AJ AK C AL AM F
  AN G E AO AP AQ AR AS L M N AT AU Q R AD AE AF AV W X Y Z S T U V W AA AB AW A B A B C AX@2
>`.pickRestart({
  A: "b3@3 b3@5 a3@3 a3@5", B: "g3@3 g3@3 g3@2 e3 ~ e3 ~ e3 f#3@3", C: "c#4!8", D: "f#4!2 ~ e4 ~ c#4 ~ e4 f#4 ~@7",
  E: "b3@4 b3@2 a3 b3@2 e3 f#3 a3 c#4 d4 c#4 a3", F: "e3@3 e4@3 e3@2 f#3@3 f#4@3 f#3@2", G: "b3@2 b3!2 ~ b3 ~ e3@8 ~",
  H: "b3@2 b3!2 ~ b3 ~ e3@5 ~@4", I: "b3@3 b3@2 ~@11", J: "g3@3 d4@3 g4@8 ~@2", K: "g3@3 d4@3 g4@2 g4 a4@3 g3@4",
  L: "f#4@3 c#4@3 f#4@4 c#4@2 f#4@4", M: "b3@3 b3@2 b3 a3 b3 a3@2 a3@2 a3!2 b3@2",
  N: "g#3@3 b3@3 e4@3 b3 e4@2 b3@2 g#3@2", O: "g3@3 d4 ~@2 g4@8 ~@2", P: "c#4!2 g4 e4", Q: "f#3!8",
  R: "f#4!2 ~ e4 ~ c#4 e4 f4 f#4 ~ f#3@2 a3@2 f#3@2", S: "b3@3 b3@3 b3@4 b3@4 b3@2", T: "a3@3 a3@3 a3@4 a3@4 a3@2",
  U: "g3@3 g3@3 g3@4 g3@4 g3@2", V: "f#3@3 f#3@3 f#3@2 f#3@4 f#3@4", W: "e3!2 ~ e3 ~ b3 ~ d4 e3@2 b3@2 d4@2 e4@2",
  X: "f#3!2 ~ f#3 ~ c#4 ~ e4 f#3@2 c#4@2 e4@2 f#4@2", Y: "b3@2 f#3 a3 b3@2 f#3 a3 ~ f#3 a3@2 a3 b3@3",
  Z: "g3@2 c#4 e4 g4 c#4 g4 f#4 ~@2 f#4@2 f#4 c#4 f#4@2", AA: "f#3!2 ~ f#3 ~ c#4 ~ e4 c#4@2 c#4@2 d4@2 e4@2",
  AB: "f#3!2 ~@4 f#3!2 ~@4 f#3!2 ~@2", AC: "f#3 ~@15", AD: "b3", AE: "a3", AF: "g3", AG: "e3@2 f3@2 f#3@3 f#3",
  AH: "b3@3 b3@3 b3@2", AI: "a3@3 a3@3 a3@2", AJ: "e3@3 e3@3 f#3@2", AK: "d3@3 d3 d4 e4 c#4@2",
  AL: "f#4!2 ~ f#4 ~ f#4 ~ f#4!2 ~@7", AM: "~@4 f#3@3 e3@7 ~@2", AN: "b3@2 b3!2 ~ b3 ~ e4@8 ~",
  AO: "e3@2 e3 ~ e4 b3 e3 e4 f#3@2 f#3 ~ f#4 c#4 f#3 f#4", AP: "b3@2 b3!2 ~ b3 ~ e3@4 ~@5", AQ: "b3@3 b3 ~@6 a3@2 a3!4",
  AR: "g3@3 d3@3 g3@8 d3@2", AS: "g3 d3@2 g3@3 g4@2 g#4 a4@2 e4 c#4 a3 e3@2", AT: "g3@3 d4 ~@2 g4@6 ~@4",
  AU: "c#4!2 g3 e3", AV: "f#3@12 f#3!4", AW: "f#3 ~@11 b3!2 d4 e4", AX: "[f#4!2 ~ e4 ~ c#4 ~ e4 f#4 ~@3 f#3@3 g3@17]/2",
})).s("gm_clarinet").gain(0.3)

stack(clarinet, clarinet_2)