Strudelify

Sonic The Hedgehog Boss Theme Ochestra Remix

Masato Nakamura

KeyG majorTempo110 bpm
0:00/0:00
// Sonic The Hedgehog Boss Theme Ochestra Remix — Masato Nakamura
// 110 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/4183091; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 129 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(110/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.

// chords · timpani · "Violins"
const timpani = note(`<
  A B C D E B C D E F G H I J K L M B C D E B C D E F G H I J K L M B C D E B C D E F G H I J K L M B C D E B C D E F G
  H I J K L M B C D E B C D E F G H I J K L M B C D E B C D E F G H I J K L M B C D E B C D E F G H I J K L M B C D E B
  C D E F G H I J K L M
>`.pickRestart({
  A: "f#5@3 ~@3 f#5@3 ~@3 f#5@3 ~@3 [f#3,f#5]@2 f#3@2 f#3@2", // F#
  B: "b5@2 ~ b2 c6@2 d3 ~@2 d3 ~@2 c#3 ~@2 c#3 ~@2 c3 ~@2 c3 ~@2, b2 ~ a5@2 ~@2 b5@18",
  C: "~@3 f#3 [b3,b5]@2 [a3,c#6]@2, b2@3 ~@5, ~ f#5 ~@2", D: "[g2,g3]!2 ~ [d2,d3] [g2,g3]!2 ~ [f#2,f#3], d6",
  E: "[e2,e3]!2 ~ [b2,b3] [e2,e3]!2 ~ [b2,b3], e6", F: "b5 a5 c6 b5 ~ c6 b3@3 a3@3, b2@4 a5 ~ b5@6, ~@3 f#3 ~@4",
  G: "g2 [g2,f#5] [g2,b5] [g2,c#6]", H: "e2!4, d6", I: "b2@3 f#3 b3@2 a3@2, g5",
  J: "[g2,g3]!2 ~ [d2,d3] [g2,g3]!2 ~ [f#2,f#3], ~ f#5 b5 c#6", K: "[e2,e3]!2 ~ [b2,b3] [e2,e3]!2 ~ [b2,b3], d6",
  L: "b2 ~@2 b2 ~@2 d3 ~@2 d3 ~@2 c#3 ~@2 c#3 ~@2 c3 ~@2 c3 ~@2, e6 f6", M: "f#2 f#3 f#2 f#3 f#2 f#3 g3 f#3, f#6",
})).s("gm_timpani").gain(0.4)

// other · string ensemble 1 · "Violins"
const string_ensemble_1 = note(`<
  ~ A B@2 C A B@2 C D E F C ~@4 A B@2 C A B@2 C D E F C ~@4 A B@2 C A B@2 C D E F C ~@4 A B@2 C A B@2 C D E F C ~@4 A
  B@2 C A B@2 C D E F C ~@4 A B@2 C A B@2 C D E F C ~@4 A B@2 C A B@2 C D E F C ~@4 A B@2 C A B@2 C D E F C ~@4
>`.pickRestart({
  A: "~@5 f#4 b4 c#5", B: "d5/2", C: "e5", D: "f#4 f#5 f#4 f#5 f#4 f#5 g5 f#5", E: "b5", F: "d5",
})).s("gm_string_ensemble_1").gain(0.3)

// other · string ensemble 1 · "Violoncellos"
const string_ensemble_1_2 = note(`<
  A B C D E B C D E C F G C D E B H B C D E B C D E C F G C D E B H B C D E B C D E C F G C D E B H B C D E B C D E C F
  G C D E B H B C D E B C D E C F G C D E B H B C D E B C D E C F G C D E B H B C D E B C D E C F G C D E B H B C D E B
  C D E C F G C D E B H
>`.pickRestart({
  A: "f#2 f#3 f#2 f#3 f#2 f#3 f#2 f#3", B: "b2 ~@2 b2 ~@2 d3 ~@2 d3 ~@2 c#3 ~@2 c#3 ~@2 c3 ~@2 c3 ~@2",
  C: "b2@3 f#3 b3@2 a3@2", D: "[g2,g3]!2 ~ [d2,d3] [g2,g3]!2 ~ [f#2,f#3]", E: "[e2,e3]!2 ~ [b2,b3] [e2,e3]!2 ~ [b2,b3]",
  F: "g3", G: "e3", H: "f#2 f#3 f#2 f#3 f#2 f#3 g3 f#3",
})).s("gm_string_ensemble_1").gain(0.4)

// bass · string ensemble 1 · "Contrabasses"
const bass = note(`<
  A B C D E B C D E C F G H D E B I B C D E B C D E C F G H D E B I B C D E B C D E C F G H D E B I B C D E B C D E C F
  G H D E B I B C D E B C D E C F G H D E B I B C D E B C D E C F G H D E B I B C D E B C D E C F G H D E B I B C D E B
  C D E C F G H D E B I
>`.pickRestart({
  A: "f#1 ~ f#1 ~ f#1 ~ f#1 ~", B: "b1 ~@2 b1 ~@2 d2 ~@2 d2 ~@2 c#2 ~@2 c#2 ~@2 c2 ~@2 c2 ~@2", C: "b1@3 f#2 b2@2 a2@2",
  D: "[g1,g2]!2 ~ d2 [g1,g2]!2 ~ [f#1,f#2]", E: "[e1,e2]!2 ~ [b1,b2] [e1,e2]!2 ~ [b1,b2]", F: "g2", G: "e2",
  H: "b2@3 f#3 b3@2 a3@2", I: "a#1",
})).s("gm_string_ensemble_1").gain(0.4)

// other · tubular bells
const tubular_bells = note(`<
  ~ A B C D A B C@2 A B E F A B G H A B C D A B C@2 A B E F A B G H A B C D A B C@2 A B E F A B G H A B C D A B C@2 A B
  E F A B G H A B C D A B C@2 A B E F A B G H A B C D A B C@2 A B E F A B G H A B C D A B C@2 A B E F A B G H A B C D A
  B C@2 A B E F A B G H
>`.pickRestart({
  A: "b4", B: "d5", C: "d4", D: "e4", E: "c#5", F: "g4", G: "e5", H: "f#4",
})).s("gm_tubular_bells").gain(0.3)

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

stack(timpani, string_ensemble_1, string_ensemble_1_2, bass, tubular_bells, snare)

More by Masato Nakamura