Strudelify

Gone Country

Alan Jackson

KeyG majorTempo125 bpm
0:00/0:00
// Gone Country — Alan Jackson
// 125 bpm, 4/4, key G 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 126 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(125/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 · electric bass finger
const bass = note(`<
  ~@4 A B C D E F G D E F G D E F G D E F G D E H I J K B L B L B L M@2 B C D E F G D E F G D E F G D E F G D E H I J K
  B L B L B L M@2 B L B L B L M@2 F G D E F G D E F G D E F G D E H I J K B L B L B L M@2 N O P Q B L B L B L B L B L B
  L B L R@2 ~
>`.pickRestart({
  A: "~@10 c2 ~ c2 ~ c2@2", B: "g1@5 ~ g1 ~ g1@8", C: "d2@2 ~ d2 c2@4", D: "g1@5 ~ g1 ~ g1@7 ~",
  E: "d2@4 ~@2 d2@2 c2@5 ~@3", F: "g1@4 ~@2 g1 ~ g1@8", G: "c2@4 ~@2 c2@2 d2@7 ~", H: "e1@5 ~ e1 ~ e1@4 e2@4",
  I: "d2@4 ~@2 d2 ~ d2@2 a1@2 d2@4", J: "e1@4 ~@2 e1 ~ e1@4 e2@4", K: "d2@4 ~@2 d2 ~ d2@2 e2@2 d2@2 ~@2",
  L: "c2@4 ~@2 c2 ~ d2@4 ~@2 d2 ~", M: "[e1@3 ~]/2", N: "g2", O: "d2 c2", P: "g1@2 g2@5 e2",
  Q: "~ d2 ~ c2 ~ b1 a1 [g1,c2], ~@10 c2 ~ c2 ~@3", R: "e1/2",
})).s("gm_electric_bass_finger").gain(0.48).pan(0.6)

// chords · piano
const piano = note(`<
  ~@5 A B C D E ~@3 E ~@3 E ~@3 E ~@3 F G H I J K J K J K L@2 A B C D E ~@3 E ~@3 E ~@3 E ~@3 F G H I J K J K J K L@2 J
  K J K J K L@2 E ~@3 E ~@3 E ~@3 E ~@3 F G H I J K J K J K L@2 ~@4 J K J K J K J K J K J K J K M@3
>`.pickRestart({
  A: "~@3 g3, [g2,b3], d4@5 [a3,d4]@3, g3@2 g3 ~, ~ d3@3", // G D5
  B: "~@3 f#4 ~ [c4,e4,g4]@2 [e4,g4], d3 c3, ~ a3@3 ~@4, ~ d4 ~@2", C: "~@5 d5@3, g3, ~ b3@7, ~ d4@3, ~@3 g4@5",
  D: "a4 ~@5 f#4@2 ~@4 c4@2 e4 ~, [d3,a3,d5]@8 c3@7 ~, f#4@3 ~@2 g3@2 ~, ~ a4 ~@2", E: "[g2,g4]@7 ~, [b3,d4]@5 ~@3",
  F: "[e3,e4,g4,b4]", G: "~@12 f#5@3 ~, f#4@15 ~, a3@8 d5@7 ~, ~@4 a4@11 ~", H: "~@12 e4@3 ~, ~@4 b4@11 ~, ~@6 g4@9 ~",
  I: "~@10 d4@3 ~@3, ~@2 f#3@4 f#3@7 ~@3, ~@4 d3@9 ~@3, ~@2 a3 ~", J: "~@7 g3, [g2,b3], g3@7 ~, d4@5 [a3,d4]@3, ~ d3",
  K: "~@3 e4 d3@2 [a3,d4] ~, c3 ~, ~@2 g3@6 ~@4 f#3 ~@3, ~ c4 ~@2", L: "[[e2,e4,g4]@23 ~@9, b3@21 ~@11]/2",
  M: "[g4@11 ~@14 g5@15 ~@8, [e2,b3]@2 ~, e4@9 ~@2 g4@28 ~@9, ~@9 d5@11 ~@4]/3", // E5
})).s("gm_piano").gain(0.28).pan(0.8)

// chords · piano · soft notes
const piano_soft = note(`<
  ~@6 A ~@19 B ~ C ~ D ~ D ~ D ~@3 A ~@19 B ~ C ~ D ~ D ~ D ~@3 D ~ D ~ D ~@19 B ~ C ~ D ~ D ~ D ~@7 D ~ D ~ D ~ D ~ D ~
  D ~ D E@3
>`.pickRestart({
  A: "~@7 c4", B: "~@8 a3@7 ~", C: "~@12 a3 ~@3", D: "~@5 f#3 ~@2",
  E: "[~@7 e5@6 ~@3, ~@9 e4@31 ~@8, ~@15 b4@25 ~@8]/3",
})).s("gm_piano").gain(0.16).pan(0.8)

// other · overdriven guitar
const overdriven_guitar = note(`<
  A B@4 C D E F ~@2 G@2 ~@2 G@2 ~@2 G@2 ~@2 G@2 H ~@2 I J K J K J K L@2 C D E F ~@2 G@2 ~@2 G@2 ~@2 G@2 ~@2 G@2 H ~@2 I
  J K J K J K L@2 J K J K J K M@2 ~@2 G@2 ~@2 G@2 ~@2 G@2 ~@2 G@2 H ~@2 I J K J K J K M@2 B@4 N@5 O P Q J K J K J K R@3
>`.pickRestart({
  A: "~@7 g3, ~@3 e3",
  B: "[g2@4 [d4,g4]@6 b2@2 c3@2 ~@8 d4@2 ~@4 g3@3 ~, ~@4 g3@5 ~@5 d3@11 ~@7, ~@18 d4@4 ~@2 c3@7 ~, ~@20 a3@5 ~ d4@5 ~]/2", // G5
  C: "~@5 b3 d4@2, g2@5 ~@3, ~@2 g3@5 ~", D: "d3@2 f#3 a3 c3 c4 d4 e4", E: "g3 b3", F: "d3@2 f#3 a3 c3@2 g3 ~",
  G: "[~@5 b2 c3 d3@5 c3@3 ~]/2", H: "e2@7 ~", I: "~@6 a4@2 f#4@2 d4@2 a3@2 f#4 ~", J: "~ d3@2 g3",
  K: "c3@7 ~ d3@4 ~@4", L: "[e2@11 ~ d4 b4 a4 g4]/2", M: "[e2@11 ~@5]/2",
  N: "[g2@4 g3@3 ~ g3@2 e3@2 d3@2 g3@4 e3@2 d3@2 a3@4 g3@2 e3@2 g3@5 ~ g3@2 ~@4 e3@2 d3@2 e3@4 d3@3 ~ e3@4 d3@2 ~@8 b3@4 d4@6 d4@2, ~@20 g3@2 ~@8 g2@9 ~, ~@8 g3 ~]/5",
  O: "e4@2 d4@2 e4@2 g4@6 g4@3 ~", P: "~@2 a4@3 a4@2 g4", Q: "e4 g4 e4@2 d4@2 e4 ~",
  R: "[~@11 g4@4 a4@24 ~@9, [e3,b3] ~@2]/3", // E5
})).s("gm_overdriven_guitar").gain(0.35)

// other · overdriven guitar · soft notes
const overdriven_guitar_soft = note(`<
  ~@5 A ~@23 B ~ B ~ B ~ C@2 A ~@23 B ~ B ~ B ~ C@2 B ~ B ~ B ~ C@2 ~@20 B ~ B ~ B ~ C@2 ~@12 B ~ B ~ B ~ D ~@2
>`.pickRestart({
  A: "~@7 b3", B: "g2@3 ~", C: "[~@4 e3@15 ~@13, ~@2 b2@19 ~@11]/2", D: "~@6 e4@9 ~",
})).s("gm_overdriven_guitar").gain(0.25)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~@3 A B C D E F G H I J G H I J G H I J G H I J K L M N O P O P O P Q ~ C D E F G H I J G H I J G H I J G H I J K L M
  N O P O P O P Q ~ O P O P O P Q ~ G H I J G H I J G H I J G H I J K L M N O P O P O P Q ~@3 A B O P O P O P O P O P O
  P O P R@2 ~
>`.pickRestart({
  A: "~@10 g3@5 ~, g3@5 ~@3, ~@4 e4@11 ~, ~@8 b3@7 ~", B: "~@6 a3@2 ~@2 c4@2 g3@2 c4 ~, d3@8 c3@7 ~, ~ f#3 ~@2",
  C: "[b3,d4]@2 b3 ~@3 b3@2, g4@5 ~@3, g3!2, ~@2 d4@3 [d4,g4]@3, ~@3 b3@3 ~@2", // Bm G5
  D: "d3 ~ [d4,f#4]@2 ~@3 [c4,e4], ~ a3@3 ~ [c4,e4]@2 ~, ~@3 d3@5 c3@8, ~@3 g3", // D C
  E: "g3@2 g3 [g3,b3,d4]@2 [g3,b3,d4]@2 [g3,b3,d4], [b3,d4]@3 g2@5", // G Bm
  F: "~@2 f#3!2 ~ c4@2 ~, d3@4 c3@3 ~, ~ [a3,d4] ~@2", G: "~@7 b3, g2, ~ d3@3, ~@3 g3@5, ~@5 b3 d4@2",
  H: "~@3 e4 ~@3 a3, c3 d3, ~ c4@3 ~@4, ~ d4 ~ d4", I: "~@2 [b3,d4]@3 [g3,b3,d4]@3, g2",
  J: "~@3 d4 ~ [c4,e4]@2 ~, d3@4 c3@3 ~, ~ f#3@3 ~@4, ~ a3 ~@2", // C
  K: "g3 ~@13 e4@2, b3@5 b3@3, e3@3 e3@5, e4 e4@2 g4, ~ g3@7 g3@8",
  L: "~@2 [f#3,a3,d4] ~@3 [a3,d4]@2, d3!2, ~@3 [a3,d4]@3 ~@2, ~@3 f#3@2 f#3@3", // D D5
  M: "~@3 e4, [e3,g3,b3]@3 [e3,g3,b3]@2 [e3,g3,b3]@3, ~ e4!2 ~", // Em
  N: "d3 ~ [f#3,a3,d4] ~ d3 ~ [a3,d4,f#4] ~, ~ f#3 ~ f#3@4 ~, ~@3 d3@5 ~@2 d3@4 ~@2, ~@3 [a3,d4]@3 ~@2", // D D5
  O: "[g3,b3,d4]@2 [g3,b3,d4] ~@3 [g3,b3,d4]@2, [g2,d3]!2, ~@3 [g3,b3,d4]@3 ~@2", // G G5 G
  P: "c3@2 ~@10 d3@2 [f#3,a3,d4] ~, ~ g3 [g3,c4,e4]@2 ~ [f#3,a3,d4]@2 ~, ~@3 c3@5 ~@8, ~@3 d3@3 ~@2", // D C D
  Q: "[e3,g3,b3,e4]@13 ~@3", R: "[[e3,b3,e4]@5 ~@3, g3@9 ~@7]/2",
})).s("gm_acoustic_guitar_steel").gain(0.24).pan(0.2)

// chords · electric guitar jazz
const electric_guitar_jazz = note(`<
  ~@5 A B A C ~@2 D@2 ~@2 D@2 ~@2 E F ~@2 G H I J K L M N O P@2 Q R@2 A B A C ~@2 D@2 ~@2 D@2 ~@2 E F ~@2 G H I J K L M
  N O P@2 Q R@2 S T U V W X Y Z ~@2 D@2 ~@2 D@2 ~@2 E F ~@2 G H I J K L M N O P@2 Q R@2 AA@2 AB@2 M N O AC M N O AC M N
  O P@2 Q AD@3
>`.pickRestart({
  A: "[c4,a4]@7 ~ [c4,a4]@7 ~", B: "f#4 e4 d4@2 e4@3 ~", C: "f#4@2 e4@2 d4@4 e4@5 ~@3",
  D: "[~@2 [g3,b3]@5 ~@3 d4@3 ~ c4 ~, ~ d4@4 ~@3, ~@16 a3@7 ~@3 g3@4 ~@2]/2", E: "[d5,g5] [g4,b4]",
  F: "~@2 d5@2 c5@2 g4 ~, f#5@9 ~@7", G: "~ d4, g3, d4@3 g4@5, g4 b4 ~@2, ~ a4@3 ~@4",
  H: "~@6 a4@2 [c4,e4,g4]@5 ~@3, d4@9 ~@7, ~@4 f#4@5 ~@7", I: "e4", J: "f#4", K: "~@3 e5, g4, ~ b4",
  L: "~ d5 a4 ~, f#5@9 ~@7", M: "~@3 a4, [b4,d5], ~ g4@3", N: "[c4,e4]@2 ~ a4, ~ [d4,f#4]", O: "~ g5, [g4,b4], ~ d5@3",
  P: "[[c5,e5]@4 d5@5 ~@4 b5 g5 ~, ~@9 g5@5 ~@2, ~@24 a5@5 ~@3]/2", Q: "~@2 e5@2 d5@2 f#5 ~", R: "[d5@11 ~@5]/2",
  S: "[d4,g4,b4]@7 ~ [d4,g4,b4]@6 ~@2", T: "[c4,e4,g4]@3 ~ [g3,c4,e4]@3 ~ [a3,d4,f#4]@5 ~@3",
  U: "~@2 b4 ~ c5@2 b4@2 c5@2 b4@2 g4@2 ~@2, ~@2 g4@7 ~@7", V: "d4@4 c4@3 ~ e4@2 d4@2 f#4@2 a4 ~",
  W: "[g4,b4]@7 ~ [g4,b4]@4 d5@4", X: "c5@2 b4@2 a4@2 g4 ~ d5@4 f#5@2 ~@2",
  Y: "e4 d4 ~ b3 g4 e4 ~ d4 a4 g4 e4 ~ b4 a4 g4 ~", Z: "[a4,d5]@5 ~@3", AA: "[a5@7 ~]/2",
  AB: "[~@8 g6@2 e6@2 d6@7 ~ c6@6 b5@2 a5@2 g5 ~]/2", AC: "[c5,e5] d5", AD: "[~@6 a5@12 e6@17 ~@13, d5@13 ~@11]/3",
})).s("gm_electric_guitar_jazz").gain(0.35).pan(0.6)

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

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

// drums · low tom
const low_tom = s("lt").struct("<~@4 A ~@19 B ~@3 C ~@27 B ~@3 C ~@31 B ~@3 C ~@11 A ~@17>".pickRestart({
  A: "~@7 x", B: "~@3 x", C: "~@12 x ~@2 x",
})).gain(0.51)

// drums · hihat
const hihat = s("hh").struct("<[x!4] [x!8]!122 x ~@2>").gain(0.41)

// drums · mid tom
const mid_tom = s("mt").struct(`<
  ~@4 A ~@3 B ~@15 C ~@3 B ~@5 A ~@5 B ~@15 C ~@3 B ~@5 A ~@5 B ~ A ~@17 C ~@3 B ~@5 A ~@5 A ~@13 A ~@3
>`.pickRestart({
  A: "~@3 x", B: "~@7 x", C: "~@5 x ~@2",
})).gain(0.46)

// drums · open hat
const open_hat = s("oh").struct("<~@123 [~@4 x ~ x!2 ~ x ~ x!3 ~ x] [x ~ x!2 ~ x!2 ~ x!2 ~@2 x ~@2 x] ~>").gain(0.26)

// drums · high tom
const high_tom = s("ht").struct(`<
  ~@4 A ~@3 A ~@15 B ~@9 A ~@5 A ~@15 B ~@9 A ~@5 A ~ A ~@17 B ~@9 A ~@5 A ~@13 A ~@3
>`.pickRestart({
  A: "~@5 x ~@2", B: "~@3 x ~@4",
})).gain(0.46)

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

// drums · ride
const ride = s("rd").struct(`<
  ~@5 A B@3 ~@20 A B@3 A B ~@2 A B@3 ~@20 A B@3 A B ~@2 A B@3 A B ~@22 A B@3 A B ~@6 A B@3 A B@3 A B@3 A B C D ~
>`.pickRestart({
  A: "~ x!3", B: "x!4", C: "~@8 x ~@5 x!2", D: "~@5 x ~@4 x ~@5",
})).gain(0.46)

// drums · ride · soft notes
const ride_soft = s("rd").struct("<~@123 [~@4 x!2 ~ x ~@3 x ~ x ~@2] [~@2 x!3 ~@2 x ~ x ~@3 x ~@2] [~ x ~@14]>")
  .gain(0.2)

// drums · cowbell
const cowbell = s("cb").struct("<~ [~ x ~ x]!4 ~@100 [~ x ~ x]!4 ~@17>").gain(0.46)

stack(
  bass, piano, piano_soft, overdriven_guitar, overdriven_guitar_soft, acoustic_guitar_steel, electric_guitar_jazz, kick,
  snare, low_tom, hihat, mid_tom, open_hat, high_tom, crash, ride, ride_soft, cowbell
)

More by Alan Jackson