Strudelify

Hyper Hyper

Scooter

KeyG♯ minorTempo160 bpm
0:00/0:00
// Hyper Hyper — Scooter
// 160 bpm, 4/4, key G# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 199 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(160/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// bass · synth bass 1 · "SYN BASS 1"
const bass = note(`<
  ~@49 A@16 ~@13 A@16 ~@32 B@4 C@4 B@4 C@4 B@4 C@4 B@4 C@4 D ~@9 E@3 F E@3 F E@3 F A@16 ~@3
>`.pickRestart({
  A: "g#1!16", B: "g#2!2 ~@2 g#2!2 ~@2 g#2!2 ~@2 g#2!2 ~@2", C: "e2!2 ~@2 e2!2 ~@2 e2!2 ~@2 e2!2 ~@2", D: "e2!2 ~@14",
  E: "g#1 ~ g#1 ~ g#1 ~ g#1 g#0", F: "g#1 ~ g#1 ~ g#1 g#0 g#1 g#0",
})).s("gm_synth_bass_1").gain(0.3).pan(0.7)

// bass · synth bass 1 · "SYN BASS 1" · soft notes
const bass_soft = note("<~@126 A@4 B@4 A@4 B@4 A@4 B@4 A@4 B@4 C ~@40>".pickRestart({
  A: "~@2 g#2!2 ~@2 g#2!2 ~@2 g#2!2 ~@2 g#2!2", B: "~@2 e2!2 ~@2 e2!2 ~@2 e2!2 ~@2 e2!2", C: "~@4 e2!2 ~@2 e2!2 ~@6",
})).s("gm_synth_bass_1").gain(0.18).pan(0.7)

// bass · lead 8 bass lead · "BASS&LEAD"
const bass_2 = note("<~@9 [g#1!16]!56 ~@29 [g#1!16]!32 ~@46 [g#1!16]!8 ~@19>")
  .s("gm_lead_8_bass_lead").gain(0.5).pan(0.4)

// other · synth strings 1 · "SYN STR 1"
const synth_strings_1 = note(`<
  ~@70 A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D
  ~@34 A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D A B C D ~@3
>`.pickRestart({
  A: "g#5 d#5 g#5 d#5 g#5 d#5 g#5 d#5", B: "g#5 e5 g#5 e5 g#5 e5 g#5 e5", C: "a#5 f#5 a#5 f#5 a#5 f#5 a#5 f#5",
  D: "b5 g#5 b5 g#5 b5 g#5 b5 g#5",
})).s("gm_synth_strings_1").gain(0.37).pan(0.7)

// other · lead 2 sawtooth · "SAW WAVE"
const lead_2_sawtooth = note(`<
  ~@74 A@3 B A@3 B A@3 B A@3 B A@3 B ~@33 C D C D C D C D C D C D C D C D C D C D C D C D C D C D C D C ~@6 A@3 B A@3 B
  A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B ~@3
>`.pickRestart({
  A: "g#4 ~ g#4 ~ g#4 ~ g#4 g#3", B: "g#4 ~ g#4 ~ g#4 g#3 g#4 g#3", C: "~@12 g#5 ~@3", D: "g#5 ~@15",
})).s("gm_lead_2_sawtooth").gain(0.37).pan(0.3)

// other · lead 2 sawtooth · "SAW WAVE"
const lead_2_sawtooth_2 = note(`<
  ~@74 A B@2 C B@3 C B@3 C B@3 C B@3 C D ~@32 E ~ E F E F E F E F E F E F E F E F E F E F E F E F E F E F E F ~@5 A B@2
  C B@3 C B@3 C B@3 C B@3 C B@3 C B@3 C B@3 C D ~@2
>`.pickRestart({
  A: "~ g#4 ~ g#4 ~ g#4 ~ g#4", B: "g#3 g#4 ~ g#4 ~ g#4 ~ g#4", C: "g#3 g#4 ~ g#4 ~ g#4 g#3 g#4", D: "g#3 ~@7",
  E: "~@14 g#5 ~", F: "~@2 g#5 ~@13",
})).s("gm_lead_2_sawtooth").gain(0.18).pan(0.9)

// other · synth brass 1 · "SYNBRASS 1"
const synth_brass_1 = note(`<
  ~@95 A ~ A ~ A ~ B ~ A ~ A ~ A ~ B ~ A ~ A ~ A ~ B ~ A ~ A ~ A ~@2 C@4 D@4 C@4 D@4 C@4 D@4 C@4 D@4 E ~@40
>`.pickRestart({
  A: "~@7 b2", B: "~@5 d#3 ~ d#3", C: "g#2!16", D: "e2!16", E: "~@2 e2!2 ~@2 e2!2 ~@2 e2!2 ~@4",
})).s("gm_synth_brass_1").gain(0.32).pan(0.9)

// drums · kick
const kick = s("bd").struct(`<
  ~@5 A@3 B ~@36 A@3 B A@7 B A@7 B C ~@28 A@15 ~ A@12 ~@4 A@32 C ~@21 A@15 B C ~@2
>`.pickRestart({
  A: "x!4", B: "x ~ x ~ x ~ x!2", C: "x",
})).gain(0.73)

// drums · snare
const snare = s("sd").struct("<~@91 [x!16]!3 ~@83 [x!16]!3 ~@19>").gain(0.44)

// drums · clap
const clap = s("cp").struct(`<
  ~@91 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A@37 ~@18 A@20 ~@3
>`.pickRestart({
  A: "~ x ~ x ~ x ~ x",
})).gain(0.65)

// drums · hihat
const hihat = s("hh").struct("<~@17 A@7 B C@40 ~@17 A@8 C@68 ~@18 C@20 ~@3>".pickRestart({
  A: "x!2 ~ x!2 ~ x!2 ~ x ~ x ~ x ~ x", B: "x!2 ~ x!2 ~ x!2 ~ x ~ x ~ x!3", C: "x!5 ~ x!2 ~ x!3 ~ x!3",
})).gain(0.44)

// drums · open hat
const open_hat = s("oh").struct("<~@17 [~ x ~ x ~ x ~ x]!48 ~@17 [~ x ~ x ~ x ~ x]!76 ~@18 [~ x ~ x ~ x ~ x]!20 ~@3>")
  .gain(0.51)

// drums · open hat · soft notes
const open_hat_soft = s("oh").struct("<~@25 [x!4]!40 ~@25 [x!4]!68 ~@18 [x!4]!20 ~@3>").gain(0.29)

// drums · crash
const crash = s("cr").struct(`<
  ~@65 A ~@52 B@3 C B@3 D A ~@23 A ~ A B A B ~ B A ~@21 A ~ A ~ A ~ A B E B@7 A ~@2
>`.pickRestart({
  A: "x", B: "~@3 x", C: "~@2 x!2", D: "~ x!3", E: "x ~@2 x",
})).gain(0.44)

// drums · woodblocks
const woodblocks = s("woodblock:4").struct("<~@33 [x!2 ~ x ~@2 x ~ x ~@2 x ~@2 x!2]!32 ~@134>").gain(0.53)

stack(
  bass, bass_soft, bass_2, synth_strings_1, lead_2_sawtooth, lead_2_sawtooth_2, synth_brass_1, kick, snare, clap, hihat,
  open_hat, open_hat_soft, crash, woodblocks
)

More by Scooter