Strudelify

the legend of zelda ocarina of time - songs of zelda

Koji Kondo

KeyG majorTempo150 bpm
0:00/0:00
// the legend of zelda ocarina of time - songs of zelda — Koji Kondo
// 150 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// 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/5865385; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 118 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. 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 · violin · "Violin I"
const violin = note(`<
  A B C D E D C F G H I J K H I L M N O P Q N R S Q T U T V W X Y Z AA AB AA AB AC AD ~ AE AF AG AH AI AJ AK AL AM AN AO
  AN AO AP AQ AR AS AT AM AT AM AU G AV AW AX@3 AY@2 ~@3 AZ@5 BA@3 BB@2 ~@8 BC@2 BD@7 BE@8 BF@2 BG@2 BH@2 BI@2 BJ@2
>`.pickRestart({
  A: "~@18 b4 c5 d5 [e5,f#5] g5 a5", B: "b5@2 ~ b3 ~ b3!3", C: "c4", D: "b3@2 ~ b3 ~ b3!3", E: "d4",
  F: "e4@2 ~ e4 ~ e4!3", G: "g4", H: "g4 d4 g4 g5", I: "f5@3 e5 d5 c5", J: "b4 ~ c5 d5@3 d5@6 d5 ~ e5 f5@3 f5@6",
  K: "g5 ~ a5 b5@3 b5@18", L: "c5 ~ d5 b4@3 b4@18", M: "a4 ~ b4 g4@3 g4@18", N: "g4 d4 g4 d5", O: "c5 a4 c5 f5",
  P: "d5", Q: "d5 ~ c5 b4 ~ a4 f5 ~ e5 d5 ~ c5 g5 ~ f5 e5 ~ d5 b5 ~ a5 g5 ~ f5", R: "c5@3 e5@6 e5 d5 c5",
  S: "b4 ~ c5 b4@3 [d4,b4]@18", T: "b5@6 d5@12 d5 ~ b5 c6 ~ d6", U: "c6 e5@3", V: "e6 a5@3",
  W: "d6@6 g5@12 d5 ~ g5 a5 ~ d6", X: "c6 f5@3", Y: "b5@6 f5@12 b4 ~ c#5 f5 ~ g#5", Z: "g5 f#5", AA: "~@2 b4!3 ~@3",
  AB: "~@2 c5!3 ~@3", AC: "~ b4!2 d#5!2 f#5!2 b5", AD: "~ b5 ~ a5 ~ g5 ~ a5", AE: "~ g5 ~ f#5 ~ e5 ~ f#5",
  AF: "g4@6 d4@6 d4@3 g4@3 g4 ~ a4 b4 ~ c5", AG: "d5@18 d5@3 c5 ~ b4", AH: "c5@2 g4 c5", AI: "c5@12 a4@6 c5@3 b4 ~ a4",
  AJ: "b4@2 d4 g4", AK: "g4@2 e4 g4", AL: "g4@18 g4@3 f#4 ~ e4", AM: "f#4", AN: "c5 g4 c5 g5", AO: "f#5",
  AP: "f#4 d4 f#4 a4", AQ: "g4 d4 g4 b4", AR: "c5 e4 g4 e5", AS: "[a4,g5] [a4,f#5]", AT: "g4@6 e4@12 g4@3 f#4 ~ e4",
  AU: "a4@6 f#4@12 a4@3 g4 ~ f#4", AV: "b4@6 g4@12 b4@3 a4 ~ g4", AW: "a4",
  AX: "[c5@7 g4@6 c5@7 g5@6 f#5@26 c5@7 g4@6 c5@7]/3", AY: "[g5@3 f#5@13 ~@8]/2",
  AZ: "[~@17 g5@13 d5@13 g5@13 d6@13 c6@19 b5@3 ~ a5@3 g5@13 d#5@12]/5",
  BA: "[~ d5@20 d5@6 e5@13 f#5@7 g5@6 f#5 g5@18]/3", BB: "[~ a5@3 g5@3 f#5@26 ~@15]/2",
  BC: "[~@2 g4@7 d4@6 d4@3 g4@3 ~@2 a4@2 b4@2 ~ d5@20, ~@22 g4@2 ~@3 c5@2 ~@19]/2",
  BD: "[d5@3 c5@2 ~ c5@13 g4@7 c5@6 c5@13 a4@7 c5@3 b4@2 ~ b4@13 d4@7 g4@7 g4@13 e4@6 g4@7 g4@19 g4@3 f#4@2 e4@2 f#4@26 g5@5, ~@5 b4@2 ~@50 a4@2 ~@109]/7",
  BE: "[~ d5@6 d5@3 g5@3 g5 a5 ~ b5 c6 ~ d6@18 d6@3 c6 b5 ~ c6@12 g5@6 c6@6 c6@12 a5@6 c6@3 b5 a5 ~ b5@12 d5@6 g5@6 g5@12 e5@6 g5@6 g5@18 g5@3 f#5 e5 ~ f#5@24 b4@5]/8",
  BF: "[~@4 b4@3 ~@3 b4@3 b4@3 b4@3 c5@24 b4@5]/2", BG: "[~@4 b4@3 ~@3 b4@3 b4@3 b4@3 d5@24 b4@5]/2",
  BH: "[~@4 b4@3 ~@3 b4@3 b4@3 b4@3 c5@24 e5@5]/2", BI: "[~@4 e5@3 ~@3 e5@3 e5@3 e5@3 [a#4,g5]@24 ~@5]/2",
  BJ: "[~@19 [b4,g5]@24 ~@5]/2", // Em
})).s("gm_violin").gain(0.3)

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

// other · pizzicato strings
const pizzicato_strings = note("<~@82 A@2 B C@2 D E@2 F ~@27>".pickRestart({
  A: "[~@9 c3@4 ~@3 e3@4 ~@2 g3@4 ~@3 c4@4 ~@2 d3@4 ~@3 a3@4 ~@2]/2", B: "~ d4@4 ~@2 f#4@4 ~@3 c3@4 ~@2 e3@4",
  C: "[~@3 g3@4 ~@2 c4@4 ~@3 d3@4 ~@2 a3@4 ~@3 d4@4 ~@2 f#4@4 ~@3 b3@4 ~@2]/2", D: "b3@4 ~@3 d4@4 ~@2 f#4@4 ~@3 b3@4",
  E: "[~@2 g3@4 ~@3 b3@4 ~@2 e4@4 ~@3 a3@4 ~@2 c4@4 ~@3 e4@4 ~@2 a4@4 ~@3]/2", F: "d3@4 ~@3 a3@4 ~@2 d4@4 ~@3 f#4@4",
})).s("gm_pizzicato_strings").gain(0.2)

// other · cello
const cello = note(`<
  ~ A@6 B C A B A B A B A B A B A B A B A B A B A B D E F E G H G H I J K E A B L D E M E@2 N@4 O P N Q N@4 O L N E R@7
  S@6 T@5 ~@8 U@3 V@6 W X Y Z AA AB AC AD AE@5 W AF AG AH@2
>`.pickRestart({
  A: "g2@2 ~ g2 ~ g2 g2@2", B: "f2@2 ~ f2 ~ f2 f2@2", C: "d#2@2 ~ d#2 ~ d#2 d#2@2", D: "d#3@2 ~ d#3 ~ d#3 d#3@2",
  E: "d3@2 ~ d3 ~ d3 d3@2", F: "c#3@2 ~ c#3 ~ c#3 c#3@2", G: "g2 d3 g3 d4!2 g2 g2@2", H: "g2 e3 c4 e4 e4@4",
  I: "f#2@2 ~ f#2 ~ b2 b2@2", J: "e3@2 ~ e3 ~ d3 d3@2", K: "c3@2 ~ c3 ~ c#3 c#3@2", L: "e3@2 ~ e3 ~ e3 e3@2",
  M: "a2@2 ~ a2 ~ a2 a2@2", N: "c3@2 ~ c3 ~ c3 c3@2", O: "b2@2 ~ b2 ~ b2 b2@2", P: "e3@2 ~ e3 ~ e3 d3@2",
  Q: "d3@2 ~ d3 ~ d3!3", R: "[c3@13 c3@13 c3@13 c3@13 c3@13 c3@13 c3@13 c3@13 b2@13 b2@13 e3@13 e3@7 d3@7 c3@11]/7",
  S: "[~@2 c3@13 d3@13 d3@13 g3@19 g3@7 f3@26 e3@19 e3@7 d#3@25]/6", T: "[~ d3@20 d3@6 a3@20 a3@6 d3@26 d3@26 ~@15]/5",
  U: "[~ g2@10 g2@3 f2@13 e3@9]/3", V: "[~@2 e3@6 d#3@20 d#3@6 d3@20 d3@7 a2@19 a2@7 d3@26 d3@26 g2@5]/6",
  W: "~@4 g2@3 ~@3 g2@3 g2@6 f2@5", X: "~@4 f2@3 ~@3 f2@3 f2@6 e3@5", Y: "~@4 e3@3 ~@3 e3@3 e3@6 d#3@5",
  Z: "~@4 d#3@3 ~@3 d#3@3 d#3@6 d3@5", AA: "~@4 d3@3 ~@3 d3@3 d3@6 a2@5", AB: "~@4 a2@3 ~@3 a2@3 a2@6 d3@5",
  AC: "~@4 d3@3 ~@3 d3@3 d3@6 d3@5", AD: "~@4 d3@3 ~@3 d3@3 d3@6 g2@5", AE: "~@4 g2@3 ~@3 g2@3 g2@6 g2@5",
  AF: "~@4 f2@3 ~@3 f2@3 f2@6 d#2@5", AG: "~@4 d#2@3 ~@3 d#2@3 d#2@6 ~@5", AH: "[~@19 g2@24 ~@5]/2",
})).s("gm_cello").gain(0.25)

// other · pizzicato strings
const pizzicato_strings_2 = note("<~@82 A@2 B C@2 D E@2 F ~@27>".pickRestart({
  A: "[~@9 c2@4 ~@3 c3@4 ~@2 e3@4 ~@3 g3@4 ~@2 c3@4 ~@3 f#3@4 ~@2]/2", B: "~ a3@4 ~@2 d4@4 ~@3 c2@4 ~@2 c3@4",
  C: "[~@3 e3@4 ~@2 g3@4 ~@3 c3@4 ~@2 f#3@4 ~@3 a3@4 ~@2 d4@4 ~@3 b2@4 ~@2]/2", D: "f#2@4 ~@3 b2@4 ~@2 d3@4 ~@3 e2@4",
  E: "[~@2 e3@4 ~@3 g3@4 ~@2 b3@4 ~@3 c2@4 ~@2 a2@4 ~@3 c3@4 ~@2 e3@4 ~@3]/2", F: "a2@4 ~@3 f#3@4 ~@2 a3@4 ~@3 d4@4",
})).s("gm_pizzicato_strings").gain(0.2)

stack(violin, viola, pizzicato_strings, cello, pizzicato_strings_2)

More by Koji Kondo