Strudelify

Megalovania

Toby Fox

KeyD minorTempo120 bpm
0:00/0:00
// Megalovania — Toby Fox
// 120 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/1702336; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 74 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 part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// other · electric guitar clean · "Electric Guitar 2"
const electric_guitar_clean = note(`<
  ~@8 A B C D A B C D ~@4 A B C D E F ~@2 G H I J E F ~@2 G H I J ~@8 D B A@2 D B A@2 ~@18
>`.pickRestart({
  A: "d3!2 d4 ~ a3 ~@2 ab3 ~ g3 ~ f3@2 d3 f3 g3", B: "c3!2 d4 ~ a3 ~@2 ab3 ~ g3 ~ f3@2 d3 f3 g3",
  C: "b2!2 d4 ~ a3 ~@2 ab3 ~ g3 ~ f3@2 d3 f3 g3", D: "bb2!2 d4 ~ a3 ~@2 ab3 ~ g3 ~ f3@2 d3 f3 g3",
  E: "~@8 d3 bb2 d3 e3 f3 e3 d3 bb2", F: "f3 [bb2,e3] d3@2 e3@8 ~@4", G: "f2 g2 a2 a3 g3@2 f3@2", H: "g3 a3 c4 a3",
  I: "d4", J: "ab3 a3 bb3@2",
})).s("gm_electric_guitar_clean").gain(0.4)

// bass · electric bass finger · "Electric Bass [Tablature]"
const bass = note(`<
  ~@4 A B C D E F G H E F G H E F G H E F G H I F E J I F E J I F E J I F E J I F G@2 I F E@2 I F G@2 I F E@2 I F K L I
  F E@2 I F K L I F E@2 ~@2
>`.pickRestart({
  A: "d2 ~ d2 ~ d2!2 ~ d2 ~ d2 ~ d2!3 d2@2", B: "c2 ~ c2 ~ c2!2 ~ c2 ~ c2 ~ c2!3 c2@2",
  C: "b1 ~ b1 ~ b1!2 ~ b1 ~ b1 ~ b1!3 b1@2", D: "bb1 ~ bb1 ~ bb1!2 ~ c2 ~ c2 ~ c2!3 c2@2",
  E: "d2@2 d2@2 d2 d2@2 d2@2 d2@2 d2!3 d2@2", F: "c2@2 c2@2 c2 c2@2 c2@2 c2@2 c2!3 c2@2",
  G: "b1@2 b1@2 b1 b1@2 b1@2 b1@2 b1!3 b1@2", H: "bb1@2 bb1@2 bb1 bb1@2 c2@2 c2@2 c2!3 c2@2",
  I: "bb1@2 bb1@2 bb1 bb1@2 bb1@2 bb1@2 bb1!3 bb1@2", J: "db2@2 db2@2 db2 db2@2 eb2@2 eb2@2 eb2!3 eb2@2",
  K: "d2@2 d2@2 d2 d2@2 db2@2 db2@2 db2!3 db2@2", L: "c2@2 c2@2 c2 c2@2 b1@2 b1@2 b1!3 b1@2",
})).s("gm_electric_bass_finger").gain(0.35)

// drums · snare
const snare = s("sd").struct(`<
  ~@8 A@3 B A@7 B A@7 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B ~@2
>`.pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~@2 x ~@3 x ~ x ~ x!2 ~ x!2 ~",
})).gain(0.56)

stack(electric_guitar_clean, bass, snare)

More by Toby Fox