Strudelify

Ain't Nuthin' but a G Thang

Dr. Dre

KeyF♯ minorTempo94 bpm
0:00/0:00
// Ain't Nuthin' but a G Thang — Dr. Dre
// 94 bpm, 8/4, key F# minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 49 bars on a 32-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(94/8)

// Notation: c3@3 lasts 3 steps · ~ is a rest · "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 · fretless bass · "Bass"
const bass = note(`<
  ~@2
  [b1 a1 f#1 b1 ~@4 b1 d2 e2 f#2 ~@4 b1 d2 e2 f#2 ~@4 b1 a1 ~ b1 ~@4, ~@13 f#1 ~@2]!23
  ~@2
  [b1 a1 f#1 b1 ~@4 b1 d2 e2 f#2 ~@4 b1 d2 e2 f#2 ~@4 b1 a1 ~ b1 ~@4, ~@13 f#1 ~@2]!4
  ~@4
  [b1 a1 f#1 b1 ~@4 b1 d2 e2 f#2 ~@4 b1 d2 e2 f#2 ~@4 b1 a1 ~ b1 ~@4, ~@13 f#1 ~@2]!12
  ~@2
>`).s("gm_fretless_bass").gain(0.48)

// other · accordion · "High synth"
const accordion = note("<~ A ~@11 A@2 ~@6 A@4 ~@14 A@8 ~@2>".pickRestart({
  A: "b6 a6 b6 c#7 b6 a6@2 g6 f#6@2 e6 f#6@5",
})).s("gm_accordion").gain(0.32)

// other · synth strings 1 · "Synth strings"
const synth_strings_1 = note("<~@11 A@2 ~@6 A@2 ~@8 B@2 ~@18>".pickRestart({
  A: "b5@3 a5 f#5@2 e5 f#5@9", B: "[d6@4 c#6@6 d6 e6 d6@6 e6 f#6 e6@6 f#6 a6 f#6@4]/2",
})).s("gm_synth_strings_1").gain(0.41)

// chords · electric guitar jazz · "Jazz guitar"
const electric_guitar_jazz = note("<A@40 B@6 C@3>".pickRestart({
  A: "[~@3 f#4 ~@3 f#4 ~@3 f#4 ~@3 f#4 ~@3 f#4 ~@3 f#4 ~@3 f#4 ~@3 f#4, f#4@3 ~ f#4@3 ~ f#4@3 ~ f#4@3 ~ f#4@3 ~ f#4@3 ~ f#4@3 ~ f#4@3 ~, ~ e4@4 e4@4 e4@4 e4@4 e4@4 e4@4 e4@4 e4@3]/8",
  B: "[~@3 f#4 ~@3 f#4 ~@3 f#4 ~@3 f#4 ~@3 f#4 ~@3 f#4, f#4@3 ~ f#4@3 ~ f#4@3 ~ f#4@3 ~ f#4@3 ~ f#4@3 ~, ~ e4@4 e4@4 e4@4 e4@4 e4@4 e4@3]/6",
  C: "[~@3 f#4@8 ~, f#4 ~@3, ~ e4@8 ~@3]/3",
})).s("gm_electric_guitar_jazz").gain(0.19)

// drums · kick
const kick = s("bd").struct("<[x ~@2 x!2 ~@2 x!2 ~@2 x!3 ~ x]!44 [~@13 x ~@2]!3 ~@2>").gain(0.8)

// drums · rim
const rim = s("rim").struct("<[~ x ~ x ~ x ~ x]!47 ~@2>").gain(0.72)

// drums · hihat
const hihat = s("hh").struct("<[x!13 ~ x!2]!32 [x!9 ~@7] ~@16>").gain(0.72)

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

// drums · tambourine
const tambourine = s("tb").struct("<[x!32]!40 [x!8 ~@24] ~@8>").gain(0.48)

// drums · vibraslap
const vibraslap = s("vibraslap:0").struct(`<
  A ~ B ~ B ~ B@2 ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B@3 ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B ~ B@4 ~@2
>`.pickRestart({
  A: "x!2 ~@14", B: "x",
})).gain(7.52)

stack(bass, accordion, synth_strings_1, electric_guitar_jazz, kick, rim, hihat, open_hat, tambourine, vibraslap)

More by Dr. Dre