Strudelify
No Good (Start the Dance) cover art

2012 · Time Forward / No Good Bootleg

No Good (Start the Dance)

The Prodigy

KeyC minorTempo120 bpm
0:00/0:00
// No Good (Start the Dance) — The Prodigy
// 120 bpm, 4/4, key C minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 142 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(120/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.

// bass · pad poly
const bass = note(`<
  A@4 ~@15 B C D E D C D E F C D E D C D E G H ~@3 A@4 ~@16 C D E D C D E F ~@15 B C D E D C D E F C D E D C D E C H
  ~@41
>`.pickRestart({
  A: "c2!16", B: "~@5 db2@3", C: "c2 ~ c2 ~@5 c2 ~@7", D: "~@2 c2 ~@5 c2 ~@7", E: "~@2 c2 ~@5 c2 ~@5 db2 ~",
  F: "db2 ~ db2 ~ db2 ~ db2 ~ db2 ~ db2 ~ db2 ~ db2 ~", G: "db2!8", H: "c2 ~@15",
})).s("gm_pad_poly").gain(0.44)

// chords · lead 2 sawtooth
const lead_2_sawtooth = note(`<
  A B C D ~@15 E F G H G F G H I F G H G F G H J A B C D A B C D A B C D A B C D A B C D A B C D F G H G F G H I ~@15 E
  F G H G F G H I K L M N K L M O A B C D P Q R S A B C D A B C D A B C D A B C D ~@16 T ~
>`.pickRestart({
  A: "[g4,c5,eb5] ~ [g4,c5,eb5] ~ [g4,c5,eb5] ~ [g4,c5,d5] ~ [g4,c5,d5] ~ [g4,c5,d5] ~ [g4,c5,eb5] ~ [g4,c5,eb5] ~", // Cm Gsus4 Cm
  B: "[g4,c5,eb5] ~ [g4,c5,d5] ~ [g4,c5,d5] ~ [g4,c5,d5] ~ [g4,c5,eb5] ~ [g4,c5,eb5] ~ [g4,c5,eb5] ~ [g4,c5,f5] ~", // Cm Gsus4 Cm Csus4
  C: "[g4,c5] ~ [g4,c5,eb5] ~ [g4,c5,eb5] ~ [g4,c5,eb5] ~ [g4,c5,eb5] ~ [g4,c5,d5] ~ [g4,c5,eb5] ~ [g4,c5,eb5] ~, f5 ~@7", // C5 Cm Gsus4 Cm
  D: "[g4,c5,eb5] ~ [g4,c5,d5] ~ [g4,c5,d5] ~ [g4,c5,d5] ~ [g4,c5,eb5] ~ [g4,c5,eb5] ~ [g4,c5,eb5] ~ [g4,c5,eb5] ~", // Cm Gsus4 Cm
  E: "~@5 db2@3", F: "c2 ~ c2 ~@5 c2 ~@7", G: "~@2 c2 ~@5 c2 ~@7", H: "~@2 c2 ~@5 c2 ~@5 db2 ~",
  I: "db2 ~ db2 ~ db2 ~ db2 ~ db2 ~ db2 ~ db2 ~ db2 ~", J: "db2",
  K: "[c2,g4,c5,eb5] ~ [c2,g4,c5,eb5] ~ [g4,c5,eb5] ~ [g4,c5,d5] ~ [c2,g4,c5,d5] ~ [g4,c5,d5] ~ [g4,c5,eb5] ~ [g4,c5,eb5] ~", // Cm Gsus4 Csus2 Gsus4 Cm
  L: "[g4,c5,eb5] ~ [c2,g4,c5,d5] ~ [g4,c5,d5] ~ [g4,c5,d5] ~ [c2,g4,c5,eb5] ~ [g4,c5,eb5] ~ [g4,c5,eb5] ~ [g4,c5,f5] ~", // Cm Csus2 Gsus4 Cm Csus4
  M: "[g4,c5] ~ [c2,g4,c5,eb5] ~ [g4,c5,eb5] ~ [g4,c5,eb5] ~ [c2,g4,c5,eb5] ~ [g4,c5,d5] ~ [g4,c5,eb5] ~ [db2,g4,c5,eb5] ~, f5 ~@7", // C5 Cm Gsus4 Cm
  N: "[g4,c5,eb5] ~ [c2,g4,c5,d5] ~ [g4,c5,d5] ~ [g4,c5,d5] ~ [c2,g4,c5,eb5] ~ [g4,c5,eb5] ~ [g4,c5,eb5] ~ [g4,c5,eb5] ~", // Cm Csus2 Gsus4 Cm
  O: "[c2,g4,c5,eb5] ~ [c2,g4,c5,d5] ~ [g4,c5,d5] ~ [g4,c5,d5] ~ [c2,g4,c5,eb5] ~ [g4,c5,eb5] ~ [g4,c5,eb5] ~ [g4,c5,eb5] ~", // Cm Csus2 Gsus4 Cm
  P: "[c2,g4,c5,eb5] c2 [c2,g4,c5,eb5] c2 [c2,g4,c5,eb5] c2 [c2,g4,c5,d5] c2 [c2,g4,c5,d5] c2 [c2,g4,c5,d5] c2 [c2,g4,c5,eb5] c2 [c2,g4,c5,eb5] c2", // Cm Csus2 Cm
  Q: "[c2,g4,c5,eb5] c2 [c2,g4,c5,d5] c2 [c2,g4,c5,d5] c2 [c2,g4,c5,d5] c2 [c2,g4,c5,eb5] c2 [c2,g4,c5,eb5] c2 [c2,g4,c5,eb5] c2 [c2,g4,c5,f5] c2", // Cm Csus2 Cm Csus4
  R: "[c2,g4,c5] c2 [c2,g4,c5,eb5] c2 [c2,g4,c5,eb5] c2 [c2,g4,c5,eb5] c2 [c2,g4,c5,eb5] c2 [c2,g4,c5,d5] c2 [c2,g4,c5,eb5] c2 [c2,g4,c5,eb5] c2, f5 ~@7", // C5 Cm Csus2 Cm
  S: "[c2,g4,c5,eb5] c2 [c2,g4,c5,d5] c2 [c2,g4,c5,d5] c2 [c2,g4,c5,d5] c2 [c2,g4,c5,eb5] c2 [c2,g4,c5,eb5] c2 [c2,g4,c5,eb5] c2 [c2,g4,c5,eb5] c2", // Cm Csus2 Cm
  T: "[c1,c2]", // C
})).s("gm_lead_2_sawtooth").gain(0.13)

// other · pad halo
const pad_halo = note(`<
  ~@4 A@2 B C A@2 B C A@2 B C A@2 B C ~@48 A@2 B C A@2 B C A@2 B C A@2 B C ~@40 A@2 B C A@2 B C A@2 B C A@2 B C ~@2
>`.pickRestart({
  A: "c2/2", B: "f2", C: "g2@15 ~",
})).s("gm_pad_halo").gain(0.14)

// chords · synth strings 2
const synth_strings_2 = note(`<
  ~@4 A@3 B A@3 B A@3 B A@3 B ~@48 A@3 B A@3 B A@3 B A@3 B ~@40 A@3 B A@3 B A@3 B A@3 B ~@2
>`.pickRestart({
  A: "[[c4,eb5]@2 [f4,ab4,f5], c5, g4@5 ~@3]/3", B: "[g4,bb4,d5,g5]",
})).s("gm_synth_strings_2").gain(0.11)

// other · pad sweep
const pad_sweep = note("<~@4 A@16 ~@48 A@16 ~@40 A@16 ~@2>".pickRestart({
  A: "[c5@59 ~@5]/4",
})).s("gm_pad_sweep").gain(0.16)

// bass · synth bass 1
const bass_2 = note(`<
  ~@20 A B@3 A B@2 C A B@3 A B@2 C D ~@7 A B@3 A B@2 E A B@3 A B@3 A B@3 A B@2 C ~@16 A B@3 A B@2 C A B@3 A B@3 D ~@3
  F@4 A B@3 A B@2 E A B@3 A B@3 A B@3 A B@2 G A B@3 A B@2 G ~@2
>`.pickRestart({
  A: "c2 c3!2 ~ bb2 c3@2 c3 c2 c3!2 ~ bb2 c3@2 c3", B: "c2 c3!3 bb2 c3@2 c3 c2 c3!2 ~ bb2 c3@2 c3", C: "db3!16",
  D: "c2 ~@15", E: "c2 c3!3 bb2 c3@2 ~@9", F: "c1!16", G: "c3!16",
})).s("gm_synth_bass_1").gain(0.24)

// bass · synth bass 1 · soft notes
const bass_soft = note(`<
  ~@20 A B@3 A B@2 ~ A B@3 A B@2 ~@9 A B@3 A B@2 ~ A B@3 A B@3 A B@3 A B@2 ~@17 A B@3 A B@2 ~ A B@3 A B@3 ~@8 A B@3 A
  B@2 ~ A B@3 A B@3 A B@3 A B@2 ~ A B@3 A B@2 ~@3
>`.pickRestart({
  A: "~@3 c3 ~@7 c3 ~@4", B: "~@11 c3 ~@4",
})).s("gm_synth_bass_1").gain(0.15)

// other · agogo
const agogo = note("<~@20 A@16 ~@16 A@16 ~@16 A@16 ~@16 A@8 ~@18>".pickRestart({
  A: "~@4 bb5 ~@4 c6 bb5 ~@3 bb5 ~",
})).s("gm_agogo").gain(0.18)

// other · agogo · soft notes
const agogo_soft = note("<~@20 A@16 ~@16 A@16 ~@16 A@16 ~@16 A@8 ~@18>".pickRestart({
  A: "~@12 c6 ~@3",
})).s("gm_agogo").gain(0.11)

// other · melodic tom
const melodic_tom = note(`<
  ~@23 A B ~@2 A B ~@2 A B ~@22 A B ~@2 A B ~@2 A B ~@2 A C ~@18 A B ~@2 A B ~@2 A B ~@2 A B ~@18 A B ~@2 A ~@3 A B ~@2
  A B ~@2 A B ~@5
>`.pickRestart({
  A: "~@2 f5!7 ~ f5!3 c5 a4 c5", B: "~ a4!2 ~@13", C: "c4 ~@7",
})).s("gm_melodic_tom").gain(0.46)

// drums · kick
const kick = s("bd").struct(`<
  ~@4 A ~@7 B C B C B C B ~ D@7 E D@7 E A ~@15 D@7 E D@7 E A ~@7 B C B C B C B ~ D@7 E D@7 E@7 F G ~@8 D@7 E D@7 E D@7 E
  A ~
>`.pickRestart({
  A: "x", B: "x ~@2 x ~@12", C: "~@7 x", D: "x ~ x ~ x!3 ~", E: "x!4", F: "x!8", G: "x!13 ~@3",
})).gain(0.8)

// drums · snare
const snare = s("sd").struct(`<
  ~@3 A B ~@7 C@7 D E@7 F E@7 G ~@7 A B ~@6 A H E@6 F E@7 G ~@8 C@7 D E@7 F E@7 G ~@7 A B ~@6 A H E@6 F E@7 F E@7 G B ~
>`.pickRestart({
  A: "~@12 x!4", B: "x", C: "~@2 x ~@2 x ~ x", D: "~ x ~@2", E: "~ x ~ x!2 ~ x!2 ~ x!2 ~ x ~ x!2", F: "x!16",
  G: "~@12 x ~ x!2", H: "x!2 ~ x!2 ~ x!2 ~ x!2 ~ x ~ x!2",
})).gain(0.32)

// drums · clap
const clap = s("cp").struct(`<
  ~@12 A@7 ~ B@7 ~ B@7 ~@9 C@8 B@7 ~ B@7 ~@9 A@7 ~ B@7 ~ B@7 ~ C@16 B@7 ~ B@7 ~ B@7 ~@3
>`.pickRestart({
  A: "~@2 x ~@2 x ~ x", B: "~@4 x ~@2 x ~@2 x ~ x ~@2 x", C: "~ x ~ x",
})).gain(0.16)

// drums · clap · soft notes
const clap_soft = s("cp").struct("<~@20 A@7 ~ A@7 ~@17 A@7 ~ A@7 ~@17 A@7 ~ A@7 ~@17 A@7 ~ A@7 ~ A@7 ~@3>".pickRestart({
  A: "~ x ~ x ~@2 x ~@2 x ~@4 x ~",
})).gain(0.08)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@8 A@3 B ~@8 C@7 ~ C@7 ~@12 D ~@3 D C@7 ~ C@7 ~@5 A@3 B ~@8 C@7 ~ C@7 ~@12 D ~@3 D C@7 ~ C@7 ~ C@7 ~@3
>`.pickRestart({
  A: "~ x ~ x", B: "~@2 x ~@3 x!2", C: "x!2 ~ x!2 ~@3 x!2 ~ x!3 ~ x", D: "~@7 x",
})).gain(0.48)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@11 A ~@8 B@7 ~ B@7 ~@12 A ~@3 A B@7 ~ B@7 ~@8 A ~@8 B@7 ~ B@7 ~@12 A ~@3 A B@7 ~ B@7 ~ B@7 ~@3
>`.pickRestart({
  A: "~@5 x ~@2", B: "~@5 x ~ x ~@8",
})).gain(0.24)

// drums · crash
const crash = s("cr").struct(`<
  ~@12 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@17 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~@9 A ~ A ~ A ~ A ~ A ~ A ~ A ~
  A ~ A ~ A ~ A ~ A ~ B A ~@14 A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~ A ~
>`.pickRestart({
  A: "x", B: "x!4",
})).gain(0.56)

// drums · crash · soft notes
const crash_soft = s("cr").struct("<~@35 A ~@31 A ~@31 A ~@39 A ~@2>".pickRestart({
  A: "~@3 x",
})).gain(0.24)

// drums · tambourine
const tambourine = s("tb").struct("<~@20 [~ x ~ x ~ x ~ x]!16 ~@16 [~ x ~ x ~ x ~ x]!16 ~@16 [~ x ~ x ~ x ~ x]!56 ~@2>")
  .gain(0.4)

stack(
  bass, lead_2_sawtooth, pad_halo, synth_strings_2, pad_sweep, bass_2, bass_soft, agogo, agogo_soft, melodic_tom, kick,
  snare, clap, clap_soft, hihat, hihat_soft, crash, crash_soft, tambourine
)

More by The Prodigy