Strudelify

sonic the hedgehog - star light zone

Masato Nakamura

KeyC majorTempo124 bpm
0:00/0:00
// sonic the hedgehog - star light zone — Masato Nakamura
// 124 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: metre changes (3/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/5966427; license: https://creativecommons.org/publicdomain/zero/1.0/
// note: Full arrangement: all 35 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(124/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("<~@15 A B A C A D E F ~@4 A B A C A D E F>".pickRestart({
  A: "~@2 g4 a4 c5 c5@2 a4 c5!2 ~@6", B: "~ e5 ~ c5 ~ a4 c5 a4", C: "~ e5 f5 e5 f5 g5 ~ c5",
  D: "~@2 e5@2 ~@2 c5@2 ~@2 a4!2 c5@2 a4@2", E: "~@2 g4 a4 c5 c5@2 a4 c5!2 ~@4 e5 f5", F: "g5@2 ~@2 c6@11 ~",
})).s("gm_piano").gain(0.3)

// chords · piano
const piano_2 = note("<~ A B C D E F G@2 A B C D E H I J K L I J K M A B C D I J K L I J K M>".pickRestart({
  A: "[e4,g4]@3 [e4,g4] ~@2 [e4,g4]@9 ~", B: "[d4,f4]@3 [d4,f4] ~@2 [c#4,e4]@9 ~",
  C: "[f4,a4]@3 [e4,g4]@3 [d4,f4]@2 [f4,a4]@3 [e4,g4]@3 [d4,f4]@2", D: "[f4,a4]@3 [e4,g4]@3 [d4,f4]@9 ~",
  E: "[d4,f4]@3 [d4,f4] ~@2 [d4,f4]@9 ~", F: "[f4,g#4]@3 [f4,g#4] ~@2 [f4,g#4]@9 ~",
  G: "[[e4,g4]@3 [e4,g4] ~@2 [e4,g4]@8 [g4,b4]@4 [g4,b4]@2 [f4,a4]@4 [e4,g4]@2 [d4,f4]@6]/2", // Em G F Em Dm
  H: "[f4,g#4]@3 [f4,g#4] ~@2 [f4,g#4]@8 ~@2", I: "~@2 [g4,b4] ~@2 [g4,b4] ~@2 [g4,b4] ~@2 [g4,b4] ~@2 [g4,b4]!2",
  J: "~@2 [a4,c5] ~@2 [a4,c5] ~@2 [a4,c5] ~@2 [a4,c5] ~@2 [a4,c5]!2", // Am
  K: "~@2 [b4,d5] ~@2 [b4,d5] ~@2 [b4,d5] ~@2 [b4,d5] ~@2 [b4,d5]!2", // Bm
  L: "~@2 [c5,e5] ~@2 [c5,e5] ~@2 [c5,e5] ~@2 [b4,d5] ~@2 [a4,c5] ~", M: "~@4 [d4,f4]@11 ~",
})).s("gm_piano").gain(0.25)

// other · piano
const piano_3 = note("<~ A B C D E F A G A B C D E H I J K L I M N O A B C D I J K L I M N O>".pickRestart({
  A: "c3@3 c3 ~@2 c3@8 c3!2", B: "a#2@3 a#2 ~@2 a2@8 a2!2", C: "d3@3 d3@3 d3!2 c#3@3 c#3@3 c#3!2",
  D: "c3@3 c3@3 c3!2 b2@3 b2@3 b2!2", E: "g2@3 g2 ~@2 g2@8 g2!2", F: "b2@3 b2 ~@2 b2@8 b2!2",
  G: "d3@3 d3 ~@2 g2@6 d3@2 g2@2", H: "b2@3 b2 ~@2 b2@8 d3 b2", I: "c3@3 c3 ~@2 c3@8 a2 c3",
  J: "d3@3 d3 ~@2 d3@8 c3 d3", K: "e3@3 e3 ~@2 e3@8 c3 e3", L: "f3@3 f3 ~@2 f3@8 g3 f3", M: "d3@3 d3 ~@2 d3@8 b2 d3",
  N: "e3@3 e3 ~@2 e3@8 e3 f3", O: "g3@4 g2@11 ~",
})).s("gm_piano").gain(0.3)

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

// drums · hihat
const hihat = s("hh").struct("<[~@12 x!2 ~@2] [x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2]!34>").gain(0.25)

// drums · open hat
const open_hat = s("oh").struct("<[~@7 x] [~ x ~ x ~ x ~ x]!34>").gain(0.2)

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

More by Masato Nakamura