Strudelify
I Can't Drive 55 cover art

1984 · Unboxed

I Can't Drive 55

Sammy Hagar

KeyE majorTempo135 bpm
0:00/0:00
// I Can't Drive 55 — Sammy Hagar
// 135 bpm, 4/4, key E major. Source: mcgill + midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 139 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(135/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 · brass section · "Harmony"
const brass_section = note(`<
  ~@31 A B C D E F@3 ~@28 G H I J K L@3 ~@2 M N@2 ~ M N@2 ~ M N@2 ~ M O ~@22 G H I J K L@3 ~@4 P Q R ~ P Q R ~ P Q R ~@3
>`.pickRestart({
  A: "[e4,a4,c#5]@3 ~ [e4,a4,c#5]@3 ~ [e4,a4,c#5]@2 [d4,g4,b4]@2 [e4,a4,c#5]@4", // A G A
  B: "~@2 [e4,a4,c#5]@2 [d4,g4,b4]@2 [e4,a4,c#5]@9 ~", // A G A
  C: "[b3,e4,b4]@3 ~ [b3,e4,b4]@3 ~ [b3,e4,b4]@3 ~ [e4,g4,b4] ~ [b3,e4,g4] ~", // E5 Em
  D: "[e4,g4,b4] ~ [e4,g4,b4]@2 [b3,e4,g4]@2 [e4,g4,b4]@8 ~@2", // Em
  E: "[e4,a4,c#5]@3 ~ [e4,a4,c#5]@3 ~ [e4,a4,c#5] ~ [e4,a4,c#5] ~ [e4,a4,c#5] ~ [e4,a4,c#5]@2", // A
  F: "[~@2 [e4,a4,c#5]@3 ~ [d4,g4,b4]@7 ~ [f#4,b4,d#5]@8 ~@2 [e4,a4,c#5]@5 ~ [f#4,b4,d#5]@4 ~@14]/3", // A G B A B
  G: "[e4,c#5]@3 ~ [e4,c#5]@3 ~ [e4,c#5]@2 [d4,b4]@2 [e4,c#5]@4", H: "~@2 [e4,c#5]@2 [d4,b4]@2 [e4,c#5]@9 ~",
  I: "[e4,b4]@3 ~ [e4,b4]@3 ~ [e4,b4]@3 ~ [e4,b4] ~ [e4,b4] ~", J: "[e4,b4] ~ [e4,b4] ~ [e4,b4] ~ [e4,b4]@8 ~@2",
  K: "[e4,c#5]@3 ~ [e4,c#5]@3 ~ [e4,c#5] ~ [e4,c#5] ~ [e4,c#5] ~ [e4,c#5]@2", // C#m
  L: "[~@2 [e4,c#5]@3 ~ [d4,b4]@7 ~ [f#4,d#5]@8 ~@2 [e4,c#5]@5 ~ [f#4,d#5]@4 ~@14]/3", // C#m G D#m C#m D#m
  M: "~@8 [d4,a4,d5]@3 ~ [d4,a4,d5]@3 ~", N: "[[d4,a4,d5]@7 ~ [d4,a4,d5]@3 ~ [d4,a4,d5]@2 [e4,b4,e5]@7 ~@11]/2",
  O: "[d4,a4,d5]@3 ~@13", P: "~@8 [e4,g#4,b4]@3 ~ [e4,g#4,b4]@3 ~",
  Q: "[e4,a4,b4]@6 ~@2 [e4,a4,b4]@3 ~ [c#4,e4,a4] ~ [c#4,e4,a4]@2", R: "[b3,e4,g#4]@3 ~",
})).s("gm_brass_section").gain(0.6).pan(0.4)

// other · distortion guitar
const distortion_guitar = note(`<
  ~@13 A B@3 ~@4 A B ~@8 C@2 B@2 C@2 D E ~@12 B@2 ~@4 A B ~@8 C@2 B@2 C@2 D E ~@4 F@2 ~@2 G H@2 I@3 ~@6 A B@5 ~@2 A B
  ~@8 C@2 B@2 C@2 D E ~@18
>`.pickRestart({
  A: "~@2 [e2,e3]!2 [e2,e3]@2 [e2,e3]!2 [e2,e3]@2 [e2,e3]!2 [e2,e3]@2 [e2,e3]!2", // E
  B: "[e2,e3]@2 [e2,e3]!2 [e2,e3]@2 [e2,e3]!2 [e2,e3]@2 [e2,e3]!2 [e2,e3]@2 [e2,e3]!2", // E
  C: "[a2,a3]@2 [a2,a3]!2 [a2,a3]@2 [a2,a3]!2 [a2,a3]@2 [a2,a3]!2 [a2,a3]@2 [a2,a3]!2", // A
  D: "[b2,b3]@2 [b2,b3]!2 [b2,b3]@2 [b2,b3]!2 [a2,a3]@2 [a2,a3]!2 [a2,a3]@2 [b2,b3]!2", E: "[b2,b3] ~@7",
  F: "[~@2 e4@5 ~@4 e4@2 e4@3, ~@7 e4@4 ~@5, ~@9 g#4@4 ~@3]/2", G: "e5",
  H: "[~@13 g#4@19, b4@5 b4@5 ~ b4@21, ~@3 d5@5 d5@6 ~@18]/2",
  I: "[~@7 g#2 b2 ~@2 g#2 b2 ~@2 g#2 b2 ~@2 g#2 b2 e2@3, ~@7 e4@17, ~@9 e3@4 e2@4 e3@4 ~@3]/3",
})).s("gm_distortion_guitar").gain(0.64).pan(0.3)

// chords · distortion guitar
const distortion_guitar_2 = note(`<
  ~ A B@3 A B@3 C@4 ~@4 D E F@2 ~@2 D G H@2 I@4 J@2 K@2 J@2 L@2 A B@3 A B@3 C@4 ~@2 D E F@2 ~@2 D G H@2 I@4 J@2 K@2 J@2
  L@2 M N O@2 H@2 O@2 H@2 O@2 H@2 P Q R S R T U@4 ~@2 D E V@2 D G H@2 I@4 J@2 K@2 J@2 L@2 A B@3 A B@3 A B@3 A B@3 F@2
>`.pickRestart({
  A: "[e2,e3]@2 [e2,e3,e4]!3 [e2,e3,e4]@2 ~, b2@7 ~, ~@2 b3@5 ~", // E
  B: "[[a2,e3,a3,e4,a4]!4 ~ [e2,b2,e3,b3,e4] [g2,g3,b3,g4] [e2,b2,e3,b3,e4]@11 ~ [g2,d3,g3,d4,g4]@2 [a2,e3,a3,e4,a4]@2 [g2,d3,g3,d4,g4]]/3", // A5 E5 G E5 G5 A5 G5
  C: "[[a2,a3,e4,a4]@2 ~@2 e3@2 [e2,b2,e3,b3,e4]@54 [e2,b2,e3,b3,e4]!2 [d2,a2,d3,a3,d4]@2, e3 ~@15]/4", // A5 E5 D5
  D: "[e2,b2,e3,b3,e4]@3 ~@3 [g2,d3,g3,d4,g4]@10", // E5 G5
  E: "[a2,e3,a3,e4,a4]@3 [g2,d3,g3,d4,g4]@2 [a2,e3,a3,e4,a4]@2 [g2,d3,g3,d4]", // A5 G5 A5 G5
  F: "[[a2,a3,e4,a4] ~ e3 [e2,b2,e3,b3,e4]@13, e3 ~@7]/2", // A5 E5
  G: "[a2,e3,a3,e4,a4]@3 [g2,d3,g3,d4,g4]@2 [a2,e3,a3,e4,a4]@2 [g2,d3,g3,d4,g4]", H: "[e2,b2,e3,b3,e4]/2",
  I: "[[g2,d3,g3,d4,g4]@7 [a2,e3,a3,e4,a4]@8 [b2,f#3,b3,f#4,b4]@14 [b2,f#3,b3,f#4,b4]!2 [g#2,d#3,g#3,d#4,g#4]]/4", // G5 A5 B5 G#5
  J: "[a2,e3,a3]/2", K: "[b2,e3,b3]/2", L: "[[b2,f#3,b3]@4 [a2,e3,a3]@3 [b2,f#3,b3]@2 ~@7]/2",
  M: "~@2 [b3,e4] [e2,b2,e3,b3,e4]!2 [e2,b2,e3,b3,e4]@2 ~, [e2,b2,e3]@3 ~@5", // E5
  N: "[a2,e3,a3,e4,a4]!4 ~ [e2,b2,e3,b3,e4] [e2,b2,e3,b3,e4]@2", O: "[d2,a2,d3,a3,d4]/2", P: "[d2,a2,d3,a3,d4]",
  Q: "[d2,a2,d3,a3,d4]@3 ~@13", // D5
  R: "[b2,e3,b3,e4]!4 [b2,e3,b3,e4]@2 [a2,d3,a3,d4]@2 [b2,e3,b3,e4]@2 [d3,g3,d4,g4]@2 ~@4", // E5 D5 E5 G5
  S: "[b2,e3,b3,e4]!4 [b2,e3,b3,e4]@2 [a2,d3,a3,d4]@2 [b2,e3,b3,e4]@2 ~@6", // E5 D5 E5
  T: "[b2,e3,b3,e4]!4 [b2,e3,b3,e4]@2 [a2,d3,a3,d4]@2 ~@8", // E5 D5
  U: "[[d4,b4,d5]@6 [c#4,a4,c#5]@8 [d4,b4,d5]@4 [c#4,a4,c#5]@5 ~ [e4,a4,c#5]@2 [c#4,g4,b4]@2 [a4,c#5]@2 [b3,g#4,b4]@4 ~@4 [b3,g#4]@2 [e4,b4]@2 ~ [e4,b4]@2 ~ [b3,e4,b4,e5]@18, e4@23 ~@5 e4@6 [b2,b3]@4 ~@26, ~@36 [g#3,e4]@4 ~@2 [b3,g#4]@2 ~ [g#3,g#4]@2 ~@17]/4", // G F#m G F#m A C#m7b5 A E …
  V: "[[e2,b2,e3,b3,e4]@7 ~]/2", // E5
})).s("gm_distortion_guitar").gain(0.45).pan(0.7)

// bass · electric bass pick · "Bass"
const bass = note(`<
  ~ A B C D A B C D E F@2 G F@14 H I J K L@2 C@2 L@2 M@2 A B C D A B C D E F@2 G F@12 H I J K L@2 C@2 L@2 M@2 A N O@2
  C@2 O@2 C@2 O@2 C@2 O P Q R Q S F@14 H I J K L@2 C@2 L@2 M@2 A B C D A B C D A B C D A B C D T@2
>`.pickRestart({
  A: "e1!6 g1 e1", B: "a1!5 e1 g#1 e1", C: "e1!8", D: "e1!3 g1@2 a1@2 g1", E: "a1@2 e1!4 g1 a1", F: "e1!6 g1 a1",
  G: "e1!2 e2!2 d2!2 b1!2", H: "g1!7 a1", I: "a1!7 b1", J: "b1!8", K: "b1!7 g#1", L: "a1!8",
  M: "[b1!4 a1!3 b1@2 ~@7]/2", N: "a1!5 e1 e1@2", O: "d1!8", P: "d1@3 ~@13", Q: "e1!4 e1@2 d1@2 e1@2 g1@2 ~@4",
  R: "e1!4 e1@2 d1@2 e1@2 ~@6", S: "e1!4 e1@2 d1@2 ~@8", T: "[a1 ~@2 e1 e1@12]/2",
})).s("gm_electric_bass_pick").gain(0.55)

// chords · percussive organ · "Organ"
const percussive_organ = note(`<
  ~ A@8 ~@4 B@4 ~@4 B@2 C@2 ~@6 D@2 E@6 A@8 ~@4 B@2 C@2 ~@2 B@2 C@2 ~@6 D@2 E@6 F@2 G ~@3 G ~@3 G ~@3 G ~@9 B@2 C@2 B@2
  C@2 ~@6 D@2 E@6 A@12 H@4 ~@2
>`.pickRestart({
  A: "[~ e6@12 ~@3]/4", B: "~ [e5,b5,e6] ~@2 [e5,b5,e6] ~@3", C: "[g#5 e5 a#4 a4@7 ~@6]/2",
  D: "[a4@29 [a#4,b4] [c5,c#5] [d5,d#5]]/2", E: "[e5@13 b4 g#4 a4@14 a4 a#4 b4@5 a4@3 b4@2 ~@7]/6", F: "[~ e5@7]/2",
  G: "d5", H: "[~@2 e5@25 ~@5]/4",
})).s("gm_percussive_organ").gain(0.45).pan(0.8)

// drums · kick
const kick = s("bd").struct("<A B@29 A B@7 ~ B@27 A B@7 ~ B A B@13 C D E D F B@17 A B@7 ~ B@16 C ~>".pickRestart({
  A: "x!4", B: "x!2", C: "x", D: "~@4 x!2 ~@2", E: "~ x", F: "~@3 x ~@4",
})).gain(0.55)

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

// drums · low tom
const low_tom = s("lt").struct("<~@30 A ~@35 A ~@9 B ~@14 C@3 ~@18 A ~@26>".pickRestart({
  A: "~ x ~ x ~@4", B: "~@12 x!4", C: "~@3 x ~@4",
})).gain(0.55)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A@4 B@2 A@2 B@2 A@2 B A@4 B@3 A@3 B@2 A@2 B@2 ~ B A@5 C ~ A@4 B@2 A@2 B@2 A@5 B@3 A@3 B@2 A@4 ~ B A@5 C ~ A ~@19 A@7
  B A@3 B@2 A@2 B@2 ~ B A@5 C ~ A@4 B@2 A@2 B@2 A@2 B@2 A@2 D ~
>`.pickRestart({
  A: "~ x!7 ~ x!7", B: "x!8 ~ x!7", C: "~ x!7 ~ x!6 ~", D: "x!7 ~@9",
})).gain(0.55)

// drums · mid tom
const mid_tom = s("mt").struct("<~@30 A ~@35 A ~@9 B ~@35 A ~@26>".pickRestart({
  A: "~ x ~ x ~@4", B: "~@8 x!4 ~@4",
})).gain(0.55)

// drums · open hat
const open_hat = s("oh").struct("<~ A@29 ~ A@7 ~ A@27 ~ A@7 ~ A B ~@18 A@17 ~ A@7 ~ A@16 B ~>".pickRestart({
  A: "x!2", B: "x",
})).gain(0.55)

// drums · high tom
const high_tom = s("ht").struct("<~@30 A ~@35 A ~@9 B C@13 ~@22 A ~@26>".pickRestart({
  A: "x!2 ~@2 x!2 ~@10", B: "~ x!7 ~@8", C: "x!4 ~ x!7 ~ x!3",
})).gain(0.55)

// drums · crash
const crash = s("cr").struct(`<
  ~ A ~@2 B C ~@2 B D ~@3 A ~@3 E A E ~ A ~ E@2 A ~ F G ~@2 A ~@5 H ~ A ~@2 B C ~@2 B D ~@5 E A E ~ A ~ E A@2 ~@5 A ~@5
  H ~ A ~ A ~@16 I A ~@3 A ~ E A@2 ~ E@2 A ~ F G ~@2 A ~@5 H ~ A ~@2 B C ~@2 B C ~@2 B C ~@2 B D ~
>`.pickRestart({
  A: "x", B: "~@3 x ~ x ~@2", C: "x!2 ~@2", D: "x ~ x!2 ~@4", E: "x ~@2 x ~@4", F: "x ~@6 x", G: "~@7 x",
  H: "x ~@3 x ~@2 x", I: "~@3 x",
})).gain(0.55)

// drums · tambourine
const tambourine = s("tb").struct("<~@77 [~ x!3]!2 [x!4]!11 x ~@48>").gain(0.55)

stack(
  brass_section, distortion_guitar, distortion_guitar_2, bass, percussive_organ, kick, snare, low_tom, hihat, mid_tom,
  open_hat, high_tom, crash, tambourine
)

More by Sammy Hagar