Strudelify
(We're Gonna) Rock Around The Clock cover art

Rock Around the Clock ('60s Mix)

(We're Gonna) Rock Around The Clock

Bill Haley

KeyG majorTempo186 bpm
0:00/0:00
// (We're Gonna) Rock Around The Clock — Bill Haley
// 186 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 94 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(186/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 · electric bass pick · "Bass"
const bass = note(`<
  ~ A ~ A ~ A ~ B C D E F G H I F G J K D L D E F G H I F G J K D L D E F G H I F G J K D L D E F G H I F G J K D L D E
  F G H I F G J K D L D E F G H I F G J K D L D E F G H I F G J K F M ~
>`.pickRestart({
  A: "g1@3 ~@13", B: "~@4 d2@2 ~@6 d2@3 ~", C: "~@4 d2@3 ~@4 d2 d2@2 ~@2", D: "g1 b1 d2 e2", E: "f2 e2 d2 b1",
  F: "g1 b1 c2 c#2", G: "d2 g1 a1 b1", H: "c2 e2 c2 a#1", I: "c2@3 ~ c2@4 a#1@4 a1@4", J: "d2 f#2 d2 c2",
  K: "d2 c2 b1 a1", L: "f2@4 e2@4 d2@4 b1@3 ~", M: "d2@3 c2 b1@2 ~ g1@5 g1@2 ~@2",
})).s("gm_electric_bass_pick").gain(0.45)

// chords · electric guitar muted · "Guitar"
const electric_guitar_muted = note(`<
  ~ A ~ B ~ C ~ D E F G H I J K F G L M N G F G H I O K F I L M F I F G H I O K F I L M N G F G F I J K F I L M N G F G
  H I J K F I L M N I F G H I O K F I L M F G F G H I O K F I L M P Q ~
>`.pickRestart({
  A: "~ [g2,g3,b3,d4,g4]@2 ~@13", B: "~ [g2,d4,g4,b4]@3 ~@12", C: "~ [g2,d4,g4,b4]@2 ~@13, d5@3 ~@13",
  D: "~@5 [d3,d4,f#4,a4,d5]@2 ~@6 [d3,f#4,a4,d5]@2 ~", // D
  E: "~@5 [d3,f#4,a4,d5] ~@4 [d3,f#4,a4,d5]@2 ~ [d3,f#4,a4,d5] ~@2", F: "~@2 [g3,b3,d4] ~@5 [g3,b3,d4]@2 ~@6",
  G: "[g3,b3,d4]@2 ~@4 [g3,b3,d4] ~@9", H: "~ [g3,b3,d4] ~@2 [g3,b3,d4] ~@3", I: "[g3,b3,d4] ~@2 [g3,b3,d4] ~@4",
  J: "~@2 [g3,a#3,c4,e4]@2 ~@4 [g3,a#3,c4,e4] ~@7", K: "[g3,a#3,c4,e4] ~@5 [g3,a#3,c4,e4]@2 ~@8",
  L: "~@2 [f#3,a3,c4,d4] ~@5 [f#3,a3,c4,d4] ~@7", M: "[f#3,a3,c4,d4] ~@5 [f#3,a3,c4,d4] ~@9",
  N: "~@2 [g3,b3,d4] ~@5 [g3,b3,d4] ~@7", O: "~@2 [g3,a#3,c4,e4] ~@5 [g3,a#3,c4,e4] ~@7",
  P: "~@8 [a3,c4]@2 ~@2 [b3,d4] ~@3, ~@3 [g3,b3]@10 ~@3", Q: "[a3,c4,d4]@3 e4 [a3,c4,f#4]@2 ~ [g3,b3,g4]@2 ~@3 g2@3 ~",
})).s("gm_electric_guitar_muted").gain(0.36)

// chords · piano
const piano = note(`<
  ~@9 A B C@2 D@2 C E F G H B A B C I D@2 C E F G H B J@6 K@3 L M@3 B C I D@2 C E F G H B A B C@2 D@2 C E F G H N A N C
  I D O C E F G H B A B C I D@2 C@2 F G H P ~
>`.pickRestart({
  A: "~@4 [d4,g4,b4]@3 ~@5 [d4,g4,b4]@4", B: "~@4 [d4,g4]@5 ~@3 [d4,g4,b4]@4, ~@4 b4@3 ~@9",
  C: "~@4 [d4,g4,b4]@4 ~@4 [d4,g4,b4]@3 ~", D: "~@4 [e4,a#4,c5]@5 ~@3 [e4,a#4,c5]@4",
  E: "~@4 [d4,g4,b4]@3 ~@5 [d4,g4,b4]@3 ~", F: "~@4 [f#4,a4,d5]@5 ~@3 [f#4,a4,d5]@4",
  G: "~@4 [f#4,c5,d5]@5 ~@3 [f#4,c5,d5]@4", H: "~@4 [d4,g4,b4]@5 ~@3 [d4,g4,b4]@4",
  I: "~ [d4,g4,b4] ~ [d4,g4], ~@6 b4 ~", // G G5
  J: "[d4@3 d4 [d4,g4,b4]@2 ~@4 d4@2 [d4,g4,b4]@3 d4 d4@3 d4 [d4,b4]@2 ~@4 d4@2 [d4,g4,b4]@2 d4@2 d4@3 d4 d4@2 ~@4 d4@2 [d4,g4,b4]@3 ~@3 d4@2 d4@2 d4@4 ~@2 [d4,g4,b4]@3 g4 [g4,a4]@2 ~@4 g4@2 [g4,a4]@2 g4 ~@6 a4 ~@4 g4@2 a4@2 ~@2 [e4,g4,a#4,c5]@3 f4, ~@4 e4@3 d4@2 ~@13 d4@4 ~@12 d4@4 ~@5 d4@3 ~@18 [e4,a#4,c5]@5 ~@3 [e4,a#4,c5]@5 ~@3 [e4,a#4,c5]@5 ~@7, ~@8 f4@8 ~@8 f4@9 ~@7 f4@8 g4@4 [g4,b4]@4 ~@4 f#4@7 ~@12 g4@6 ~@5 a4@5 ~, ~@8 e4@4 e4@8 [e4,g4]@4 e4@4 e4@8 [e4,g4,b4]@4 e4@4 e4@7 ~@7 e4@6 ~@2 a4@6 ~@3 a4@6 ~ a4@6 a#4@4 ~@4]/6", // G Gsus2 C7 G Em
  K: "[f4@2 d4@2 d4@2 ~@6 [d4,g4,b4]@2 ~@4 g4@2 [d4,g4,b4]@2 g4@5 ~ [d4,b4]@3 ~@3 f#4!2 ~@2 f#4!2 ~@2 d4 ~@3 d4!2, g4@4 [g4,b4]@4 ~@2 b3@4 c#4@5 ~@8 f4@5 a4@3 ~ [a4,d5]@5 ~@4 e4@2 ~, ~@6 d4@6 c4@8 ~@11 d4@3 ~@2 f#4@2 ~@2 f#4@3 d4@3 ~@2, ~@16 d4@4 a4@5 ~@3 g4@5 g4@4 g4@3 ~ e4@3 [f#4,a4,d5]@4]/3", // G D5 D
  L: "~ b3 a3 ~@3 a3 ~@3 f#3!2 ~@2 f#3!2, c4@2 ~ a3@2 b3@2 ~ a3@3 ~ [a3,f#4,c5,d5]@4, ~@4 [c5,d5]@5 ~@7, ~@4 [c4,f#4]@3 ~@2 g3@3 ~ g3@3", // D7 Csus2 Cdim
  M: "[g3@3 ~ [b3,d4,g4,b4]@3 ~ d4@3 d4 e4@2 ~@6 [g4,b4]@2 g4@6 [d4,b4]@5 ~@3 [d4,b4]@3 ~@5 [d4,g4,b4]@4, ~@3 g3@4 b3@4 ~ [d4,g4,b4]@4 f4@8 ~@4 g4@8 g4@7 ~@5, ~@7 e4@2 e4@3 ~@12, ~@20 d4@7 ~@21]/3", // G
  N: "~ [d4,g4,b4] ~ [d4,g4,b4]", O: "~@4 [e4,c5]@5 ~@3 [e4,a#4,c5]@4, ~@4 a#4@3 ~@9",
  P: "[f#4,d5]@6 ~ [d4,g4,b4]@7 ~@2, a4 ~@3", // D G
})).s("gm_piano").gain(0.4)

// drums · kick
const kick = s("bd").struct("<~@7 x ~ [x!2]!84 ~>").gain(0.5)

// drums · snare
const snare = s("sd").struct("<A ~ A ~ A ~ A B C D@84 ~>".pickRestart({
  A: "~@11 x!2 ~@3", B: "~@13 x ~@2", C: "~@5 x ~@5 x ~ x ~@2", D: "~ x ~ x",
})).gain(0.5)

// drums · hihat
const hihat = s("hh").struct("<~@9 [x ~@2 x ~@3 x!2 ~@2 x ~@3 x]!83 [x ~@2 x ~@3 x!2 ~@2 x ~@4] ~>").gain(0.4)

// drums · open hat
const open_hat = s("oh").struct("<~@7 [~@5 x ~@7 x ~@2] [~@5 x ~@5 x ~ x ~@2] [~ x ~ x]!84 ~>").gain(0.35)

// drums · crash
const crash = s("cr").struct("<~@93 [~@5 x ~@10]>").gain(0.5)

// drums · cowbell
const cowbell = s("cb").struct("<[~ x ~ x]!7 ~@87>").gain(0.35)

stack(bass, electric_guitar_muted, piano, kick, snare, hihat, open_hat, crash, cowbell)

More by Bill Haley