Strudelify
Always on My Mind cover art

1973 · Elvis (Fool)

Always on My Mind

Elvis Presley

KeyD majorTempo70 bpm
0:00/0:00
// Always on My Mind — Elvis Presley
// 70 bpm, 4/4, key D major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 64 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(70/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 · fretless bass · "Bass"
const bass = note(`<
  ~@17 A B C D E B C F G H B I J K L M N O P Q R S T U V B C D E B C F G H B I J K L M B W X Y@3 ~
>`.pickRestart({
  A: "~@7 a2", B: "d2@15 ~", C: "a2@13 ~ a2 a#2", D: "b2@7 ~ a2@7 ~", E: "g2@8 a2@5 ~ a2@2", F: "b2@8 a2@7 ~",
  G: "g#2@6 f#2@2 e2@7 ~", H: "g2@15 ~", I: "g2@8 f#2@7 ~", J: "e2@7 ~ d3@4 b2@4", K: "a2@7 ~ f#2@4 g2@4",
  L: "d2@8 e2@4 f#2@3 ~", M: "g2@8 a2@7 ~", N: "d2@7 ~ g2@4 a2@4", O: "d2@6 d2 ~ c#2@6 c#2@2",
  P: "b1@6 b1@2 a1@5 ~ a1@2", Q: "g1@5 ~ g1@2 f#1@6 f#1@2", R: "e1@7 ~ b1@2 a1@2 b1@3 ~", S: "d2@5 ~ d2@2 c#2@6 c#2@2",
  T: "b1@5 ~ b1@2 a1@5 ~ a1@2, ~@8 b1 ~@7", U: "g1@5 ~ g1 ~ f#1@5 ~ f#1 ~", V: "e1@7 ~ a1@8", W: "a2 f#2 g2 a2",
  X: "d2@2 e2 f#2", Y: "[~ g2@10 a2@10 ~ d2@21 ~@5]/3",
})).s("gm_fretless_bass").gain(0.49)

// chords · piano · "Keyboard"
const piano = note(`<
  A@2 B C D E F G H I J K L M N O P Q B C D E F R S I J K L M T O P Q U V W X Y V W Z B C D E F R S I J K L M N O P AA N
  O AB@4
>`.pickRestart({
  A: "[~@4 b4@2 d5@2 ~@4 a4@2 g5 f#5 ~@4 g4@2 b4 ~@3 b3@2 [a2,c#4,c#5]@4, [g3,b5]@2 f#3@2 e3@2 [a2,d4,d5] ~, ~@2 g4@5 ~ a5@6 d5@4 e4@5 ~ [e4,a4]@8, ~@10 f#4@5 ~ g5@6 ~@10]/2", // A G D5 A5
  B: "[d4,f#4,a4]@3 ~ [d4,f#4,a4]@4 ~@6 d4 ~, [d2,d3]@10 d2@5 ~, ~@4 [f#4,a4]@3 ~, ~@2 d4 d3", // D F#m
  C: "[c#4,e4,a4]@4 [e4,a4]@2 c#4@2 ~@2 a4 ~ [c#4,e4,a4]@2 c#3 ~, c#3@13 ~@3, ~@2 e4 ~", // A A5 A
  D: "[b3,d4,f#4]@2 ~ b2 [a2,d4]@2 ~ a2, b2@6 ~@2 f#4@3 ~ [d4,f#4]@4, ~ [b3,d4,f#4] a3@2", // Bm D5 D Bm
  E: "~@3 d4 e4 c#4 a3 e3, g2 a2, ~ g3@3 ~@4, ~ b3 ~@2",
  F: "[d4,f#4,a4]@4 ~@8 d4@2 f#4 ~, [d2,d3]@8 d2@7 ~, ~ [f#4,a4]@2 ~, ~@2 d4@3 d3@3", // D F#m
  G: "[c#4,e4,a4]@2 ~@2 c#5 [b4,d5] [c#5,e5] [e5,a5], c#3@15 ~, ~@2 [c#4,e4]@5 ~, ~@2 a4@3 ~@3", // A Bm C#m A5 C#m
  H: "[b2,b3,b4]@4 ~@2 [b2,b3] ~ [a2,a3,a4,d5,f#5]@4 [a4,d5,f#5]@4, [d5,f#5]@3 ~ [b4,d5,f#5]@4 ~@8", // B D Bm
  I: "[e4,g#4,b4]@4 ~@8 e4@2 [g#4,b4] ~, [g#2,g#3]@7 ~ g#2@7 ~, ~ [g#4,b4]@2 ~, ~@4 e4@6 g#3@5 ~", // E G#m G# G#m
  J: "[d4,g4,b4]@2 ~@5 g4, [g2,g3]@4 g2@3 ~, ~ [d4,g4,b4]@2 d4, ~@5 g3@2 ~", // G
  K: "~ [d4,f#4,a4] ~ [d4,f#4], [d2,d3] d2, ~@2 [d4,g4,a4] ~, ~@5 d3@3", // D Dsus4
  L: "[d4,g4,b4]@4 d4@2 b4 ~ [d4,f#4,a4]@3 ~ [f#4,a4] ~ g4 f#4, g2 f#2", // G D F#m
  M: "[b3,e4,g4]@3 ~ [b3,e4,g4]@2 e2@2 [d3,b3,d4,g4]@4 [b2,b3,d4,g4]@4, e2 ~@3", // Em G
  N: "[c#4,e4,a4]@3 ~ [c#4,e4,a4]@2 a2 ~ [a2,d4,f#4,a4]@3 ~ [a2,c#4,e4,g4]@4, a2 ~@3", // A D A7
  O: "[a3,d4,f#4]@3 ~ [a3,d4,f#4]@2 [d2,d3] ~ [e2,e3,a3,c#4,e4]@3 ~ [f#2,f#3,a3,d4,f#4]@4, [d2,d3] ~@3", // D A D
  P: "[g2,g3,b3,d4]@2 [g3,b3,d4] g2 [a2,g3,c#4,e4]@2 ~ a2, ~@3 [g3,c#4,e4]", // G A7 C#dim
  Q: "[a3,d4]@4 [d4,f#4]@2 a3 ~ g3@2 [b3,d4]@2 ~@2 [c#4,e4]@2, d2@2 g2 [a2,a3], f#4@3 ~@13", // D5 D Bm C#m A
  R: "[a3,c#4,e4]@3 ~@9 [c#4,e4]@2 c#3@2, c#3@7 ~ c#3@5 ~@3, ~@4 [a3,c#4,e4]@6 a3@5 ~", // A C#m A
  S: "[b3,d4,f#4]@4 [b3,d4,f#4]@3 ~ [a2,a3,d4,f#4]@4 [a3,d4,f#4]@2 a2@2, b2@3 ~@5", // Bm D
  T: "[c#4,e4,a4]@3 ~ [c#4,e4,a4]@2 a2 ~ [f#2,d4,f#4,a4]@3 ~ [g2,c#4,e4,g4]@4, a2 ~@3", // A D C#dim
  U: "[a3,d4,f#4]@3 ~ [a3,d4,f#4]@2 d3@2 [a3,c#4,e4]@3 ~ [a3,c#4,e4]@2 c#3@2, d3 ~ c#3 ~", // D A
  V: "[b3,d4,f#4]@3 ~ [b3,d4,f#4]@2 b2@2 [a3,d4,f#4]@3 ~@3 a2@2, b2 ~ a2 [a3,d4,f#4]", // Bm D
  W: "[g2,b3,d4,g4]@2 ~ g2 [f#2,a3,d4,f#4]@2 [f#2,a3,d4,f#4]@2, ~ [b3,d4,g4] ~@2", // G D G
  X: "[b3,e4,g4]@3 ~ [b3,e4,g4]@2 e2@2 [b3,d4,g4]@3 ~@3 a2@2, e2 ~ a2 [b3,d4,g4]", // Em G
  Y: "[a3,f#4]@3 ~ [a3,d4,f#4]@2 d3@2 [a3,c#4,e4]@3 ~ [a3,c#4,e4]@2 c#3@2, d3 ~ c#3 ~", // D A
  Z: "[b3,e4,g4]@3 ~ [b3,e4,g4]@2 e2@2 [g3,c#4,e4]@3 ~ [g3,c#4,e4]@2 a2@2, e2 ~ a2 ~", // Em C#dim
  AA: "[a3,d4]@4 [d4,f#4]@2 a3 ~ [a3,d4]@4 [d4,f#4]@2 a3 ~, d2!2, f#4@3 ~@5 f#4@3 ~@5", // D5 D D5 D
  AB: "[~ [g2,b3,d4,g4]@10 [c#4,e4,a4]@9 ~@20 a5@10 ~@14, ~@11 a2@11 d2@9 a4@2 d5@2 e5@2 f#5@12 ~@15, ~@23 a2@4 d4@23 ~@14, ~@12 d3@2 e4 f#4@10 ~@7, ~@13 a3@12 ~@7]/4", // G A
})).s("gm_piano").gain(0.35)

// other · electric guitar jazz · "Guitar 1"
const electric_guitar_jazz = note("<~@42 A B@2 C@2 ~@4 D ~@12>".pickRestart({
  A: "~@4 f#4 ~ g4 ~ a4@4 g4@2 f#4 ~", B: "[f#4@5 ~ e4 f#4 e4@11 ~ d4@2 e4 ~ e4@5 d4 c#4 ~]/2",
  C: "[b3@12 a3@11 ~@9]/2", D: "~@2 a5 d5 a5 d5 d5@2",
})).s("gm_electric_guitar_jazz").gain(0.56)

// chords · acoustic guitar nylon · "Guitar 2"
const acoustic_guitar_nylon = note("<~@46 A B C@2 D ~@13>".pickRestart({
  A: "~@4 f#4 ~ a4 b4 a4@4 ~ g4 f#4 g4", B: "f#4@5 g4 f#4 g4 f#4@4 e4@3 ~",
  C: "[~@3 b3 [c#4,d4] ~ e4!2 f#4@3 e4 d4 c#4 ~@3 e4 ~@3 g#4 ~@3 b4 ~@3 e5 [b4,e5]@2, ~@15 b3@3 b3@14, ~@8 g#4@2 b4@2 e5 b4 g#5@2, ~@9 e4@2 e4@5, ~@11 g#4@2 g#4@3]/2", // Dmaj7 E5
  D: "[d5,g5]@3 ~@5", // G5
})).s("gm_acoustic_guitar_nylon").gain(0.45).pan(0.4)

// chords · harmonica
const harmonica = note("<~@45 A B C D ~@8 E F ~@5>".pickRestart({
  A: "~ [g4,b4]@3", B: "[f#4,a4] ~", C: "~ f#4@3", D: "d4@3 ~@5", E: "~@3 [d4,f#4]", F: "[c#4,e4]@9 ~@7",
})).s("gm_harmonica").gain(0.3).pan(0.3)

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

// drums · rim
const rim = s("rim").struct("<~@18 [~@3 x]!16 ~@30>").gain(0.39)

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

// drums · low tom
const low_tom = s("lt").struct("<~@33 A ~@3 B ~@17 C ~@3 C ~@4>".pickRestart({
  A: "~@2 x!2", B: "~@8 x!3 ~@5", C: "~@4 x!4",
})).gain(0.39)

// drums · hihat
const hihat = s("hh").struct("<~@18 A@16 B@4 C D@3 ~@8 E B@7 F B G ~@3>".pickRestart({
  A: "x!4", B: "x!8", C: "x ~ x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2", D: "~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2", E: "x!7 ~",
  F: "x!3 ~@5", G: "~ x ~@14",
})).gain(0.39)

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

// drums · crash
const crash = s("cr").struct("<~@38 A ~@7 A ~ A ~@7 A@4 B ~@3>".pickRestart({
  A: "x", B: "~ x ~@14",
})).gain(0.39)

// drums · ride
const ride = s("rd").struct("<~@17 A ~@24 B@4 C B C B ~@14>".pickRestart({
  A: "~@6 x!2 ~@8", B: "x!8", C: "~ x!7",
})).gain(0.39)

stack(
  bass, piano, electric_guitar_jazz, acoustic_guitar_nylon, harmonica, kick, rim, snare, low_tom, hihat, open_hat,
  crash, ride
)

More by Elvis Presley