Strudelify

Megalovania (Undertale) for Clarinet and Piano

Toby Fox

KeyG majorTempo120 bpm
0:00/0:00
// Megalovania (Undertale) for Clarinet and Piano — Toby Fox
// 120 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5844533; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 149 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(120/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once.
// 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(`<
  ~@4 A B C D E F G H E F G I J K L M N O P Q R S T U V W X Y R S T U V W X Y Z AA AB@2 Z AA AC@2 AD AE AF@2 AD AE AG@2
  AH AI AJ AK AH AI AL@2 AH AI AJ AK AH AI AL@2 ~@10 A B C D E F G H E F G I J K L M N O P Q R S T U V W X Y Z AA AB@2 Z
  AA AC@2 AD AE AF@2 AD AE AG@2 AH AI AJ AK AH AI AL@2 AH AI AJ AK AH AI AL@2 ~@7
>`.pickRestart({
  A: "d3 ~ d3 ~ d3!2 ~ d3 ~ d3 ~ d3!3 d3@2, ~ d4@12 ~@3", B: "c3 ~ c3 ~ c3!2 ~ c3 ~ c3 ~ c3!3 c3@2, ~ c4@7",
  C: "b2 ~ b2 ~ b2!2 ~ b2 ~ b2 ~ b2!3 b2@2, ~ b3@7", D: "a#2 ~ a#2 ~ a#2!2 ~ c3 ~ c3 ~ c3!3 c3@2, ~@2 a#3@5 c4@9",
  E: "[d2,d3,d4] d4 [d2,d3,d5] ~ [d2,d3,a4] [d2,d3] ~ [d2,d3,g#4] ~ [d2,d3,g4] ~ [d2,d3]!2 [d2,d3,d4] [d2,d3,f4] [d3,g4], ~@11 f4@2 ~@3", // D D5 D Ddim G5 D Dm G5
  F: "[c2,c3,c4] c4 [c2,c3,d5] ~ [c2,c3,a4] [c2,c3] ~ [c2,c3,g#4] ~ [c2,c3,g4] ~ [c2,c3]!2 [c2,c3,d4] f4 g4, ~@11 f4@2 ~ [c2,c3]@2", // C Csus2 F C Fm C5 C Csus2 …
  G: "[b1,b2,b3] b3 [b1,b2,d5] ~ [b1,b2,a4] [b1,b2] ~ [b1,b2,g#4] ~ [b1,b2,g4] ~ [b1,b2]!2 [b1,b2,d4] f4 g4, ~@11 f4@2 ~ [b1,b2]@2", // B Bm B7 B E Em B Bm …
  H: "[a#1,a#2,a#3] a#3 [a#1,a#2,d5] ~ [a#1,a#2,a4] [a#1,a#2] ~ [c2,c3,g#4] ~ [c2,c3,g4] ~ [c2,c3]!2 [c2,c3,d4] f4 g4, ~@11 f4@2 ~ [c2,c3]@2", // A# A#maj7 A# Fm C5 C Csus2 C
  I: "[a#1,a#2,a#3] a#3 [a#1,a#2,d5] ~ [a#1,a#2,a4] [a#1,a#2] ~ [c2,c3,g#4] ~ [c2,c3,g4] ~ [c2,c3]!2 [c2,c3,d4] [c2,c3]@2, ~@11 f4@2 ~@3", // A# A#maj7 A# Fm C5 C Csus2 C
  J: "d3 ~ d3 ~ d3!2 ~ d3 ~ d3 ~ d3!2 ~ d4@2, ~@13 d3@3", K: "c3 ~ c3 ~ c3!2 ~ c3 ~ c3 ~ c3!3 c4 c3",
  L: "b2 ~ b2 ~ b2!2 ~ b2 ~ b2 ~ b2!2 ~ b3@2, ~@13 b2@3", M: "a#2 ~ a#2 ~ a#2!2 ~ c3 ~ c3 ~ c3!3 c4 c3, ~@11 g6@5",
  N: "d4!2 [d5,f5] f5 a4 f5 ~ [g#4,e5] f5 [g4,d5] ~ f4@2 d4 f4 g4, d3, f5@2 ~@9 d5@5", // Dm C#m G5
  O: "c4!2 f5@2 [a4,f5] f5 ~ [g#4,d5] ~ [g4,f5] ~ [f4,e5]@2 [d4,d5] f4 g4, c3, f5@2 d5 ~@11 c5@2", // Dm G#dim G7 Fmaj7 D
  P: "b3!2 d5 ~ a4 ~@2 g#4 ~ g4 ~ f4@2 d4 f4 g4, b2, f5 ~@3 e5 ~@3",
  Q: "a#3!2 [a#4,d5] c5 a4 d5 ~@3 g4 ~ f4@2 d4 f4 g4, a#2@7 [c3,e5]@9, g4 ~@7", // A# C
  R: "[a#1,a#2]@2 [a#1,a#2] ~ [a#1,a#2]!2 ~ [a#1,a#2] d5 [a#1,a#2,a#4] d5 [a#1,a#2,d5]!3 d5 a#4, ~@7 a#2", // A#
  S: "f5 [d5,e5] [c2,c3] ~ [c2,c3]!2 ~ [c2,c3] ~ [c2,c3] ~ [c2,c3] [c2,c3,e5] [c2,c3] c3@2, [c2,c3] d5 e5@4 ~@2", // Dsus2 C
  T: "[d2,d3]@2 [d2,d3] ~ [d2,d3]!2 ~ [d2,d3] ~ [d2,d3] ~ [d2,d3]!3 d3@2", // D
  U: "[c#2,c#3]@2 [c#2,c#3] ~ [c#2,c#3]!2 ~ [d#2,d#3]@2 [d#2,d#3] ~ [d#2,d#3]!3 d#3@2", // C# D#
  V: "[a#1,a#2,f4]@2 [a#1,a#2] ~ [a#1,a#2]!2 ~ [a#1,a#2] ~ [a#1,a#2] ~ [a#1,a#2]!3 a#2@2, ~ g4 a4!2 g4@2 f4@2", // A#5 A#
  W: "[c2,c3]@2 [c2,c3] ~ [c2,c3]!2 ~ [c2,c3] ~ [c2,c3] ~ [c2,c3]!3 c3@2, g4 a4 c5 a4", // C
  X: "[d2,d3]@2 [d2,d3] ~ [d2,d3]!2 ~ [d2,d3] ~ [d2,d3] ~ [d2,d3]!3 d3@2, d5", // D
  Y: "[c#2,c#3]@2 [c#2,c#3] ~ [c#2,c#3]!2 ~@3 [d#2,d#3] ~ [d#2,d#3]!3 d#3@2, g#4@7 [d#2,d#3]@2 ~@7, ~ d5 [a#4,d5]@2", // C# D# A#
  Z: "[a#1,a#2] ~ [a#1,a#2] ~ [a#1,a#2]!2 ~ [a#1,a#2] ~ [a#1,a#2] ~ [a#1,a#2]!4 ~", // A#
  AA: "[c2,c3] ~ [c2,c3] ~ [c2,c3]!2 ~ [c2,c3] ~ [c2,c3] ~ [c2,c3]!4 ~", // C
  AB: "[b1,b2] ~ [b1,b2] ~ [b1,b2]!2 ~ [b1,b2] ~ [b1,b2] ~ [b1,b2]!4 ~", // B
  AC: "[d2,d3] ~ [d2,d3] ~ [d2,d3]!2 ~ [d2,d3] ~ [d2,d3] ~ [d2,d3]!4 ~", // D
  AD: "~ d3 d4 ~ a3 ~@2 g#3 ~ g3 ~ f3@2 d3 f3 g3, a#1", AE: "c3!2 d4 ~ a3 ~@2 g#3 ~ g3 ~ f3@2 d3 f3 g3, c2",
  AF: "b2!2 d4 ~ a3 ~@2 g#3 ~ g3 ~ f3@2 d3 f3 g3, b1",
  AG: "d3!2 [d4,f4] ~ [a3,e4] ~@2 [g#3,c4] ~ [g3,e4] ~ f3@2 d3 f3 g3, d2, ~@11 d4@5", // Dm A5 G# C
  AH: "[a#1,a#2]@2 [a#1,a#2]@2 [a#1,a#2]!2 ~ [a#1,a#2] ~ [a#1,a#2] ~ [a#1,a#2]!3 a#2@2", // A#
  AI: "[c2,c3]@2 [c2,c3]@2 [c2,c3]!2 ~ [c2,c3] ~ [c2,c3] ~ [c2,c3]!3 c3 c2", // C
  AJ: "[d2,d3]@2 [d2,d3]@2 [d2,d3]!2 ~ [c#2,c#3] ~ [c#2,c#3] ~ [c#2,c#3]!3 c#3@2", // D C#
  AK: "[c2,c3]@2 [c2,c3]@2 [c2,c3]!2 ~ [b1,b2] ~ [b1,b2] ~ [b1,b2]!3 b2@2", // C B
  AL: "[d2,d3]@2 [d2,d3]@2 [d2,d3]!2 ~ [d2,d3] ~ [d2,d3] ~ [d2,d3]!3 d3@2", // D
})).s("gm_piano").gain(0.3)

stack(piano)

More by Toby Fox