Strudelify
Forgot About Dre cover art

1999 · 2001

Forgot About Dre

Dr. Dre

KeyG minorTempo133 bpm
0:00/0:00
// Forgot About Dre — Dr. Dre
// 133 bpm, 4/4, key G minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 128 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(133/4)

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

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  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 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 A B C D A B
  C D A B C D A B C D
>`.pickRestart({
  A: "[d4,g4] ~@3 [d4,g4] ~@3 [d4,g4] ~@3 [d4,g4] ~@3", B: "[d4,g4] ~@3 [d4,g4] ~@3 [d4,g4]@2 ~ [d4,g4]@2 ~ [d4,g4] ~",
  C: "[eb4,g4] ~@3 [eb4,g4] ~@3 [eb4,g4] ~@3 [eb4,g4]@3 ~", D: "[d4,g4] ~@3 [d4,g4] ~@3 [d4,g4] ~@3 [d4,g4]@3 ~",
})).s("gm_string_ensemble_1").gain(0.4)

// bass · electric bass pick
const bass = note(`<
  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 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 A B C D A B
  C D A B C D A B C D
>`.pickRestart({
  A: "g1@8 ~@4 d2 ~ a2 ~", B: "bb2@5 ~@3 a2@5 ~@3", C: "eb2@11 ~@5", D: "d2@5 ~@3 ab1@5 ~@3",
})).s("gm_electric_bass_pick").gain(0.4)

// other · overdriven guitar
const overdriven_guitar = note("<~@64 A B C D A B C D ~@56>".pickRestart({
  A: "g2@8 ~@4 d3 ~ a3 ~", B: "bb3@5 ~@3 a3@3 ~ bb3 ~ a3 ~", C: "eb3@11 ~@5", D: "d3@11 ~@5",
})).s("gm_overdriven_guitar").gain(0.4)

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

// drums · snare
const snare = s("sd").struct(`<
  ~@7 A B@3 A B@3 A B@3 A B@3 A B@3 A B@3 A B@3 A B@3 A B@3 A B@3 A B@3 A B@3 A B@3 A B@3 A B@3 A B@3 A B@3 A B@3 A B@3
  A B@3 A B@3 A B@3 A B@3 A B@3 A B@3 A B@3 A B@3 A B@3 A ~@8
>`.pickRestart({
  A: "~@3 x", B: "~ x",
})).gain(0.4)

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

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@8 A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A
  B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B A B ~@8
>`.pickRestart({
  A: "~@8 x ~@6 x", B: "~@2 x ~@2 x ~@2 x ~@5 x ~",
})).gain(0.4)

stack(string_ensemble_1, bass, overdriven_guitar, kick, snare, hihat, mid_tom)

More by Dr. Dre