Strudelify

chocobo theme

Mubsi

KeyG majorTempo150 bpm
0:00/0:00
// chocobo theme — Mubsi
// 150 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5929782; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 81 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(150/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 · piano
const piano = note(`<
  ~@8 A B A C A B A C A B A D A B A D E F G H E F I J K L K L K M K L N O P O N O Q R ~@7 A S T S U S T S V W X Y Z W X
  Y Z AA AB AC AD AA AB AE AF AG
>`.pickRestart({
  A: "g2@2 ~@8 d2 ~ f2 ~ d2 ~", B: "g2 ~ g2 ~ a#2 ~ b2 ~ g2 ~@3 d2 ~@3", C: "g2 ~@7",
  D: "g2 ~ g2 ~ a#2 ~ b2 ~ g2 ~ b2 ~ g2 ~ b2 ~", E: "c3 ~@5 c#2 ~ d2 ~@5 f#2 ~",
  F: "g2 ~ b2 ~ f#2@2 ~@2 e2 ~ g2 ~ d2@2 ~@2", G: "c3 ~@5 c#2 ~ d2 ~@5 g2 ~",
  H: "g2 ~ g2 ~ a2 ~ a#2 ~ b2 ~ g2 ~ e2 ~ d2 ~", I: "d2 ~ d2 ~@5 d2 ~ d2 ~@5", J: "d3 ~ c3@2 ~@2 b2 ~ a2 ~@3 d3@2 ~@2",
  K: "~@4 [d3,d4,b4]@2 ~@4 [c3,c4,a4]@2 ~@2 [c3,c4,a4] ~", // G F
  L: "~@2 [d3,d4,b4] ~@3 [d3,d4,b4] ~ [c3,c4,a4]@2 ~@2 [c3,c4,a4]@2 ~@2", // G F
  M: "~@2 [d3,d4,b4] ~@3 [d3,d4,b4] ~ [c3,c4,a4]@2 ~@2 c4@4, ~@6 c3 ~", // G F
  N: "~@4 [e3,e4,e5]@2 ~@4 [d3,d4,d5]@2 ~@2 [d3,d4,d5] ~", // E D
  O: "~@2 [e3,e4,e5] ~@3 [e3,e4,e5] ~ [d3,d4,d5]@2 ~@2 [d3,d4,d5]@2 ~@2", // E D
  P: "~@4 [f#3,f#4,f#5]@2 ~@4 [e3,e4,e5]@2 ~@2 [e3,e4,e5] ~", Q: "~@4 [f3,f4,f5]@2 ~@4 [e3,e4,e5]@2 ~@2 [e3,e4,e5] ~",
  R: "~@2 [c3,c4,c5] ~@3 [c3,c4,c5] ~ [d3,d4,a5]@2 ~@2 [d3,d4,a5]@2 ~@2", // C D5
  S: "g2@2 ~@2 [d4,g4]@2 ~@4 [c4,f4]@2 f2 ~ d2 ~, ~@10 d2 ~@5", // G5 F5
  T: "g2 ~ [g2,d4,g4] ~ a#2 ~ b2 ~ [c4,f4]@2 ~@2 [c4,f4]@2 ~@2, ~@8 g2 ~@3 d2 ~@3", // G5 F5
  U: "[g2,d4,g4]@2 ~@8 d2 ~ f2 ~ d2 ~", V: "[g2,d4,g4,d5] ~@7",
  W: "[g2,d5]@2 ~@2 b4 ~ g4 ~ f4 ~ [d2,d5] ~ [f2,b4] ~ [d2,g4] ~", // G5 D Fdim G5
  X: "b4@2 g2 ~ g4@2 b2 ~ g2 ~@3 d2 ~ a4 ~, g2 ~@3 a#2 ~@3 b4@6 ~@2",
  Y: "g2@2 g4 a4 g4 ~ f4 ~ g4@2 d2 ~ f2 ~ [d2,f4] ~, g4 ~@15", // Dm
  Z: "[g2,g4] ~ [g2,g4] b4 [a#2,d5] ~ [b2,e5] ~ g2 ~ b2 ~ g2 ~ b2 ~, ~@2 f5 ~", // G A# E5
  AA: "e5@2 ~@2 c5 ~ [c#2,a4] ~ [d2,f#4] ~ a4 ~ c5 ~ [f#2,e5] ~, c3 ~@15", // F#m D F#7
  AB: "d5@2 b2 ~ [f#2,g5]@2 ~@2 d5@2 g2 ~ d2@2 b4 ~, g2 ~@7 e2 ~@7", // Gmaj7
  AC: "c5@2 ~@2 a4 ~ [c#2,f#4] ~ [d2,d4] ~ f#4 ~ a4 ~ [g2,c5] ~, c3 ~@15", // F#5 D C5
  AD: "[g2,b4] ~ [g2,b4] c5 [a2,b4] ~ [a#2,a4] ~ b4@2 g2 ~ e2 ~ d2 ~, ~@8 b2 ~@7", // G Asus2 A#maj7
  AE: "[d2,a4] ~ [d2,a4] b4 a4 ~ g4 ~ a4@2 d2 ~@3 g4 ~, ~@8 d2 ~@7", // D5
  AF: "[d3,a4] ~ a4 b4 c5 ~ [b2,d5] ~ e5@2 ~@2 [d3,f#5]@2 ~@2, ~@2 c3@2 ~@4 a2 ~@7", AG: "[g1,g5] ~@7",
})).s("gm_piano").gain(0.3)

// other · violin · "Viulu"
const violin = note(`<
  ~@4 A B A C A B A C D E@2 ~ F G F G F H F G I J K J I J L M N O P Q N O P Q R S T U R S V W ~@4 A B A C A B A C X Y Z
  ~ A B A B A B A B AA AB AC AB AA AB AD AE C
>`.pickRestart({
  A: "~@4 d4@2 ~@4 c4@2 ~@2 c4 ~", B: "~@2 d4 ~@3 d4 ~ c4@2 ~@2 c4@2 ~@2", C: "d4 ~@7",
  D: "d5@2 ~@2 b4 ~ g4 ~ d5@2 ~@2 b4 ~ g4 ~", E: "[d5@2 ~@2 b4 ~ g4 ~ d5@2 ~@2 b4 ~ g4@5 ~@13]/2",
  F: "~@4 b4@2 ~@4 a4@2 ~@2 a4 ~", G: "~@2 b4 ~@3 b4 ~ a4@2 ~@2 a4@2 ~@2", H: "~@2 b4 ~@3 b4 ~ a4@2 ~@6",
  I: "~@4 e5@2 ~@4 d5@2 ~@2 d5 ~", J: "~@2 e5 ~@3 e5 ~ d5@2 ~@2 d5@2 ~@2", K: "~@4 f#5@2 ~@4 e5@2 ~@2 e5 ~",
  L: "~@4 f5@2 ~@4 e5@2 ~@2 e5 ~", M: "~@2 c5 ~@3 c5 ~ a5@2 ~@2 a5@2 ~@2", N: "d5@2 ~@2 b4 ~ g4 ~ f4 ~ d5 ~ b4 ~ g4 ~",
  O: "b4@2 ~@2 g4@2 ~@2 b4@6 a4 ~", P: "g4 ~ g4 a4 g4 ~ f4 ~ g4@2 ~@4 f4 ~", Q: "g4 ~ g4 b4 d5 ~ e5 ~ f5@4 ~@4",
  R: "e5@2 ~@2 c5 ~ a4 ~ f#4 ~ a4 ~ c5 ~ e5 ~", S: "d5@2 ~@2 g5@2 ~@2 d5@3 ~@3 b4 ~",
  T: "c5@2 ~@2 a4 ~ f#4 ~ d4 ~ f#4 ~ a4 ~ c5 ~", U: "b4 ~ b4 c5 b4 ~ a4 ~ b4@2 ~@6",
  V: "a4 ~ a4 b4 a4 ~ g4 ~ a4@3 ~@3 g4 ~", W: "a4 ~ a4 b4 c5 ~ d5 ~ e5@2 ~@2 f#5@2 ~@2",
  X: "~@4 g4@2 ~@4 g4@2 ~@2 g4 ~", Y: "~@2 g4 ~@3 g4 ~ g4@2 ~@2 g4@2 ~@2", Z: "g4 ~@3",
  AA: "~@4 e4@2 ~@4 d4@2 ~@2 d4 ~", AB: "~@2 e4 ~@3 e4 ~ d4@2 ~@2 d4@2 ~@2", AC: "~@4 f#4@2 ~@4 e4@2 ~@2 e4 ~",
  AD: "~@4 f4@2 ~@4 e4@2 ~@2 e4 ~", AE: "~@2 c4 ~@3 c4 ~ d4@2 ~@2 d4@2 ~@2",
})).s("gm_violin").gain(0.3)

// other · cello · "Viulusello"
const cello = note(`<
  A B C D A B C D A B C D A B C D A B C E A B C E F G F H F G I J K L M N K L M N O P Q R O P S T A B C D A B C D A B C
  D A B C D A B C E A B C E F G F H F G I J U
>`.pickRestart({
  A: "g2@2 ~@2 b2 ~ g2 ~ f2 ~ a2@2 ~@2 a2 ~", B: "g2 ~ b2 ~ g2 ~ b2 ~ f2@2 ~@2 a2@2 ~@2",
  C: "g2@2 ~@2 b2 ~ g2 ~ f2 ~ a2 ~@3 a2 ~", D: "g2 ~@7", E: "g2 ~ b2 ~ g2 ~ b2 ~ f2@2 ~@6",
  F: "c3@2 ~@2 g3 ~ c3 ~ d3 ~ a3@2 ~@2 a3 ~", G: "g3 ~ b3 ~ g3 ~ b3 ~ f#3 ~ b3 ~ d3 ~ b3 ~",
  H: "g3 ~ b3 ~ g3 ~ b3 ~ f3 ~ b3 ~ d3 ~ b3 ~", I: "f3 ~ a3 ~ e3 ~ a3 ~ d3 ~ a3 ~ c3 ~ a3 ~",
  J: "a2 ~ e3 ~ a3 ~ g3 ~ f#3@2 ~@2 g3@2 ~@2", K: "d3@2 ~@2 b2 ~ g2 ~ f2 ~ d3 ~ b2 ~ g2 ~",
  L: "b2@2 ~@2 g2@2 ~@2 b2@6 a2 ~", M: "g2 ~ g2 a2 g2 ~ f2 ~ g2@2 ~@4 f2 ~", N: "g2 ~ g2 b2 d3 ~ e3 ~ f3@4 ~@4",
  O: "e3@2 ~@2 c3 ~ a2 ~ f#2 ~ a2 ~ c3 ~ e3 ~", P: "d3@2 ~@2 g3@2 ~@2 d3@3 ~@3 b2 ~",
  Q: "c3@2 ~@2 a2 ~ f#2 ~ d2 ~ f#2 ~ a2 ~ c3 ~", R: "b2 ~ b2 c3 b2 ~ a2 ~ b2@2 ~@6",
  S: "a2 ~ a2 b2 a2 ~ g2 ~ a2@3 ~@3 g2 ~", T: "a2 ~ a2 b2 c3 ~ d3 ~ e3@2 ~@2 f#3@2 ~@2", U: "g3 ~@7",
})).s("gm_cello").gain(0.3)

stack(piano, violin, cello)