Strudelify

Octopath Traveler Main Theme

Yasunori Nishiki

KeyG majorTempo130 bpm
0:00/0:00
// Octopath Traveler Main Theme — Yasunori Nishiki
// 130 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5901494; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 81 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(130/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 · trombone
const trombone = note(`<
  ~@2 A B A C D@2 E@2 A F A G H@4 ~@12 I J K L M N O P Q R Q S@2 T@2 U Q R V W@2 X@2 P Q R Q S@2 T@2 U Q R Y Z@2 AA@2
  AB@2 AC AD ~@2 AE AF AG@2 AH AI
>`.pickRestart({
  A: "d4@5 c4 b3 c4", B: "f#4 g4@11 g4 f#4@3", C: "g4@12 a4 f#4@3, ~@13 g4 ~@2", D: "[d4@14 b3 c4]/2", E: "d4/2",
  F: "g4@3 f#4", G: "g4@8 g4 a4@7", H: "[g4 a4@5 b4 ~ b4@56]/4", I: "d4 [d4,d#4] ~ d#4 f4@8 f4 d#4 ~ d4",
  J: "d#4@8 g#4 a#4@7", K: "a#4 c5@5 a#4 g#4 a#4@4 d#4@4", L: "a#4", M: "a4", N: "g#4 a#4@5 c5@6 c#5@4", O: "d#5",
  P: "c#4 d#4@9 c#4@2 c4@2 c#4@2", Q: "g#4@3 g4", R: "d#4@4 ~ c#4 c4 c#4", S: "[d#4@13 ~ c4 c#4]/2", T: "d#4/2",
  U: "d#4@5 c#4 c4 c#4", V: "g#4 g4", W: "[g#4@12 ~ f4 g4 g#4]/2", X: "a#4/2", Y: "g#4@8 g#4 a#4@7",
  Z: "[a#4@6 c5 ~ c5@16 g#4@8]/2", AA: "[g#4 a#4@5 c5 ~ c5@24]/2", AB: "[c4@4 g#3@7 g3 g#3 a#3 c4 c#4]/2",
  AC: "d#4 c#4", AD: "b3 c#4", AE: "a3 b3@7 c#4@8", AF: "d4@4 d4!2 ~ d4 e4@3 e4@2 e4@3", AG: "b4/2",
  AH: "b4@2 ~@2 b4@2 ~@4 b4@2 ~ b4!2 ~", AI: "b4 ~@7",
})).s("gm_trombone").gain(0.4)

// other · trombone
const trombone_2 = note(`<
  ~@6 A B C D ~@6 C D ~@7 E F G H I ~@3 J K L M N@2 O@2 P M Q@2 R S T ~ U V W@2 R S T S P M Q@2 X Y Z AA AB@2 AC@2 AD@2
  AE AF ~@2 AG AH AI@2 AJ AK
>`.pickRestart({
  A: "~@12 e3@2 ~ e3", B: "b3@6 b3 c4", C: "b3@3 a3@3 g3@2", D: "f#3@3 e3@3 d3@2", E: "d#4@6 c#4 b3 a#3@8",
  F: "d#3 d3 ~ d#3 f3@8 f3 d#3 ~ d3", G: "d#3 a#2", H: "g3 f3 ~ g3 g#3@8 g#3 g3 ~ d#3", I: "g3 f3", J: "a#3", K: "a3",
  L: "g#3 a#3@5 c4@6 c#4@4", M: "d#4", N: "f4/2", O: "c#4/2", P: "c4@3 c#4", Q: "a#3/2", R: "f4",
  S: "~@2 d#4!3 ~@3 d#4 ~ d#4 ~@3 d#4 ~", T: "c#4", U: "f4@3 c4", V: "f4 ~", W: "[d#4@7 d#4]/2", X: "d#4@5 c#4 c4 c#4",
  Y: "g#4@3 g4", Z: "d#4@4 ~ c#4 c4 c#4", AA: "g#4@8 g#4 a#4@7", AB: "[a#4@6 c5 ~ c5@16 g#4@8]/2",
  AC: "[g#4 a#4@5 c5 ~ c5@24]/2", AD: "[c4@4 g#3@7 g3 g#3 a#3 c4 c#4]/2", AE: "d#4 c#4", AF: "b3 c#4",
  AG: "a3 b3@7 c#4@8", AH: "d4@4 d4 a3 ~ d4 e4@3 b3@2 e4@3", AI: "b3/2", AJ: "f#4@2 ~@2 f#4@2 ~@4 f#4@2 ~ f#4!2 ~",
  AK: "f#4 ~@7",
})).s("gm_trombone").gain(0.4)

// other · trombone
const trombone_3 = note(`<
  ~@6 A B C D ~@6 C D E F G H I J K L ~@5 M N O P ~ Q R@2 S@2 T U V W X Y Z ~ AA AB AC@2 X Y F Y T U V W AD Y Z U AE@2
  AF@2 ~@3 AG ~@2 AH ~@2 AI AJ AK
>`.pickRestart({
  A: "~@12 e3@2 ~ e3", B: "b3@6 g3 a3", C: "g3@3 f#3@3 e3@2", D: "d3@3 c3@3 b2@2", E: "g3 a3", F: "f3", G: "a#3 e4",
  H: "f4@4 c4 a#3 g#3 g3", I: "c4 f4 e4@2", J: "g4", K: "~@4 f4 d#4 ~ c#4 c4@8", L: "b3@2 d#4 d4", M: "a#3!2",
  N: "g#3@3 c4 a#3@4", O: "~@2 f3 ~ a3 ~ c4 ~ f4@8", P: "~@2 f4 ~ c4 ~ a3 ~ f3@8",
  Q: "a#3@6 [a#3,b3] [c4,c#4] d#4@8, ~@8 d4 ~@7", R: "c#4/2", S: "f3/2", T: "g#3@3 a#3", U: "c4", V: "g3",
  W: "~@4 d#4 c4 g#3 d#3 c#4 a#3 g3 f3 d#3@4", X: "c#4", Y: "~@2 d#4!3 ~@3 d#4 ~ d#4 ~@3 d#4 ~", Z: "a#3",
  AA: "c4@3 a#3", AB: "c4 ~", AC: "[a#3@7 a#3]/2", AD: "f4", AE: "f4/2", AF: "[d#4@6 ~ c4@4 c#4@3 d#4@2]/2", AG: "f#4",
  AH: "~@4 b3 [a3,a#3] g#3 [f#3,g3] f3 [d#3,e3] d3 [c3,c#3] b2 ~@3", // A#maj7 Gmaj7 Emaj7 C#maj7
  AI: "b4 a#4 g#4 f#4 b4 a#4 g#4 f#4 b3 c#4 d#4 e4 f#4 g4 g#4 a#4", AJ: "d#4@2 ~@2 d#4@2 ~@4 d#4@2 ~ d#4!2 ~",
  AK: "d#4 ~@7",
})).s("gm_trombone").gain(0.4)

// other · trombone · soft notes
const trombone_soft = note("<~@26 A B C D A ~@38 E@2 F ~@9>".pickRestart({
  A: "g3", B: "a#3@2 g3 d3", C: "d#3", D: "g3 f3", E: "f4/2", F: "e4",
})).s("gm_trombone").gain(0.2)

// other · trombone
const trombone_4 = note(`<
  ~@6 A@2 B C D@2 E F G@2 B C H I J K L M N O ~@6 P Q@2 I ~ R I R S T U V I R I R W R X Y I R I R S Z AA AB AC R I R W
  AD@2 AE@2 ~@3 S ~@2 AF ~@2 AG AH AI
>`.pickRestart({
  A: "[~@4 g3@2 ~ g3 d4@20 ~@4]/2", B: "d4@3 c4@3 b3@2", C: "a3@3 g3@3 f#3@2",
  D: "[~@4 g3@2 ~ g3 d4@10 c4@2 b3@2 c4@2 g4@4 f#4@4]/2", E: "d4@5 c4 b3 c4", F: "g3 a3",
  G: "[a3@6 b3 ~ b3@16 ~@4 g3@4]/2", H: "d#4@4 a#3@4 f4@6 d#4 d4", I: "a#3", J: "a#3@4 f4@4 g4@6 f4 g4", K: "g#4",
  L: "c3@4 g#3 g3 ~ g#3 a#3@6 g#3 a#3", M: "c4@2 c#4@2 d#4@8 d#4 f4 ~ g4", N: "g#4@6 g4 f4 d#4@4 g#3@4",
  O: "d#4@6 c#4 b3 a#3@8", P: "~@3 g#3 g3@4", Q: "c4", R: "~ g#3 a#3 c4", S: "c#4", T: "~ a#3 c4 c#4", U: "d#4",
  V: "~ a#3 c4 g3", W: "g3", X: "f3", Y: "~@2 c#4 c4", Z: "~@4 f3@2 ~ f3 c4@6 c4 c#4",
  AA: "d#4@6 g#4 ~ d#4@4 c4@2 c#4@2", AB: "d#4@14 c#4 c4", AC: "a#3@6 d#3 ~ d#3@8", AD: "c4/2",
  AE: "[a#3@6 ~ c4@4 a#3@3 c4@2]/2", AF: "~@4 b3 [a3,a#3] g#3 [f#3,g3] f3 [d#3,e3] d3 [c3,c#3] b2 ~@3",
  AG: "b4 a#4 g#4 f#4 b4 a#4 g#4 f#4 b3 c#4 d#4 e4 f#4 g4 g#4 a#4", AH: "b3@2 ~@2 b3@2 ~@4 b3@2 ~ b3!2 ~", AI: "b3 ~@7",
})).s("gm_trombone").gain(0.45)

// other · trombone · soft notes
const trombone_soft_2 = note("<~@7 A ~@18 B C D E B F G ~@36 H@2 I ~@9>".pickRestart({
  A: "~@6 b3 c4", B: "d#3", C: "g3@2 d#3 a#2", D: "c3", E: "d#3 d3", F: "g3!2", G: "d#3@3 ~@5", H: "g#3/2", I: "b3",
})).s("gm_trombone").gain(0.2)

// other · trombone
const trombone_5 = note(`<
  ~@2 A ~ A ~ B ~ B ~ A ~ A C D ~ D ~ E F G H I J K L ~@5 M N O@2 P ~ Q@2 R@2 S T U@2 T V O ~ W X Y@2 T V F V S T U@2 Z
  AA F AB AC@2 AD@2 ~@3 AE ~@2 AF AG ~ AH AI AJ
>`.pickRestart({
  A: "c4 g3 c4 d4@5", B: "b3 e3 b3 d4@5", C: "~ g4 d4 b3 ~ g4 d4 b3", D: "b3 e3 b3 e4@5", E: "g3 a3", F: "a#3",
  G: "f3 a#3", H: "c4@4 c4 a#3 g#3 g3", I: "c4 f4 c4@2", J: "d#4", K: "~@4 f4 d#4 ~ c#4 g#3@8", L: "g#3@2 a#3!2",
  M: "d#3!2", N: "d#3@3 g#3 d#3@4", O: "f3", P: "f#3", Q: "g#3/2", R: "f3/2", S: "d#3@3 g3", T: "g#3", U: "d#3/2",
  V: "~@2 d#3!3 ~@3 d#3 ~ d#3 ~@3 d#3 ~", W: "g#3@3 f3", X: "g#3 ~", Y: "[g3@7 g3]/2", Z: "c#4",
  AA: "~@2 d#4!3 ~@3 d#4 ~ d#4 ~@3 d#4 ~", AB: "e4", AC: "f4/2", AD: "[g3@6 ~ c3@4 c#3@3 d#3@2]/2", AE: "f#4",
  AF: "b3@4 b3 f#3 ~ b3 c#4@3 g#3@2 c#4@3", AG: "[d3,d4]@4 [d3,d4] [a2,a3] ~ [d3,d4] [e3,e4]@3 [b2,b3]@2 [e3,e4]@3",
  AH: "b3 a#3 g#3 f#3 b3 a#3 g#3 f#3 b2 c#3 d#3 e3 f#3 g3 g#3 a#3", AI: "b3@2 ~@2 b3@2 ~@4 b3@2 ~ b3!2 ~", AJ: "b3 ~@7",
})).s("gm_trombone").gain(0.4)

// other · trombone · soft notes
const trombone_soft_3 = note("<~@26 A B C D E ~@38 F@2 G ~@9>".pickRestart({
  A: "a#2", B: "g3@2 d#3 a#2", C: "g#2", D: "a#2!2", E: "c3", F: "f3/2", G: "e3",
})).s("gm_trombone").gain(0.2)

// other · trombone
const trombone_6 = note(`<
  A@6 B@4 A@4 B@4 C D E F G H E I J K L K M K N O P Q R S@2 T@2 S@2 U@2 S@2 Q V W@2 U@2 Q X T@2 Y Z AA AB X AC AD V W@2
  AE@2 AF@2 AG AH ~@3 AI AJ@2 AK AL
>`.pickRestart({
  A: "c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4 ~", B: "b3 ~ b3 ~ b3 ~ b3 ~ b3 ~ b3 ~ b3 ~ b3 ~", C: "d#3",
  D: "d3@3 c3 d3 d#3 f3 d3", E: "c#3 c3", F: "f3@3 e3 f3 g3 g#3@2", G: "f3 e3", H: "d#3@6 d#3 d3", I: "b2 a#2",
  J: "~@4 a#2 ~@3 a#2 ~ a#2 ~@3 a#2 ~", K: "~@2 a#2 ~ a#2 ~@3 a#2 ~ a#2 ~@3 a#2 ~",
  L: "~@2 g#2 ~ g#2 ~@3 g#2 ~ g#2 ~@3 g#2 ~", M: "~@2 c3@2 c3 ~@3 c3 ~ c3 ~@3 c3 ~",
  N: "~@2 c3 ~ c3 ~@3 a#2 ~ a#2 ~@3 a#2 ~", O: "a#2", P: "c3", Q: "c#3", R: "a#3@6 a#3 a3 g#3@8", S: "g#3/2",
  T: "c#3/2", U: "g3/2", V: "c4", W: "c4/2", X: "g#3", Y: "~@4 f2@2 ~ f2 c3@6 c3 c#3",
  Z: "d#3@6 g#3 ~ d#3@4 c3@2 c#3@2", AA: "d#3@14 c#3 c3", AB: "a#2@6 a#2 ~ d#3@8",
  AC: "~@2 d#3!3 ~@3 d#3 ~ d#3 ~@3 d#3 ~", AD: "f3", AE: "[d#3@6 ~ c3@4 a#2@3 c3@2]/2", AF: "g#2/2", AG: "b2",
  AH: "c#4", AI: "~@4 d#3 [c#3,d3] c3 [a#2,b2] a2 [g2,g#2] f#2 [e2,f2] d#2 ~@3", AJ: "[~@6 b3!2 b3@24]/2",
  AK: "f#3@2 ~@2 f#3@2 ~@4 f#3@2 ~ f#3!2 ~", AL: "b2@2 ~@2 b2!3 ~ b2@2 ~@6",
})).s("gm_trombone").gain(0.25)

// bass · trombone · "Bass Trombone"
const bass = note(`<
  A B A B A B C D C D A B A B E F E F G H I J K L I M N O P Q N O R S@2 T U V@2 W@2 X@2 Y@2 V@2 W Z AA@2 AB@2 V@2 W@2
  X@2 Y@2 V@2 W Z AC@2 AD@2 V@2 AE AF AG AH AG AH AI@2 AJ AK
>`.pickRestart({
  A: "[c2,c3] ~@2 [c2,c3] ~@4", B: "[c2,c3]@2 ~@4 [c2,c3]@2 ~@6 [g1,g2] ~", C: "[b1,b2] ~@2 [b1,b2] ~@4",
  D: "[b1,b2]@2 ~@4 [b1,b2]@2 ~@6 [e1,e2] ~", E: "[e2,e3] ~@2 [e2,e3] ~@4", F: "[e2,e3]@2 ~@4 [e2,e3]@2 ~@6 [b1,b2] ~",
  G: "d#2", H: "d2@3 c2 d2 d#2 f2 d2", I: "c#2 c2", J: "f2@3 e2 f2 g2 g#2@2", K: "f2 e2", L: "d#2@6 d#2 d2",
  M: "d#2@6 c#2 b1 a#1@8", N: "[a#2,d#3] ~@15", O: "[a#2,d#3] ~@5 [a#2,d#3] ~@5 [a#2,d#3] ~@3", P: "[d#2,g#2] ~@15",
  Q: "[d#2,a#2] ~@5 [d#2,a#2] ~@5 [d2,a#2] ~@3", R: "[g#2,c3] ~@5 [g2,a#2] ~@9", S: "f2", T: "f#2@3 f#2@3 f#2@2",
  U: "[f#1,f#2]@2 ~ [g#1,g#2]@2 [a#1,a#2]@2 ~ [g#1,g#2]@2 ~ [a#1,a#2]@2 [c2,c3]@2 ~", // F# G# A# G# A# C
  V: "[c#2,c#3] ~@2 [c#2,c#3] ~@2 [c#2,c#3] ~", W: "[a#1,a#2] ~@2 [a#1,a#2] ~@2 [a#1,a#2] ~",
  X: "[g#1,g#2] ~@2 [g#1,g#2] ~@2 [g#1,g#2] ~", Y: "[g1,g2] ~@2 [g1,g2] ~@2 [g1,g2] ~",
  Z: "[c2,c3] ~@2 [c2,c3] ~@2 [c2,c3] ~", AA: "[f2,c3] ~@2 [f2,c3] ~@2 [f2,c3] ~", AB: "d#2 ~@2 d#2 ~@2 d#2 ~",
  AC: "[f1,f2,c3] ~@2 [f1,f2,c3] ~@2 [f1,f2,c3] ~", // F5
  AD: "[[g1,g2] ~@2 [g1,g2] ~@2 [g1,g2] [g#1,g#2]@4 [a#1,a#2]@3 [c2,c3]@2]/2", AE: "[e2,e3] ~@2 [e2,e3] ~@2 [e2,e3] ~",
  AF: "[f#2,f#3] ~@2 [f#2,f#3] ~@2 [f#2,f#3] ~", AG: "b2@4 b2 f#2 ~ b2 c#3@3 g#2@2 c#3@3",
  AH: "[d2,d3]@4 [d2,d3] [a1,a2] ~ [d2,d3] [e2,e3]@3 [b1,b2]@2 [e2,e3]@3", AI: "[~@6 [b1,b2]!2 [b1,b2]@24]/2",
  AJ: "b2@2 ~@2 b2@2 ~@4 b2@2 ~ b2!2 ~", AK: "b2@2 ~@2 [b1,b2]!3 ~ [b1,b2]@2 ~@6",
})).s("gm_trombone").gain(0.4)

stack(
  trombone, trombone_2, trombone_3, trombone_soft, trombone_4, trombone_soft_2, trombone_5, trombone_soft_3, trombone_6,
  bass
)

More by Yasunori Nishiki