Strudelify

Rockin' My Life Away

Jerry Lee Lewis

KeyG majorTempo170 bpm
0:00/0:00
// Rockin' My Life Away — Jerry Lee Lewis
// 170 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 105 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(170/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 · piano · "A.PIANO 1"
const piano = note(`<
  ~@3 A B ~@3 C@2 D E F G H I J K L@2 C@2 D M N O P I J K L@2 C@2 D M Q R H I J K S T U V W X Y Z AA AB AC AD AE@2 AF@2
  D E F G H I J K L@2 AG@2 D E F G H I J K AH@2 AI AJ AK AL AM AN AO AP AQ AR AS AT AU@3 E F G H I J K AV AW AX
>`.pickRestart({
  A: "~@13 [g6,a6,b6] [g5,a5,b5,c6,d6,e6,f6,a6] [e4,f4,g4,a4,b4,c5,d5,e5,f5,a5]", B: "[g3,a3,b3,c4,d4] ~@15",
  C: "[~@2 [g3,b3,d4,e4,g4] ~@5 d4@3 ~ [c4,e4] ~ a#3@2 ~@2 g3@2 e3@2 d3 ~ [g3,d4]@3 ~ e3@2 ~@2, ~@8 a#3 ~@5 d4@7 ~@11, ~@17 b3@2 ~@13]/2", // Em7 C G5
  D: "~@2 [a4,a#4,d5] ~@5 a#4 b4 g4 ~ e4@2 d4 ~, ~@2 d5 ~", // A#maj7
  E: "~@3 d5@2 ~@3 [d5,g5]@2 c5@2 ~ a#4 ~@2, ~@2 g5@2 ~@4 c#5 ~@7", // G5
  F: "[d#4,a4] e4 ~ g3 [c4,a4]@2 g3 ~ [c4,g4]@2 ~ g3 [c4,a4]@2 g3 ~, [c4,g4,a#4,d5]@2 ~@6 d#4 ~@7", // D#dim F C5 F Gm
  G: "d#4 e4 ~ g3 c4@2 d#4@2 ~@2 c4@2 a3@2 g3@2, [c4,g4]@2 ~@2 a4 ~ g4@6 ~@4, ~@9 e4@2 ~@5", // C5
  H: "~@2 [a4,a#4,d5] ~ [a4,a#4,d5] ~ [a4,a#4,d5] ~ [a4,a#4]@2 g4@2 e4@2 d4 ~, ~@8 d5@5 ~@3, ~@10 a#4 ~@5", // A#maj7
  I: "~@2 [a4,a#4,d5] ~ [a4,a#4,d5] ~ [a4,a#4,d5] ~ a4 ~ g4@2 e4@2 d4@2, ~@2 [a#4,d5] ~", // A#maj7 A#
  J: "~@4 f#4 ~@3 [f4,d5]@2 f#4 ~@5, ~@2 [f4,d5]@4 ~@2 c#5 ~@7", K: "~@2 d4@2 d#4@2 e4 ~@3 d4@2 e4@2 g4 ~",
  L: "[~@2 [c5,g5,a5]@2 ~@4 [c5,g5]@2 g4 ~ a#4@2 ~@2 g4@2 d4@2 c4@2 a#3@2 ~@2 g3@2 e3@2 d3@2, ~@7 d5@2 ~@3 b3@2 ~@2, ~@15 b4@2 ~@5 d4@7 ~@3]/2", // Am7 C5
  M: "~@3 d5@2 ~@3 [d5,g5]@2 c5@2 ~@4, ~@2 g5@2 ~@4 c#5 ~@7", // G5
  N: "d#4 e4 ~@2 [c4,a4]@2 g3 ~ d#4 e4 ~ g3 [c4,a4]@2 g3 ~, [c4,g4]@3 g3@2 ~@3 [c4,g4]@2 ~@6", // F C5
  O: "d#4 e4 ~ g3 [c4,a4]@2 g3 ~ d#4 e4 g3 ~ c4@2 [d#4,g4]@2, [c4,g4]@2 ~@6 [c4,g4]@2 ~@2 a4 ~@3", // F D# C5
  P: "e4 ~ [a4,a#4,d5] ~ [a4,a#4,d5] ~ [a4,a#4,d5] ~ [a4,a#4]@2 g4@2 e4@2 d4 ~, ~@8 d5@5 ~@3, ~@10 a#4 ~@5", // A#maj7
  Q: "d#4 ~ g3 ~ [c4,a4]@2 g3 ~ d#4 e4 g3 ~ [c4,a4]@2 g3 ~, [c4,g4] ~@3 [c4,g4] ~@3, ~ e4@2 ~@13", // F C5
  R: "d#4 e4 g3 ~ c4@2 g3 ~ d#4 e4 g3 ~ [c4,a4] ~ d#4 e4, [c4,g4]@2 ~@2 a4 ~@3 [c4,g4]@2 ~@4 g4@2", // F C5
  S: "~@2 [a4,a#4,d5] ~ [a4,a#4,d5] ~ [a4,a#4,d5] ~ [a#4,d5]@2 g4@2 e4@2 [a#3,a#4]@2, ~@8 a4 ~@7", // A#maj7 A#
  T: "[b3,b4]@2 [d4,d5]@2 [e4,e5]@2 [g4,g5]@9 ~", U: "~ [c#5,g5] [d5,g5]!6", V: "[c#5,g5] [d5,g5]!7",
  W: "[c#5,g5] [d5,g5]!3 [c#5,g5] [d5,g5]!3", // C#dim G5 C#dim G5
  X: "[d5,g5] [g3,g4,g5] [f#3,f#4,f#5] [g3,g4,g5] [g#3,g#4,g#5] [a3,a4,a5] [a#3,a#4,a#5] [b3,b4,b5], g4 ~@15", // G5 G F# G G# A A# B
  Y: "[c4,c5,g5,a5,c6,d6,e6] ~@4 d4 ~ e4, ~@3 d#4", Z: "[a#4,d5]@2 e4 ~ a4 ~ g#4@2 g4@2 e4 ~ d4 ~@3, ~@2 d5@3 ~@3",
  AA: "[g4,g5]@2 [g6,a6] [b5,c6,d6,e6,f6] [c5,d5,e5,f5,g5,a5] [d4,e4,f4,g4,a4,b4] [b3,c4] ~@3 g5@2 ~@4, ~@10 c5 ~@5", // G Gsus2 Bdim Dm7 Em7 Cmaj7
  AB: "[a#4,g5]@2 b4 ~@9 e4@2 f5@2", AC: "f#5 d6 f#5 f5 e5 c6 e5 d#5", AD: "d5@2 b5@2 d5@2 c#5@2 c5@2 a5@2 c5@3 a#4",
  AE: "[[b4,g5]!11 ~@11 [b4,g5]@4 g4@2 [g6,a6,b6,c7] [c6,d6,e6,f6] [e5,f5,g5,a5,b5] [a4,b4,c5,d5], ~@12 [c5,a5]@8 [c5,a5]@7 ~@5, ~@14 [c#5,a#5]@4 [c#5,a#5]@9 ~@5, ~@16 [d5,b5]@11 ~@5]/2", // Em Cmaj7 Dm7 Em D7 F F# G
  AF: "[[e4,f4,g4] [a3,b3,c4,d4] [e3,f3,g3,b3,d4,e4,g4] [c3,d3] ~@4 d4@3 ~ [c4,e4] ~ a#3@2 ~@2 g3@2 e3@2 d3 ~ [g3,d4]@3 ~ e3@2 ~@2, ~@8 a#3 ~@5 d4@7 ~@11, ~@17 b3@2 ~@13]/2", // Em D7 Em7 Csus2 C G5
  AG: "[[e4,f4] [a3,b3,c4,d4] [e3,f3,g3,b3,d4,e4,g4] [c3,d3] ~@4 d4@3 ~ [c4,e4] ~ a#3@2 ~@2 g3@2 e3@2 d3 ~ [g3,d4]@3 ~ e3@2 ~@2, ~@8 a#3 ~@5 d4@7 ~@11, ~@17 b3@2 ~@13]/2", // Fmaj7 D7 Em7 Csus2 C G5
  AH: "[~@2 [c5,g5,a5]@2 ~@4 [c5,g5]@2 g4 ~ a#4@2 ~@2 g4@2 d4@2 c4@2 a#3@2 ~@2 g3@2 e3@2 [a#2,d3]@2, ~@7 d5@2 ~@3 b3@2 ~@2, ~@15 b4@2 ~@5 d4@7 ~@3]/2", // Am7 C5 A#
  AI: "b2@2 [g3,b3] ~ [f3,a3]@2 ~@2 [e3,g3]@2 b2@2 [d3,f3]@2 a#2@2, ~@7 b2@2 ~@7", // G F Em Dm
  AJ: "b2@2 [g3,b3] ~ [f3,a3]@2 b2@2 [e3,g3]@2 ~@2 [d3,f3]@2 a#2 ~, ~@11 b2@2 ~@3", // G F Em Dm
  AK: "b2@2 [g3,b3] ~ [f3,a3]@2 b2@2 [e3,g3]@2 b2@2 [d3,f3]@2 a#2@2", // G F Em Dm
  AL: "b2@2 [g3,b3] ~ [f3,a3]@2 b2@2 [e3,g3]@2 b2@2 [d3,f3]@2 d#3@2", // G F Em Dm
  AM: "e3 [c4,e4] [a#3,d4] e3 [a3,c4] e3 [g3,a#3] d#3", // C A# Am Gm
  AN: "e3@2 [c4,e4] ~ [a#3,d4]@2 e3@2 [a3,c4]@2 e3 ~ [g3,a#3]@2 a#2@2", // C A# Am Gm
  AO: "b2@2 [g3,b3] ~ [f3,a3]@2 b2@2 [e3,g3]@2 b2 ~ [d3,f3]@2 a#2@2", // G F Em Dm
  AP: "~@2 [g3,b3] ~ [f3,a3]@2 b2@2 [e3,g3]@2 b2 ~ [d3,f3]@2 f3@2, b2 ~@3", // G F Em Dm
  AQ: "f#3@2 [d4,f#4] ~ [c4,e4]@2 f#3@2 [b3,d4]@2 f#3 ~ [a3,c4]@2 d#3@2", // D C Bm Am
  AR: "e3@2 [c4,e4] ~ [a#3,d4]@2 e3@2 [a3,c4]@2 e3 ~ g3@2 ~@2", // C A# Am
  AS: "~@2 [d5,e5,g5] ~@4 g4 [a#5,d6] g5 ~ f5 [d5,e5] [c#5,g5] ~ c5", // Em7 A# Dsus2 C#dim
  AT: "[a#4,d5] g4 ~ [f4,g4] d4 [c#4,g4] ~ c4 a#3 g3 ~ f3 ~ c3 ~ [a#2,b2], ~@12 d3@3 ~", // A# Fsus2 C#dim Bmaj7
  AU: "[~@2 g3@15 ~@3 e3@2 d3 ~ d4@3 ~ e3@2 ~@4 [a4,a#4,d5] ~@5 a#4 b4 g4 ~ e4@2 d4 ~, b2 ~, ~@17 b3@2 ~@21 d5@4 ~@4, ~@9 g3@3 g3@5 ~@7]/3", // A#maj7
  AV: "c#6 d6 ~ g5 a#5 b5 ~ d5 [c#5,d5] d5 ~ g4 a#4 b4 ~ d4, [g2,d3,g3,b3,d4,g4,g6] ~ d6 ~ g5 ~ d5 ~", // Dmaj7 G
  AW: "c#4 d4 ~ g3 a#3 b3 ~ d3 c#3 d3 ~ g2 a#2 b2 ~ d2, g4 ~ d4 ~ g3 ~ d3 ~", AX: "g2 ~@7",
})).s("gm_piano").gain(0.32)

// bass · electric bass finger · "FINGERDBAS"
const bass = note(`<
  ~@2 A@2 B@2 C D E@2 C E F G H I J K C@2 E@2 C E F G H I J K C@2 E@2 C E F G H I J K C@2 E@2 C E F G H I J K C@2 E@2 C
  E F G H I J K C@2 E@2 C E F G H I J K C@2 E@2 C E F G H I J K C@2 E@2 C E F G H I J K L ~ M
>`.pickRestart({
  A: "g1@3 ~ g1@3 ~ g1@3 ~ g1@3 ~", B: "g1 ~ g1@2 a#1@2 b1@2 d2@2 g1@2 e2@2 d2 ~",
  C: "g1 ~ g1@2 a#1@2 b1@2 d2@2 g1 ~ e2@2 d2@2", D: "g1 ~ g1@2 a#1@2 b1 ~ d2@2 g1@2 e2@2 d2 ~",
  E: "g1 ~ g1@2 a#1@2 b1@2 d2@2 g1@2 e2@2 d2@2", F: "c2!2 d#2 e2 g2 c2 a2 g2",
  G: "c2 ~ c2@2 d#2@2 e2@2 g2@2 c2@2 a2@2 g2@2", H: "g1 ~ g1@2 a#1@2 b1 ~ d2@2 g1@2 e2@2 d2@2",
  I: "g1 ~ g1@2 a#1@2 b1@2 d2@2 g1 ~ e2@2 d2 ~", J: "d2 ~ d2@2 f2@2 f#2@2 a2@2 d2@2 b2@2 a2@2",
  K: "c2 ~ c2@2 d#2@2 e2@2 g2@2 c2 ~ a2@2 g2@2", L: "g1 ~@7", M: "~@2 g1 ~@5",
})).s("gm_electric_bass_finger").gain(0.32)

// chords · synth brass 1 · "SYNBRASS 1"
const synth_brass_1 = note("<~@92 A B A B C D A E F G H ~ A>".pickRestart({
  A: "~@2 [b4,d5,g5] ~@5", B: "~@4 [b4,d5,g5] ~ [b4,d5,g5]@10", C: "~@2 [a#4,d5,g5] ~@5",
  D: "~@4 [a#4,d5,g5] ~ [a#4,d5,g5]@10", E: "~@4 [b4,d5,g5] ~ [b4,d5,g5]@9 ~", F: "[a4,d5,f#5]@15 ~",
  G: "[g4,c5,e5]@15 ~", H: "[b4,d5,g5] ~@7",
})).s("gm_synth_brass_1").gain(0.28)

// other · baritone sax · "BARITONSAX"
const baritone_sax = note("<~@92 A B A C A B A D E F G ~ A>".pickRestart({
  A: "~@2 g2 ~@5", B: "~@4 g2 ~ g2@10", C: "~@4 g2 ~ g2@9 ~", D: "~@4 g2 ~ g2@8 ~@2", E: "d2@15 ~", F: "c2@7 ~",
  G: "g2 ~@7",
})).s("gm_baritone_sax").gain(0.45)

// other · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  ~@2 A@2 B@2 C D E@2 C E F G H I J K C@2 E@2 C E F G H I J K C@2 E@2 C E F G H I J K C@2 E@2 C E F G H I J K C@2 E@2 C
  E F G H I J K C@2 E@2 C E F G H I J K C@2 E@2 C E F G H I J K C@2 E@2 C E F G H I J K L ~ M
>`.pickRestart({
  A: "g2@3 ~ g2@3 ~ g2@3 ~ g2@3 ~", B: "g2 ~ g2@2 a#2@2 b2@2 d3@2 g2@2 e3@2 d3 ~",
  C: "g2 ~ g2@2 a#2@2 b2@2 d3@2 g2 ~ e3@2 d3@2", D: "g2 ~ g2@2 a#2@2 b2 ~ d3@2 g2@2 e3@2 d3 ~",
  E: "g2 ~ g2@2 a#2@2 b2@2 d3@2 g2@2 e3@2 d3@2", F: "c3!2 d#3 e3 g3 c3 a3 g3",
  G: "c3 ~ c3@2 d#3@2 e3@2 g3@2 c3@2 a3@2 g3@2", H: "g2 ~ g2@2 a#2@2 b2 ~ d3@2 g2@2 e3@2 d3@2",
  I: "g2 ~ g2@2 a#2@2 b2@2 d3@2 g2 ~ e3@2 d3 ~", J: "d3 ~ d3@2 f3@2 f#3@2 a3@2 d3@2 b3@2 a3@2",
  K: "c3 ~ c3@2 d#3@2 e3@2 g3@2 c3 ~ a3@2 g3@2", L: "g2 ~@7", M: "~@2 g2 ~@5",
})).s("gm_electric_guitar_muted").gain(0.1)

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

// drums · snare
const snare = s("sd").struct("<~@3 A B@39 C B@35 C B@22 D ~ E>".pickRestart({
  A: "x!8", B: "~ x ~ x", C: "x ~@2 x ~@2 x ~", D: "x", E: "~ x ~@2",
})).gain(0.24)

// drums · hihat
const hihat = s("hh").struct("<~@8 [x!8]!36 ~@12 [x!8]!24 ~@25>").gain(0.2)

// drums · mid tom
const mid_tom = s("mt").struct("<~@2 A B C ~@38 D C ~@34 D C ~@24>".pickRestart({
  A: "~@5 x!3", B: "x!8", C: "x", D: "x ~@2 x ~@2 x ~",
})).gain(0.32)

// drums · mid tom · soft notes
const mid_tom_soft = s("mt").struct("<~@2 [x!5 ~@3] ~@102>").gain(0.16)

// drums · high tom
const high_tom = s("ht").struct("<~@2 A B C ~@38 D C ~@34 D C ~@24>".pickRestart({
  A: "~@5 x!3", B: "x!8", C: "x", D: "x ~@2 x ~@2 x ~",
})).gain(0.32)

// drums · high tom · soft notes
const high_tom_soft = s("ht").struct("<~@2 [x!5 ~@3] ~@102>").gain(0.16)

// drums · crash
const crash = s("cr").struct("<~@4 A ~@3 A ~@34 B A ~@3 A ~@7 A ~@11 A ~@10 B A ~@3 A ~@7 A ~@12>".pickRestart({
  A: "x", B: "x ~@2 x ~@2 x ~",
})).gain(0.2)

// drums · ride
const ride = s("rd").struct("<~@2 A@6 ~@36 A@12 ~@24 A@22 B ~ C>".pickRestart({
  A: "x!8", B: "x", C: "~ x ~@2",
})).gain(0.2)

stack(
  piano, bass, synth_brass_1, baritone_sax, electric_guitar_muted, kick, snare, hihat, mid_tom, mid_tom_soft, high_tom,
  high_tom_soft, crash, ride
)

More by Jerry Lee Lewis