Strudelify
Got Me Under Pressure cover art

1983 · Eliminator

Got Me Under Pressure

ZZ Top

KeyE minorTempo156 bpm
0:00/0:00
// Got Me Under Pressure — ZZ Top
// 156 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: ch 4 "square lead-bass" named as a bass, played on electric bass finger (its lead 2 sawtooth patch is not one)
// note: duplicate parts dropped: ch 4 "square lead-bass" electric bass finger (copy of ch 1 "bass" electric bass finger); ch 5 "guit echo" distortion guitar (copy of ch 2 "guit1" overdriven guitar, 0.108 beats late)
// note: Full arrangement: all 143 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(156/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 · electric bass finger · "bass"
const bass = note(`<
  ~@2 A B A B A B C B A@4 ~@4 A D A D A D A B E F A G E H E I A J A K E H E H E L E L E M A B E N A B ~ A O A D A O A D
  A O A D A O A D P O A D A O A D A O A D A O A Q ~@3 R S T U E V R W T U E X ~ E N E Y E N E Y A O A D A O A D A O A D
  A O A D P O A D A O A D A O A D A O A Q
>`.pickRestart({
  A: "e2@3 ~ e2 ~ e2 ~ e2@3 ~ e2 ~ e2 ~", B: "e2 ~@7", C: "e2@3 ~ e2 ~ e2 ~ e2@3 ~ e2@2 e1@2",
  D: "e2@3 ~ e2 ~ e2 ~ e2 ~ c2 ~ d2 ~ d#2 ~", E: "e2@3 ~ e2 ~ e2 ~ e2@3 ~ e2 ~ e2@2",
  F: "~@2 e2@3 ~ e2 ~ a2@3 ~ a2@3 ~", G: "e2@2 ~@8 c2 ~ d2 ~ d#2 ~", H: "~@2 e2@3 ~ e2 ~ e2@2 c2 ~ d2 ~ d#2 ~",
  I: "~@2 e2 ~ e2 ~ e2 ~ e2@2 c2 ~ d2 ~ d#2 ~", J: "e2@3 ~ e2 ~ e2@4 c2 ~ d2 ~ d#2 ~",
  K: "e2@3 ~ e2 ~ e2 ~ e2@2 c2 ~ d2@2 d#2 ~", L: "~@2 e2 ~ e2 ~ e2 ~ e2@2 c2@2 d2@2 d#2@2",
  M: "~@2 e2@3 ~ e2 ~ e2@2 c2@2 d2 ~ d#2@2", N: "~@2 e2 ~ e2 ~ e2 ~ a2@3 ~ a2@3 ~",
  O: "d2@3 ~ d2 ~ d2 ~ d2@3 ~ d2 ~ d2 ~", P: "e2@3 ~ e2 ~ e2 ~ e2@3 ~@3 e2 ~", Q: "e2@3 ~ e2 ~@11",
  R: "a2@4 a2 ~ a2 ~ a2@3 ~ a2 ~ a2@2", S: "~@2 a2@2 a2 ~ a2 ~ a2@3 ~ a2 ~ a2 ~",
  T: "f#2@4 f#2 ~ f#2 ~ f#2@3 ~ f#2 ~ f#2@2", U: "~@2 f#2 ~ f#2 ~ f#2 ~ f#2@3 ~ f#2 ~ f#2 ~",
  V: "~@2 e2 ~ e2 ~ e2 ~ e2@3 ~ e2 ~ e2 ~", W: "~@2 a2 ~ a2 ~ a2 ~ a2@3 ~ a2 ~ a2 ~",
  X: "~@2 e2@3 ~ e2 ~ e2 ~ e2 ~ e2 ~@3", Y: "~@2 e2 ~ e2 ~ e2 ~ e2 ~ c2 ~ d2 ~ d#2 ~",
})).s("gm_electric_bass_finger").gain(0.8)

// chords · overdriven guitar · "guit1"
const overdriven_guitar = note(`<
  ~ A ~ B ~ B ~ B ~ C D E D E D E D E F G H I J K L ~ M@2 N O F G H I J K F G H I J K F P Q I J K F ~ M@2 N O ~ R S T@2
  R S U@2 R S U@2 R S U@2 R V U@2 R S U@2 R S U@2 R S W X@2 Y Z@3 AA@4 AB@2 AC@2 T@2 ~ AD@2 AE@2 AF@2 AE@2 R S T@2 R S
  U@2 R S U@2 R S U@2 R V U@2 R S U@2 R S U@2 R S W AG
>`.pickRestart({
  A: "~@2 [b3,e4]@2 [b3,d4]@2 [f#3,b3] e4 ~ e4@2 ~ d4 ~@3", B: "~@2 [b3,e4]@2 [b3,d4]@2 [f#3,b3] ~ e4 ~ e4@2 d4 ~@3",
  C: "~@2 [b3,e4]@2 ~ f#3 b3 ~ e4 ~ e4@2 d4 ~@3, ~@2 [b3,d4] ~@5", D: "~@4 [a2,d3]@2 ~@2 [a2,d3]@5 ~ [a2,d3]@2",
  E: "~@2 [a2,d3]@3 ~ [a2,d3]@2 g2@4 [b2,e3]@4", F: "e2@2 [b2,e3] ~ [b2,e3]@2 ~ [b2,e3], ~@8 d3 ~@7",
  G: "~@2 [b2,d3,e3]@2 ~@2 [b2,e3]@2 g2@3 ~ [b2,e3]@4", H: "e2@4 [b2,e3] ~@3 [b2,e3]@5 ~ [b2,e3]@2",
  I: "~ [b2,d3,e3] ~ [b2,e3] g2@2 [b2,e3]@2", J: "e2@4 [b2,d3,e3] ~@3 [b2,e3]@4 ~@2 [b2,e3]@2",
  K: "~@2 [b2,e3]@2 ~@2 [b2,e3]@2 g2@3 ~ [b2,e3]@4", L: "e2@4 [b2,e3]@2 ~@2 [b2,e3]@4 ~@2 [b2,d3,e3] ~",
  M: "[~@6 a3@2 b3@2 g4@2 f#4@2 a3@2 f#4@2 g4@2 ~@4 [a2,e3,a3]@3 ~ [a2,e3,a3]@4, [e2,b2,e3,e4]@3 ~]/2", // A5 E5
  N: "~@3 a3 b3 g4 f#4 a3, [e2,b2,e3,e4]", O: "f#4 g4 ~@6",
  P: "~ [b2,d3,e3] ~ [b2,e3,a3] g2 g4 [b2,e3,f#4]@2, ~@8 b3 ~@7", // E7 Esus4 Bsus4
  Q: "f#4@2 g4@2 [b2,e3] ~@3 [b2,e3]@5 ~ [b2,e3]@2, e2 ~@3", R: "[e2,b2,e3]@15 ~", S: "[d2,a2,d3]@15 ~",
  T: "[[e2,b2,e3]@29 ~@3]/2", U: "[[e2,b2,e3]@31 ~]/2", V: "[d2,a2,d3]@15 ~, b2 ~@15", W: "[e2,b2,e3]",
  X: "~@4 [b4,e5] ~ [b4,e5] ~@5 [b4,e5]@2 ~@2", Y: "~@4 [b4,e5] ~ [b4,e5]@2 ~@4 [b4,e5] ~@3",
  Z: "[~@4 [b4,e5]@11 ~ [a2,a3]@32, ~@5 e3@11]/3", AA: "[[f#2,c#3,f#3] [e2,b2,e3]]/4", AB: "[[a2,e3,a3]@7 ~]/2",
  AC: "[[f#2,c#3,f#3]@29 ~@3]/2", // F#5
  AD: "[~@6 a3@2 b3 ~ g4@2 f#4@2 a3@2 f#4@2 g4@2 ~ a2 ~@2 [a2,e3,a3]@3 ~ [a2,e3,a3]@4, [e2,b2,e3]@3 ~]/2", // A5 E5
  AE: "[~@3 a3 b3 g4 f#4 a3 f#4 g4@5 ~@2, [e2,b2,e3]@31 ~]/2", // E5
  AF: "[~@6 a3@2 b3 ~ g4@2 f#4@2 a3@2 f#4@2 g4@2 ~@4 [a2,e3,a3]@3 e2 [a2,e3,a3]@4, [e2,b2,e3]@24 ~@4 e2 ~@3]/2", // A5 E5
  AG: "~@4 [b4,e5] ~ [b4,e5] ~@9", // E5
})).s("gm_overdriven_guitar").gain(0.45)

// other · overdriven guitar · "lead guit"
const overdriven_guitar_2 = note(`<
  ~@55 A B C@2 D E F@2 G H I J K L@2 M G N@3 O P Q R S T U V W X Y ~@25 Z B C@2 D E F@2 G H I J K L@2 M G N@3 AA AB AC@2
  S T U V W X AD ~
>`.pickRestart({
  A: "b3@2 g4@5 b3", B: "a3 f#4@6 b3", C: "[e4@8 e4@5 ~ e4@4 ~ b3@2 ~ a3@2 g3@2 e3@2 ~@4, ~@9 d4 ~@6]/2",
  D: "~@6 e2@2 b2@2 ~@2 e3@3 ~", E: "~@4 d3 ~ d3@2 f#2 ~@3 [c3,d3]@2 ~@2",
  F: "[~@4 e3 ~@3 e3@4 ~ e3 g3@6 e3@2 ~@2 d3@2 e3@2 ~@4]/2", G: "~@4 e3 ~ e3@2 ~@4 e3 ~ e3@2",
  H: "~@4 e3 ~ e3@2 e4@2 ~@2 a4 ~@3", I: "b4", J: "g4 e4@6 a3", K: "b3 g4@6 a3",
  L: "[g4@2 ~@12 g4@4 f#4@2 e4@2 ~ e4@2 ~@2 d4@2 ~@2 e4, ~ f#4@7 ~@3 d4 ~@4]/2", M: "~@4 e4@3 ~ e4 ~@7",
  N: "[~@4 e3 ~ e3 ~@5 g3@8 e3 ~@3 e3@4 ~@2 a3@6 g3 ~@3 a3@2 g3@2 ~@4]/3", O: "~@4 a3@8 g3 ~@3",
  P: "a3@4 g3@2 ~@2 e3 ~ d3@2 ~@2 e3@2", Q: "~@2 e3@2 d3@2 b2@2 ~@4 g3 ~@3", R: "e3 ~@3 e3@7 ~ e3 ~@3",
  S: "~@4 e2 ~ e2@2 ~@4 e2 ~ e2 ~", T: "~@4 d2 ~ d2@2 ~@4 d2 ~ d2@2", U: "~@4 e2 ~@7 e2 ~ e2 ~",
  V: "~@4 e2 ~@7 [d2,e2] ~ e2@2", W: "~@4 e2 ~ e2@2 ~@4 e3 ~@3", X: "e4@15 ~", Y: "a3@6 g3 e3",
  Z: "~@2 g4@5 b3, b3@3 ~", AA: "~@4 e3 ~ e3@2 ~@4 e3@2 ~@2", AB: "~@4 d3 ~ d3@2 ~@4 d3@2 ~@2",
  AC: "[~@2 e3 ~ e3@2 e3 g3@3 e3 ~ d3 e3 ~@2]/2", AD: "e4@6 g3 e3",
})).s("gm_overdriven_guitar").gain(0.8)

// drums · kick
const kick = s("bd").struct("<~ A B@23 A B@23 A B@3 C@2 B@31 C@4 B@12 ~ B@39 D>".pickRestart({
  A: "x", B: "x!2", C: "x!4", D: "x!2 ~@2",
})).gain(0.79)

// drums · snare
const snare = s("sd").struct("<~ A B@15 C B@7 A B@3 C B@19 A B@3 D E B@31 ~@4 B@12 ~ B@39 ~>".pickRestart({
  A: "x", B: "~ x ~ x", C: "~@2 x ~ x!4", D: "x ~@2 x ~@2 x ~", E: "~ x ~@2 x ~ x ~",
})).gain(0.79)

// drums · low tom
const low_tom = s("lt").struct("<~@9 [~@5 x!3] ~@78 [x!8]!2 ~@53>").gain(0.79)

// drums · pedal hat
const pedal_hat = s("hh").struct("<A ~ B@23 ~ B@23 ~ B@3 C ~ B@31 ~@4 B@12 ~ B@39 ~>".pickRestart({
  A: "x!4", B: "x!8", C: "x",
})).gain(0.79)

// drums · mid tom
const mid_tom = s("mt").struct("<~@9 [~@4 x ~ x!2] ~@76 [x!8]!2 ~@54 [x!3 ~@5]>").gain(0.79)

// drums · high tom
const high_tom = s("ht").struct("<~@9 [~ x ~@2 x ~@3] ~@133>").gain(0.79)

// drums · crash
const crash = s("cr").struct("<~ A ~@24 A ~@23 A ~@39 A ~@12 A ~@3 A ~@35>".pickRestart({
  A: "x",
})).gain(0.79)

stack(bass, overdriven_guitar, overdriven_guitar_2, kick, snare, low_tom, pedal_hat, mid_tom, high_tom, crash)

More by ZZ Top