Strudelify

Jail House Rock

Elvis Presley

KeyE♭ majorTempo166 bpm
0:00/0:00
// Jail House Rock — Elvis Presley
// 166 bpm, 4/4, key D# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 103 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(166/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
const piano = note(`<
  A B@4 C@6 D E F G H I@2 J K L C@6 D M N O P Q R S T U C@6 D ~ V W X Y Z AA AB AC AD AE AF AG AH AI AJ AK C@6 D AL AM
  AN AO AP AQ AR AS AT C@6 D ~ AU AV AW AX AY AZ BA BB C@10
>`.pickRestart({
  A: "~@2 [d2,a3,d4,gb4]", B: "[~@5 [d2,a3,d4,gb4], [eb2,bb3,eb4,g4]@23 ~]/2",
  C: "[[eb2,bb3,eb4,g4]@9 ~ [d2,a3,d4,gb4]@2]/2", D: "[eb2,bb3,eb4,g4] ~@11",
  E: "~@6 [a5,eb6] ~@2 [eb5,eb6]@3 [eb5,bb5,eb6]@3 [eb5,bb5,eb6]@3 [eb5,bb5,eb6]@3 [eb5,bb5,eb6]@2 ~", // Adim Eb Eb5
  F: "a5 eb6@2 eb5 ~@8 [eb5,gb5]@3 ~ c5 ~ [eb5,f5]@3 ~ c5 ~, ~ bb5 ~@10 [c5,f5] ~@5 c5 ~@5", // Ebm Ebsus2 F5
  G: "f5 c5 ~@2 c5 ~@2 eb5@2 ~ [c5,eb5]@9 ~@5, [eb5,gb5]@3 ~@3 f5@2 ~@16, ~@7 c5 ~@16", H: "~@9 c6@3 bb5@3 eb5 ~@8",
  I: "[~@6 gb5 g5@3 bb5@3 ~@3 eb5@2 ~@4 [ab3,d4,bb4]@6 ~@3 [d5,ab5]@3 ~@3 bb5@3 ab5@2 ~@6, ~@6 f5@2 ~@5 g5@6 ~@12 e5 ~@5 d5 ~@2 d5 ~@7, ~@7 bb5@2 ~@9 c5@9 ~@21]/2", // Bb7 Ddim
  J: "~@6 [gb5,bb5]@4 ~@2 [c5,ab5]@3 ~ [c5,gb5]@2 ~@6, [gb3,c4]@3 ~, ~@3 c5 ~@8", // Gb Fm Cdim Gbdim
  K: "~@4 eb5@2 g5@2 bb5@2 c6@2 [eb5,eb6]@2 ~ [eb5,eb6] ~@2 [eb5,eb6]@3 [eb5,eb6] ~@2, [bb3,eb4]@3 ~, ~@6 gb5 ~@17", // Eb Eb5
  L: "[eb5,eb6]@2 ~@4 [bb4,bb5]@3 ~ [gb4,gb5]@2 [g4,g5]@4 [d2,a3,d4,gb4]@8", // Eb Bb Gb G D
  M: "~@6 a5 eb6@2 ~ eb6@2 ~ [bb5,eb6]@2 ~ eb6@2 [bb5,eb6]@2 ~ [bb5,eb6]@2 ~, ~@16 bb5 ~@7", // Eb5
  N: "~@6 bb6 ~ gb6 ~@3 bb6@2 gb6 ~@3 bb6 ~ gb6@2 ~@2", O: "bb6@2 gb6 ~@3 bb6@2 gb6@2 ~@2 bb6@2 gb6 ~@3 bb6@2 ~@4",
  P: "~@4 c7@2 ~ g6@2 ~ bb6 ~ [g6,bb6]@3 ~@3 [g6,bb6]@2 ~ c7@2 ~, ~@4 b6 ~ bb6@2 ~ c7@2 ~@13", // Gm
  Q: "[g6,bb6] ~ [g6,bb6] c7 [g6,bb6] ~ [bb3,eb4]@2", // Gm Eb5
  R: "~@7 [d6,ab6]@3 ~@3 bb6@3 ab6@2 ~@6, [ab3,d4]@7 ~@5, ~@7 e6 ~@5 d6 ~@2 d6 ~@7", // Ddim Abdim
  S: "~@6 [gb6,bb6]@4 ~@2 [c6,ab6]@3 ~ [c6,gb6]@2 ~@6, [gb3,c4]@3 ~, ~@3 c6 ~@8", // Gb Fm Cdim Gbdim
  T: "~@6 [eb6,eb7] ~@3 [eb6,eb7] ~ eb7@2 ~@2 [db6,db7] ~ [bb5,bb6] ~@3 [ab5,ab6] ~, ~@12 eb6 ~@11", // Eb Db Bb Ab
  U: "gb5 g5@2 ~@3 [eb5,eb6] ~@3 [bb4,bb5]@9 ~@5, gb6 ~@11", // Eb Bb
  V: "~ eb5@2 ab4@2 ~@2 eb5@2 ab4@2 ~@2 eb5@2 ab4@2 ~@2 eb5@2 ab4 ~@2, gb5 ~ gb5 ~ gb5 ~ gb5 ~",
  W: "[eb5,gb5]@4 eb5 ~@2 [eb5,gb5]@2 ~ [eb5,ab5]@2 ab5 bb5@2 ~ eb5 ~@2 [gb5,gb6]@2 ~ [ab5,ab6]@2, ~@13 eb5 ~@10", // Ebm Ab5 Gb Ab
  X: "[gb5,gb6] ~ [g5,g6]@3 ~ eb5@3 ~@3 [eb5,eb6]@11 ~", // Gb G Eb
  Y: "~@10 c7@2 g6@3 ~@3 bb6@4 c7@2, ~@2 g6 ~@3 g6 ~, ~@7 bb6@9 ~@8",
  Z: "[g6,bb6]@3 ~@3 bb6@4 c7@2 [g6,bb6]@4 ~@8, [d4,ab4]@3 ~, ~@2 g6 ~@5", // Gm Ddim
  AA: "[c6,gb6,bb6]@4 ~@3 [gb6,bb6]@4 ~ [c6,ab6]@5 ~@7, [c4,gb4]@17 ~@7, ~@7 c6@2 ~@15", // Cm7b5 Gb Fm Cdim
  AB: "~@3 eb6@2 ~ db6@2 ~ [bb5,bb6]@2 ~ [ab5,ab6]@2 ~ [gb5,gb6]@2 ~ [eb5,eb6]@2 ~ [c5,c6] ~@2, ~@3 eb7 ~@2 db7 ~@17", // Bb Ab Gb Eb C
  AC: "[bb4,bb5]@11 ~@13", AD: "ab1@4 ~@2 c2@4 ~@2 [eb2,ab3,c4,gb4]@5 ~ f2@4 ~@2",
  AE: "[gb2,c4,gb4]@4 ab3@2 f2@4 ~@2 eb2@4 ab3 ~ [c2,c4,eb4,gb4]@4 ~@2", // Gbdim Cdim
  AF: "eb1@2 ~ g1@2 ~ bb1@2 ~ c2@2 ~, [eb4,g4]@5 ~@3", AG: "eb2@2 ~ c2@2 ~ bb1@2 ~ g1@2 ~",
  AH: "bb1@2 ~ d2@2 ~ f2@2 ~ g2@2 ~, f4@11 ~, [d4,bb4]@5 ~", // Gm
  AI: "ab1@2 ~ c2@2 ~ eb2@2 ~ f2@2 ~, [c4,ab4]@19 ~@5, eb4@5 ~@3", // Fm
  AJ: "eb2@2 ~ c2@2 ~ bb1@2 ~ c2@2 ~, [bb3,eb4,g4]@7 ~", AK: "eb2@4 ~@2 c2@2 ~@2 bb1@5 ~ [a3,d4,gb4]@8, ~@15 d2@8 ~",
  AL: "~@18 a5 eb6@2 ~ [bb5,eb6] ~, ~@9 bb5 ~@2", // Eb5
  AM: "[bb5,eb6]@2 ~@2 bb5 ~ [bb5,eb6]@2 ~@2 eb6@2 [gb5,gb6]@2 ~@2 [gb5,gb6] ~ ab5@2 ~@2 [ab5,ab6] ~, ~@3 eb6@2 ~@5 bb5 ~@7 ab6 ~@5", // Eb5 Gb Ab
  AN: "[a5,a6]@2 ~@2 [a5,a6] ~ [ab5,ab6]@2 ~@2 [ab5,ab6] ~ [gb5,gb6]@2 ~@2 [gb5,gb6] ~ [eb5,eb6]@3 ~ [eb5,eb6] ~", // A Ab Gb Eb
  AO: "[db5,db6]@3 ~ [db5,db6] ~ [bb4,bb5]@2 ~@2 [bb4,bb5] ~ [ab4,ab5]@2 ~@2 [ab4,ab5] ~ [gb4,gb5]@4 g4 ~, ~@12 gb5 ~@11", // Db Bb Ab Gb
  AP: "[eb4,eb5]@3 ~ [bb3,bb4] ~@4 bb3@2 ~@7 bb4@2 ~ bb4@2 ~, ~@9 bb4 ~@14", // Eb Bb
  AQ: "~@7 ab6@4 ~ [gb6,bb6]@9 ~@3, d4@3 ~, ~@2 db7 ~", // Gb
  AR: "~@6 [eb6,bb6]@3 ~@4 bb6 ~@2 [eb6,gb6]@2 ~@6, c4@3 ~, ~@12 [eb6,ab6]@2 ~@2 bb6 ~@7", // Eb5 Ebm Ab5
  AS: "~@4 eb5@2 g5@2 bb5@2 c6@2 eb6@3 ~ db6 ~ [bb5,bb6]@2 ~@2 [ab5,ab6] ~, [bb3,eb4]@3 ~, ~@6 gb5 ~@17", // Bb Ab Eb5
  AT: "[gb5,gb6]@2 ~@4 [eb5,eb6]@3 ~@2 bb5@3 ~@2 [d2,a3,d4,gb4]@8, ~@5 bb4 ~@6", AU: "[eb6,gb6] ~@5 [eb6,gb6] ~@5",
  AV: "~ [eb6,gb6]@2 ~@7 gb6@2 ~@4 [eb6,gb6] ~ gb6@2 ~ gb6 eb6 ~, ~@10 eb6 ~@7 eb6 ~@5", // Ebm
  AW: "[eb6,gb6] ~@2 [eb5,eb6] ~@2 [db5,db6] ~@5 [bb4,g5,bb5]@2 ~@4 ab5@2 ~@4, ~@18 ab4 ~@5", // Ebm Eb Db Eb
  AX: "~ gb5@2 g4@2 ~@2 eb4@2 ~ [bb3,bb4] ~@4 bb3 ~@2 [bb3,eb4,g4]@5 ~, gb4@3 g5 ~@3 eb5 ~@16", // Bb Eb
  AY: "~@4 d6 ~ [d6,gb6,ab6] ~@3 d6 ~@2 [gb6,bb6]@3 ~@8, [ab3,d4]@19 ~@5, bb4@2 ~, ~@6 bb6@3 ~@4 [d6,ab6] ~@10", // Abm7b5 Gb Abdim Ddim
  AZ: "~@7 gb6 ~@4 [c6,ab6]@2 ~@2 [c6,gb6]@2 ~@6, [gb3,c4]@17 ~@7, ~@6 [c6,bb6]@3 ~@7 ab6 ~@7", // Fm Cdim Gbdim C7
  BA: "~@4 eb5 ~ g5@4 c6@2 bb5@4 eb5 ~ [gb5,g5]@3 ~ c6 ~, [eb2,bb3,eb4,g4]@11 ~, ~@3 bb5@3 ~@3 bb5@2 ~, ~@6 gb5@2 ~@4 g5@3 ~@9", // Gmaj7 Eb
  BB: "[g5,bb5]@3 ~ [d2,a3,d4,gb4]@2", // Gm D
})).s("gm_piano").gain(0.24)

// chords · piano · soft notes
const piano_soft = note(`<
  ~@12 A ~ B C ~ D ~@2 E ~@7 F G H I ~ J ~@2 K ~@8 L ~ M N O ~@21 P Q R S ~ T ~@10 U V ~ W ~@12
>`.pickRestart({
  A: "~@6 bb5 ~@2 bb5@3 ~@12", B: "~@5 [eb5,gb5] ~@18", C: "~@9 eb5@2 ~@2 ab5 ~@4 c5 ~@3 bb4 ~", D: "~@5 d5 ~@6",
  E: "~@3 [db5,db6]@2 ~@19", F: "~@7 bb5@2 ~ bb5 ~@13", G: "~@9 eb6 bb5@2 ~@4 bb5 ~@5 bb5@2, ~@15 eb6@2 ~@4 eb6@2 ~",
  H: "~@3 eb6 bb5 ~@4 eb6 bb5@2 ~@4 bb5 ~@3 gb6 eb6 bb5 ~, ~@15 eb6@2 ~@7", I: "~@16 eb6 ~@5 bb6 ~", J: "~@10 d6 ~@13",
  K: "~@2 g6 ~@21", L: "~ c5 ~@2 c5 ~@2 c5 ~@2 c5 ~", M: "~@2 eb6 ~@5", N: "~@4 eb6@2 ~@9 eb6@2 ~@7", O: "~@4 eb6 ~@19",
  P: "~@6 ab5 ~@9 gb4 ~@5 g5 ~", Q: "~@13 bb3 bb4@2 bb3 ~@3 bb3@2 bb3 ~, ~@6 bb4 ~@5", R: "~@4 eb6 ~@19, ab4@3 ~",
  S: "gb4@3 ~", T: "~@3 [g5,g6]@2 ~@9 bb4 bb5@2 ~@2 bb5@2 ~ bb5 ~, ~@17 bb4@4 ~@3", U: "~@6 gb5 ~@5",
  V: "~@11 db4 ~@2 bb4 ~@2 bb4 ~@6", W: "~@12 gb6 ~@11",
})).s("gm_piano").gain(0.12)

// bass · acoustic bass
const bass = note(`<
  ~@12 A B@2 C D E B C F ~ G H G H G ~ A B@2 C D E B C F H G H G H G ~ A B@2 C D E B C F B I C D E B J K H G H G H G ~ A
  B@2 C D E B C F H G H G H G ~ A B@2 C D E B C L M D C D C D C D C N
>`.pickRestart({
  A: "~@6 eb1@4 db1 ~ gb1@4 db1 ~ g1@5 ~", B: "ab1@2 ~ c2@2 ~ eb2@2 ~ f2@2 ~", C: "eb1@2 ~ g1@2 ~ bb1@2 ~ c2@2 ~",
  D: "eb2@2 ~ c2@2 ~ bb1@2 ~ g1@2 ~", E: "bb1@2 ~ d2@2 ~ f2@2 ~ g2@2 ~", F: "eb2@4 ~@2 c2@4 ~@2 bb1@3 ~ c2@6 ~@2",
  G: "~@15 d2@8 ~", H: "eb2@23 ~", I: "gb2@2 ~ f2@2 ~ eb2@2 ~ c2@2 ~", J: "eb2@2 ~ c2@2 ~ bb1@2 ~ c2@2 ~",
  K: "eb2@4 ~@2 c2@2 ~@2 bb1@5 d2@8 ~", L: "eb2@4 ~@2 c2@4 bb1@6 ~@2 c2@5 ~", M: "eb2@11 ~",
  N: "eb2@2 ~ c2@2 ~ bb1@2 ~@4",
})).s("gm_acoustic_bass").gain(0.57)

// bass · acoustic bass · soft notes
const bass_soft = note("<~ A@10 B ~@9 C ~@5 D ~@15 D ~@23 D ~@15 D ~@19>".pickRestart({
  A: "eb2 ~ eb2 ~ eb2 ~ eb2 ~", B: "eb2 ~@7", C: "eb2@23 ~", D: "eb2 ~@5",
})).s("gm_acoustic_bass").gain(0.21)

// other · electric guitar muted
const electric_guitar_muted = note(`<
  ~@13 A B C D E F G H ~@8 A B C D E F G H ~@8 A B C D E F G H I J K@4 L M ~@8 A B C D E F G H ~@8 A B C D E F G N O@9 P
>`.pickRestart({
  A: "ab2@2 ~ ab2@2 ~ c3@2 ~ c3@2 ~ eb3@3 eb3@2 ~ f3@2 ~ eb3@2 ~",
  B: "ab2@2 ~ ab2@2 ~ c3@2 ~ c3@2 ~ eb3@2 ~ eb3@2 ~ f3@2 ~ eb3@2 ~",
  C: "eb2@2 ~ eb2@2 ~ g2@2 ~ g2@2 ~ bb2@2 ~ bb2@2 ~ c3@2 ~ bb2@2 ~",
  D: "eb2@2 ~ eb2@2 ~ g2@3 g2@2 ~ bb2@3 bb2@2 ~ c3@5 ~", E: "bb2@3 bb2@2 ~ d3@2 ~ d3@2 ~ f3@2 ~ f3@2 ~ g3@2 ~ f3@2 ~",
  F: "ab2@2 ~ ab2@2 ~ c3@2 ~ c3@2 ~ eb3@3 eb3@2 ~ f3@3 eb3@2 ~",
  G: "eb2@2 ~ eb2@2 ~ g2@3 g2@2 ~ bb2@2 ~ bb2@2 ~ c3@2 ~ bb2@2 ~", H: "eb2@2 ~ eb2@2 ~ g2@2 ~ g2@2 ~@4 bb2@2 ~ c3@5 ~",
  I: "~@4 [gb4,eb5]@2 [gb4,eb5] ~@3 [b3,c4,eb5] ~@4 [gb4,eb5] b3 ~ [eb3,gb4,eb5] ~@3 [eb3,b3,gb4,eb5] ~", // Ebm B Ebm B
  J: "~@4 [b3,gb4,eb5]@2 [b3,gb4,eb5] ~@3 [db3,eb5] ~@4 eb5 [b3,gb4] ~ [b3,gb4,eb5] ~@5", // B Dbsus2 B5 B
  K: "[~@4 g4@6 g4@6 g4@2 g4@2 ~@2 g4@5 ~ g4@2 g4@3 ~ g4@6 g4@2 g4@3 [bb2,f3,bb3,f4,bb4]@6 [bb2,bb3,f4,bb4]@3 b3 ~@3 [bb2,bb4]@3 ~@3 [bb2,f3,bb3]@2 [bb2,f3]@3 ~ [eb3,ab3]@5 [ab2,ab3,eb4,ab4]@3 a3 ~@3 [ab2,b3] ~@5 [ab2,eb3,ab3]@2 [ab2,eb3]@3 ~ bb3 ~, ~@51 a2 ~@2 g3@4 f4@9 ~@11 eb4@2 ~ eb3@5 ~@10, ~@54 f4@2 bb2@2 bb3@5 ~@3 bb3 ~@11 f3@4 ab3@5 ~@3 ab3 ~@5, ~@55 bb4@2 f3@5 ~@7 [ab2,eb4,ab4]@6 g2 ~@4 ab2@2 ab4@2 ~@12, ~@58 db4 ~@20 ab4@2 ~ eb4@9 ~@5]/4", // Bb5 Bb Bb5 Ab5 Abm Ab5
  L: "[eb4,g4]@2 ~ bb3!2 ~ [f4,ab4]@3 [bb3,eb4,f4] ab4@2 [eb4,g4]@6 [f4,ab4]@3 bb3 [f4,ab4]@2, ~@3 [eb4,g4]@3 bb3 ~@5 bb3 ~@5 bb3 ~@5", // Eb Fm Bbsus4 Eb Fm Eb
  M: "[bb3,eb4,g4]@3 [bb3,eb4,g4]@3 [bb3,eb4,g4] ~@2 [bb3,eb4,g4] ~@14", N: "eb2@3 ~ eb2@2 g2@3 ~ g2@3 ~@3 bb2@2 c3@6",
  O: "eb2@3 ~ eb2@2 g2@3 ~ g2@2 bb2@3 ~ bb2@2 c3@3 ~ bb2@2", P: "eb2@3 ~ eb2@2 g2@3 ~ g2@2 bb2@3 ~ bb2@2 ~@6",
})).s("gm_electric_guitar_muted").gain(0.32).pan(0.4)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  A B@10 C ~@9 D@2 B@4 C ~@9 D@2 B@4 C ~@16 A B@6 C ~@9 D@2 B@4 C ~@19
>`.pickRestart({
  A: "~@17 [d4,gb4]@6 ~, ~@16 [d3,a3]@7 ~", B: "[[eb3,bb3,eb4]@9 ~ [d4,gb4]@2, ~@39 [d3,a3]@8 ~]/2",
  C: "[eb3,bb3,eb4] ~@7", D: "[eb3@9 ~ [d4,gb4]@2, ~@39 [d3,a3]@8 ~]/2",
})).s("gm_acoustic_guitar_steel").gain(0.31).pan(0.4)

// chords · acoustic guitar steel · soft notes
const acoustic_guitar_steel_2 = note("<~ A@10 B ~@11 A@4 B ~@11 A@4 B ~@17 A@6 B ~@11 A@4 B ~@19>".pickRestart({
  A: "[g4@3 ~]/2", B: "g4 ~@7",
})).s("gm_acoustic_guitar_steel").gain(0.22).pan(0.4)

// drums · kick
const kick = s("bd").struct("<~@11 A ~ B@8 ~@6 A ~ B@8 ~@6 A ~ B@7 C B@8 ~@6 A ~ B@8 ~@6 A ~ B@18>".pickRestart({
  A: "x", B: "x!2", C: "x ~@2 x",
})).gain(0.3)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  A@7 B A@3 ~@10 A C B A@3 ~@10 A@2 B A@3 ~@18 A@2 B A@3 ~@10 A@2 B A@3 ~@20
>`.pickRestart({
  A: "~@11 x", B: "~@22 x!2", C: "~@9 x ~ x",
})).gain(0.06)

// drums · pedal hat
const pedal_hat = s("hh").struct("<A B@10 C ~@9 D@6 C ~@9 D@6 C ~@17 D@6 C ~@9 D@6 C ~@19>".pickRestart({
  A: "~@3 x", B: "x!4", C: "x", D: "x ~ x!2",
})).gain(0.12)

// drums · pedal hat · soft notes
const pedal_hat_soft = s("hh").struct("<~@21 A@6 ~@10 A@6 ~@18 A@6 ~@10 A@6 ~@20>".pickRestart({
  A: "~ x ~@2",
})).gain(0.06)

// drums · open hat
const open_hat = s("oh").struct("<~@13 A@7 B ~@8 C A@6 B ~@8 A@7 D ~@16 A@7 B ~@8 A@17 E>".pickRestart({
  A: "x!8", B: "x!5 ~@3", C: "~@2 x!6", D: "x", E: "x!6 ~@2",
})).gain(0.24)

// drums · crash
const crash = s("cr").struct("<~@52 [~@3 x] x ~@49>").gain(0.42)

// drums · ride
const ride = s("rd").struct("<~@53 [~ x!3] [x!4]!6 [x!3 ~] ~@42>").gain(0.42)

// drums · ride · soft notes
const ride_soft = s("rd").struct("<~@53 [~@5 x ~@5 x]!7 [~@3 x ~@4] ~@42>").gain(0.24)

stack(
  piano, piano_soft, bass, bass_soft, electric_guitar_muted, acoustic_guitar_steel, acoustic_guitar_steel_2, kick,
  snare, snare_soft, pedal_hat, pedal_hat_soft, open_hat, crash, ride, ride_soft
)

More by Elvis Presley