Strudelify
Great Balls of Fire cover art

Great Balls Of Fire

Great Balls of Fire

Jerry Lee Lewis

KeyC majorTempo163 bpm
0:00/0:00
// Great Balls of Fire — Jerry Lee Lewis
// 163 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 74 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(163/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 · acoustic bass · "ACOU BASS"
const bass = note(`<
  A B C D E F G B ~ H I J@2 K J L ~ J@2 H I J@2 M N O@2 P Q H I J@2 K J L ~ H I J@2 K J H I H I J@2 K J H I J@2 H I J@2
  M N O@2 P Q H I J@2 K J L R S
>`.pickRestart({
  A: "~@10 g1 ~ a1 ~ b1 ~", B: "c2 ~@7", C: "~@10 c2 ~ d2 ~ e2 ~", D: "f2@3 ~@13", E: "~@5 e2 f2 f#2",
  F: "g2@3 ~@7 g2 ~ g2@2 f#2@2", G: "f2@3 ~@7 g1@2 a1@2 b1@2", H: "c2 e2 g2 a2", I: "c2@4 e2@4 g2@4 a2@3 ~",
  J: "f1 a1 c2 d2", K: "g1 b1 d2 e2", L: "c2 ~@3", M: "g1 ~@3", N: "~@10 g1 ~ g1 ~ g1 ~", O: "g1@2 ~@8 g1 ~ g1 ~ g1 ~",
  P: "g1 ~@7", Q: "~@2 g1@2 ~@2 g1@3 ~ g1@2 ~@2 g1@2", R: "~@10 c2 ~ c2 ~ c2 ~", S: "c2@3 ~@13",
})).s("gm_acoustic_bass").gain(0.37).pan(0.4)

// other · piano · "A.PIANO 1"
const piano = note(`<
  A B C D E F G B ~ H I J K L M N ~ J K H I J K O P Q@2 O ~ H I J K L M N ~ H I J K L M H I H R S T U V H I J K H I J K
  O P Q@2 O ~ H I J K L M N ~@2
>`.pickRestart({
  A: "~@5 [g1,g2] [a1,a2] [b1,b2]", B: "[c2,c3] ~@7", C: "~@5 c3 [d2,d3] [e2,e3], ~@10 c2 ~@5", D: "[f2,f3]@3 ~@13",
  E: "~@5 [e2,e3] [f2,f3] [f#2,f#3]", F: "[g2,g3]@3 ~@7 [g2,g3] ~ [g2,g3]@2 [f#2,f#3]@2",
  G: "[f2,f3]@3 ~@7 [g1,g2]@2 [a1,a2]@2 [b1,b2]@2", H: "c2!2 e2 c2 g2 c2 a2 g2",
  I: "c2@2 c2@2 e2@2 c2@2 g2@2 c2@2 a2@2 g2 ~", J: "f2@2 f2@2 a2@2 f2@2 c3@2 f2@2 d3@2 c3 ~",
  K: "f2@2 f2 ~ a2@2 f2@2 c3@2 f2@2 d3@2 c3 ~", L: "g2@2 g2 ~ b2@2 g2@2 d3@2 g2@2 e3@2 d3 ~",
  M: "f2@2 f2 ~ a2@2 f2 ~ c3@2 f2@2 d3@2 c3 ~", N: "c2@3 ~@13", O: "g2 ~@7", P: "~@10 g2 ~ g2 ~ g2 ~",
  Q: "g2@2 ~@8 g2 ~ g2 ~ g2 ~", R: "c2@2 c2@2 e2@2 c2@2 a#2@2 a#2@2 c3@2 c3 ~",
  S: "f2@2 f2@2 a2@2 c3@2 d#3@2 d#3@2 d3@2 d#3 ~", T: "f2@2 f2 ~ a2@2 c3@2 d#3@2 d#3@2 f3@2 d#3 ~",
  U: "g2@2 g2 ~ b2@2 d3@2 f3@2 f3@2 g3@2 f3 ~", V: "f2@2 f2 ~ a2@2 c3 ~ d#3@2 d#3@2 c3@2 a2 ~",
})).s("gm_piano").gain(0.37).pan(0.4)

// chords · piano · "A.PIANO 1"
const piano_2 = note(`<
  ~@8 A B C D E F G H I J@2 K L M N O P Q R S T B C D U V W X A B Y Z AA Z AB B AC AD@2 AE@2 AF AG AH AI@4 AJ@4 P Q R S
  T B C AK U V W X AL AM
>`.pickRestart({
  A: "~@10 [c5,d#5,e5,g5] ~ [c5,d#5,e5,g5] ~ [c5,d#5,e5,g5] ~", // C
  B: "[e5,g5] ~ [f5,a5] [d#5,f#5] [e5,g5] c5 a5 [d#5,f#5], c5 ~ c5@5 ~@5 f5 ~@3", // Em F D#m Em D#m
  C: "[e5,g5]@2 c5 ~@3 [c5,e5,g5]@2 ~@4 [c7,d7,e7,f7,g7] [f6,g6,a6,b6] [b5,c6,d6,e6] [f5,g5,a5]", // Em C G7 Cmaj7 F
  D: "e5 ~@2 [a4,d#5,g5]@2 ~@3 [c5,d#5,g5]@2 ~@4 c5@2, ~@3 c5 ~@4 [g4,a4] ~@7", // Am7b5 Cm Gsus2
  E: "~ c5 c6 ~@3 c6 [c5,c6] c5 ~@2 [d7,e7,f7,g7,a7] [f6,g6,a6,b6,c7] [b5,c6,d6,e6] [f5,g5,a5] [d5,e5], c6@2 ~ c5@2 c5@2 ~@9, ~@2 c6 ~@5", // C Dm F Cmaj7 F Dsus2
  F: "~@3 [b3,d4,f4,g4]@2 ~@7 [b6,c7,d7,e7,f7,g7] [e6,f6,g6,a6] [g5,a5,b5,c6,d6] [d5,e5,f5]", // G7 Cmaj7 Fmaj7 G Dm
  G: "~@3 [g4,a4,c5,d#5,g5]@3 ~ a4@3 ~@6", H: "g4 ~@7, c5 ~@15",
  I: "~@10 [a4,c5,d#5,g5] ~ [a4,c5,d#5,g5] ~ [a4,c5,d#5,g5] ~", // Am7b5
  J: "[[a4,c5,d#5,g5] c5 ~@22 c6@2 ~@6, ~ c6!7 c6!4 ~@4, ~@3 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 c5@2 ~@7]/2", // Am7b5
  K: "[e5,g5]@2 c5 ~ a5@2 f#5@2 [e5,g5]@2 c5@2 a5@2 [d#5,f#5] ~, ~@4 f5 ~ d#5 ~@5 f5 ~@3", // Em D#m
  L: "[e5,g5]@2 c5@2 [f5,a5]@5 ~@3 [c7,d7,e7,g7] [f6,g6,a6,b6] [b5,c6,d6,e6] [f5,g5,a5]", // Em F C G7 Cmaj7 F
  M: "e5 ~ f4 a4 ~@2 f5@2 f4@2 g#4 ~ a4@2 c5 ~",
  N: "f4 f5 ~ f5 f4 f5 f4 f5 f4 ~ f4 f5 f4 f5 f4 ~, ~@2 f4@2 ~@5 f5@2 ~@5", O: "[b4,d5,g5] ~@7",
  P: "~@10 [b4,d5,g5] ~ [b4,d5,g5] ~ [b4,d5,g5] ~", Q: "[b4,g5]@2 ~@8 [b3,d4,g4] ~ [b3,d4,g4] ~ [b3,d4,g4] ~, d5 ~@15",
  R: "[d4,g4] ~@9 [b3,d4,g4] ~ [b3,d4,g4] ~ [b3,d4,g4] ~, b3 ~@7", S: "[b3,d4,g4] ~@7",
  T: "~ [g4,b4,d5,f5,g5] ~ [g4,b4,d5,f5,g5] ~ [g4,b4,d5,f5,g5] ~ [g4,b4,d5,f5,g5]", // G7
  U: "~ a4 f5 ~@3 f5 [a4,f5] a4 f5 a4 f5 a4 f5 a4 b4, f5@2 ~ a4@2 a4@2 ~@9, ~@2 f5 ~@5", // Dm
  V: "~ b4 g5 ~@3 g5 [b4,g5] b4 g5 b4 g5 b4 g5 b4 a4, g5@2 ~ b4@2 b4@2 ~@9, ~@2 g5 ~@5", // Em
  W: "~ a4 f5 ~@3 f5 [a4,f5] a4 f5 a4 f5 a4 f5 a4 ~, f5@2 ~ a4@2 a4@2 ~@9, ~@2 f5 ~@5", X: "[c4,g4,c5] ~@15",
  Y: "[e5,g5]@2 c5 ~ [f5,a5]@2 ~@4 [g5,a5,c6,d#6,f6,g6] ~ [g5,a5,c6,d#6,f6,g6] ~ [g5,a5,c6,d#6,f6,g6] ~", // Em F F7
  Z: "[g5,a5,c6,d#6,f6,g6]@3 ~ [e7,f7,g7,a7] [a6,b6,c7,d7] [d6,e6,f6,g6] [a5,b5,c6] g5 ~ [g5,a5,c6,d#6,f6,g6] ~ [g5,a5,c6,d#6,f6,g6] ~ [g5,a5,c6,d#6,f6,g6] ~", // F7 Fmaj7 D7 Em7 Am F7
  AA: "[g5,a5,c6,d#6,g6]@3 ~ [e7,f7,g7,a7] [a6,b6,c7,d7] [d6,e6,f6,g6] [a5,b5,c6] g5 ~ [g5,a5,c6,d#6,f6,g6] ~ [g5,a5,c6,d#6,f6,g6] ~ [g5,a5,c6,d#6,f6,g6] ~", // Am7b5 Fmaj7 D7 Em7 Am F7
  AB: "[g5,a5,c6,d#6,g6]@3 ~ [e7,f7,g7,a7] [a6,b6,c7,d7] [d6,e6,f6,g6] [a5,b5,c6] g5 ~ [c5,d#5,e5,g5] ~ [c5,d#5,e5,g5] ~ [c5,d#5,e5,g5] ~", // Am7b5 Fmaj7 D7 Em7 Am C
  AC: "[e5,g5]@2 c5 ~@3 [c5,e5,g5]@2 ~@2 [a#6,c7,g7] ~ [a#6,c7,g7] ~ [a#6,c7,g7] ~", // Em C C7
  AD: "[a#6,c7,g7] ~ [a#6,c7,g7] ~ [a#6,c7,g7] ~ [a#6,c7,g7] ~ [a#6,c7,g7] ~ [a#6,c7,g7] ~ [a#6,c7,g7] ~ [a#6,c7,g7] ~", // C7
  AE: "[g6,a6,c7,g7] ~ [g6,a6,c7,g7] ~ [g6,a6,c7,g7] ~ [g6,a6,c7,g7] ~ [g6,a6,c7,g7] ~ [g6,a6,c7,g7] ~ [g6,a6,c7,g7] ~ [g6,a6,c7,g7] ~", // Am7
  AF: "[g6,a6,b6,f7,g7] ~ [g6,a6,b6,f7,g7] ~ [g6,a6,b6,f7,g7] ~ [g6,b6,f7,g7] ~ [g6,b6,f7,g7] ~ [g6,b6,f7,g7] ~ [g6,b6,f7,g7] ~ [g6,b6,f7,g7] ~", // G7
  AG: "[g6,a6,c7,f7,g7] ~ [g6,a6,c7,g7] ~ [g6,a6,c7,g7] ~ [g6,a6,c7,g7] ~ [g6,a6,c7,g7] ~ [g6,a6,c7,g7] [g7,a7,b7] [c7,d7,e7,f7] [f6,g6,a6,b6] [b5,c6,d6,e6] [f5,g5,a5]", // F Am7 G Dm7 G7 Cmaj7 F
  AH: "[c4,e4,g4]@2 e4@4 c4@2 [f4,a4]@2 c4 ~ [e4,g4]@2 c4@2, ~ c4 ~@6", // C F Em
  AI: "[[e4,g4]@2 c4 ~ [f4,a4]@2 [c4,e4,g4]@6 ~@36 [e4,g4]@2 c4@2 [f4,a4]@2 c4@2 [e4,g4]@2 c4@2 [f4,a4]@2 c4 ~, ~@15 a4@2 a4@2 a4@2 a4@2 a4@2 a4@2 a4@2 a4@2 a4@2 a4@2 a4@2 a4@2 a4@2 a4@2 a4@2 a4@2 a4@2 ~@15, ~@8 c5!8 c5!8 ~@8]/4", // Em F C Em F Em F
  AJ: "[[e4,g4] c4 [f4,a4] [e4,g4]@2 c4 [e4,g4] ~@17 [g4,b4,d5] ~@7, ~@7 c4 c5!8 c5!8 ~@8, ~@15 a4@2 a4@2 a4@2 a4@2 a4@2 a4@2 a4@2 a4@2 a4@2 a4@2 a4@2 a4@2 a4@2 a4@2 a4@2 a4@2 a4@2 ~@15]/4", // Em F Em G
  AK: "e5 ~@2 [a4,d#5]@2 ~@3 [c5,d#5,g5]@2 ~@4 a4@2, ~ g5 ~@6, ~@3 c5 ~@4 [g4,a4] ~@7", // Adim Cm Gsus2
  AL: "~@10 [c4,g4,c5] ~ [c4,g4,c5] ~ [c4,g4,c5] ~", AM: "[c4,g4,c5] ~@7",
})).s("gm_piano").gain(0.28).pan(0.7)

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

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

// drums · snare · soft notes
const snare_soft = s("sd").struct("<[~@5 x!2 ~] ~ [~@5 x!3] ~ [~@5 x!2 ~] [~@6 x!2] ~@68>").gain(0.32)

// drums · pedal hat
const pedal_hat = s("hh").struct(`<
  ~ A ~ A ~ A@3 ~ B@6 A ~ B@6 A ~ A@3 C B@6 A ~ B@22 A D E@2 A C B@6 A F A
>`.pickRestart({
  A: "x", B: "~ x ~ x", C: "~ x ~ x ~ x ~ x", D: "~@3 x", E: "x ~@2 x", F: "~@5 x!3",
})).gain(0.38)

// drums · mid tom
const mid_tom = s("mt").struct("<~@44 [~@10 x!2 ~@4] ~@29>").gain(0.44)

// drums · crash
const crash = s("cr").struct("<~@9 A ~@19 A ~@7 A ~@7 A ~@19 A ~@8>".pickRestart({
  A: "x",
})).gain(0.32)

// drums · ride
const ride = s("rd").struct("<~@9 A B@5 ~@2 B@6 ~@6 A B@5 ~@2 A B@6 C A B@13 ~@6 A B@5 ~@3>".pickRestart({
  A: "~@2 x!6", B: "x!8", C: "x!5 ~@3",
})).gain(0.51)

stack(bass, piano, piano_2, kick, snare, snare_soft, pedal_hat, mid_tom, crash, ride)

More by Jerry Lee Lewis