Strudelify
Gimme All Your Lovin cover art

1983 · Eliminator

Gimme All Your Lovin

ZZ Top

KeyD majorTempo124 bpm
0:00/0:00
// Gimme All Your Lovin — ZZ Top
// 124 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: duplicate parts dropped: ch 3 "CLAVINET" clavinet (copy of ch 8 "DISTORTION" distortion guitar, 0.104 beats late); ch 5 "OVERDRIVE" overdriven guitar (copy of ch 7 "DISTORTION" distortion guitar)
// note: Full arrangement: all 116 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(124/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 · fretless bass · "FRETLESS"
const bass = note(`<
  ~@4 A B C@15 D E C@2 D E C F C@8 D E C@2 D E C F G ~ C@8 H I C@2 H I C@2 G ~ C@2 G ~ C@2 J@6 K L D E C@2 D E C F G ~ G
  ~ C@8 ~@4 D E C@2 D E C F G ~ G ~ M
>`.pickRestart({
  A: "~@5 g2 a2 d2", B: "d2@2 d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~", C: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ d2 ~",
  D: "c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~ c2 ~", E: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ a1 ~",
  F: "d2 ~ d2 ~ d2 ~ d2 ~ d2 ~ g2 ~ a2 ~ d2 ~", G: "d2 ~@7", H: "g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~ g1 ~",
  I: "a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~ a1 ~", J: "d2 ~@2 d2 ~@4", K: "~@2 d2 ~ d2 ~@2 d2", L: "~ d2 ~@2 d2!4",
  M: "d2 ~@15",
})).s("gm_fretless_bass").gain(0.52)

// chords · alto sax
const alto_sax = note(`<
  ~@12 A B C D E F G H I J K ~@2 L M N O P C D Q R S T U V W ~@2 X Y ~@6 Z ~@2 AA ~@10 AB ~ AC AD AE AF AG AH AI AJ AK
  AL AM AN AO ~ AP AQ ~ AR AS AT Z ~@17 AP AQ ~ AR AS AT Z ~@6
>`.pickRestart({
  A: "~@10 c#3 ~@2 d#3 g4 c#3", B: "~ d#3 f#4 c#3 ~ d#3 ~@10, g4 ~ a4 ~@5", C: "~@15 c#3, ~@7 d4",
  D: "g4 d#3 g4 c#3 g4 d#3 [c#3,g4] ~ [d#3,f#4] ~@3 f#4@2 d4@2, ~@8 g4@4 c#3 ~ d#3 ~", // C#dim D#m
  E: "~@10 [d#3,g4] ~ g4@2 [d#3,f#4] ~, ~@12 c#3 ~@3", F: "~ c#3 [d#3,f#4] ~ g4@3 ~@9, g4@2 ~@2 c#3 ~@11",
  G: "~@13 c#3 ~ d#3, ~@6 e4 f#4",
  H: "g4 c#3 g4 d#3 g4@2 [d#3,f#4] ~ c#3 ~ d#3 ~ f#4@2 ~ d#3, ~@4 c#3 ~@3 g4@4 c#3 ~ d4@2", I: "~@6 g#3 ~@9",
  J: "g4@2 g4 d#3 ~ c#3 g4 d#3 g4 c#3 g4@2 ~@4, c#3 ~@3 g4@2 ~@4 d#3 ~@5",
  K: "g4 c#3 g4 d#3 g4@2 [d#3,f#4] ~ g4@2 f#4@2 a4@3 ~, ~@4 c#3 ~@3 c#3 ~ d#3 ~ c#3 ~@3", // D#m
  L: "~ c#3 [d#3,g4] ~ [c#3,g4] ~ g4@2 g4@2 g4@2 ~@4, g4@2 ~@4 d#3 ~ c#3 ~ d#3 ~@5", // D# C#dim
  M: "~ c#3 ~ d#3 ~ c#3 g4@2 f#4@2 [d#3,d4] ~ d4@2 c#3 ~, g4@2 g4@2 g4@2 d#3 ~ c#3 ~@7", N: "~@6 f#3 ~@9",
  O: "~@11 c#3 ~ d#3 [c#3,g4] ~", P: "g4@2 f#4 c#3 ~ d#3 ~@10, d#3 ~@3 a4@2 ~@10",
  Q: "~@10 g4 ~ g4@2 [d#3,f#4] ~, ~@12 c#3 ~@3", R: "g4@2 f#4 ~ g4@2 c#3 ~@9, c#3 ~@3 d#3 ~@11", S: "~@6 e4 f#4",
  T: "[c#3,g4] ~ [d#3,g4] ~ g4@2 [d#3,f#4] ~ c#3 ~ d#3 ~@2 c#3 ~ d#3, ~@4 c#3 ~@3 g4@4 f#4@2 d4@2", U: "~@4 f#3 ~@11",
  V: "~ c#3 g4 d#3 ~ c#3 [d#3,g4] ~ [c#3,g4] ~ g4@2 ~@4, g4@2 ~@2 g4@2 ~@4 d#3 ~@5", // D# C#dim
  W: "[c#3,g4] ~ g4 d#3 g4@2 [d#3,f#4] ~@2 c#3 f#4@2 ~ c#3 ~@2, ~@4 c#3 ~@3 g4@2 d#3 ~ a4@3 ~", // C#dim D#m
  X: "~ c#3 g4 d#3 g4 c#3 g4@2 g4@2 g4@2 ~@4, g4@2 ~@4 d#3 ~ c#3 ~ d#3 ~@5",
  Y: "~ c#3 g4@2 ~ c#3 g4@2 f#4@2 [d#3,d4] ~ d4@2 c#3 ~, g4@2 d#3 ~ g4@2 d#3 ~ c#3 ~@7", Z: "~@2 f#3 ~@13",
  AA: "~@7 d#3 ~@8", AB: "d#3 ~@15", AC: "~@12 d#3 ~@3", AD: "~@14 d#3 ~",
  AE: "c#3 ~ d#3 ~ c#3 ~ d#3 c#3 ~ d#3 ~@2 c#3 ~ d#3 c#3", AF: "~@2 d#3 c#3 ~ d#3 ~ c#3 ~@8", AG: "~@5 f#3 ~@10",
  AH: "~@9 c#3 ~@2 d#3 ~ [c#3,g4] ~", AI: "g4@2 [c#3,f#4] d#3 a4@2 ~@10, d#3 ~@15", AJ: "~@7 d4, ~@14 c#3 ~",
  AK: "[d#3,g4] ~ [c#3,g4] d#3 g4 c#3 g4 d#3 f#4 c#3 ~@2 f#4@2 d4@2, ~@8 g4@4 ~@2 d#3 ~", // D# C#dim
  AL: "~@10 [d#3,g4] ~ c#3 d#3 f#4 c#3, ~@6 g4 ~", AM: "g4@2 f#4 ~ d#3 c#3 ~@10, ~@4 g4@3 ~@9",
  AN: "~@6 e4 f#4, ~@14 c#3 ~", AO: "g4 d#3 g4 c#3 ~ d#3 f#4 c#3 ~ d#3 ~@3 c#3 d4@2, ~@2 g4 ~ g4@2 f#4 ~",
  AP: "g4@2 [d#3,g4] ~ c#3 d#3 g4 c#3 g4 d#3 g4@2 ~ c#3 ~@2, c#3 ~@3 g4@2 ~@10", // D#
  AQ: "g4 d#3 g4 c#3 ~ d#3 f#4 ~ c#3 d#3 ~ c#3 a4@3 ~, ~@2 g4 ~ g4 f#4 ~@2", AR: "~@15 c#3",
  AS: "~ d#3 g4 c#3 g4 d#3 ~ c#3 ~ d#3 g4@2 ~ c#3 ~@2, g4 ~@2 g4!2 ~@3",
  AT: "~ d#3 ~ c#3 ~ d#3 g4@2 c#3 d#3 d4 ~@2 c#3 ~@2, g4@2 g4@2 g4@2 ~@2 f#4@2 ~@2 d4@3 ~",
})).s("gm_alto_sax").gain(0.45)

// chords · distortion guitar · "DISTORTION"
const distortion_guitar = note(`<
  ~@4 A@2 B C B C B C B C B C B C B C B D E F G D E F G C B C B C B C B D E F G D E F G ~@2 H@8 I J H@2 I J H@2 ~@2 H@2
  ~@2 H@2 C B C B C B C B D E F G D E F G ~@4 H@8 ~@4 D E F G D E F G ~@4 K
>`.pickRestart({
  A: "[~@10 [d3,g3]@2 [d3,a3]@2 d3@2 ~@2 [g3,d4]@3 ~ g3@2 c4@2 [g3,d4] ~ [d3,g3,c4] ~ [d3,g3,c4]@2, ~@14 a3@4 ~@4 c4 ~@9, ~@16 d3@11 ~@5]/2", // G5 D5 G5 Csus2
  B: "~ [d3,a3,d4] [d3,d4]@2 [d3,a3]!4, ~@2 a3 ~ d4@2 ~@2", // D5 D D5
  C: "~@2 [g3,d4]@3 ~ g3@2 c4@2 [g3,d4] ~ [d3,g3,c4] ~ [d3,g3,c4]@2, d3@11 ~@5, ~@6 c4 ~@9", D: "[c3,g3,c4]!4",
  E: "[d3,g3,d4]!4", F: "[d3,a3,d4]!2 [d3,g3,c4]!2", G: "[d3,a3,d4]!4", H: "[d3,a3,d4]!8", I: "[g2,d3,g3]!8",
  J: "[a2,e3,a3]!8", K: "[d3,a3,d4] ~@7",
})).s("gm_distortion_guitar").gain(0.33)

// chords · distortion guitar · "DISTORTION"
const distortion_guitar_2 = note(`<
  ~@5 A@2 B@4 C@2 D E@6 F ~ G@3 ~ G@3 E@7 H ~ G@3 ~ G@3 I J K L@2 ~@21 M@2 ~@2 M@2 ~@3 N@3 ~ O@3 I J I P Q ~@7 R@4 ~ N@3
  ~ O@3 I J I P ~
>`.pickRestart({
  A: "[~@2 d5@21 ~@2 c5 a4 ~ a4@2 d5@2, ~@2 c5 ~@21 d5@2 ~@2 g4 ~@3]/2",
  B: "[d5@20 ~@5 c5 a4 ~ a4@2 d5@2, c5 ~@23 d5@2 ~@2 g4 ~@3]/2",
  C: "[d5@20 ~@5 c5 a4 ~ a4@2 g4 f#4, c5 ~@23 d5@2 ~@2 g4 ~@3]/2", D: "~@10 c4@2 g3@3 ~, d4@15 ~",
  E: "[a3,d4] ~@5 [a3,d4] ~@9", F: "[a3,d4] ~@5 [a3,d4] ~@3 c4@2 g3@3 ~",
  G: "[~@8 b2@2 d3@2 [f3,f#3]@2 ~@2 [a3,d4] ~@5 [a3,d4] ~@9 [a3,d4] ~@5 [a3,d4] ~@3 [c3,c4]@2 [g3,g4]@3 ~, ~@7 d3@16 ~]/3", // F#maj7 D5 C G
  H: "[a3,d4] ~@5 [a3,d4] ~@3 [c4,c5]@2 [g3,g4]@3 ~", I: "[g3,c4]!2 f3 [g3,c4]!2 f3 [g3,c4]!2",
  J: "f3 [g3,c4]!2 f3 [g3,c4] [a3,d4] f3 d3", K: "d3@2 d3@2 [g3,c4]@2 [a3,d4] f4, ~@14 d4 ~",
  L: "[~@2 [d4,f4]@2 d4@10 c4 d4@3 ~@14]/2", M: "[~@4 d5@21 ~ [c4,c5]@2 [g3,g4]@3 ~, ~@4 c5 ~@27]/2",
  N: "[~@8 b2@2 d3@2 [f3,c5] ~@3 [a3,d4] ~@5 [a3,d4] ~@9 [a3,d4] ~@5 [a3,d4] ~@3 [c3,c4]@2 [g3,g4]@3 ~, ~@6 d5@17 ~, ~@6 f#3 d3@16 ~]/3", // F5 D5 C G
  O: "[~@4 c5 ~@3 b2@2 d3@2 [f3,c5] ~ a4@2 [a3,d4,a4] ~ b4 ~ b4@2 [a3,d4,b4] ~ c4@4 a4@2 b4@2 [a3,d4] ~ d4 ~ e4 ~ [a3,d4] ~@3 [c3,c4]@2 [g3,g4]@3 ~, ~@2 d5@4 d5@17 ~, ~@6 f#3 d3@16 ~, ~@12 f#4@3 ~]/3", // F5 D5 Bm7 D5 C G
  P: "f3 [g3,c4]!2 f3 [g3,c4] [a3,d4] [f3,c4,f4] [d3,c4,f4]", Q: "[c4,f4] ~@7",
  R: "[~@2 c3 ~ d3 ~ d3@4 c3 ~ d3 ~ d3@4 c3 ~ d3 ~ d3@4 c3 ~ d3 ~ d3@4 c3 ~ d3 ~ d3@4 c3 ~ d3 ~ d3@4 c3 ~ d3 ~ d3@4 c3 ~ d3 ~ d3@2]/4",
})).s("gm_distortion_guitar").gain(0.48)

// drums · kick
const kick = s("bd").struct("<~ [x!4]!114 x>").gain(0.48)

// drums · clap
const clap = s("cp").struct("<~@12 [~@5 x!2 ~] ~@58 [~ x ~ x]!16 ~@4 [~ x ~ x]!20 ~@5>").gain(0.36)

// drums · snare
const snare = s("sd").struct(`<
  A B C B D B@11 C B@3 C B@7 C B@7 C B@3 C B@3 C E F B@7 G B@8 H@2 B@2 H@2 B C B@6 I J B@3 C B@3 C ~ A K ~ B@3 C B@3 C
  B@3 L B@3 C B@3 C ~ A K ~@2
>`.pickRestart({
  A: "~@14 x!2", B: "~ x ~ x", C: "~@4 x ~@7 x ~ x!2", D: "~@2 x ~@2 x!2 ~", E: "x ~@13 x!2", F: "x ~@4 x ~@2",
  G: "~@4 x ~@5 x!6", H: "x!8", I: "~@2 x ~ x ~@2 x", J: "~@2 x ~@5 x ~ x ~ x ~ x!2", K: "x", L: "x!5 ~ x!5 ~ x ~ x!2",
})).gain(0.54)

// drums · low tom
const low_tom = s("lt").struct("<~@4 A ~@41 A ~@43 B ~@23 B ~>".pickRestart({
  A: "~@3 x", B: "~@10 x ~ x ~ x!2",
})).gain(0.54)

// drums · hihat
const hihat = s("hh").struct("<~ A@44 ~@2 A@16 ~@2 A@2 ~@2 A@18 ~@4 A@20 ~@5>".pickRestart({
  A: "x!8",
})).gain(0.48)

// drums · mid tom
const mid_tom = s("mt").struct("<~@4 A ~@41 A ~@43 B ~@23 B ~>".pickRestart({
  A: "~@3 x", B: "~@8 x!2 ~@6",
})).gain(0.54)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@4 A ~@11 B ~@3 B ~@7 B ~@7 B ~@3 B ~@3 B ~@37 B ~@3 B ~@19 B ~@3 B ~@5
>`.pickRestart({
  A: "~@7 x", B: "~@3 x",
})).gain(0.36)

// drums · high tom
const high_tom = s("ht").struct("<~@90 [x!3 ~ x ~ x!2 ~@8] ~@23 [x!3 ~ x ~ x!2 ~@8] ~>").gain(0.54)

// drums · crash
const crash = s("cr").struct(`<
  ~@5 A ~@11 A ~@29 A ~@7 A@2 ~@2 A@2 ~@4 A ~@3 A ~@9 A ~@3 A ~@7 A ~@3 A ~@7 A ~@3 A ~@8
>`.pickRestart({
  A: "x",
})).gain(0.42)

// drums · tambourine
const tambourine = s("tb").struct("<~@29 [x!4]!16 ~@2 [x!4]!40 [~ x ~ x]!4 [x!8]!20 [~ x ~ x]!4 ~>").gain(0.36)

// drums · tambourine · soft notes
const tambourine_soft = s("tb").struct(`<
  ~@29
  [~ x ~ x ~ x ~ x]!16
  ~@2
  [~ x ~ x ~ x ~ x]!40
  ~@4
  [~ x ~ x ~ x ~ x ~ x ~ x ~ x ~ x]!20
  ~@5
>`).gain(0.12)

stack(
  bass, alto_sax, distortion_guitar, distortion_guitar_2, kick, clap, snare, low_tom, hihat, mid_tom, open_hat,
  high_tom, crash, tambourine, tambourine_soft
)

More by ZZ Top