Strudelify
Don't Rock the Jukebox cover art

Genuine: The Alan Jackson Story

Don't Rock the Jukebox

Alan Jackson

KeyG majorTempo154 bpm
0:00/0:00
// Don't Rock the Jukebox — Alan Jackson
// 154 bpm, 2/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 195 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(154/2)

// 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 · violin · "Split Chan 1"
const violin = note("<~@119 A B@2 ~ C D E F G H I@2 J@2 K@2 ~@60>".pickRestart({
  A: "~@5 d4@2 e4@3 ~@6", B: "[e4@11 d4@21]/2", C: "g3@7 a3@2 ~@4 g3 ~@2", D: "a3@7 c4@2 ~@3 d4 ~@3",
  E: "d#4@7 d4@2 ~@3 d4@2 ~@2", F: "b3@7 a3@6 ~@3", G: "~@5 a3@3 c#4@5 e4@3", H: "g4@5 b4@2 d5@5 b4@4",
  I: "[c#5@3 ~ e5@4 f#5@5 ~ a5@9 ~@9]/2", J: "[~@5 f#5@10 d5@5 ~ a4@3 c5@8]/2", K: "[f#4@5 f4@2 ~ e4@5 d4@15 ~@4]/2",
})).s("gm_violin").gain(0.48)

// bass · electric bass finger · "Split Chan 16"
const bass = note(`<
  ~@7 A B C D B E F G A E@2 H I J K L B@2 C D M N O P Q H I R S T ~@2 U V W X Y Z Y AA AB AC AD AE Z AD Z AF X AG X AH Y
  AI X W AJ AK Z AL AM AN AO ~ A AP C P AP E F AQ AP E AP AR AS@2 AT AU AP@2 O D AV N O P AP AR AS AW B A AX@2 A AP P D
  AY AZ C P B BA I BB BC AN ~@2 X AG W AH AJ AL Y BD AD AC AF@2 Z BE Z AD X Y W AH BD AI X AH BD AR AL BF AM BG AO ~ A
  BH P D BI E BJ BK E@2 BL BM AS AW BN L E B D@2 AY AZ D BO E B J AW AY N BP BQ BR AR BS BT BU BV@7
>`.pickRestart({
  A: "g1@6 ~@2 g1@5 ~@3", B: "g1@5 ~@3 g1@6 ~@2", C: "c2@6 ~@2 c2@5 ~@3", D: "c2@5 ~@3 c2@5 ~@3",
  E: "g1@5 ~@3 g1@5 ~@3", F: "g1@5 ~@3 g1@4 ~@4", G: "g1@3 ~@3 d1@2 e1@6 f#1@2", H: "c2@7 ~ c#2@7 ~",
  I: "d2@3 ~ d2@3 ~", J: "d2@5 ~@3 d2@5 ~@3", K: "d2@7 ~ c2@7 ~", L: "b1@8 a1@7 ~", M: "g1 a1", N: "a#1@7 ~ b1@7 ~",
  O: "c2@3 ~ c2@3 ~", P: "c2@5 ~@3 c2@6 ~@2", Q: "g1@7 ~ g1@6 ~@2", R: "d2@3 ~ d2@2 ~@2", S: "g2 e2",
  T: "d2@2 ~ a1 b1@4", U: "c2@15 ~", V: "g2@15 ~", W: "c2@13 ~@3", X: "c2@7 ~", Y: "g1@7 ~", Z: "d2@7 ~",
  AA: "g1@11 ~@5", AB: "a1@15 ~", AC: "e2@7 ~", AD: "a1@7 ~", AE: "a1@9 ~@7", AF: "a1@13 ~@3", AG: "g2@7 ~",
  AH: "c2@3 ~", AI: "g1@7 ~ b1@7 ~", AJ: "g1@13 ~@3", AK: "b1@7 ~ c2@6 ~@2", AL: "d2@13 ~@3", AM: "g2@8 e2@7 ~",
  AN: "d2@5 ~ a1@2 b1@7 ~", AO: "g1@3 ~@5", AP: "g1@3 ~ g1@3 ~", AQ: "g1@4 ~@2 d1@2 e1@5 ~ f#1@2", AR: "b1@3 ~ c2@3 ~",
  AS: "d2@6 ~@2 d2@5 ~@3", AT: "d2@3 a1 c2@4", AU: "b1@7 ~ a1@8", AV: "g1@7 ~ a1@8", AW: "d2@5 ~@3 d2@4 ~@4",
  AX: "[g1@4 ~ d1 ~ e1@7 ~ f1@7 ~ f#1@7 ~@2]/2", AY: "g1@7 ~ a1@7 ~", AZ: "a#1@3 ~ b1@3 ~", BA: "c2@7 ~ c#2@6 ~@2",
  BB: "d2@5 ~@3 d2@3 ~@5", BC: "g2@7 ~ e2@8", BD: "g1@3 ~", BE: "a2@15 ~", BF: "d2@3 ~", BG: "d2@5 ~ a1@2 b1@8",
  BH: "g1@5 ~@3 g1@4 ~@2 b1@2", BI: "g1@4 ~@4 g1@5 ~@3", BJ: "g1 ~ g1 ~", BK: "g1@2 ~ e1 f1@2 f#1 ~",
  BL: "g1@5 ~@3 b1@6 ~@2", BM: "c2@3 ~ c#2@3 ~", BN: "d2@4 ~@2 a1 ~ c2@8", BO: "c2@5 ~@3 c2@5 ~ d2@2",
  BP: "c2@3 ~ d2@3 ~", BQ: "e2@6 ~@2 f#2@7 ~", BR: "g1@7 ~ g1@5 ~@3", BS: "d2@7 ~ d2@5 ~@3", BT: "d2@5 ~@3 d2@6 ~@2",
  BU: "g1@3 ~@2 g1 ~ d2@9", BV: "[c#2@7 ~ c2@7 ~ c2 ~@14 g1@64 g1@7 ~@10, ~@15 b1@5 ~@92]/7",
})).s("gm_electric_bass_finger").gain(0.42)

// chords · piano · "Split Chan 11"
const piano = note(`<
  ~@7 A@2 B@2 C@2 D@2 E@2 D@2 F@4 G@2 H@2 I@2 J@2 D@2 K@2 L@2 M ~ N@4 O@4 P@2 Q@2 R@2 S@2 T@2 U@2 V@4 W@2 X@2 Y@2 Z ~
  AA@2 AB@2 D@6 AC@2 AD@2 K@2 C@2 AE@2 AF@2 AG@4 K@2 C@2 AH@2 D@2 AE@2 AI@2 AJ@2 D@2 F@2 AK@2 AL ~ AM@2 AN@2 AO@2 AP@4
  AQ@2 AR@2 AS@2 AT@2 AN@2 AU@2 AV@2 AW@4 AX@2 AY ~ C@2 AZ@2 BA@2 BB@2 BA@2 D@2 F@2 BC@2 BB@2 AJ@2 D@2 BD@2 BB@2 BE@2
  BB@2 BF@2 D@2 BE@2 ~@3 BG@4 BH
>`.pickRestart({
  A: "[g3@7 ~ b4@15 ~ [d4,g4,b4]@8, ~@7 [d4,g4]@15 ~@10]/2", B: "[c4@7 ~ [e4,g4,c5]@15 ~ [e4,g4,c5]@8, ~@8 a#4 ~@23]/2",
  C: "[g3@4 [d4,g4,b4]@7 ~ [d4,g4,b4]@4]/2", D: "[g3@7 ~ [d4,g4,b4]@14 ~@2 [d4,g4,b4]@8]/2",
  E: "[g3@4 [d4,g4,b4]@7 ~ [d4,g4,b4]@4, ~@24 a#4 ~@7]/2", F: "[d3@7 ~ [d4,f#4,a4]@14 ~@2 [d4,f#4,a4]@8]/2",
  G: "[g3@7 [d4,g4,b4]@14 ~@3 [d4,g4,b4]@8]/2", H: "[c4@7 ~ [g4,c5]@14 ~@2 [e4,g4,c5]@8, ~@7 e4@14 ~@11]/2",
  I: "[g3@7 ~ [g4,b4]@15 ~@2 [g4,b4]@7, ~@7 d4@15 ~@2 d4@8]/2", J: "[~@4 [e4,g4,c5]@7 ~ [e4,g4,c5]@4]/2",
  K: "[d3@4 [d4,f#4,a4]@7 ~ [d4,f#4,a4]@4]/2", L: "[g3@7 ~ [d4,g4,b4]@14 ~@2 [e4,g4,c5]@6 ~@2]/2",
  M: "[g3,d4,g4,b4]@5 ~@11", // G
  N: "[~@5 d4@2 d#4 c5@5 ~@3 a#4@4 ~ d4@2 d#4 c5@5 c5@2 ~ c4@7 ~ [e4,g4,c5]@13 c4 ~@2 g4@5 g4@2 a4, c4@8 [e4,g4]@12 ~ c4 ~@2 [e4,g4]@8 ~@24 [e4,c5]@8, ~@13 c5@7 ~@4 d#4 ~@6 a#4@19 ~@14]/4", // C Em C
  O: "[[b4,d5]@4 ~ [b4,d5] ~@2 b4@5 b4@2 [b4,d5]@5 ~@2 g4 ~ [d4,g4,b4]@7 ~ g3@7 ~ [d4,g4,b4]@13 g3@2 ~ [d4,g4,b4]@8, g3@5 ~@2 d5@4 ~@2 d5 ~@6 f#4@2 ~ [a4,c5]@6 ~@2 [g4,b4]@9 ~@24, ~@8 [d4,g4]@13 g3@2 ~@41]/4", // Bm G Am G G5
  P: "[a3@7 ~@6 [b4,d5]@3 [c#5,e5]@5 ~ [a4,c#5]@2 [a4,b4,c#5,d5]@5 [a4,c#5]@3, ~@8 [e4,a4]@12 ~ a3@2 ~ e4@8, ~ c#5 ~@2]/2", // Bm C#m A Dmaj7 A A5
  Q: "[[a3,d5]@5 c#5@3 [e4,a4,c#5]@13 a3@2 ~@6 f#4 g4@2, b4@4 ~ e5@19 [e4,a4,c#5]@8]/2", // D5 A
  R: "[[f#4,a4]@3 ~@2 a4 f#4 ~ f#4@7 [d4,f#4]@4 ~@2 d4 ~@2 [f#4,a4,d5]@7 d4, d4@5 ~@3 [a4,d5]@12 ~@4 c#5 ~@7, g4 ~@6 g4@4 ~@12 g4@3 ~@6, ~@8 e4@3 ~@13 e4@3 ~@5]/2", // F#m D D5
  S: "[d4@5 [e4,g4]@2 ~ [d4,f#4,a4,d5]@13 d4 ~@2 [f#4,a4,d5]@8, f#4@3 ~@29]/2", // Em D
  T: "[c4@8 [e4,g4,c5]@13 c4@2 [e4,g4,c5]@9]/2", U: "[c4@8 [e4,g4,c5]@13 c4@2 ~ [e4,g4,c5]@8]/2",
  V: "[g3@7 ~ [d4,g4,b4]@13 g3@3 [d4,g4,b4]@7 c4@8 ~ [e4,g4,c5]@13 c4@2 ~ [e4,g4,c5]@8]/4", // G C
  W: "[g3@8 [d4,g4,b4]@13 g3@2 ~ [d4,g4,b4]@8]/2", X: "[d3@8 [d4,f#4,a4]@13 d3@3 [d4,f#4,a4]@8]/2",
  Y: "[g3@8 [d4,g4,b4]@13 g3 ~@2 [e4,g4,c5]@7 ~, ~@24 b4 ~@7]/2", Z: "[d4,g4,b4]@3 ~@5",
  AA: "[g3@7 ~ [d4,g4]@13 g3@2 ~ [d4,g4,b4]@8, ~@7 b4@14 ~@11]/2", AB: "[c4@8 [e4,g4,c5]@15 ~@2 [e4,g4,c5]@7]/2",
  AC: "[g3@7 ~ [d4,g4,b4]@14 ~@2 [d4,g4,b4]@8, ~@4 f#4 ~@11]/2", // G
  AD: "[d3@7 ~ [d4,f#4]@14 ~@2 [d4,f#4,a4]@8, ~@7 a4@14 ~@11]/2", AE: "[c4@4 [e4,g4,c5]@7 ~ [e4,g4,c5]@4]/2",
  AF: "[g3@7 ~ [d4,g4]@15 ~@2 [g4,b4]@7, ~@7 b4@15 ~@2 d4@7 ~]/2", // G5 G
  AG: "[c4@7 ~ [e4,g4,c5]@14 ~@2 [e4,g4,c5]@7 g3@8 ~ [d4,g4,b4]@14 ~@2 [d4,g4,b4]@8]/4", // C G
  AH: "[g3@7 ~ b4@14 ~@2 [d4,g4,b4]@8, ~@7 [d4,g4]@14 ~@11]/2", AI: "[g3@7 ~ [d4,g4,b4]@14 ~@3 [g4,b4]@7, ~@3 d4]/2",
  AJ: "[c4@7 ~ [e4,g4,c5]@14 ~@2 [e4,g4,c5]@8]/2", AK: "[g3@8 [d4,g4,b4]@13 g3@2 ~ [e4,g4,c5]@6 ~@2]/2",
  AL: "[g3,g4,b4]@5 ~@11", AM: "[c4@7 ~ [e4,g4,c5]@12 ~ c4@2 ~ [e4,g4,c5]@8]/2",
  AN: "[c4@7 ~ [e4,g4,c5]@13 c4@2 ~ [e4,g4,c5]@8]/2", AO: "[g3@7 ~ [d4,g4,b4]@13 g3@2 ~ [d4,g4,b4]@8]/2",
  AP: "[g3@7 ~ [d4,g4,b4]@12 ~ g3@2 ~ [d4,g4,b4]@7 a3@8 ~ [e4,a4,c#5]@12 ~ a3@2 ~ [e4,a4,c#5]@8]/4", // G A
  AQ: "[a3@7 ~ [e4,a4,c#5]@12 ~ a3@2 ~ [e4,a4,c#5]@8]/2", AR: "[d4@7 ~ [f#4,a4,d5]@13 ~ d4@2 [f#4,a4,d5]@8]/2",
  AS: "[d4@7 ~ [f#4,a4,d5]@13 d4@2 ~ [a4,d5]@8, ~@23 f#4@9, ~@24 c#5 ~@7]/2", // D D5
  AT: "[c4@7 [e4,g4,c5]@13 ~ c4@2 ~ [e4,g4,c5]@8]/2", // C
  AU: "[~@8 [g4,b4]@8 [g4,b4]@5 g3@2 ~@2 d4@7, g3@8 d4@13 ~@3 [f4,a4]@2 ~@6, ~@2 a4 d5@5 ~@8, ~@5 [b4,c5]@3 ~@16 [g4,b4]@8]/2", // G F Cmaj7 G
  AV: "[[f4,a4]@2 ~@3 a4@2 e4 c5@12 ~ c4 ~@2 [g4,c5]@8, c4 ~@3, ~ b4 f4 ~ [e4,g4]@8 ~@4, ~@3 g4@2 ~@18 e4@8 ~]/2", // F C5 Em
  AW: "[g3@8 b4@8 [b4,d5]@5 ~ c5@2 [d4,g4,b4]@7 ~ [d3,a4]@8 d4@13 d3@2 ~ [d4,f#4,a4]@8, ~@8 [d4,g4]@13 [g3,a4]@3 ~@40, ~@8 d5@2 ~@21 f#4@9 [f#4,a4]@16 ~@8]/4", // Bm G D5 D G5 Gsus2 F#m
  AX: "[g3@7 ~ [d4,g4,b4]@12 ~ g3@2 ~ [e4,g4,c5]@6 ~@2]/2", AY: "[d4,g4,b4]@5 ~@11",
  AZ: "[c4@8 [e4,g4,c5]@15 ~ [e4,g4,c5]@7 ~]/2", BA: "[g3@8 [d4,g4,b4]@13 ~@3 [d4,g4,b4]@8]/2",
  BB: "[g3@7 ~ [d4,g4,b4]@13 ~@3 [d4,g4,b4]@8]/2", BC: "[d3@7 ~ [d4,f#4,a4]@14 ~@2 [d4,f#4,a4]@7 ~]/2",
  BD: "[c4@6 ~@2 [e4,g4,c5]@13 ~@3 [e4,g4,c5]@8]/2", BE: "[d3@8 [d4,f#4,a4]@13 ~@3 [d4,f#4,a4]@8]/2",
  BF: "[c4@8 [e4,g4,c5]@13 ~@3 [e4,g4,c5]@7 ~]/2", BG: "[[g3,g4,b4,d5]@61 ~@3]/4", BH: "[g3,g4,b4,d5]@3 ~@5",
})).s("gm_piano").gain(0.49)

// drums · kick
const kick = s("bd").struct("<~@7 A@30 B ~ B@31 ~ A@46 B C B@28 A@2 B C A@35 D A@2 B@2 ~@3 B>".pickRestart({
  A: "x!2", B: "x", C: "~ x", D: "x ~@4 x ~@2 x ~@7",
})).gain(0.66)

// drums · rim
const rim = s("rim").struct("<~@39 [~ x]!29 ~@51 [~ x]!29 ~@47>").gain(0.66)

// drums · snare
const snare = s("sd").struct(`<
  ~@6 A@16 B A@13 C ~@31 D E A@16 F A@15 G A@13 G E ~@29 A G E A@16 H A@11 B A@3 I A@6 E ~@5
>`.pickRestart({
  A: "~ x", B: "~@5 x ~@2 x ~@4 x ~@2", C: "~@5 x ~@2 x ~ x ~@2 x ~ x", D: "~@8 x ~@2 x ~ x ~@2", E: "x",
  F: "~@8 x ~ x ~@2 x ~@2", G: "~@3 x!2 ~@3", H: "~@6 x ~ x ~@4 x ~@2", I: "~@5 x ~@2 x ~@7",
})).gain(0.66)

// drums · low tom
const low_tom = s("lt").struct("<~@6 A ~@63 A ~@31 B ~@13 B ~@31 B ~ A ~@31 B ~@6 C ~@5>".pickRestart({
  A: "~ x", B: "~@13 x ~@2", C: "x",
})).gain(0.66)

// drums · hihat
const hihat = s("hh").struct("<~@3 A@2 B ~ C@30 B ~ C@29 B ~@2 C@46 B ~ C@30 B ~ C@38 B D E D@2 ~>".pickRestart({
  A: "x!2", B: "x", C: "x ~@7 x ~@4 x ~@2", D: "~ x", E: "~@7 x ~@8",
})).gain(0.59)

// drums · mid tom
const mid_tom = s("mt").struct("<~@102 A ~@13 A ~@31 A ~@33 B ~@12>".pickRestart({
  A: "~@5 x ~@2", B: "~@11 x ~@4",
})).gain(0.52)

// drums · high tom
const high_tom = s("ht").struct("<~@102 A ~@13 A ~@31 A ~@33 A ~@12>".pickRestart({
  A: "~ x",
})).gain(0.59)

// drums · crash
const crash = s("cr").struct("<~@7 A ~@15 A ~@47 A ~@15 A ~@15 A ~@47 A ~@15 A ~@15 A ~@5 B ~@4 A>".pickRestart({
  A: "x", B: "~@15 x",
})).gain(0.59)

// drums · ride
const ride = s("rd").struct("<~@39 A@6 B@2 A@9 B@4 A@9 C ~@49 A@3 B A B A@3 B A@4 B A@15 C ~@45>".pickRestart({
  A: "x ~@7 x ~@4 x ~@2", B: "x ~@7 x ~@6 x", C: "x",
})).gain(0.59)

stack(violin, bass, piano, kick, rim, snare, low_tom, hihat, mid_tom, high_tom, crash, ride)

More by Alan Jackson