Strudelify

sonic the hedgehog 2 - metropolis zone

Misc Computer Games

KeyC majorTempo140 bpm
0:00/0:00
// sonic the hedgehog 2 - metropolis zone — Misc Computer Games
// 140 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5913524; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 54 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(140/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.

// chords · piano
const piano = note(`<
  ~@2 A B C D C E F G C H I J K L I J K M N O P Q N O Q R C D C E F G C H I J K L I J K M N O P Q N O Q R Q S
>`.pickRestart({
  A: "[f3,a#3] [g3,c4] [f3,a#3] [g3,c4] [f3,a#3] [g3,c4] [f3,a#3] [g3,c4]", // A#5 C5 A#5 C5 A#5 C5 A#5 C5
  B: "[f3,a#3] [g3,c4] [f3,a#3] [g3,c4] [f3,a#3] [g1,g3,c4] a1 b1", C: "c2!2 [c2,e4,g4] c2 [c2,d4,a4]!2 c2!2",
  D: "[c2,f4,c5]!2 c2!3 g1 a1 b1, ~@6 [c4,g4]@9 ~", E: "[c2,f4,c5]!2 c2!3 g1 a1 b1, ~@6 [e4,c5]@9 ~",
  F: "c2!2 [c2,e4,g4] c2 [c2,d4,a4]!2 c2!2, a#3@4 c4@11 ~", G: "[c2,f4,c5]!2 c2!3 g1 a1 b1, c4@6 [c4,g4]@9 ~",
  H: "[c2,f4,c5]!2 c2!3 [e2,e4] [d2,d4] [c2,c4], ~@3 [e4,c5]@2 ~@3", I: "c2!4 [c2,d4,a4]!2 c2!2, c4 [e4,g4] ~@2",
  J: "[c2,f4,c5]!2 c2!3 [g1,e4] [a1,f4] [b1,e4], ~@3 [c4,g4]@2 ~@3", K: "c2!4 [c2,d4,a4]!2 c2!2, g4 [e4,g4] c4 ~",
  L: "[c2,f4,c5]!2 c2!3 [g1,e4] [a1,d4] [b1,c4], ~@3 [e4,c5]@2 ~@3", M: "[c2,f4,c5]!2 c2!3 e2 d2 c2, ~@6 [e4,c5]@9 ~",
  N: "d5 c5 b4 a4 d5 c5 b4 a4 d5 c5 b4 a4 d5 c5 b4 a4, a1!8",
  O: "d5 c5 b4 a4 d5 c5 b4 a4 d5 c5 b4 a4 d5 c5 b4 a4, d2!4 a1!4",
  P: "[c2,c3,c5,g5,c6]@2 [c2,c3,c5,g5,c6]@2 g3 a#3 c4 d#4@3 c4@2 a#3 c4 [b1,b2,a#4,f5,a#5]@2", // C5 A#
  Q: "[c2,c3,c5,g5,c6]@2 [c2,c3,c5,g5,c6]@2 [g2,g3] [a#2,a#3] [c3,c4] [d#3,d#4]@3 [c3,c4]@2 [a#2,a#3] c4 [a#4,f5,a#5]@2, ~@13 c3@3", // C5 G A# C D# C A# A#5
  R: "g5 e5 f#5 d#5 f5 d5 e5 c#5 d#5 c5 d5 b4 c#5 a#4 c5 a4, c2 ~@3", S: "[c2,c3,c5,c6]!2 ~@6",
})).s("gm_piano").gain(0.4)

// drums · kick
const kick = s("bd").struct("<[x ~@2 x!2 ~@2 x]!52 ~@2>").gain(0.23)

// drums · rim
const rim = s("rim").struct(`<
  A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ B ~
>`.pickRestart({
  A: "~@14 x!2", B: "~@10 x!3 ~ x ~",
})).gain(0.23)

// drums · clap
const clap = s("cp").struct(`<
  ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@2
>`.pickRestart({
  A: "~@7 x",
})).gain(0.23)

// drums · low tom
const low_tom = s("lt").struct("<[~ x ~@3 x ~@2]!52 [x ~ x ~@5 x ~ x!2 ~@4] [x!2 ~@6]>").gain(0.23)

// drums · china
const china = s("cr").struct("<[~ x ~ x]!52 [~@2 x!2 ~@2 x!2] ~>").gain(0.23)

stack(piano, kick, rim, clap, low_tom, china)

More by Misc Computer Games