Strudelify
Summertime Blues cover art

Who I Am Bonus Track

Summertime Blues

Alan Jackson

KeyD majorTempo150 bpm
0:00/0:00
// Summertime Blues — Alan Jackson
// 150 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: ch 7 "GUITAR E.1" named as a guitar, played on electric guitar clean (its electric bass pick patch is not one); ch 8 "GUITAR E.2" named as a guitar, played on electric guitar clean (its electric bass pick patch is not one); ch 11 "GUITAR STEEL 2" named as a guitar, played on acoustic guitar steel (its pad metallic patch is not one)
// note: sustain pedal (CC 64) lengthens the held notes
// note: duplicate parts dropped: ch 4 "BASS F.2" electric bass finger (copy of ch 3 "BASS A.1" acoustic bass); ch 11 "GUITAR STEEL 2" acoustic guitar steel (copy of ch 9 "GUITAR STEEL 1" electric guitar jazz)
// note: Full arrangement: all 131 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(150/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 · "BASS A.1"
const bass = note(`<
  ~@6 A B A C A@3 D B@2 A E F G H ~ G I H ~ A B A C A@3 D B@2 A E F G H ~ G I H ~ A@3 D B@2 A E F G A E F G H ~ A B A C
  A@3 D B@2 A E F G H ~ G I H ~ A@3 D B@2 A E F G A E F G H ~ A B A C A@3 D B@2 A E F G J K A L F G H ~ A C M N O P Q
  R@3 ~
>`.pickRestart({
  A: "d2@3 ~@5 a1@4 ~@4", B: "d2@3 ~@5 a1@3 ~@5", C: "d2@3 ~ a1@3 ~ b1@2 ~@2 c#2@3 ~", D: "d2@3 ~@5 a1@4 c2@3 ~",
  E: "d2@4 ~@4 b1@4 a1@3 ~", F: "g1@4 ~@4 d2@5 ~@3", G: "g1 ~ d2 ~", H: "d1@3 ~@13", I: "g1@5 ~@3 d2@3 ~ e1@4",
  J: "d1@5 ~@3 d1@4 f#1@3 ~", K: "a1@7 ~ d1@6 ~@2", L: "d1 e1 f1 f#1", M: "d2@5 ~@3 d2@6 ~@2",
  N: "a1@2 ~@2 a1@3 ~ d2@3 ~@5", O: "a1@4 ~@4 d2@3 ~@5", P: "a1@3 ~@5 d2@3 ~@5", Q: "a1@4 ~@4 d2@3 ~ a1@3 ~", R: "d1/3",
})).s("gm_acoustic_bass").gain(0.63)

// other · violin · "FIDDLE"
const violin = note(`<
  ~@5 A@5 ~@2 B C@2 ~ D E F@2 G ~@4 A@5 ~@23 H I J@2 K L@2 M@2 ~ N@3 ~@8 F@2 G ~@22 N@3 ~@2 O P ~ Q@2 R ~@6 S T U ~ V@2
  ~ W@2 X@3 ~@3
>`.pickRestart({
  A: "[~@12 d5@28 e5@14 d5@25 ~]/5", B: "a4@3 ~ a4 ~ a4@2 d5@2 ~@2 d5 ~ d5 ~",
  C: "[c5 ~ a4 ~ a4@2 b4 ~ e4@4 d4@11 ~@9, ~ b4@2 ~@29]/2",
  D: "[a4,f#5]@4 [a4,a5] ~ a4 ~ a4 ~ d5@2 b4@2 a4 ~, ~@6 e5@4 a4 ~@5", // D A
  E: "[f#4,a4]@4 a4@2 a4 ~ a4 ~ d4@2 c4@4, ~@6 e4@4 a4 ~@5", F: "[b3@6 ~ b3]/2", G: "a3 ~@7",
  H: "~@12 [d5,g5] ~ [d5,g5] ~", I: "[d5,g5]@3 ~ [d5,g5] ~ [d5,g5] ~ [d5,g5]@3 ~ [d5,g5] ~ g5@2, ~@14 d5 ~",
  J: "[f5@2 e5@2 d5@2 b4@2 d5@3 ~@3 f#5@4 a5 ~ e5@4 d5 b4 a4@2 f#4@3 ~]/2", K: "f#4@3 ~ b4@2 a4@2 b4@2 a4@2 g4@2 a4 ~",
  L: "[b4@2 d5 f5 e5 d5 ~ a5@3 c6 a5 b5 a5 f5 e5]/2", M: "[d6@3 ~ d6 ~ d6 ~ a5 ~@3 f#5 ~ f#5@4 d5 ~ b4@2 a4@2 d5@8]/2",
  N: "[~@8 e5@14 d5@25 ~]/3", O: "a3@2 c4 ~ a3@2 c4 ~", P: "g3@3 ~ e3@4 e3@4 d3@4",
  Q: "[~@14 g4@5 ~ f#4@2 d4@2 f#4@4 e4 ~ d4@2]/2", R: "[d4,f#4] ~@3 c4@11 ~, ~@4 e4@9 ~@3", S: "g4@3 d5",
  T: "g5@3 ~ g5 a5 e5@2", U: "d5@3 ~@13", V: "[~@6 d5@25 ~]/2", W: "[~@4 [a4,d5]@11 ~]/2", X: "[e5@14 d5@25 ~@9]/3",
})).s("gm_violin").gain(0.57).pan(0.4)

// chords · acoustic guitar steel · "GUITAR A.1"
const acoustic_guitar_steel = note(`<
  ~@6 A B@2 C D@6 E F@2 G H ~ I@2 J ~ A B@2 C D@6 E F@2 G H ~ I@2 J ~ D@6 E F@2 G E F@2 G H ~ A B@2 C D@6 E F@2 G H ~
  I@2 J K L M@2 N O P@2 ~ Q G E F@2 G H ~ A B@2 C D@6 E F@2 G E@2 R S Q G H ~ T C U V W X@2 Y@4
>`.pickRestart({
  A: "~@4 [a3,d4,f#4]@2 [a3,d4,f#4]@2 ~@4 [a3,d4,f#4] ~ [a3,d4,f#4]@2, d3@8 a2@7 ~", // D
  B: "[~@4 [a3,d4,f#4] ~ [a3,d4,f#4]@2 ~@4 [a3,d4,f#4] ~@7 [a3,d4,f#4]@2 ~@6 [a3,d4,f#4]@2 [a3,d4,f#4]@2, d3@6 ~@2 a2@15 ~ a2@7 ~, ~@7 [a3,d4,f#4]@3 ~ [a3,d4,f#4]@3 ~@2, ~@16 d3@7 ~@9]/2", // D
  C: "~@2 [a3,d4,f#4]!2 ~@2 [a3,d4,f#4]!2, d3@8 f#3@7 ~", // D
  D: "[~@2 [a3,d4,f#4]!2 ~@2 [a3,d4,f#4] ~@2 [a3,d4,f#4]!2 ~@3 [a3,d4,f#4] ~@3 [a3,d4,f#4]!2 ~@2 [a3,d4,f#4] ~@3 [a3,d4,f#4] ~@3 [a3,d4,f#4] ~@3 [a3,d4,f#4] ~@3 [a3,d4,f#4] ~@3 [a3,d4,f#4] ~@3 [a3,d4,f#4]!2, d3@8 a2@23 ~@9 a2@23 ~@9 a2@7 ~@17, ~@14 [a3,d4,f#4]@4 ~@4 [a3,d4,f#4]@6 ~@2 [a3,d4,f#4]@5 ~@11 [a3,d4,f#4]@6 ~@2 [a3,d4,f#4]@6 ~@2 [a3,d4,f#4]@5 ~@3 [a3,d4,f#4]@6 ~@2 [a3,d4,f#4]@6 ~@2 [a3,d4,f#4]@6 ~@4, ~@16 d3@15 ~ d3@9 ~@7 d3@15 ~ d3@15 ~ d3@15 ~, ~@24 f#3@7 ~@25 f#3@7 ~@25 f#3@7 ~]/6", // D
  E: "~@4 [a3,d4,f#4]@2 [a3,d4,f#4]@2 ~@4 [a3,d4,f#4] ~ [a3,d4,f#4]@2, d3@7 ~ a2@7 ~", // D
  F: "[~@2 [a3,d4,f#4] ~ [a3,d4,f#4] ~ [a3,d4,f#4]@2 a2@4 [d4,f#4]@4 ~@4 [g3,b3,d4]@2 [g3,b3,d4]@2 ~@4 [g3,b3,d4]@2 [g3,b3,d4]@2, d3@7 ~@5 a3@12 d3@8, ~@16 g2@9 ~@7]/2", // D G
  G: "~@4 [g3,b3,d4]@2 ~@2 d3@4 [g3,b3,d4]@3 ~, g2@13 ~@3, ~@3 [g3,b3,d4]@3 ~@2", H: "[a2,d3,a3,d4,f#4]@3 ~@13",
  I: "[~@5 d4 [g3,b3,d4]@2 ~@4 [g3,b3,d4]@2 ~@6 [g3,b3,d4]@2 ~@2 d3@4 [g3,b3,d4]@3 ~, g2@9 ~@5 [g3,b3,d4]@6 ~@2 [g3,b3,d4]@6 ~@4, ~@2 [g3,b3] ~ d3@8 ~@4, ~@16 g2@13 ~@3]/2", // G
  J: "e3 f#4@3 ~@12, [a2,d3,a3,d4,a4] ~@3", K: "~@5 d4 c#4 d4", L: "d4@3 ~ d4 ~ d4@2 b3@4 a3@3 ~",
  M: "[[f#3,d4]@2 a3 ~ a3 ~ a3@2 [e3,g3]@4 d3@10 ~@10, ~@2 d4@4 ~@6 f#3@5 ~@15]/2", N: "~@7 a2",
  O: "c3@3 ~ c3 ~ c3@2 a2@6 d2@2", P: "[f#2@2 a2 ~ a2@3 ~ e2@4 d2@11 ~@9]/2",
  Q: "~@2 [g3,b3,d4]!2 ~@2 [g3,b3,d4]!2, g2 d3", // G
  R: "~@2 [d4,f#4] ~ [a3,d4,f#4] ~ [a3,d4,f#4]@2 ~@4 [a3,d4,f#4]@4, d3 a2", // D
  S: "~@2 [a3,d4] ~ [a3,d4,f#4] ~ [a3,d4,f#4]@2 a2@4 [a3,d4,f#4]@3 ~, d3 ~", // D5 D
  T: "~@4 [a3,d4,f#4] ~@7 [a3,d4,f#4]@2 [a3,d4,f#4]@2, d3@3 [a3,d4,f#4]@3 ~@2, ~@8 a2@7 ~", // D
  U: "~@4 [a3,d4,f#4] ~ [a3,d4,f#4]@2 ~@4 [a3,d4,f#4] ~ [a3,d4,f#4] ~, d3@4 a2@3 ~", // D
  V: "a2@4 [a3,c#4]@3 ~@5 [a3,d4,f#4]@2 [a3,d4,f#4]@2, ~@4 e4 ~@3 d3@8", // A D
  W: "~@4 [a3,d4,f#4] ~ [a3,d4,f#4]@2 ~@4 [a3,d4,f#4] ~ [a3,d4,f#4]@2, a2@7 ~ d3@6 ~@2", // D
  X: "[~@4 [a3,d4,f#4] ~@7 [a3,d4,f#4]@2 ~@6 [a3,d4,f#4]@2 [a3,d4,f#4]@2 ~@4 [a3,d4,f#4]@2 [a3,d4,f#4]@2, a2@15 ~ a2@7 ~@9, ~@3 [a3,d4,f#4]@3 ~ [a3,d4,f#4]@3 ~@6, ~@8 d3@7 ~@9 d3@8]/2", // D
  Y: "[[d3,a3,d4,f#4]@25 ~@7]/4", // D
})).s("gm_acoustic_guitar_steel").gain(0.45)

// other · electric guitar clean · "GUITAR E.1"
const electric_guitar_clean = note(`<
  ~@2 A@2 B@2 A@2 B@2 ~@2 C D E ~ C F G H I ~@5 A@2 B@2 ~@2 C D E J K L M@2 N ~@4 O P Q@2 O P Q@2 ~@9 A@2 B@2 ~@4 E ~@4
  H R ~@6 J S@3 T U V@2 W@2 X@2 Y Z AA A@2 B@2 ~@18 B@2 ~ AB AC@2 AD AE@3 ~
>`.pickRestart({
  A: "[d3@3 ~ d3@2 d3 ~ d3@4 d3@2 d3@14 ~@4]/2", B: "[d3@4 d3 ~ d3@4 d3@17 ~@5]/2", C: "d3@4 d3@2 d3 ~ d3@4 d3@2 d3 ~",
  D: "d3@4 d3@2 d3 ~@5 e2@4, ~ b2, ~@5 a2@3", E: "d2@13 ~@3",
  F: "d3@4 d3 ~@5 d3@2 a2@4, ~@6 d3@3 e3@2 ~@5, ~@8 f3@3 ~@5", G: "g2 ~@3", H: "~@5 a2 e2@2", I: "d2@3 ~@13",
  J: "~@7 a4", K: "~@2 a4 ~ [d4,f#4,a4] ~@3 g4@2 f#4@2 ~@4",
  L: "d4@3 ~ [d4,f#4]@2 ~@2 [c4,d4,f#4] ~ [b3,d4,f#4]@2 a3@3 ~", M: "[g3@13 ~ g3@2]/2", N: "c4@3 ~@13",
  O: "~@6 [a2,a3] [b2,b3]", P: "[d3,d4]@3 ~ [d3,d4] ~ [d3,d4]@2 [b2,b3]@4 [a2,a3]@2 [f#2,f#3] ~",
  Q: "[a2@2 a3 ~ [a2,a3]@2 [b2,b3]@2 [e2,e3]@4 [d2,d3]@16 ~@4, a3 ~@7 f3 ~@23]/2", R: "d2 ~@15",
  S: "[~@2 a4 ~ f#4@2 ~@2 e4 ~ d4@2 ~@2 a3@4 c4 ~ a3@3 ~ e3@4 d3@14 ~@6]/3", T: "~@14 d2 ~",
  U: "e2@4 g2 ~@3 a2@4 c3 ~@3", V: "[e3@4 g3 ~@3 a3@4 c4 ~ a4@7 ~ f4@2 e4@2 d4@2 ~@2 g3@2]/2",
  W: "[c4@2 a#3@2 a3 ~ g3@6 d3@2 e3@6 g3 ~@3 a3@4 c4 ~@3]/2",
  X: "[e3@4 g3 ~ d3@6 ~@2 [f4,a4]@7 ~ b4@2 a4@2 f4@2 e4@2 d4@2]/2", Y: "a#3 a3 g3 d3@3 ~ f#4",
  Z: "d5 ~ f#4 ~ b4 ~ f#4 ~ a4 ~ e4@3 ~ d3 ~", AA: "b3@2 a3 ~ e3@4 d3@5 ~@3", AB: "~@8 d3@3 ~ d3@2 d3 ~",
  AC: "[d3@4 d3@2 d3@14 ~@4 d3@4 d3 ~ d3@2]/2", AD: "~ d3@2 ~@5", AE: "[d2,a2,d3,a3]/3",
})).s("gm_electric_guitar_clean").gain(0.73).pan(0.4)

// other · electric guitar clean · "GUITAR E.2"
const electric_guitar_clean_2 = note(`<
  ~@3 A B C ~ A B C ~@17 A B C ~@33 A B C ~@33 A B C ~@18 B C ~@2 D E F ~@4
>`.pickRestart({
  A: "b2 a2 b2 a2 e2@2 d2@2", B: "~@6 b2 a2", C: "b2 a2 e2@2 d2@3 ~", D: "~@4 b2 a2 b2 a2", E: "e2 d2 ~@2",
  F: "~@2 b2 a2 b2 a2 e2@2",
})).s("gm_electric_guitar_clean").gain(0.52).pan(0.6)

// chords · electric guitar jazz · "GUITAR STEEL 1"
const electric_guitar_jazz = note(`<
  ~@6 A@6 B@2 C@2 ~@5 D E@2 F ~ G@5 ~ H I@2 ~@6 D E@2 F ~@3 H I@2 ~ J K L ~@7 A@6 ~@9 D E@2 F ~@17 A@6 ~@5 M N O P ~ Q R
  S@2 T ~@2 U ~@4 V@4 ~
>`.pickRestart({
  A: "[d4@21 ~@3 e4@28 ~@12 a5@20 ~@12, ~@14 d5@7 ~@3]/6", B: "[d4@11 ~ e4@2 d4 a3]/2", C: "[d4@21 ~@11]/2",
  D: "~@3 [e4,g4]", E: "[[g3,b3,d4]@20 ~@4 b3@4 d4@2 c#4 ~]/2", F: "[f#4,a4,d5,f#5,a5] ~@7",
  G: "[d4@21 ~@3 e4@28 ~@12 a5@16, ~@7 d5@3]/5", H: "d4@2 d4@2 [f#4,a4]@2 d4 ~ d4@2 [g4,b4] ~ d4 ~ d4@2",
  I: "[[a4,c5,f#5] d4 [g4,b4,e5] d4 [e4,g4,b4]@2 d4@5 ~@5, ~@3 d5@2 ~@3, ~@3 f#4 ~@4]/2", // F#dim Em
  J: "a4@2 d4 ~ d4 ~ a4@4 g4 ~ d4@3 ~", K: "g4@2 f#4 ~ e4@3 ~ d4@2 c4@2 b3 ~ g3 ~", L: "a3@7 ~", M: "~@3 d4",
  N: "c#4 ~", O: "g4", P: "f#4", Q: "[d4,f#4]@7 ~", R: "[d4,f#4]@3 ~ [d4,f#4]@3 ~",
  S: "[~@4 g4@3 ~, [g3,b3]@7 ~, ~@4 d4@5 ~@7]/2", T: "[d3,d4,f#4,a4]@2 d5 ~@13", U: "~ d5", V: "[~@3 [d4,f#4,d5]@13]/4",
})).s("gm_electric_guitar_jazz").gain(0.71).pan(0.4)

// chords · piano · "PIANO A.1"
const piano = note("<~@68 A B C ~ D E F ~@39 G H ~@11 I@3 ~>".pickRestart({
  A: "d2@2 c#3 d3@2 c#3 d3 ~", B: "f3@2 d3@2 e3@2 d3 ~ e3@2 d3@2 b2@2 a2@2", C: "d3@7 ~@9",
  D: "[g#3,b3] a3@4 ~ [g#3,b3] [a3,c4]@3 b3@2 [a3,c4] ~@3, c4@3 ~@7 g#3 ~@5", // G#m Am
  E: "[g#3,a3,b3,c4] ~ [a3,c4] ~ [a3,c4] ~ [a3,c4]@2 [g3,b3]@2 [f3,a3]@2 [e3,g3]@2 [c3,d3]@2, ~@8 c4 ~@7", // Am G F Em Csus2
  F: "[g3,b3]@3 ~@5", G: "d2@2 d3 d2 c3 d3@2 d2", H: "f3@3 ~ e3@3 ~ d3@3 ~ c3@3 ~", I: "[[d1,d2,d3,f#3,a3]@47 ~]/3",
})).s("gm_piano").gain(0.71)

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

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

// drums · hihat
const hihat = s("hh").struct(`<
  A B A@3 B A@3 B A@10 ~@2 A@2 ~@2 A@3 B A@10 ~@2 A@2 ~@2 A@14 ~@2 A@3 B A@10 ~@2 A@2 ~@2 A@14 ~@2 A@3 B A@13 B A@2 ~@2
  A@3 C A@3 ~@4
>`.pickRestart({
  A: "x!4", B: "x!3 ~", C: "x ~ x!2",
})).gain(0.56)

// drums · low tom
const low_tom = s("lt").struct("<~@115 [~@7 x] ~@7 [~ x ~@2] ~@2 [~@5 x ~@2] ~@4>").gain(0.8)

// drums · mid tom
const mid_tom = s("mt").struct("<~@115 [~@3 x] ~@7 [~ x ~@6] ~@2 [~@2 x!2] ~@4>").gain(0.8)

// drums · open hat
const open_hat = s("oh").struct("<~ A ~@18 B A ~@18 B A ~@18 B A ~@14 B A ~@18 B A ~@20 B A ~@11>".pickRestart({
  A: "~@3 x", B: "x",
})).gain(0.8)

// drums · crash
const crash = s("cr").struct(`<
  ~@2 A ~@3 A ~@15 A ~@3 A ~@15 A ~@3 A ~@15 A ~@15 A ~@19 A ~@15 A ~ A ~@3 A ~@2 B ~@3 A ~@3
>`.pickRestart({
  A: "x", B: "~ x",
})).gain(0.72)

stack(
  bass, violin, acoustic_guitar_steel, electric_guitar_clean, electric_guitar_clean_2, electric_guitar_jazz, piano,
  kick, snare, hihat, low_tom, mid_tom, open_hat, crash
)

More by Alan Jackson