Strudelify
It's All About the Benjamins (remix) cover art

1997 · Been Around the World

It's All About the Benjamins (remix)

Puff Daddy

KeyG minorTempo90 bpm
0:00/0:00
// It's All About the Benjamins (remix) — Puff Daddy
// 90 bpm, 4/4, key G minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 111 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar.
setcpm(90/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.

// chords · distortion guitar · "guitar"
const distortion_guitar = note(`<
  ~ A B A B C@4 A B A B A B A B A B A B A B A B D E F G D E F G D E F G ~@2 H I A B A B A B A B A B A B A B J H C@6 A B
  J ~ K L M N K L M N K L M N K L M N K L M N O@16 C@7 ~
>`.pickRestart({
  A: "[g3,d4,g4]@4 ~@3 [g3,d4,g4] [g3,d4,g4]@2 [g3,d4,g4]@4 ~@2", // G5
  B: "[g3,d4,g4]@4 ~@3 [g3,d4,g4] [g3,d4,g4]@2 [bb3,f4,bb4]@4 ~@2, [gb3,db4,gb4] ~@15", // G5 Bb5 Gb5
  C: "[g3,g4]@2 [gb3,gb4]@2 [f3,f4]@3 [db3,db4] [db3,db4]@2 [c3,c4]@4 [bb2,bb3]@2", D: "[g3,d4,g4]@2 ~@5 [b3,gb4,b4]",
  E: "[b3,gb4,b4] ~@3", F: "[bb3,f4,bb4]@2 ~@5 [a3,e4,a4]", G: "[a3,e4,a4] ~@3",
  H: "[g2,g3]@2 [g2,g3]@2 [bb2,bb3]@3 [c3,c4]@3 [db3,db4]@3 [d3,d4]@3", // G Bb C Db D
  I: "[g3,g4]@2 [gb3,gb4]@2 [f3,f4]@3 [db3,db4]@3 [c3,c4]@3 [bb2,bb3]@3", J: "[g3,d4,g4] ~@7",
  K: "[g3,d4,g4]@2 ~@5 [gb3,db4,gb4]", L: "[gb3,db4,gb4] ~@3", M: "[f3,c4,f4]@2 ~@5 [e3,b3,e4]", N: "[e3,b3,e4] ~@3",
  O: "[[g3,d4,g4]!7 [gb3,db4,gb4]@2 [gb3,db4,gb4]!6 [f3,c4,f4]@2 [f3,c4,f4]!6 [e3,b3,e4]@2 [e3,b3,e4]!7]/4", // G5 Gb5 F5 E5
})).s("gm_distortion_guitar").gain(0.51).pan(0.3)

// chords · overdriven guitar · "guitar"
const overdriven_guitar = note("<~@57 [~@13 bb2@3]!6 ~@40 [~@13 bb2@3]!7 ~>")
  .s("gm_overdriven_guitar").gain(0.51).pan(0.7)

// other · pad warm · "synth"
const pad_warm = note("<~@25 A B A C A B A C A B A C A B A C ~@24 D@2 ~@44>".pickRestart({
  A: "bb4", B: "b4", C: "a4", D: "[~ bb4@7]/2",
})).s("gm_pad_warm").gain(0.1)

// bass · fretless bass · "bass"
const bass = note(`<
  ~ A B A B C@4 A B A B A B A B A B A B A B A B D E F G D E F G D E F G H ~ I J A B A B A B A B A B A B A B K I J@6 A B
  K ~ L M N O L M N O L M N O L M N O L M N O P Q R S P Q R S P Q R S P Q R S J@7 ~
>`.pickRestart({
  A: "g1@4 ~@3 g1 g1@2 g1@4 ~@2", B: "g1@4 ~@3 g1 g1@2 bb1@6, gb1 ~@15", C: "g2@2 gb2@2 f2@3 db2 db2@2 c2@4 bb1@2",
  D: "g1@2 ~@5 b1", E: "b1 ~@3", F: "bb1@2 ~@5 a1", G: "a1 ~@3", H: "g1 ~@3", I: "g1@2 g1@2 bb1@3 c2@3 db2@3 d2@3",
  J: "g2@2 gb2@2 f2@3 db2@3 c2@3 bb1@3", K: "g1 ~@7", L: "g1@2 ~@5 gb1", M: "gb1 ~@3", N: "f1@2 ~@5 e1", O: "e1 ~@3",
  P: "g1!8", Q: "gb1!8", R: "f1!8", S: "e1!8",
})).s("gm_fretless_bass").gain(0.72)

// drums · kick
const kick = s("bd").struct(`<
  A B@23 C B@31 D B@7 D E F B@3 G B@5 G B@3 G B@3 G B@5 G B@3 G B@3 G B@3 G B@7 H
>`.pickRestart({
  A: "~@3 x ~@2 x ~@4 x ~@2 x ~", B: "x ~@6 x ~@2 x ~@5", C: "x ~@6 x ~@2 x ~@3 x!2", D: "x ~@2 x ~@3 x ~@5 x ~@2",
  E: "x", F: "~@2 x ~ x ~@2 x ~ x ~ x!3 ~@2", G: "x ~@6 x ~ x ~@3 x ~@2", H: "~ x ~@2 x ~@3 x ~@7",
})).gain(0.72)

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

// drums · hihat
const hihat = s("hh").struct("<[x!2 ~@3 x ~@2] [x!8]!64 x [~ x!2 ~ x ~ x ~] [x!8]!43 x>").gain(0.72)

// drums · open hat
const open_hat = s("oh").struct("<[~@3 x ~@3 x] ~@110>").gain(0.72)

stack(distortion_guitar, overdriven_guitar, pad_warm, bass, kick, snare, hihat, open_hat)

More by Puff Daddy