Strudelify

sonic the hedgehog - final zone

Masato Nakamura

KeyA minorTempo130 bpm
0:00/0:00
// sonic the hedgehog - final zone — Masato Nakamura
// 130 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5966206; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 21 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(130/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [...]/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 · piano
const piano = note("<A ~ B C@2 ~ B C@2 D E ~ B C@2 ~ B C@2 D E>".pickRestart({
  A: "e5@2 g#5@2 g#5@2 e5!2 ~@8", B: "a4 g4 a4@13 ~", C: "[~ c5@2 a4 f4 d4@4 d5@2 c5 b4 g#4@3]/2",
  D: "c6 b5 a#5 a5 c6 b5 a#5 a5 c6 b5 a#5 a5 c6 b5 a#5 a5", E: "d6 c#6 c6 b5 d6 c#6 c6 b5 d6 c#6 c6 b5 d6 c#6 c6 b5",
})).s("gm_piano").gain(0.25)

// other · piano
const piano_2 = note("<~ A B C@2 A B D E F G A B C@2 A B D E F G>".pickRestart({
  A: "~ a4 b4 c5", B: "d5 c5 b4 c5", C: "[e5@15 ~]/2", D: "f5@15 ~", E: "g5 g#5", F: "a4@15 ~", G: "b4@15 ~",
})).s("gm_piano").gain(0.3)

// other · piano
const piano_3 = note("<A B C D E B C D F G H B C D E B C D F G H>".pickRestart({
  A: "e2@2 g#2@2 g#2@2 e2!2 ~@6 c3 b2", B: "a2@4 a2@3 a2 a2@2 a2@2 e2@2 e2@2", C: "a2 g2 a2@4 e2@2 a2@4 g2@4",
  D: "f2@4 f2@3 f2 f2@2 f2@2 f2!2 c2@2", E: "g2@2 g2@4 g2@2 g#2@2 g#2@4 c3 b2", F: "g2 g2@2 g2 g#2 g#2@2 g#2",
  G: "f2@4 f2@3 f2 f2@2 f2@4 c2@2", H: "g2 g2@2 g2 e2 e2@2 e2",
})).s("gm_piano").gain(0.3)

// drums · kick
const kick = s("bd").struct("<~@10 [~ x ~ x ~ x ~ x] ~@9 [~ x ~ x ~ x ~ x]>").gain(0.25)

// drums · snare
const snare = s("sd").struct("<A B C B D B C B D E F B C B D B C B D E F>".pickRestart({
  A: "~@10 x!4 ~@2", B: "x ~@3 x ~@2 x!2 ~ x ~@5", C: "x!2 ~ x!2 ~ x ~", D: "x!2 ~ x!3 ~ x",
  E: "x ~@3 x ~@2 x!2 ~ x ~@3 x ~", F: "x!4",
})).gain(0.25)

// drums · low tom
const low_tom = s("lt").struct("<A B ~ C ~ B ~ C ~@2 D B ~ C ~ B ~ C ~@2 D>".pickRestart({
  A: "x ~ x ~ x ~ x!2 ~@6 x!2", B: "~@6 x!2", C: "~@7 x", D: "~ x ~ x ~ x ~ x",
})).gain(0.25)

// drums · open hat
const open_hat = s("oh").struct("<~@10 [x!4] ~@9 [x!4]>").gain(0.25)

// drums · high tom
const high_tom = s("ht").struct("<~@3 A ~@3 A ~@5 A ~@3 A ~@3>".pickRestart({
  A: "~@12 x!2 ~@2",
})).gain(0.25)

stack(piano, piano_2, piano_3, kick, snare, low_tom, open_hat, high_tom)

More by Masato Nakamura