Strudelify
Heartbreak Hotel cover art

Viva Elvis

Heartbreak Hotel

Elvis Presley

KeyC majorTempo97 bpm
0:00/0:00
// Heartbreak Hotel — Elvis Presley
// 97 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 51 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(97/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.

// other · piano · "SOLOS"
const piano = note("<~@20 A@2 B@3 ~@3 C@2 D@3 E@2 ~@5 F@2 ~@2 C@2 G@3 ~@2>".pickRestart({
  A: "[~@3 e6 [g6,a6] b6@2 ~ b6 ~ b6 ~ b6@2 [g6,a6] e6 ~ b6@3 a6 e6@2 c7@4 a6 e6@3 ~ e6 ~ e6!2 g6 [a6,b6] b6 ~ b6 ~ b6@2 a6 e6@2 ~, ~@21 g6 ~@6 g6 ~@16 g6 ~@2]/2", // Gsus2 Asus2
  B: "[b6@3 [g6,a6] e6 b6@4 [g6,a6] e6 b6@4 a6 [e6,g6] ~ b6@3 a6 g6 b5@4 b6@3 ~@2 e6 ~ b5@2 d6@3 e6@4 ~@2 b5 ~ d6@3 ~ e6 ~ e6@3 d6 [b5,c#6] ~ e6 e6@3 d6 [b5,c#6] e6@3 ~ [c#6,d6] b5 ~, ~@22 d6 ~@13]/3", // Gsus2 Em Bsus2 Dmaj7
  C: "[~@3 e6 [g6,a6] b6@2 ~ b6 ~ b6 ~ b6@2 [g6,a6] e6 ~ b6@3 a6 e6@2 c7@4 a6 e6@2 ~@2 e6 ~ e6!2 g6 [a6,b6] b6 ~ b6 ~ b6@2 a6 e6@2 ~, ~@21 g6 ~@6 g6 ~@16 g6 ~@2]/2", // Gsus2 Asus2
  D: "[b6@3 [g6,a6] e6 b6@4 [g6,a6] e6 b6@4 a6 e6@2 b6@3 a6 g6 b5@4 b6@3 ~@2 e6@2 b5@2 d6@3 e6@4 ~@2 b5 ~ d6@3 ~ e6 ~ e6@3 d6 [b5,c#6] ~ e6 e6@3 d6 [b5,c#6] e6@3 ~ [c#6,d6] b5 ~, ~@16 g6 ~@27 d6@2 ~@26]/3", // Gsus2 Bsus2 Dmaj7
  E: "~@3 e6 ~ e6@3 d6 [b5,c#6] ~ e6 e6@3 d6 [b5,c#6] e6@3 ~ [c#6,d6] b5 ~", // Bsus2 Dmaj7
  F: "[~@3 e6 ~ e6 ~ d6 ~ b5 e6 d6 b5 e6 d6 b5 e6 [b5,d6] e6 d6 b5 e6 b5@6 ~@20, ~@22 d6 ~@25]/2", // Bm
  G: "[b6@3 [g6,a6] e6 b6@4 [g6,a6] e6 b6@4 a6 e6@2 b6@3 a6 g6 b5@4 b6@3 ~@2 e6@2 b5@2 d6@3 e6@4 ~@2 b5 ~ d6@3 ~@22, ~@16 g6 ~@27 d6@2 ~@26]/3", // Gsus2
})).s("gm_piano").gain(0.25)

// chords · piano
const piano_2 = note("<~ A B ~@6 C D ~@6 E@2 ~@6 F C ~@6 E B ~@5 G H I ~ J K@2 L M N@2>".pickRestart({
  A: "~@16 [e3,g#4,b4,e5] ~ [e3,g#4,b4] ~@5, ~@9 e5 ~@2", B: "~@8 [g#4,e5] [e3,g#4,b4,e5] ~@2, ~@16 [e3,b4] ~@7",
  C: "~@8 [g#4,b4,e5] [e3,g#4,b4,e5] ~@2, ~@16 e3 ~@7", D: "~@16 [e3,g#4,b4,e5] ~ [g#4,e5]@2 ~@4, ~@18 [e3,b4] ~@5",
  E: "~@16 [e3,g#4,b4,e5] ~ [e3,g#4,b4,e5]@2 ~@4", F: "~@16 [e3,g#4,b4,e5] ~ [g#4,b4,e5]@2 ~@4, ~@18 e3 ~@5",
  G: "~@6 g#2@5 ~ b2@5 ~ g#2@5 ~", H: "~@8 [e3,g#4,b4,e5]!2 ~@2",
  I: "~@16 [e3,g#4,b4,e5] ~ [e3,b4,e5] ~@5, ~@9 g#4 ~@2", // E E5
  J: "[e3,g#3,b3,c#4,d4] ~ [e3,g#3,b3,d4] ~ [e3,g#3,b3,d4] ~ e3 [g#3,b3,d4] ~ [e3,g#3,b3,d4] [e3,g#3,d4] b3 [e3,g#3,d4] b3 [e3,g#3,b3,d4] ~ [e3,g#3,b3,d4] ~ [e3,g#3,b3,d4] ~ [e3,g#3,b3,d4] ~ [e3,g#3,b3,d4] ~", // E7 G#dim E7
  K: "[e3,a3,c#4] ~@5 [e3,a3,c#4] ~@5 [e3,a3,c#4] ~@5 [e3,a3,c#4] ~@5", // A
  L: "[f#3,b3,d#4] ~@5 [f#3,b3,d#4] ~@5 [f#3,b3,d#4] ~@5 [f#3,b3,d#4] ~@5", M: "[e2,e3,g#3,b3,e4] ~@11",
  N: "[~@6 [f2,g3,a3,c4,d#4]@3 ~ [e2,d3,f#3,g#3,b3]@36 ~@2]/2", // F7 E7
})).s("gm_piano").gain(0.39)

// bass · acoustic bass · "BASS"
const bass = note(`<
  ~ A@2 ~ B C D E F G A ~ H C D E F G I ~ J C D E F G A ~ B C D E F K@2 L B C D E M G A ~ H C D E N O@2
>`.pickRestart({
  A: "~@16 c2 ~ c2@2 ~@4", B: "c3@2 ~@2 c3@2 a#2@2 ~@2 a#2@2 a2@2 ~@2 a2@2 g2@3 ~ g2 ~",
  C: "f2@4 ~@2 e2@5 ~ d2@5 ~ c2@5 ~", D: "f2@5 ~ e2@5 ~ d2@5 ~ c2@5 ~", E: "g2@5 ~ f2@5 ~ e2@5 ~ d2@5 ~",
  F: "c2@6 e2@5 ~ g2@5 ~ e2@6", G: "c2@3 ~@13 c2 ~ c2@2 ~@4",
  H: "c3@2 ~@2 c3@2 a#2@2 ~@2 a#2@2 a2@2 ~@2 a2 ~ g2@3 ~ g2 ~", I: "~@16 c2 ~ c2@3 ~@3",
  J: "c3@2 ~@2 c3@2 a#2 ~@3 a#2@2 a2@2 ~@2 a2@2 g2@3 ~ g2 ~", K: "c2@4 ~@2 e2@4 ~@2 g2@4 c2 ~ c2@2 ~@4",
  L: "c2@2 ~ e2@2 ~ g2@2 ~ e2@2 ~", M: "c2 e2 g2 [e2,a2]", N: "c2@3 ~ c3@2 a#2@4 a2@2 g2@3 ~ f2@2 e2@3 ~ d2 ~",
  O: "[c2@2 ~@4 c#2@3 ~ c2@35 ~@3]/2",
})).s("gm_acoustic_bass").gain(0.52)

// chords · overdriven guitar · "Lead Guitar"
const overdriven_guitar = note("<~@33 A B C D E F G H ~@10>".pickRestart({
  A: "~@4 c4@2 g4@3 ~ c5 ~ [g4,a#4,c5,e5]@3 ~ [c4,c5]@2 [e4,g4,c5,e5]@3 g4!2 ~, ~@3 d5@2 ~ [c5,e5]@5 ~@13, ~@9 g4@2 ~@4 g4@2 ~@7", // C7 C
  B: "c5@4 c4@2 c5@3 ~@3 a#4@4 [c4,a#4]@2 [g4,a#4,c5,e5,g5]@2 ~@2 g4 ~, c4 ~@2 [e5,g5]@5 ~@4, ~ a#4 ~@2, ~@9 g4@2 ~@13, ~@5 c5@3 ~@4", // C7 Em
  C: "[c4,c5]@2 ~@2 c4 ~@2 d5@2 ~ c5@2 [c5,d5]@3 c5 [c4,c5]@2 [g4,a#4,c5,e5]@3 g4!2 ~, ~@3 d5@2 ~ g4@10 ~@8, ~@3 c5@2 ~@7", // C Csus2 C C7
  D: "[c4,a4,b4]@2 ~@2 c4@2 c5@3 ~@3 [e4,a#4]@4 [c4,a#4]@2 [a3,g4,a#4,c5,e5,g5]@2 ~@2 g4 ~, ~@3 [a4,a#4]@2 ~ [e5,g5]@10 ~@8, ~ a#4 ~@2, ~@6 g4@2 ~ f4@2 ~@10 c4@2 ~, ~@5 c5@3 ~@4", // F Edim C7 Am7 A#maj7 Em
  E: "[d#4,f4]@2 ~@2 f4 ~ f5@4 ~@2 d#5@4 [f4,d#5]@2 [a3,c5,d#5,f5,a5]@3 ~ c5 ~, ~@3 c4@7 f5@6 ~@8, ~@6 [c5,a5]@10 ~@5 c4@2 ~, ~ d#5 ~@2", // D#sus2 F7 F
  F: "c4@2 ~ c4 ~@2 c5@4 c5@2 c5@4 [c4,c5]@2 [a3,g4,c5,e5]@2 ~@2 g4 ~, e4 ~@2, ~@4 c4@7 ~@10 c4@2 ~, ~@3 [g4,e5]@5 ~@4", // C Am7 C
  G: "[d#4,f4]@2 ~@2 f4 ~ [c5,d#5,f5,a5]@4 f5 ~ [c5,d#5,f5,a5]@3 ~ [f4,d#5]@2 [a3,c5,d#5,f5,a5]@3 ~ c5 ~, ~@3 c4@8 ~@4 c4@2 ~@4 c4@2 ~", // D#sus2 F7
  H: "c4 ~",
})).s("gm_overdriven_guitar").gain(0.4)

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

// drums · rim
const rim = s("rim").struct("<[x!4]!12 ~@5 [x!4]!3 ~@5 [x!4]!3 ~@13 [x!4]!8 ~@2>").gain(0.46)

// drums · snare
const snare = s("sd").struct("<~@12 A@5 ~@3 A@5 ~@3 A@8 B A@2 C@2 ~@4 A@2 B ~@3>".pickRestart({
  A: "x ~ x ~@2 x!2 ~ x ~@2 x", B: "x ~ x ~@2 x!2 ~ x ~@3", C: "x ~ x ~@2 x!4 ~@2 x",
})).gain(0.46)

// drums · clap
const clap = s("cp").struct("<~@12 A@5 B ~@2 A@5 B ~@2 A@8 C A@4 B ~@2 D A@3 B ~@2>".pickRestart({
  A: "~ x ~ x", B: "x", C: "~@3 x ~@5 x ~ x", D: "x!12",
})).gain(0.59)

// drums · crash
const crash = s("cr").struct("<~@33 x ~@10 x ~@4 [~@3 x ~ x ~@6] ~>").gain(0.52)

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

stack(piano, piano_2, bass, overdriven_guitar, kick, rim, snare, clap, crash, ride)

More by Elvis Presley