Strudelify
Keep Their Heads Ringing cover art

Keep Their Heads Ringin'

Keep Their Heads Ringing

Dr. Dre

KeyE minorTempo91 bpm
0:00/0:00
// Keep Their Heads Ringing — Dr. Dre
// 90.8 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 113 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
// note: The whole transcription plays 17 ms behind the beat; the grid follows it, so its parts stay together.
setcpm(90.8/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, A@4 for four bars: edit a riff to change every repeat.

// bass · fretless bass · "killer bass"
const bass = note(`<
  A B A B A C A D A B A B A B A D A C A D A B A B A B A D A B A D A C A D A B A B A B A D A C A D A B A B A B A D A C A
  D A C A D A B A B A B A D A C A D A B A B A C A D A C A D A C A D A C A D A C A D A C A D A C A D A C A D ~
>`.pickRestart({
  A: "[a1,a2]@2 ~@3 [f1,f2]@3", B: "[e1,e2]@15 ~", C: "[e1,e2]@7 ~", D: "[e1,e2]@3 [c2,c3]",
})).s("gm_fretless_bass").gain(0.64)

// other · celesta · "ringin' ding dongs!"
const celesta = note("<A@112 ~>".pickRestart({
  A: "[b5 d6 e6@9 d6@3 c6@2]/2",
})).s("gm_celesta").gain(0.72)

// other · pad metallic · "metallic pad"
const pad_metallic = note(`<
  ~@4 A B A B C@2 D@2 E@4 F@4 G@4 H@4 I@3 ~ A B A B C@2 D@2 E@4 F@4 G@4 H@4 A B A B A B A B C@2 D@2 E@4 F@4 G@4 H@4 J@4
  K B L@20 M@2 ~
>`.pickRestart({
  A: "[a4,a5]@5 [f4,f5]@3", B: "[e4,e5]@3 [d5,d6]@3 [c5,c6]@2", C: "[[b4,b5]@27 ~ [c5,c6]@4]/2",
  D: "[[b4,b5]@27 ~ [g4,g5]@4]/2", E: "[[a4,a5]@15 [c5,c6]]/4", F: "[[b4,b5]@15 [g4,g5]]/4",
  G: "[~@15 [c5,c6], [a4,a5]@31 ~]/4", H: "[[b4,b5]@29 ~ [g4,g5]@2]/4", I: "[a4,a5]/3",
  J: "[[a4,a5]@25 ~@5 [g4,g5]@2]/4", K: "[b4,b5]@5 [f4,f5]@3",
  L: "[~@5 [f4,f5]@3 [e4,e5]@3 [d5,d6]@3 [c5,c6]@2, [b4,b5]@29 ~@3]/2", // F E D C B
  M: "[~@5 [f4,f5]@3 [e4,e5]@3 [d5,d6]@3 [c5,c6]@2, [b4,b5]@23 ~@9]/2", // F E D C B
})).s("gm_pad_metallic").gain(0.64)

// other · tubular bells · "bong"
const tubular_bells = note(`<
  ~@4 A ~@27 A ~@23 A ~@3 A ~@19 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@4
>`.pickRestart({
  A: "a4 ~@15",
})).s("gm_tubular_bells").gain(0.64)

// chords · epiano1 · "dunno"
const epiano1 = note(`<
  A B A B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C
  B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B C B ~
>`.pickRestart({
  A: "~@7 [f4,a4,c5]", B: "[e4,g4,b4]", C: "~@5 [f4,a4,c5]@3",
})).s("gm_epiano1").gain(0.64)

// drums · kick
const kick = s("bd").struct("<[x ~@6 x!2 ~ x ~@5]!112 ~>").gain(0.64)

// drums · snare
const snare = s("sd").struct("<[~ x ~ x]!112 ~>").gain(0.64)

// drums · low tom
const low_tom = s("lt").struct("<[x ~@6 x!2 ~ x ~@5]!112 ~>").gain(0.64)

// drums · pedal hat
const pedal_hat = s("hh").struct(`<
  A B A B A B C B A B A B A B C B A B C B A B A B A B C B A B C B A B C B A B A B A B C B A B C B A B A B A B C B A B C
  B A B C B A B A B A B C B A B C B A B A B A B C B A B C B A B C B A B C B A B C B A B C B A B C B A B C B ~
>`.pickRestart({
  A: "x!2 ~@2 x!4", B: "x ~ x!5 ~", C: "x!3 ~ x!4",
})).gain(0.64)

// drums · open hat
const open_hat = s("oh").struct(`<
  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 ~
>`.pickRestart({
  A: "~@3 x ~@4", B: "~ x ~@5 x",
})).gain(0.64)

stack(bass, celesta, pad_metallic, tubular_bells, epiano1, kick, snare, low_tom, pedal_hat, open_hat)

More by Dr. Dre