Strudelify

Rebell Yell

Scooter

KeyA minorTempo176 bpm
0:00/0:00
// Rebell Yell — Scooter
// 176 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 158 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(176/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord · "a, b" plays two voices at once · [...]/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 · glockenspiel
const glockenspiel = note(`<
  ~@130
  [~@8 c2 c#2 d2 d#2 ~ f2 f#2 g2, ~@6 e2 ~]
  [g#2 a2 a#2 b2 c3 c#3 d3 d#3 e3 f3 f#3 g3 g#3 a3 a#3 b3]
  [c4 c#4 d4 d#4 e4 f4 f#4 g4 g#4 a4 a#4 b4 c5 c#5 d5 d#5]
  [e5 f5 f#5 g5 ~@11 g6]
  ~@24
>`).s("gm_glockenspiel").gain(0.11)

// other · glockenspiel · soft notes
const glockenspiel_soft = note("<~@133 [~@4 g#5 a5 a#5 b5 c6 c#6 d6 d#6 e6 f6 f#6 ~] ~@24>")
  .s("gm_glockenspiel").gain(0.06)

// chords · pad warm
const pad_warm = note("<~@102 A@4 B@8 C@4 A@4 B@8 C@4 ~@24>".pickRestart({
  A: "[a3,e4]/4", B: "[g4 f4 [a3,e4]@2, c4@65 ~@63]/8", C: "[g4 f4, c4]/4",
})).s("gm_pad_warm").gain(0.14)

// chords · pad sweep
const pad_sweep = note("<~@25 A@2 ~@34 A@2 ~@95>".pickRestart({
  A: "[~@6 [d4,a4,d5]@21 ~@5]/2", // D5
})).s("gm_pad_sweep").gain(0.1)

// chords · pad poly
const pad_poly = note("<~@20 A@2 B@3 ~@3 A@2 B@3 ~@23 A@2 B@3 ~@3 A@2 B@3 ~@89>".pickRestart({
  A: "[~@7 [b4,f#5,b5]@5 [d5,a5,d6]@4]/2", B: "[[d5,a5,d6]@47 ~]/3",
})).s("gm_pad_poly").gain(0.15)

// bass · lead 8 bass lead
const bass = note(`<
  ~@10 A B@2 C D E D F G@3 H I J K L G@4 I@2 K M G@3 H I J K L G@4 I@2 K M D E D N G@3 H I J K L G@4 I@2 K M G@3 H I J K
  L G@4 I@2 K M K I O P K I O Q A B@2 C D E R F D S R T U V W X D S R T U V W X D S R T U V W X D S R T U V W X G@3 H I
  J K L G@4 I@2 K M A B@2 C Y E D Z
>`.pickRestart({
  A: "a1 a2 a1 a2 a1 a2 a1 a2", B: "a1@2 a2 ~ a1@2 a2@2 a1@2 a2@2 a1@2 a2@2",
  C: "a1@2 a2@2 a1@2 a2@2 a1@2 a2@2 [g1,a1]@2 g2 ~", D: "a1 a2 ~ a2 a1 a2 ~ a2", E: "a1 a2 ~ a2 a1 a2 g1 g2",
  F: "a1 a2 g2 a2 d2 e2 g2 c3", G: "a1 ~ a2 ~ a1 ~ a2 ~ a1 ~ a2 ~ a1 ~ a2 ~",
  H: "a1 ~ a2 ~ a1 ~ a2 ~ a1 ~ a2 ~ a1 ~ g2 ~", I: "g1 ~ g2 ~ g1 ~ g2 ~ g1 ~ g2 ~ g1 ~ g2 ~",
  J: "g1 ~ g2 ~ g1 ~ g2 ~ g1 ~ g2 ~ g1 ~ f2 ~", K: "f1 ~ f2 ~ f1 ~ f2 ~ f1 ~ f2 ~ f1 ~ f2 ~",
  L: "d1 ~ d2 ~ d1 ~ d2 ~ d1 ~ d2 ~ c1 ~ c2 ~", M: "d1 ~ d2 ~ d1 ~ d2 ~ c1 ~ c2 ~ c1 ~ c2 ~",
  N: "g2 a2 e2 g2 d2 e2 c2@2", O: "d1 ~ d2 ~ d1 ~ d2 ~ d1 ~ d2 ~ d1 ~ d2 ~",
  P: "d1 ~ d2 ~ d1 ~ d2 ~ d1 ~ d2 ~ f1 ~ f2 ~", Q: "d1 ~ d2 ~ d1 ~ d2 ~ d1 ~ d2 ~ g1 ~ g2 ~",
  R: "a1@2 a2@2 ~@2 a2@2 a1@2 a2 ~@3 a2@2", S: "a1 a2 ~ a2 ~ a2 ~ g2", T: "a1 a2 ~ a2 ~ a2 ~ a2",
  U: "g1@2 g2@2 ~@2 g2@2 g1@2 g2 ~@3 g2@2", V: "g1 g2 ~ g2 ~ g2 ~ g2", W: "f1 f2 ~ f2 f1 f2 ~ f2",
  X: "d1@2 d2@2 ~@2 d2@2 ~@2 d2@2 ~@2 c2 ~", Y: "a1@2 a2 ~@3 a2@2 a1@2 a2@2 ~@2 a2@2",
  Z: "a1 a2 g2 a2 d2 e2 [g1,g2] [a1,a2]", // G A
})).s("gm_lead_8_bass_lead").gain(0.29)

// chords · orchestra hit
const orchestra_hit = note(`<
  ~@14 A B A C D E D F G H I J D E D F G H I J ~@20 D E D F G H I J D E D F G H I J ~@28 A B A C ~@55 K
>`.pickRestart({
  A: "[a5,e6] ~ e6 ~ [a5,e6] ~ e6 ~@3 [a5,e6] ~ e6 ~@3", B: "[a5,e6] ~ e6 ~@3 [a5,e6] ~ e6 ~@3 [g5,d6] ~ d6 ~",
  C: "[a5,e6] ~ e6 ~@3 [a5,e6] ~ [d5,d6,e6] ~ [e5,e6] ~ [g5,g6] ~ [a5,a6] ~", D: "e6 ~@3 e6 ~@5 e6 ~@5",
  E: "e6 ~@5 e6 ~@5 d6 ~@3", F: "e6 ~@5 e6 ~@5 e6 ~@3", G: "g6 ~@3 g6 ~@5 g6 ~@5", H: "g6 ~@5 g6 ~@5 g6 ~@3",
  I: "c6 ~@3 c6 ~@5 c6 ~@5", J: "a5 ~@5 a5 ~@5 a5 ~@3", K: "~@12 [g5,g6] ~ [a5,a6] ~",
})).s("gm_orchestra_hit").gain(0.24)

// chords · orchestra hit · soft notes
const orchestra_hit_soft = note(`<
  ~@14 A B A C D E D F G H I J D E D F G H I J ~@20 D E D F G H I J D E D F G H I J ~@28 A B A C ~@56
>`.pickRestart({
  A: "~@2 a5 ~@3 a5 ~@5 a5 ~@3", B: "~@2 a5 ~@5 a5 ~@5 g5 ~", C: "~@2 a5 ~@5 a5 ~@7", D: "a5 ~@3 a5 ~@5 a5 ~@5",
  E: "a5 ~@5 a5 ~@5 g5 ~@3", F: "a5 ~@5 a5 ~@5 a5 ~@3", G: "c6 ~@3 c6 ~@5 c6 ~@5", H: "c6 ~@5 c6 ~@5 c6 ~@3",
  I: "f5 ~@3 f5 ~@5 f5 ~@5", J: "d5 ~@5 d5 ~@5 d5 ~@3",
})).s("gm_orchestra_hit").gain(0.12)

// chords · lead 2 sawtooth
const lead_2_sawtooth = note(`<
  ~@2 A B C@2 A B C@2 D@8 ~@16 E@2 F@4 G H E@2 F@4 G H ~@20 E@2 F@4 G H E@2 F@4 I J K L M@2 K L N@2 D@8 ~@32 E@2 F@4 G H
  E@2 F@4 I J D@8
>`.pickRestart({
  A: "[f3,c5,f5,c6]", B: "[g3,b4,d5,b5]", C: "[d3,a4,d5,a5]/2", D: "[a3,e4]", E: "[a3,a4]/2",
  F: "[[a3,a4]@15 [g3,g4]@17]/4", G: "[f3,f4]", H: "[d3,d4]", I: "[c4,c5]", J: "[d4,d5]", K: "[f4,c5]", L: "[d4,b4]",
  M: "[d4,a4]", N: "[a4,d5]",
})).s("gm_lead_2_sawtooth").gain(0.13).pan(0.2)

// chords · synth strings 1
const synth_strings_1 = note(`<
  ~@34 A@16 ~@23 B@5 A@8 C D E@2 C D E@2 F@8 ~@16 G H@3 I J K L M N O@2 ~@7 B@5 A@8 F@8
>`.pickRestart({
  A: "[[c5,e5,a5]@31 [g4,e5,g5]@16 [f4,a4,f5]@8 [d4,a4,d5]@9]/8", B: "[~@7 [g4,e5,g5]@16 [f4,a4,f5]@8 [d4,a4,d5]@9]/5",
  C: "[c5,a5,c6]", D: "[b4,g5,b5]", E: "[d5,a5,d6]/2", F: "[[a4,e5,a5]@29 ~@3]/8", G: "~ g5 ~ c5 a4 g5 ~ c5, ~ e5 ~ e5",
  H: "a4 g5 ~ c5 a4 g5 ~ c5, ~ e5 ~ e5", I: "a4 g5 ~ c5 ~ g5 ~ c5, ~ e5 g4 e5",
  J: "g4 g5 ~ c5 g4 g5 ~ c5, ~@4 e5@5 ~@3 e5@4", K: "g4 ~ e5 c5 a4 ~ e5 c5, ~ f5@2 ~@2 f5@2 ~",
  L: "a4 ~ e5 c5 a4 ~@2 c5, ~ f5@2 ~@2 f5@2 ~, ~@3 e5", M: "~ a5@3 ~@2 c5@2 a4@2 a5@2 e5@2 c5@2, ~ e5 ~@2",
  N: "a4@2 a5@2 e5@2 c5@2 a4@2 a5@2 ~ a4 c5@2, ~@12 e5@3 ~", O: "a4 a5 e5 c5 a4 a5 e5 c5",
})).s("gm_synth_strings_1").gain(0.06)

// drums · kick
const kick = s("bd").struct(`<
  ~@10 A B A@2 C D C A@2 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3
  B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@2
>`.pickRestart({
  A: "x!4", B: "x ~ x ~ x ~ x!2", C: "x", D: "~@7 x",
})).gain(0.46)

// drums · snare
const snare = s("sd").struct(`<
  ~@8 A B ~@6 A B ~@14 A B ~@15 C ~@2 A B ~@14 A B ~@14 A B ~@6 A B ~@6 A B ~@28 A B@3 ~@14 A B ~@8
>`.pickRestart({
  A: "~@9 x!7", B: "x!16", C: "~@2 x!2",
})).gain(0.23)

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@8 A ~@7 A ~@15 A ~@19 A ~@15 A ~@15 A ~@7 A ~@7 A ~@25 B@4 A ~@17 A ~@9
>`.pickRestart({
  A: "x!9 ~@7", B: "x!16",
})).gain(0.05)

// drums · hihat
const hihat = s("hh").struct("<~@26 A@24 ~@2 B A ~@8 A@32 ~@40 A@23 C>".pickRestart({
  A: "x!16", B: "~@13 x!3", C: "x!14 ~@2",
})).gain(0.32)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@18
  [x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2]!8
  ~@26
  [x!13 ~@3]
  ~
  [x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2]!8
  ~@96
>`).gain(0.09)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@6 A@7 B A@11 B A@7 B A@7 B A@7 B A@3 B A@7 B A@7 B A@7 B A@7 B A@7 B A@3 B A@4 ~@32 A@7 B A@7 B A@7 B
>`.pickRestart({
  A: "~ x ~ x ~ x ~ x", B: "~ x ~ x ~ x!3",
})).gain(0.37)

// drums · crash
const crash = s("cr").struct(`<
  ~@9 A B ~@3 B ~ C D B ~@7 B ~@5 C D B ~@6 E B ~@5 B F B ~@3 B ~@7 B ~@5 C D B ~@6 E B ~@5 B F B ~@3 B ~@2 A B ~@3 B ~
  C D B ~@15 B ~@7 B ~@3 B@2 C D B ~@6 A B ~@5 B D B ~@2 D B ~ C G
>`.pickRestart({
  A: "~@2 x!2", B: "x", C: "x!2", D: "x!4", E: "~ x!3", F: "x ~ x!2", G: "x ~ x ~ x ~ x!2",
})).gain(0.37)

// drums · tambourine
const tambourine = s("tb").struct(`<
  ~@18 A B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@2 ~@4 A B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@3 B A@2 ~@48 A B
  A@3 B A@3 B A@3 B A@2 ~@8
>`.pickRestart({
  A: "x!4", B: "x ~ x ~ x ~ x!2",
})).gain(0.18)

stack(
  glockenspiel, glockenspiel_soft, pad_warm, pad_sweep, pad_poly, bass, orchestra_hit, orchestra_hit_soft,
  lead_2_sawtooth, synth_strings_1, kick, snare, snare_soft, hihat, hihat_soft, open_hat, crash, tambourine
)

More by Scooter