Strudelify
Hard Headed Woman cover art

1958 · King Creole

Hard Headed Woman

Elvis Presley

KeyC majorTempo196 bpm
0:00/0:00
// Hard Headed Woman — Elvis Presley
// 196 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 92 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(196/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 · electric guitar jazz · "JAZZ GTR"
const electric_guitar_jazz = note(`<
  ~ A@3 ~ B C D E F G H@2 I@2 A ~ J K L M N O P Q A ~@3 B C D E F G H@2 I@2 A ~ J K L M N O P Q A I A ~ B C D E F G H@2
  I ~@3 R K L M N O P Q A I A ~ J K L M N O P Q N O N S T U V
>`.pickRestart({
  A: "[g3,c4,e4] ~@7", B: "[a3,c4,f4]@3 [a3,c4,f4] ~@3 [a3,c4,f4]@4 [a3,c4,f4] ~@4",
  C: "[a3,c4,f4]@3 [a3,c4,f4] ~@3 [a3,c4,f4]@4 [c4,f4] ~@4", // F F5
  D: "[c4,e4]@3 [c4,e4] ~@3 [c4,e4]@4 [c4,e4]@2 ~@3, g3@5 ~@2 g3@6 ~@3", // C
  E: "[c4,e4]@2 ~ [c4,e4]@2 ~@2 [g3,c4,e4]@4 [c4,e4] ~@4, g3@3 ~@13", // C
  F: "[b3,d4,g4]@3 [b3,d4,g4] ~@3 [b3,d4,g4]@4 [b3,d4,g4] b3 ~@3", // G
  G: "[a3,c4]@2 ~ [c4,f4] ~@3 [a3,c4,f4]@4 [c4,f4]@2 ~@3", // Am F5 F F5
  H: "[[g3,c4,e4]@3 [c4,e4] ~@3 [g3,c4,e4]@4 [g3,c4,e4] ~@3 [c4,e4] [c4,e4]@3 [c4,e4] ~@3 [c4,e4]@4 [g3,c4,e4] ~@4, ~@15 g3@5 ~@12]/2", // C
  I: "[e3,g3,c4,e4] ~@7", J: "[a3,c4,f4]@3 [c4,f4]@2 ~@2 [a3,c4,f4]@4 [c4,f4]@2 ~@3",
  K: "[a3,c4]@3 [c4,f4] ~@3 [a3,c4,f4]@4 [c4,f4] ~@4, f4 ~@7", // Am F5 F F5
  L: "[g3,c4,e4]@3 [g3,c4,e4] g3 ~@2 [g3,c4,e4]@4 [c4,e4]@2 ~@3", // C
  M: "[c4,e4]@2 ~ [c4,e4] ~@3 [g3,c4,e4]@4 [g3,c4,e4]@2 ~@3, g3@3 ~@13", // C
  N: "[b3,d4,g4]@3 ~ b3 ~@2 [b3,d4,g4]@4 [b3,d4,g4] ~@4, ~@3 [d4,g4]@2 ~@11", // G G5
  O: "[a3,c4,f4]@3 ~ a3 ~@2 [a3,c4,f4]@4 [a3,c4,f4] ~@4, ~@3 [c4,f4]@2 ~@11", // F F5
  P: "[e3,g3,c4]@3 [c4,e4]@2 ~@2 [g3,c4,e4]@4 [c4,e4]@2 ~@2 e4, e4 ~@7", // C
  Q: "[c4,e4]@3 e4 ~@3 [g3,c4,e4] ~@3 [g3,c4,e4] [g3,c4,e4]@2 ~@2, g3@5 ~@11", // C
  R: "f4@3 [c4,f4]@2 ~@2 [a3,c4,f4]@4 [c4,f4]@2 ~@3", S: "c4@6 ~ c4 a#3@6 ~ a#3", T: "a3 a3@6 a3 g#3@6 ~ g#3",
  U: "g3@3 ~@13", V: "~@7 [e4,g4]@5 ~@4, ~@7 c5@3 ~@6",
})).s("gm_electric_guitar_jazz").gain(0.17).pan(0.4)

// chords · electric guitar jazz · "JAZZ GTR" · soft notes
const electric_guitar_jazz_2 = note(`<
  ~@5 A B C D E F G H ~ I J ~ B K D L M ~ N O ~@4 P B C D E F G H ~ I J ~ B K D L M ~ N O ~ I J ~ A B C D E F G H ~@4 Q
  K D L M ~ N O ~ I J ~ B K D L M ~ N O M ~ M ~@4
>`.pickRestart({
  A: "f3@4 ~@3 f3@4 ~@5", B: "f3@4 ~@3 f3@5 ~@4", C: "e3 ~@3", D: "e3@4 ~@3 e3@5 ~@4", E: "g3@5 ~@2 g3@4 ~@5",
  F: "f4@2 ~@5 f3@6 ~@2 e4", G: "e3@3 g3 ~@12", H: "~@7 g3@4 ~@5", I: "c3 ~@7", J: "e3 ~@7", K: "f3@4 ~@3 f3@4 f3 ~@4",
  L: "e3@4 ~@4 e3@3 e3@2 ~@3", M: "~@11 g3 ~@4", N: "c3@4 ~@4 e3@5 ~@3", O: "~@7 e3 ~@4 e3@2 ~@2", P: "~@7 f3@4 ~@5",
  Q: "~@7 f3@5 ~@4",
})).s("gm_electric_guitar_jazz").gain(0.07).pan(0.4)

// bass · acoustic bass · "ACOU BASS"
const bass = note(`<
  ~ A@3 ~ B C D E F G D E A@3 ~ B C D E F G D E H ~@3 B C D E F G D E A@3 ~ B C D E I J D E A@3 ~ B C D E F G D E H ~@3
  G K D E F G D E A@3 ~ B C D E F G D E F L M N O P Q
>`.pickRestart({
  A: "c2 ~@7", B: "f2@3 ~ a2@3 ~ c3@3 ~ a2@3 ~", C: "f2@3 ~ a2@3 ~ c3@3 ~ d#3@3 ~", D: "c2@3 ~ e2@3 ~ g2@3 ~ a2@3 ~",
  E: "c3@3 ~ a2@3 ~ g2@3 ~ e2@3 ~", F: "g2@3 ~ b2@3 ~ d3@3 ~ e3@3 ~", G: "f2@3 ~ a2@3 ~ c3@3 ~ d3@3 ~", H: "c2@3 ~@13",
  I: "g2@3 ~ a2@3 ~ a#2@3 ~ a#2@3 ~", J: "f2@3 ~ g2@3 ~ g#2@3 ~ g#2@3 ~", K: "f3@3 ~ d3@3 ~ c3@3 ~ a2@3 ~",
  L: "f2@5 ~@3 f2@6 ~@2", M: "g2@7 ~ a2@7 ~", N: "c3@7 ~ a#2@7 ~", O: "a2@7 ~ g#2@7 ~", P: "g2 ~@3",
  Q: "~@3 g2 a2@2 ~ c3@4 ~@5",
})).s("gm_acoustic_bass").gain(0.33)

// other · electric guitar jazz · "JAZZ GTR"
const electric_guitar_jazz_3 = note(`<
  ~@5 A B@2 C D E F G H@3 ~ I J K L M N O P@2 Q R S T J U V W X Y Z H@2 AA ~ AB AC@2 AD AE AF AG AH H@2 AA ~ AB AC@2 AD
  AE AF AG AI AJ Q R S AB AC@2 AD AE AF AG AH H@2 AA ~ AB AC@2 AD AE AF AK AL AM AN AO AP AQ AR AS
>`.pickRestart({
  A: "f3 ~ a3@2 c4@2 d4 ~, ~@3 f3@2 ~@11", B: "[d#4@3 ~ d#4@3 ~ d#4@3 ~ d#4@3 c4@7 d#4@4 c4 ~ d#4@3 ~]/2",
  C: "c4@5 ~ c4@4 ~ c4 c4@2 ~@2", D: "g3 ~ b3@2 d4@2 a#4@2, ~@3 g3@2 ~@11", E: "g4@3 ~ d#4@3 c4 d#4@3 ~ d#4@4",
  F: "c4@3 c4 c4@2 ~ c4@3 ~ c4 c4@3 ~", G: "c4@2 c4@3 ~@2 c4@3 ~ c4 c4@2 ~@2", H: "c4 ~@7",
  I: "f3 ~ f3 ~ a3 ~ a3 ~ c4@2 ~@2 d4@2 ~@2, ~@11 c4@2 ~@3", J: "d#4@3 ~ d#4@3 ~ d#4@3 ~ d#4@4",
  K: "c4@3 ~ d#4@2 ~ c4 d#4@2 ~ c4 d#4@4", L: "~ c4@2 c4 c4@2 ~ c4@3 ~ c4@4 ~", M: "g3@4 a#3@2 b3@2 d4@4 g4 ~@3",
  N: "c4@3 ~ d#4@3 ~ d#4@3 ~ d#4@4", O: "c4@3 ~@3 c4@6 ~@4",
  P: "[~@10 d#4@2 e4@2 ~@2 c5@2 c5 ~ c5@2 c5 ~ c5@2 c5@2 c5@2 c5 ~, ~@15 g4@2 ~@15]/2", Q: "c5!8",
  R: "b4@2 c5 ~ f#4@2 g4@2 d#4@2 e4 ~ b3@2 c4 ~", S: "g3@7 ~",
  T: "f3@2 ~@2 a3@2 ~@2 c4@2 ~@2 d4@2 ~ d4, ~@3 f3@2 ~@2 a3@2 ~@2 c4@2 ~@3",
  U: "c4@4 d#4@3 ~ d#4@3 d4@2 d#4@2 d4, ~@7 d4@2 ~@7", V: "~ c4@2 c4!2 ~@2 c4@2 ~ c4 ~ c4@2 ~@2",
  W: "~ g3@3 a#3@2 b3@2 d4@4 e4@2 f4 ~", X: "c4@2 ~@2 d#4@3 ~ d#4@3 ~ d#4@3 ~",
  Y: "c4@2 ~ c4 c4@2 ~ c4@2 ~@2 c4!2 ~@2 c4", Z: "c4 ~ c4 ~ c4@2 c4@3 ~ c4 ~ c4 ~@3", AA: "c4 ~@15",
  AB: "f3 ~ f3@2 a3@2 ~@2 c4 ~@2 c4 d4@2 ~ d4, ~@7 a3@2 ~@7",
  AC: "[d#4@3 ~ d#4@3 ~ d#4@3 d4@2 d#4@2 ~ c4@2 ~ c4 c4@2 ~ c4@2 ~ c4 ~ c4@2 ~@2, ~@3 d4@2 ~@2 d4@2 ~@6 d4@2 ~@15]/2",
  AD: "c4@2 ~ c4 c4@2 ~ c4@2 ~@7", AE: "g3@3 ~ a#3@3 ~ a#3@3 ~ a#3@4", AF: "c4@3 ~ d#4@3 ~ d#4@3 ~ d#4@3 ~",
  AG: "c4@2 c4 ~ c4@2 ~ c4 ~@2 c4 ~ c4 ~@2 c4", AH: "c4 ~@2 c4!2 ~@2 c4@3 c4 ~ c4 ~@3",
  AI: "c4 ~@2 c4!2 ~@2 c4@3 ~@2 e4@3 ~, ~@11 d#4@2 ~@3", AJ: "c5@2 c5 ~ c5@2 c5 ~ c5@2 c5@2 c5@2 c5 ~",
  AK: "~@2 c4 ~ c4 ~ c4@2 c4 ~ c4 ~ c4 ~ c4@2", AL: "c4 ~ c4 ~ c4 ~ c4 ~ c4 ~ c4@2 c4 ~ c4 ~",
  AM: "g4@4 a#4@3 ~ a#4@3 ~ a#4@2 a4@2, ~@7 a4@2 ~@2 a4@2 ~@3",
  AN: "c4@4 d#4@3 ~ d#4@3 ~ d#4@2 d4 ~, ~@7 d4@2 ~@2 d4@2 ~@3", AO: "g4@3 a#4@3 a4@2 g4@3 ~ a#4@3 b4, ~@11 a4@2 ~@3",
  AP: "c5@2 ~ c5 c5@3 ~@2 a#4@2 a#4 a#4@3 ~", AQ: "a4@2 ~ a4 a4@3 ~ g#4@2 ~ g#4 g#4@3 ~", AR: "g4@3 ~@13",
  AS: "~@4 a4@3 c5 ~@8, ~@3 g4@2 ~@11",
})).s("gm_electric_guitar_jazz").gain(0.36).pan(0.7)

// chords · epiano1 · "E.PIANO 1"
const epiano1 = note("<~@5 A ~@11 B ~@11 B ~@11 B ~@11 C ~@23 C ~@14>".pickRestart({
  A: "~@4 [f4,a#4,d5]@2 ~ [d#4,a4,c5]@3 ~@6", B: "~@4 [f4,a#4,d5]@3 [d#4,a4,c5]@3 ~@6",
  C: "~@4 [f4,a#4,d5]@3 [d#4,a4,c5]@4 ~@5", // A# Adim
})).s("gm_epiano1").gain(0.35)

// chords · trumpet
const trumpet = note(`<
  ~ A@3 ~ B C B C D C B C A@3 ~ B C B C D C B C ~@4 B C B C D C B C A@3 ~ B C B C D C B C A@3 ~ B C B C D C B C ~@3 E@2
  F G H I@2 J K A@3 ~ B C B C D C L M ~@3 N O P Q
>`.pickRestart({
  A: "[c5,g5] ~@15", B: "~@3 [c5,g5] ~@4 [c5,g5] ~@7", C: "[c5,g5] ~@6 [c5,g5] ~@8", D: "~@3 [b4,g5] ~@4 [b4,g5] ~@7",
  E: "[~@3 g#5 ~@3 g#5@2 ~@2 g#5@2 ~@2 g#5@6 ~@3 g#5@6 ~@2]/2", F: "g#5@2 ~@2 f#5@2 ~ g5 d#5@2 ~ e5 f5@2 ~ f#5",
  G: "g5@3 d#5 e5@2 ~ c5@2 ~@7", H: "~@3 a4 g4@2 ~ c4@2 ~@2 a#5 b5 c6 ~ c#6",
  I: "[d6@6 ~@2 a#5@3 c6@2 ~@2 g#5@4 ~ f#5@2 ~ g5 d#5@2 ~ e5@3 ~@2]/2",
  J: "d#5@2 ~@2 d5@3 c5@2 ~@4 a4 ~ g4, ~@11 g4@2 ~@3, ~@6 c5 ~", K: "e4@4 d#4@2 ~ c4@3 ~@6",
  L: "~@2 c5 ~ c5 ~ c5 ~ c5 ~ c5 ~ c5 ~ c5 ~", M: "c5 ~ c5 ~ c5 ~ c5 ~ c5 ~ c5 ~ c5 ~ c5 ~", N: "~@3 c5@2 ~@3 c5@2 ~@6",
  O: "c5@2 ~ g4 a4@2 ~ c5@2 ~@2 c5@2 ~@3", P: "g5@2 ~ d#5 e5@3 c5 ~@3 c5@2 ~@3", Q: "c5@2 ~ g4 a4@2 ~ c5@3 ~@6",
})).s("gm_trumpet").gain(0.38).pan(0.3)

// other · trombone
const trombone = note(`<
  ~ A@3 B@2 C D E F G D E A@3 B@2 C D E F G D E ~@3 B@2 C D E F G D E A@3 B@2 C D E F G D E A@3 B@2 C D E F G D E ~@3
  H@2 I@3 J@2 K@2 ~ A@2 B@2 C D E F G L M ~@3 N O P Q
>`.pickRestart({
  A: "e4 ~@15", B: "[c4@18 ~ c4 ~@4 c4 ~@7]/2", C: "c4 ~@6 c4 ~@8", D: "~@3 e4 ~@4 e4 ~@7", E: "e4 ~@6 e4 ~@8",
  F: "~@3 d4 ~@4 d4 ~@7", G: "d#4 ~@6 d#4 ~@8",
  H: "[~ e4@2 f4@2 ~ g4@6 ~ f4@2 ~ d#4@14 ~@2, d#4@2 ~@3 f#4@2 ~@5 f#4@2 ~ e4@2 ~@15]/2",
  I: "[d#4@10 ~ d#4@3 d#4 e4@8 ~ g4@2 ~@2 f4@2 ~ e4@12 ~@5]/3", J: "d#4/2", K: "[c4@10 ~ g3 a3@2 ~ c3@9 ~@8]/2",
  L: "~@2 e4 ~ e4 ~ e4 ~ e4 ~ e4 ~ e4 ~ e4 ~", M: "e4 ~ e4 ~ e4 ~ e4 ~ e4 ~ e4 ~ e4 ~ e4 ~", N: "c3@8 a#2@7 ~",
  O: "a2@8 g#2@7 ~", P: "g2@6 ~@2 g2@5 ~@3", Q: "~@4 a2@3 c3@3 ~@6, ~@3 g2@2 ~@11",
})).s("gm_trombone").gain(0.38).pan(0.6)

// drums · kick
const kick = s("bd").struct("<~ A@3 ~ B@8 A@3 ~ B@8 A ~@3 B@8 A@3 ~ B@8 A@3 ~ B@8 A ~@3 B@8 A@3 ~ B@14 C>".pickRestart({
  A: "x", B: "x!2", C: "x ~@2 x ~@4",
})).gain(0.38)

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

// drums · low tom
const low_tom = s("lt").struct("<~@88 [~ x ~ x]!2 [~@3 x] ~>").gain(0.38)

// drums · hihat
const hihat = s("hh").struct("<~ A@3 ~@9 A@3 ~@9 A ~@11 A@3 ~@9 A@3 ~@9 A ~@11 A@3 ~@16>".pickRestart({
  A: "x",
})).gain(0.49)

// drums · ride
const ride = s("rd").struct(`<
  ~@5 A B A B A B A B ~@4 A B A B A B A B ~@4 A B A B A B A B ~@4 A B A B A B A B ~@4 A B A B A B A B ~@4 A B A B A B A
  B ~@4 A B A B A B A B A@2 B C@2 D E
>`.pickRestart({
  A: "x ~@3 x ~@2 x!2 ~@3 x ~@2 x", B: "x ~@3 x ~@2 x!2 ~@7", C: "x!4", D: "x ~@7 x ~@2 x!2 ~@3", E: "x",
})).gain(0.38)

stack(
  electric_guitar_jazz, electric_guitar_jazz_2, bass, electric_guitar_jazz_3, epiano1, trumpet, trombone, kick, snare,
  low_tom, hihat, ride
)

More by Elvis Presley