Strudelify

sonic the hedgehog - marble zone

Masato Nakamura

KeyA minorTempo136 bpm
0:00/0:00
// sonic the hedgehog - marble zone — Masato Nakamura
// 136 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (1/4 at bar 1, 4/4 at bar 1) are rendered on a constant 4/4 grid of one bar per cycle
// note: Transcription provider: pdmx. https://musescore.com/score/5961286; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 42 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(136/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("<~@5 A ~@2 B@3 ~@2 A ~@4 C D C D ~@3 A ~@2 B@3 ~@2 A ~@4 C D C D>".pickRestart({
  A: "f6 d6 a5 f5 d6 a5 f5 d5 a5 f5 d5 a4 f5 d5 a4 f4", B: "[~@14 f5@4 f5@2 d5@4 b4@2 g#4@13 ~@9]/3",
  C: "a5@2 c6 a5 c6@2 a5@2 b5@2 g5@2 d5@2 b5@2", D: "f5@2 a5 f5 a5@2 f5@2 g5@2 a5@2 b5@2 g5@2",
})).s("gm_piano").gain(0.25)

// chords · piano
const piano_2 = note("<~ A@3 B C@3 D A@3 B E@3 F@2 G H G H I@2 B C@3 D A@3 B E@3 F@2 G H G H>".pickRestart({
  A: "[~@7 [g4,b4]@2 [g4,b4] [a4,c5]@2 [g4,b4]@2 ~ [g4,b4]@2 [g4,b4] [a4,c5]@2 [g4,b4]@2 ~@2]/3", // G Am G Am G
  B: "~@4 [c5,e5]@2 ~@4 [c5,e5] ~@5", // C
  C: "[~@4 [c5,e5]@2 ~@4 [c5,e5] ~@3 [f4,a4]@4 [f4,a4]@2 [g4,b4]@4 [f4,a4]@4 ~@2 [f4,a4]@4 [f4,a4]@2 [g4,b4]@4 [f4,a4]@4 ~@4]/3", // C F G F G F
  D: "~@4 [g4,b4]@2 ~@4 [g4,b4] ~@5", // G
  E: "[~@4 [c5,e5]@2 ~@4 [c5,e5] ~@3 [d4,f4]@4 [d4,f4]@2 [f4,a4]@4 [d4,f4]@4 ~@2 [e4,g#4]@4 [e4,g#4]@2 [g#4,b4]@4 [e4,g#4]@4 ~@4]/3", // C Dm F Dm E G#m E
  F: "[~@4 [a4,c5]@2 ~@4 [a4,c5] ~@3 [c5,e5]@4 [c5,e5]@2 [b4,d5]@4 [a4,c5]@2 [g#4,b4]@6]/2", // Am C Bm Am G#m
  G: "~@2 e5 ~ c5 ~ a4 ~@3 d5 ~ b4 ~ g4 ~", H: "~@2 c5 ~ a4 ~ f4 ~@3 d5 ~ b4 ~ g4 ~",
  I: "[~ [g4,b4] [a4,c5]@2 [g4,b4]@2 ~ [g4,b4]@2 [g4,b4] [a4,c5]@2 [g4,b4]@2 ~@2]/2", // G Am G Am G
})).s("gm_piano").gain(0.2)

// bass · piano
const bass = note("<A B C@2 D@2 E@2 F G C@2 D@2 H I J C K L K L C@2 D@2 E@2 F G C@2 D@2 H I J C K L K L>".pickRestart({
  A: "~@14 e2!2", B: "e2 ~ e1@6", C: "a1 ~ a1@2 e2 ~ e2@2 d2 ~ d2@2 e2 ~ e2@2",
  D: "d2 ~ d2@2 a2 ~ a2@2 f2 ~ f2@2 a2 ~ a2@2", E: "g1 ~ g1@2 d2 ~ d2@2 b1 ~ b1@2 d2 ~ d2@2",
  F: "c2 ~ c2@2 g2 ~ g2@2 e2 ~ e2@2 g2 ~ g2@2", G: "b1 ~ b1@2 f2 ~ f2@2 e2 ~ e2@2 b1 ~ b1@2",
  H: "b1 ~ b1@2 f2 ~ f2@2 d2 ~ d2@2 f2 ~ f2@2", I: "e2 ~ e2@2 b2 ~ b2@2 g#2 ~ g#2@2 b2 ~ b2@2",
  J: "a1 ~ a1@2 e2 ~ e2@2 c2 ~ c2@2 e2 ~ e2@2", K: "a1@3 a1 g1@3 g1", L: "f1@3 f1 g1@3 g1",
})).s("gm_piano").gain(0.25)

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

// drums · snare
const snare = s("sd").struct("<[~@14 x!2] x [x!8]!16 [x ~@2 x!2 ~@2 x]!4 [x!8]!16 [x ~@2 x!2 ~@2 x]!4>").gain(0.25)

stack(piano, piano_2, bass, kick, snare)

More by Masato Nakamura