Strudelify

On the Road Again

Atkins Chet

KeyE majorTempo114 bpm
0:00/0:00
// On the Road Again — Atkins Chet
// 114 bpm, 4/4, key E 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 67 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(114/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 · "ACOU BASS"
const bass = note(`<
  ~ A@6 B@2 C D E A@2 B@2 C D E F G H I J H K A L M@2 C D E A@2 B@2 C D E A@2 M@2 N D E F G H I J H O A@2 M@2 C D E D P
  Q R@3
>`.pickRestart({
  A: "e2@3 ~ b1@3 ~ e2@3 ~ b1@3 ~",
  B: "[g#2@3 ~ d#2@3 ~ g#2@3 ~ d#2@2 ~@2 g#1 ~@3 d#2@3 ~ g#2@3 ~ d#2@2 ~@2, ~@14 g#2@5 ~@13]/2",
  C: "f#2@3 ~ c#2@3 ~ a1@3 ~ f#1@3 ~", D: "a1@3 ~ a1@3 ~ b1@3 ~ b1@3 ~", E: "e2@3 ~ b1@3 ~ e2@2 b1@2 c#2@2 d#2 ~",
  F: "a2@3 ~ e2@4 a2@4 e2@4", G: "a2@4 e2@3 ~ a2@4 e2@3 ~", H: "e2@4 b1@4 e2@4 b1@3 ~", I: "a2 e2 a2 e2",
  J: "a2@4 e2@4 a2@3 ~ a2@2 g#2 ~", K: "b1@4 f#1@3 ~ b1 ~@7", L: "e2@3 ~ b1@3 ~ e2@3 ~ b1@4",
  M: "[g#2@3 ~ d#2@3 ~ g#2@3 ~ d#2 ~@3 g#1 ~@3 d#2@3 ~ g#2@3 ~ d#2@2 ~@2, ~@14 g#2@5 ~@13]/2",
  N: "f#2@3 ~ c#2@4 a1@3 ~ f#1@3 ~", O: "b1@4 f#1@3 ~ b1@2 ~@6", P: "e2@3 ~ b1@3 ~ e2@2 b1@2 c#2@2 d#2@2",
  Q: "a1@4 e1@2 a1 ~ b1@4 f#1@3 ~", R: "[e2@4 b1@3 ~ e2@31 ~@9]/3",
})).s("gm_acoustic_bass").gain(0.58)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note(`<
  ~@3 A@2 B C D@2 E F G B H I@2 E F G J@2 K L@2 M N B O I@2 E F G B C D@2 E F G B O P@2 E F G J@2 K L@2 M N B Q I@2 E F
  G F G R S@2 ~
>`.pickRestart({
  A: "[[e4,g#4,b4] ~ [e4,g#4,b4] [e4,g#4,b4]@2 ~ [e4,g#4,b4]@2 [e4,g#4,b4]@2 ~@4 [e4,g#4,b4]@2 [e4,g#4,b4]@2 [e4,g#4,b4] [e4,g#4,b4]@2 ~ [e4,g#4,b4] ~@3 [e4,g#4,b4] ~ e3@2 [e4,g#4,b4] ~, e3@5 e3@5 [e4,g#4,b4]@4 ~@9 [e4,g#4,b4]@3 ~ [e4,g#4,b4]@3 ~@2, ~@11 e3@10 e3@3 e3@4 ~@4]/2", // E
  B: "~@2 [e4,g#4,b4]@3 ~ [e4,g#4,b4]@2 [e4,g#4,b4]@2 ~ e3@2 ~ [e4,a4,b4]@2, e3@5 e3@5 g#4@6, ~@10 [e4,b4]@3 e3@3", // E Esus4 E5
  C: "[e4,g#4,b4] ~ [e4,g#4,b4]@2 ~ e3@2 ~ [e4,g#4,b4]@2 ~ e3@2 ~ [e4,g#4,b4] ~, e3@4 [e4,g#4,b4]@3 e3@3 [e4,g#4,b4]@3 e3@2 ~", // E
  D: "[[g#4,c5,d#5]@2 [g#4,c5,d#5]@3 ~ [g#4,c5,d#5]@2 [g#4,c5,d#5]@2 [g#4,c5,d#5] [g#4,c5,d#5]@2 ~ [g#4,c5,d#5]@4 [g#4,c5]@2 ~@2 [g#4,c5,d#5]@2 [g#4,c5,d#5]@2 ~ [g#3,d#4]@2 ~ [g#4,c5,d#5] ~, [g#3,d#4]@5 [g#3,d#4]@8 [g#3,d#4]@7 [g#4,c5]@2 ~@4 [g#4,c5,d#5]@4 ~@2, ~@18 d#5@3 [g#3,d#4]@6 ~@2 [g#3,d#4]@3]/2", // G# G#5 G# G#5 G# G#5
  E: "[f#4,a4,c#5]@2 [f#4,a4,c#5]@3 ~ [f#4,a4,c#5]@2 [f#4,a4,c#5]@2 ~ f#3@2 ~ [a4,c#5]@2, f#3@5 f#3@5 f#4@6, ~@10 [a4,c#5]@3 f#3@3", // F#m A
  F: "~@2 [a4,c#5,e5]@2 ~@2 [a4,c#5,e5]@2 [b3,b4]@2 ~ b3@2 ~ [b4,d#5,f#5]@2, a3@4 [a4,c#5,e5]@2 ~@2 [d#5,f#5] ~ [b4,d#5,f#5]@4 ~@2, ~@5 a3@3 ~@5 b3@3", // A B A D#m B
  G: "[e4,g#4,b4] ~@2 [e3,b3]@2 ~ [e4,g#4,b4]@2 [e4,g#4,b4]@2 ~ [e3,b3]@2 ~ [e4,g#4,b4]@2, [e3,b3]@2 [e4,g#4,b4]@3 [e3,b3]@5 [e4,g#4,b4]@3 [e3,b3]@3", // E E5 E E5 E E5 E E5 …
  H: "[e4,g#4,b4] ~ [e4,g#4,b4]@2 ~ e3@2 ~ [e4,g#4,b4]@2 ~ e3@2 ~ [e4,g#4,b4] ~, e3@4 [e4,g#4,b4]@3 e3@3 [e4,g#4,b4]@3 e3@3", // E
  I: "[[g#4,c5,d#5]@2 [g#4,c5,d#5]@3 ~ [g#4,c5,d#5]@2 [g#4,c5,d#5]@2 [g#4,c5,d#5] [g#4,c5,d#5]@2 ~ [g#4,c5,d#5]@4 [g#4,c5]@2 ~@2 [g#4,c5,d#5]@2 [g#4,c5,d#5]@2 ~ [g#3,d#4]@2 ~ [g#4,c5,d#5]@2, [g#3,d#4]@5 [g#3,d#4]@8 [g#3,d#4]@7 [g#4,c5]@2 ~@4 [g#4,c5,d#5]@4 ~@2, ~@18 d#5@3 [g#3,d#4]@6 ~@2 [g#3,d#4]@3]/2", // G# G#5 G# G#5 G# G#5
  J: "[[a4,c#5,e5]@2 [a4,c#5,e5] [a4,c#5,e5]@2 ~ [a4,c#5,e5] ~@3 [a4,c#5,e5]@2 ~ [a4,c#5,e5]@2 ~ [a4,c#5,e5]@2 [a4,c#5,e5] ~@3 [a4,c#5,e5] ~@5 [a4,c#5,e5]@2 ~ a3, a3@5 a3@2 [a4,c#5,e5]@3 ~@9 [a4,c#5,e5]@3 ~ [a4,c#5,e5]@2 [a4,c#5,e5]@3 ~@2 [a4,c#5,e5]@2, ~@8 a3@4 a3@3 a3@5 a3@4 a3@2 a3@5 ~]/2", // A
  K: "[e4,g#4,b4] ~ [e4,g#4,b4]@3 ~ [e4,g#4,b4] [e4,g#4,b4]@2 b4 [e4,g#4,b4]@2 [e4,g#4,b4]@2 [e4,g#4,b4]@2, ~@5 e3@11", // E
  L: "[[a3,a4,c#5,e5]@2 ~ a3@2 ~ [a4,c#5,e5] [a4,c#5,e5]@2 ~ [a4,c#5,e5]@2 ~@2 [a4,c#5,e5]@2 [a4,c#5,e5]@2 c#5@2 ~@2 [a4,c#5,e5] [a4,c#5,e5]@2 ~ [a4,c#5,e5] ~@3 [a4,c#5,e5]@2, ~@2 [a4,c#5,e5]@3 a3@4 a3@3 [a4,c#5,e5]@2 ~@4 [a4,e5]@3 a3@4 a3@3 a3@4, ~@13 a3@7 c#5@2 ~@5 [a4,c#5,e5]@3 ~@2]/2", // A A5 A
  M: "[e4,g#4,b4] ~ [e4,g#4,b4]@3 ~ [e4,g#4,b4] [e4,g#4,b4]@3 [e4,g#4,b4]@3 [e4,g#4,b4]@3, ~@5 e3@11", // E
  N: "[b3,b4,d#5]@2 ~ b3@2 ~@3 [b4,d#5,f#5] ~@7, f#5 ~ [b4,d#5]@3 b3@2 b3@2 ~@7, ~@3 [b4,d#5] ~@4", // B
  O: "[e4,g#4] ~ [e4,g#4,b4]@2 ~ e3@2 ~ [e4,g#4,b4]@2 ~ e3@2 ~ [e4,g#4,b4] ~, e3@5 ~@2 e3@4 ~@2 e3@2 ~, b4 ~ [e4,g#4,b4]@2 ~ [e4,g#4,b4]@2 ~", // E
  P: "[[g#4,c5,d#5]@2 [g#4,c5,d#5]@3 ~ [g#4,c5,d#5]@2 [g#4,c5,d#5]@2 [g#4,c5,d#5] [g#4,c5,d#5]@2 ~ [g#4,c5,d#5]@4 [g#4,c5]@2 ~@2 [g#4,c5,d#5]@2 [g#4,c5,d#5]@2 ~ [g#3,d#4]@2 ~ [g#4,c5,d#5] ~, [g#3,d#4]@5 [g#3,d#4]@8 [g#3,d#4]@7 [g#4,c5]@2 ~@4 [g#4,c5,d#5]@4 ~@2, ~@18 d#5@3 [g#3,d#4]@6 ~@2 [g#3,d#4]@2 ~]/2", // G# G#5 G# G#5 G# G#5
  Q: "[g#4,b4]@2 [e4,g#4,b4]@2 ~ e3@2 ~ [e4,g#4,b4]@2 ~ e3@2 ~ [e4,g#4,b4] ~, e3@5 ~@2 e3@4 ~@2 e3@2 ~, e4 ~@3 [e4,g#4,b4]@4 ~@2 [e4,g#4,b4]@4 ~@2", // G#m E
  R: "[a4,c#5,e5]@2 [a4,c#5,e5] [a4,c#5,e5]@2 ~@2 a3 [b4,d#5,f#5]@2 ~@5 b3, a3@5 a3@2 ~@3 d#5@2 d#5@2 ~@2, ~@3 [a4,c#5,e5] ~ [b4,f#5]@2 [b4,d#5,f#5], ~@11 b3@2 b3@2 ~", // A B A B5 B
  S: "[[e4,g#4,b4]@2 ~@5 e3 [e3,e4,g#4,b4]@19 ~@5, ~ [e4,g#4,b4]!3 ~@12, ~@3 e3@2 e3@2 ~@25]/2", // E
})).s("gm_acoustic_guitar_steel").gain(0.31).pan(0.2)

// chords · electric guitar jazz · "JAZZ GTR"
const electric_guitar_jazz = note(`<
  ~@3 A B ~@7 C@2 D E F G H I J K L M N O ~@6 P Q R S T U V W X Y Z AA AB AC AD I J K L M N O ~@8 AE AF AG@3
>`.pickRestart({
  A: "a3 b3@7 a3 b3@7", B: "a3 b3@7 a3 b3@6 ~",
  C: "[~@6 g#4@2 e5@10 ~@9 b4@5, g#4@3 ~@9 g#4@4, ~@2 b4@3 b4@3 ~@13 b4@6 ~@5, ~@3 e5@5 ~@10 e5@14]/2",
  D: "[g#4,c5,d#5]@10 [g#4,c5,d#5] ~@2 [g#4,c5,d#5] ~@2", E: "g#4@4 ~ c5 d#5@2, d#5@3 ~, c5@5 ~@3, ~@2 g#4 ~",
  F: "~@2 [f#4,a4,c#5] ~@2 [f#4,a4,c#5] ~@2 [f#4,a4,c#5]@4 e5@4", G: "[a4,c#5] [b4,d#5,f#5]",
  H: "~@2 e4@2 ~@2 b4@2 e5@5 ~@3, ~ g#4 ~@2", I: "[a3,c#4,e4]@6 ~@4 [b4,e5] ~@2 [b4,e5] ~@2",
  J: "[a4,c#5,e5]@10 ~@3 b4 a4 ~, ~@6 e5 ~", K: "~@2 [e4,g#4,b4] ~@2 [f#4,b4] ~@2 f#4 g#4@3 f#4@2 e4 ~, ~@4 b4@3 ~",
  L: "~@2 [a3,c#4,e4]@9 ~ [b3,e4]@3 ~", M: "b3 c#4@7 ~@4 [b4,e5] c#5 ~@2, e4 ~",
  N: "~@4 [e4,g#4,b4]@3 ~ [f#4,b4]@4 g#4 ~@3", O: "~@2 f#5 d#5 b4 d#5 f#5 d#5 f#5 ~@7", P: "~@10 e4 ~ e4 ~ f#4 ~",
  Q: "f#4 g#4@2 ~ g#4@12", R: "~@2 g#4@2 f#4 ~ g#4 ~ a4 g#4 ~ f#4@2 ~ e4 ~", S: "f#4 g#4 ~@2 g#4@12",
  T: "~@2 g#4@2 f#4 ~ g#4 ~ g#4@3 f#4@3 e4 ~", U: "g#4 ~ f#4 ~ f#4@2 e4 f#4@6 e4 g#4 ~",
  V: "a4 ~ a4 ~ a4@2 b4 ~@3 g#4@3 ~ f#4@2", W: "e4@9 b4 e5 ~ e5 ~ [f#5,b5] ~", X: "f#5 g#5@2 ~ [g#5,b5]@12, b5 ~@3",
  Y: "~ [e5,b5] [f#5,b5] ~ [f#5,b5] ~ [g#5,b5] ~ [a5,b5] ~ [g#5,b5] ~ [f#5,b5] [e5,b5]@2 ~", // E5 B5 G#m Asus2 G#m B5 E5
  Z: "[f#5,c6] [g#5,c6] ~@2 [g#5,c6]@12", AA: "~ g#5 f#5 ~ g#5 ~ g#5 ~ a5@2 g#5 ~ f#5 e5@3",
  AB: "g#5 ~ f#5 ~ f#5@2 e5 f#5@6 e5 f#5 ~", AC: "~@2 b4@3 c#5 b4 a4 d#5 f#5 b5 f#5@2 d#5 f#5 ~, ~ e5@3 ~@4",
  AD: "~@2 [e5,f#5,b5] ~@2 [e5,f#5,b5] ~@2 [g#5,b5]@7 ~", AE: "~@10 b3@2 f#4@2 g#4 ~",
  AF: "a4@3 a4!2 ~ g#4@2 f#4@4 e4@2 d#4 ~", AG: "[~@4 f#4 g#4 a4@2 [g#4,b4]@26 ~@14, e4@17 ~@7]/3",
})).s("gm_electric_guitar_jazz").gain(0.58).pan(0.6)

// chords · epiano2 · "E.PIANO 2"
const epiano2 = note(`<
  ~@5 A@2 B@2 C D A@3 B@2 C D A E@2 F E@2 F G A@2 B@2 C D A@3 B@2 C D A@3 B@2 C D A E@2 F E@2 F G A@2 B@2 C D A D A D
  H@3
>`.pickRestart({
  A: "~@2 [e3,g#3,b3] ~@3 [e3,g#3,b3] ~@3 [e3,g#3,b3] ~@3 [e3,g#3,b3] ~", // E
  B: "~@2 [g#3,c4,d#4] ~@3 [g#3,c4,d#4] ~@3 [g#3,c4,d#4] ~@3 [g#3,c4,d#4] ~", // G#
  C: "~@2 [f#3,a3,c#4] ~@3 [f#3,a3,c#4] ~@3 [f#3,a3,c#4] ~@3 [f#3,a3,c#4] ~", // F#m
  D: "~@2 [a3,c#4,e4] ~@3 [a3,c#4,e4] ~@3 [b3,d#4,f#4] ~@3 [b3,d#4,f#4] ~", // A B
  E: "~@2 [a3,c#4,e4] ~@3 [a3,c#4,e4] ~@3 [a3,c#4,e4] ~@3 [a3,c#4,e4] ~", // A
  F: "~@2 [g#3,b3,e4] ~@3 [g#3,b3,e4] ~@3 [g#3,b3,e4] ~@3 [g#3,b3,e4] ~", // E
  G: "~@2 [b3,d#4,f#4] ~@3 [b3,d#4,f#4] ~ [b2,b3,d#4,f#4] ~@7", // B
  H: "[~@2 [g#3,b3,e4] ~@3 [g#3,b3,e4] ~ [e2,g#3,b3,e4]@35 ~@5]/3", // E
})).s("gm_epiano2").gain(0.45).pan(0.9)

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

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

// drums · hihat
const hihat = s("hh").struct(`<
  [~@7 x!9]
  [x!16]!24
  [x!8 ~@2 x ~ x!2 ~@2]
  [x!16]!27
  [x!8 ~@2 x ~ x!2 ~@2]
  [x!16]!10
  [x!8 ~@8]
  ~@2
>`).gain(0.35)

// drums · open hat
const open_hat = s("oh").struct("<~@25 [~@7 x] ~@27 [~@7 x] ~@10 [~ x] ~@2>").gain(0.45)

// drums · ride
const ride = s("rd").struct("<~@19 A@6 B ~@7 A@20 B ~@10 C ~@2>".pickRestart({
  A: "x!4", B: "x!2 ~@2", C: "~ x",
})).gain(0.45)

stack(bass, acoustic_guitar_steel, electric_guitar_jazz, epiano2, kick, snare, hihat, open_hat, ride)

More by Atkins Chet