Strudelify

sonic the hedgehog - labyrinth zone

Masato Nakamura

KeyC majorTempo126 bpm
0:00/0:00
// sonic the hedgehog - labyrinth zone — Masato Nakamura
// 126 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Transcription provider: pdmx. https://musescore.com/score/5964297; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 37 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(126/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · [...]/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 ~ D ~ E ~ F G@2 H I G@2 J K ~ B ~ C ~ D ~ E ~ F G@2 H I G@2 J K>".pickRestart({
  A: "a5!2 f5!2 d5!2 g5@4 g5@2 g5@2 ~@2", B: "~@10 g3 a3 c4 ~ a3 ~", C: "~@10 e4 c4 a3 ~ c4 ~",
  D: "~@10 c4 d4 f4 ~ d4 ~", E: "~@10 a4 f4 d4 ~ f4 ~", F: "~@2 g4!2 ~@2 a4 ~@3 a#4 ~ a#4 ~ c#5 ~",
  G: "[e5@23 ~ f5@4 g5@4]/2", H: "c5@15 ~", I: "~@2 a4 ~@3 b4 ~@3 c#5 ~ c#5 ~ e5 ~", J: "c5 d5", K: "e5 g5",
})).s("gm_piano").gain(0.25)

// other · piano
const piano_2 = note("<~@11 A B A C A B A D ~@10 A B A C A B A D>".pickRestart({
  A: "e4@3 ~@3 e4 ~ d4@3 ~@3 d4 ~", B: "c4@3 ~@3 c4 ~ b3 ~ c4 ~ d4@4", C: "~@2 a3 ~@3 b3 ~@3 c#4 ~ c#4 ~ e4 ~",
  D: "~@2 g3 a3 c4!2 a3 g3 c4!2 a3 g3 c4!2 a3 g3",
})).s("gm_piano").gain(0.3)

// chords · piano
const piano_3 = note("<A B@4 C@4 B D E F E G E F H ~ B@4 C@4 B D E F E G E F H ~>".pickRestart({
  A: "c5 a4 f4 c5@2 c5!2 ~", B: "~@2 [e5,g5] ~@3 [e5,g5] ~@3 [e5,g5] ~@3 [e5,g5] ~",
  C: "~@2 [a5,c6] ~@3 [a5,c6] ~@3 [a5,c6] ~@3 [a5,c6] ~", D: "~@2 [e5,g5]!2 ~@2 [e5,g5] ~@3 [a#5,c#6] ~@3 [a#5,c#6] ~",
  E: "~@2 [a5,c6] ~@3 [a5,c6] ~@3 [g5,b5]!2 ~@2 [g5,b5] ~", F: "~@2 [f5,a5] ~@3 [f5,a5] ~@3 [e5,g5]!2 ~@2 [e5,g5] ~",
  G: "~@2 [b5,d6] ~@3 [b5,d6] ~@3 [a5,c#6]!2 ~@2 [a5,c#6] ~", H: "c5@2 a5@2 g5@2 e5@2 d5@2 [a#5,d6]!2 ~@2 [a#5,d6] ~",
})).s("gm_piano").gain(0.25)

// other · piano
const piano_4 = note("<A B C B C D E D E F G H I H J H I K L B C B C D E D E F G H I H J H I K L>".pickRestart({
  A: "~@3 d2@2 g2!2 ~", B: "c2@3 e2 g2@2 a2@2", C: "b2@3 a2 g2@2 e2@2", D: "f2@3 a2 c3@2 d3@2", E: "e3@3 d3 c3@2 a2@2",
  F: "c2@3 e2 g2@2 e2@2", G: "c3!2 g2 c3 f#2@4", H: "f2@3 f2 e2@3 e2", I: "d2@3 d2 c2 d2 e2@2", J: "a2@3 a2!2 a2@3",
  K: "f2@3 f2 a#2@3 a#2", L: "c3@3 c3 g2@2 g2@2",
})).s("gm_piano").gain(0.3)

// drums · kick
const kick = s("bd").struct("<[~@3 x ~@4] [x ~@2 x!2 ~@3]!36>").gain(0.25)

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

// drums · hihat
const hihat = s("hh").struct("<~ A B A C A B A C A@2 D E F G D E F H A B A C A B A C A@2 D E F G D E F H>".pickRestart({
  A: "~ x!7", B: "~@2 x ~ x ~ x ~ x ~ x ~@2 x!3", C: "~@2 x ~ x ~ x ~ x!5 ~ x ~", D: "x!2 ~ x ~ x ~@2 x ~ x ~ x ~ x ~",
  E: "x!7 ~", F: "x!8", G: "x ~ x ~ x ~ x ~ x!2 ~@2 x!2 ~@2", H: "x!4 ~ x ~ x",
})).gain(0.2)

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

stack(piano, piano_2, piano_3, piano_4, kick, snare, hihat, open_hat)

More by Masato Nakamura