Strudelify
Suspicious Minds cover art

1969 · Viva Elvis

Suspicious Minds

Elvis Presley

KeyG majorTempo113 bpm
0:00/0:00
// Suspicious Minds — Elvis Presley
// 113 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Tempo changes preserved in elapsed time; displayed bars use the dominant tempo.
// note: metre changes (4/4 at bar 1, 6/8 at bar 52, 4/4 at bar 65) are rendered on a constant 4/4 grid of one bar per cycle
// note: pitch bends are ignored
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 97 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(113/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, A@4 for four bars: edit a riff to change every repeat.

// bass · acoustic bass · "Bass"
const bass = note(`<
  A@3 B C D E F A G A B C D E F H I J K L M N L O P A B C D E F A G A B C D E F H I J K L M N L O L Q@5 R@5 S@4 T U@2
  V@2 W X Y@2 Z@2 AA@2 AB X AC@4 AD@2 AB AE AF@6 AB AG AH@2
>`.pickRestart({
  A: "g1@7 ~", B: "g1@3 ~", C: "c1@7 ~", D: "c1@23 ~", E: "d1@11 ~", F: "c1@2 ~", G: "g1@11 ~", H: "d1 c1", I: "b0 d1",
  J: "c2@6 ~@3 c2 ~@2 c2@11 ~", K: "g1@6 ~@3 g1 ~@2 g1@11 ~", L: "b1@6 ~@3 b1 ~@2 b1@10 ~@2",
  M: "c2@6 ~@3 c2@2 ~ d2@7 ~@2 d2 ~@2", N: "e2@6 ~@3 e2 ~@2 e2@9 ~@3", O: "c2@6 ~@3 c2 ~@2 c2@9 ~@3",
  P: "d2@6 ~@3 d2 ~@2 d2@9 ~@3", Q: "[~ e2@25 ~@4 b1@29 ~ c2@29 ~ d2@29 ~]/5",
  R: "[e2@29 ~ b1@29 ~ c2@29 ~ d2@27 ~@3]/5", S: "[g1@28 ~ c2@27 ~@3 g1@27 ~@3 d1@4 ~@3]/4",
  T: "d2@5 ~@2 d1@3 d2@2 d1 d2 ~ d1 d2@2 ~ g1@5",
  U: "[~@4 g1 ~@2 g1@6 ~@3 g1 ~@2 g1@7 ~@2 g1 ~@2 g1@5 ~ d2@2 ~ g2@2 ~ c2@5]/2",
  V: "[~@4 c2 ~@2 c2@6 ~@3 c2 ~@2 c2@7 ~@2 c2 ~@2 c2@5 ~ g2@3 c2@2 ~ d2@5]/2", W: "~@4 d2@2 ~ a2@6 d2@6 c2@5",
  X: "~@4 c2 ~@2 c2@4 ~@2 c2@5 ~ g1@5", Y: "[~@4 g1 ~@2 g1@6 ~@3 g1 ~@2 g1@7 ~@2 g1 ~@2 a2@3 g2@3 e2@2 ~ d2@3 g1@5]/2",
  Z: "[~@4 g1 ~@2 g1@6 ~@3 g1 ~@2 g1@7 ~@2 g1 ~@2 g1@5 ~ d2@3 g1@2 ~ c2@5]/2",
  AA: "[~@4 c2 ~@2 c2@6 ~@3 c2 ~@2 c2@7 ~@2 c2@2 ~ g2@2 ~ c2@2 ~ g2@3 c2@2 ~ d2@5]/2",
  AB: "~@4 d2 ~@2 d2@6 ~@3 d2 ~@2 c2@5",
  AC: "[~@4 g1 ~@2 g1@6 ~@3 g1 ~@2 g1@7 ~@2 g1@2 ~ g1@2 ~ g1@2 ~ g1@2 ~ g1 ~@2 g1@7 ~@2 g1 ~@2 g1@6 ~@3 g1 ~@2 g1@7 ~@2 g1 ~@2 g1@3 d2@2 ~ g2@3 g1@2 ~ c2@5]/4",
  AD: "[~@4 c2 ~@2 c2@6 ~@3 c2 ~@2 c2@7 ~@2 c2 ~@2 c2@3 ~@3 c2@4 ~@2 d2@5]/2", AE: "~@4 c2 ~@2 c2@5 ~ g2@3 c2@3 g1@5",
  AF: "[~@4 g1 ~@2 g1@6 ~@3 g1 ~@2 g1@7 ~@2 g1 ~@2 g1@5 ~ d2@3 g2@2 ~ g1@7 ~@2 g1 ~@2 g1@6 ~@3 g1 ~@2 g1@7 ~@2 g1 ~@2 g1@6 ~@3 g1@2 ~ c2@7 ~@2 c2 ~@2 c2@6 ~@3 c2 ~@2 c2@7 ~@2 c2 ~@2 c2@3 ~@3 c2@4 ~@2 d2@5]/6",
  AG: "~@4 c2 ~@2 c2@10 ~@2 g1@5", AH: "[~@4 g1 ~@2 g1@6 ~@3 g1 ~@2 g1@7 ~@2 g1 ~@2 g1@11 ~@6]/2",
})).s("gm_acoustic_bass").gain(0.48)

// chords · drawbar organ · "Keyboard"
const drawbar_organ = note(`<
  A@3 B C D E F A B G B C D E H I J K L@2 M N O P Q G B C D E F A B G B C D E H I J K L@2 M N O P R@2 ~@14 S@24 T@7 ~
>`.pickRestart({
  A: "[d4,g4,b4]@11 ~ [e4,g4,c5]@11 ~", B: "[d4,g4,b4]@11 ~ [e4,g4,c5]@9 ~@3", C: "[e4,g4,c5]@10 ~@2 [f4,a4,c5]@11 ~",
  D: "[e4,g4,c5]@5 ~ [f4,a4,c5]@5 ~", E: "[f#4,a4]@9 ~@3 [g4,b4]@10 ~@2, d5@7 ~",
  F: "[e4,g4,c5]@11 ~ [f4,a4]@8 ~@4, ~@12 c5@11 ~", G: "~@12 [e4,g4,c5]@11 ~", H: "[e4,g4,c5]@11 ~ c5@11 ~",
  I: "[a4,d5]@11 ~ [g4,c5]@11 ~", J: "b4@3 c5@3 ~@6 a4@11 ~, ~@6 d5@17 ~", K: "[c4,e4,g4]",
  L: "[[g3,d4]@23 ~ [d4,f#4]@22 ~@2, b3@47 ~]/2", M: "[e4,g4]@10 ~@2 [d4,f#4,a4]@11 ~, c4 ~", N: "[e4,g4,b4]",
  O: "[b3,d4]", P: "[c4,e4,g4]@11 ~", Q: "~@12 c5@11 ~, [d4,f#4,a4]@23 ~", R: "[a4@6 a4@7 ~@11, [d4,f#4]@13 ~@11]/2",
  S: "[~@7 [e4,g4,c5]@11 ~ [d4,g4,b4]@11 ~ [e4,g4,c5]@9 ~@3 [e4,g4,c5]@10 ~@2 [f4,a4,c5]@11 ~ [e4,g4,c5]@10 ~@2 [f4,a4,c5]@10 ~@2 [f#4,a4]@9 ~@3 [g4,b4]@10 ~@2 [e4,g4,c5]@11 ~ [f4,a4]@8 ~@4 [d4,g4,b4]@11 ~ [e4,g4,c5]@11 ~ [d4,g4,b4]@11 ~ [e4,g4,c5]@10 ~@7, ~@91 d5@21 ~@15 c5@11 ~@54]/8", // C G C F C F F#m G …
  T: "[~@7 [e4,g4,c5]@11 ~ [d4,g4,b4]@11 ~ [e4,g4,c5]@9 ~@3 [e4,g4,c5]@10 ~@2 [f4,a4,c5]@11 ~ [e4,g4,c5]@10 ~@2 [f4,a4,c5]@10 ~@2 [f#4,a4]@9 ~@3 [g4,b4]@10 ~@2 [e4,g4,c5]@11 ~ [f4,a4]@8 ~@4 [d4,g4,b4]@11 ~ [e4,g4,c5]@11 ~@6, ~@91 d5@21 ~@15 c5@11 ~@30]/7", // C G C F C F F#m G …
})).s("gm_drawbar_organ").gain(0.3)

// chords · acoustic guitar steel · "Guitar 1"
const acoustic_guitar_steel = note(`<
  A B@3 C@2 D C B@3 E C@2 D F G H I J K L M K N O B@2 C@2 D C B@3 E C@2 D F G H I J K L M K N P ~@14 Q@7 R@24 S ~
>`.pickRestart({
  A: "~@3 b2@3 ~@3 b2@3 ~@3 d3 ~@5 c3@3, g2@11 ~ g2@11 ~, ~@6 g3@6 ~@2 c3@2 ~ e3@7, ~@3 d3",
  B: "~@3 b2@2 ~@4 b2@3 ~@3 d3 ~@2 d3@3 c3@3, g2@5 ~ g2@5 ~, ~@6 [d3,g3]@6 ~@2 c3@2 ~ e3@2 ~@5", // G5
  C: "~@3 c3 ~@5 c3@2 ~@4 f3 ~@5 c3@3, c2@10 ~@2 c2@11 ~, ~@6 [e3,g3]@6 ~@2 c3@7 ~@3, ~@17 a3@4 ~@3, ~@3 g3", // Em
  D: "~@3 d3 ~@5 d3@3 ~@2 d3 ~@6 d3@3, d2@10 ~@2 d2@11 ~, ~@6 [f#3,a3]@6 ~@5 d3@3 ~@4, ~@3 a3", // F#m
  E: "~@3 b2@2 ~@4 b2@3 ~@3 d3 ~@2 d3@3 c3@3, g2@11 ~ g2@11 ~, ~@6 [d3,g3]@6 ~@2 c3@2 ~ e3@2 ~@5", // G5
  F: "~@3 c3@2 ~@4 c3@3 ~@3 f3 ~@5 c3@3, c2@5 ~ c2@3 g3@3, ~@6 [e3,g3]@6 ~@2 c3@7 ~@3, ~@17 a3@4 ~@3", // Em
  G: "~ d3 ~ d3 ~ c3 ~ c3, d2@11 ~ c2@11 ~, ~ a3 ~ g3",
  H: "~@9 b2@2 ~@4 d3@3 ~@3 d3@3, b1 d2, ~@3 b2@5 ~@16, ~@6 f#3@5 ~@7 a3@6", I: "[c3,g3]@6 ~@3 [c3,g3]@13 ~@2",
  J: "[g2,d3]@7 ~@2 [g2,d3]@14 ~", K: "[b2,f#3]@2 ~ [b2,f#3]@3 ~@2", L: "[c3,g3]@10 ~@2 [d3,a3]@9 ~@3",
  M: "[e3,b3]@6 ~@3 [e3,b3]@10 ~@5", N: "[c3,g3]@6 ~@3 [c3,g3]@10 ~@5", O: "[d3,a3]@6 ~@3 [d3,a3]@10 ~@5",
  P: "[b2,f#3]@2 ~ [b2,f#3]@4 ~", // B5
  Q: "[~@22 b2@2 ~@4 b2@3 ~ c3@2 d3 e3@2 d3@3 c3@3 ~@3 b2@2 ~@4 b2@3 ~ c3@2 d3 e3@2 d3@3 c3@2 ~@4 c3 ~@5 c3@2 ~@4 f3 ~@5 c3@3 ~@3 c3@2 ~@4 c3@3 ~@3 f3 ~@5 c3@3 ~@3 d3 ~@5 d3@3 ~ d3 ~@2 d3@2 ~@3 d3@3 ~@3 c3@2 ~@4 c3@2 ~@4 f3 ~@5 c3@3 ~@3 b2@2, ~@19 g2@11 ~ g2@11 ~ g2@11 ~ g2@11 ~ c2@10 ~@2 c2@11 ~ c2@10 ~@2 c2@11 ~ d2@10 ~@2 d2@11 ~ c2@11 ~ c2@12 ~@5, ~@25 [d3,g3]@6 ~@18 [d3,g3]@6 ~@18 [e3,g3]@6 ~ c3@7 ~@17 c3@6 ~@42 c3@7 ~@4 g2@5, ~@83 a3@4 ~@20 a3@4 ~@22 a3@6 ~@16 a3@4 ~@9, ~@85 g3@6 ~@6 [e3,g3]@6 ~@6 g3@7 ~@5 [f#3,a3]@6 ~@18 [e3,g3]@6 ~@6 g3@5 ~@6]/7", // G5 Em F#m Em
  R: "[~@4 b2@3 ~ c3@2 d3 e3@2 d3@3 c3@3 ~@3 b2@2 ~@4 b2@3 ~ c3@2 d3 e3@2 d3@3 c3@3 ~@3 b2@2 ~@4 b2@3 ~ c3@2 d3 e3@2 d3@3 c3@3 ~@3 b2@2 ~@4 b2@3 ~ c3@2 d3 e3@2 d3@3 c3@2 ~@4 c3 ~@5 c3@2 ~@4 f3 ~@5 c3@3 ~@3 c3@2 ~@4 c3@3 ~@3 f3 ~@5 c3@3 ~@3 d3 ~@5 d3@3 ~ d3 ~@2 d3@2 ~@3 d3@3 ~@3 c3@2 ~@4 c3@2 ~@4 f3 ~@5 c3@3 ~@3 b2@2, ~ [d3,g3]@6 g2@11 ~ g2@11 ~ g2@11 ~ g2@11 ~ g2@11 ~ g2@11 ~ g2@11 ~ c2@10 ~@2 c2@11 ~ c2@10 ~@2 c2@11 ~ d2@10 ~@2 d2@11 ~ c2@11 ~ c2@12 ~@5, ~@25 [d3,g3]@6 ~@18 [d3,g3]@6 ~@18 [d3,g3]@6 ~@18 [e3,g3]@6 ~ c3@7 ~@17 c3@6 ~@42 c3@7 ~@4 g2@5, ~@107 a3@4 ~@20 a3@4 ~@22 a3@6 ~@16 a3@4 ~@9, ~@109 g3@6 ~@6 [e3,g3]@6 ~@6 g3@7 ~@5 [f#3,a3]@6 ~@18 [e3,g3]@6 ~@6 g3@5 ~@6]/8", // G5 Em F#m Em
  S: "~@4 b2@3 g2@10 ~@7, ~ [d3,g3]@6 ~@17", // G5
})).s("gm_acoustic_guitar_steel").gain(0.47).pan(0.6)

// chords · acoustic guitar steel · "Guitar 2"
const acoustic_guitar_steel_2 = note(`<
  A B C D E F G H ~@4 E F G H ~@10 C D E F G H ~@4 E F G H ~@10 I J@5 K L@7 M@7 ~ M@7 ~ M@7 ~ M@7 ~@2
>`.pickRestart({
  A: "~@6 g3@3 g2 ~ g2!3 c3 ~ g2 ~ c3@3 b2@3, g2@3 ~@5, ~ d3@3 ~@4",
  B: "~@6 g3@3 g2 ~ g2!2 ~ c3 ~@2 g2 c3@3 b2@2 ~, g2@3 ~@5, ~@3 d3@8 ~@13",
  C: "~@6 g3@3 g2 ~ g2!2 ~ c3 ~ g2 ~ c3@3 b2@3, g2@3 ~@5, ~@3 d3@8 ~@13",
  D: "~@6 g3@3 g2 ~ g2!3 c3 ~ g2 ~ c3@3 b2 ~@2, g2@3 ~@5, ~@3 d3@7 ~@14",
  E: "~@6 c4@3 c3 ~ c3!3 f3 ~ c3 ~ f3@3 e3@3, c3@3 ~@5, ~ g3@3 ~@4",
  F: "~@6 c4@3 c3 ~ c3!2 ~ f3 ~@2 c3 f3@3 e3@2 ~, c3@3 ~@5, ~@3 g3@8 ~@13",
  G: "~@6 d4@3 d3 ~ d3!2 ~ g3 ~ d3 ~ g3@3 f#3@3, d3@3 ~@5, ~@3 a3@8 ~@13",
  H: "~@6 c4@3 c3 ~ c3!3 f3 ~ c3 ~ f3@3 e3 ~@2, c3@3 ~@5, ~@3 g3@7 ~@14", I: "~@2 g4@13 e3 ~@8, ~ [e3,g3,b3,e4]@14 ~@9",
  J: "[~@6 [d3,f#3]@15 b2 ~@14 [e3,g3]@15 c3 ~@14 [f#3,a3]@15 d3 ~@14 [g3,b3,b4]@15 e3 ~@8, ~@5 b3@23 ~@6 c4@23 ~@7 d4@21 ~@10 [e4,g4]@16 ~@9, ~@6 [d4,f#4]@23 ~@6 e4@22 ~@9 a4@19 ~@35, ~@6 b2@12 ~@18 g4@21 ~@8 f#4@20 ~@35, ~@36 c3@12 ~@18 d3@13 ~@17 e3@13 ~@11]/5", // D Em F#m G Em D
  K: "~@6 [d3,f#3,f#4]@15 b2 ~@2, ~ b3@4 ~, ~@5 d4@15 ~@4, ~@6 b2@13 ~@5", // D
  L: "[~@12 [e3,g3,g4]@15 c3 ~@14 [f#3,a3,a4]@15 d3 ~@13 d4@3 ~@7 a4@5 g3 ~@9 g4@5 ~@10 c5@5 d5@4 ~@6 g4@5 d4@4 ~@6 a4@5 ~@10 g4@3 ~@9, ~@10 c4@17 ~@13 d4@17 ~@17 d4@27 [e3,g3]@16 ~@4 c5@9 ~@16 b4@13 ~@9, ~@11 e4@16 ~@14 f#4@16 ~@19 g4@13 ~@3 a4@9 c3@13 ~@17 [g3,b3]@16 ~@4 a4@8 ~@9, ~@12 c3@12 ~@18 d3@13 ~@16 [g3,b3]@15 ~ b4@15 ~@3 e4@27 ~@3 d4@24 ~@9, ~@53 g4@8 ~@7 g4@9 ~@7]/7", // Em F#m Em G
  M: "[~@25 g3@3 g2 ~ g2!2 ~ c3 ~ g2 ~ c3@3 b2@3 ~@6 g3@3 g2 ~ g2!3 c3 ~ g2 ~ c3@3 b2 ~@8 c4@3 c3!2 ~ c3!2 f3 ~ c3 ~ f3@3 e3@3 ~@6 c4@3 c3 ~ c3!2 ~ f3 ~ c3 ~ f3@3 e3@2 ~@7 d4@3 d3 ~ d3!2 ~ g3 ~ d3 ~ g3@3 f#3@3 ~@6 c4@3 c3 ~ c3!3 f3 ~ c3 ~ f3@3 e3 ~@7, ~@19 g2@9 ~@15 g2@9 ~@18 g3@9 ~@15 g3@8 ~@16 a3@8 ~@16 g3@7 ~@19, ~@22 d3@8 ~@16 d3@7 ~@14 c3@9 ~@15 c3@9 ~@15 d3@9 ~@15 c3@9 ~@20]/7",
})).s("gm_acoustic_guitar_steel").gain(0.46).pan(0.4)

// other · string ensemble 2 · "Strings 1"
const string_ensemble_2 = note(`<
  ~@8 A B C ~@7 D@2 E@3 ~@3 F@2 G@2 H I ~@6 J K L M D@2 N@3 O P Q R@5 S@6 T@3 U@7 ~ V@7 ~ W@6 X@8 ~@3
>`.pickRestart({
  A: "~ d4 g4 b4", B: "c5@6 b4@6 a4@4 g4@5 a4@3", C: "b4@5 ~",
  D: "[[c5,c6]@23 [b4,b5]@16 [a4,a5]@3 [b4,b5]@3 [c5,c6]@3]/2", // C B A B C
  E: "[[d5,d6]@23 ~ e5@11 ~ f#6@11 [g5,g6]@24 ~, ~@23 e6@12 f#5@12 ~@25]/3", F: "[[d5,g5]@47 ~]/2",
  G: "[[e5,g5]@23 ~]/2", H: "[f#5,a5]@23 ~", I: "[e5,g5]@2 ~", J: "[d4,d5]", K: "[c4,c5]", L: "[d4,d5] [c4,c5]",
  M: "[b3,b4]@12 [d4,d5]@11 ~", N: "[[d5,d6]@23 ~ e5@11 ~ f#6@11 ~ g6@24, ~@23 e6@12 f#5@12 [g5,g6]@24 ~]/3",
  O: "f#6@3 e6@3 f#6@17 ~", P: "e6 d6 e6@6", Q: "f#6@11 ~ d#4@10 ~@2, [b3,f#4]@11 ~, e4@10 ~ g6@12 ~",
  R: "[~ [e5,e6]@29 [d5,d6]@30 [c5,c6]@29 ~ d5@30, ~ g6 ~@87 d6@30 ~]/5", // E D C
  S: "[[e5,e6]@30 [d5,d6]@29 [c5,c6]@30 ~ d5@29 [g4,g5]@25, ~@89 d6@30 ~@25]/6", // E D C G
  T: "[~@5 [c5,c6]@30 [g4,g5]@27 ~@10]/3", U: "[~@19 [d5,g5]@45 ~@3 [e5,g5]@46 ~@2 [f#5,a5]@23 ~ [e5,g5]@16 ~@13]/7",
  V: "[~@19 [d5,g5]@47 ~ [e5,g5]@46 ~@2 [f#5,a5]@23 ~ [e5,g5]@16 ~@13]/7", // G5 Em F#m Em
  W: "[~@19 [d5,g5]@45 ~@3 [e5,g5]@46 ~@2 [f#5,a5]@23 ~ [e5,g5]@5]/6", // G5 Em F#m Em
  X: "[~@19 [d5,g5]@94 ~@2 [e5,g5]@46 ~@2 [f#5,a5]@23 ~ [e5,g5]@5]/8", // G5 Em F#m Em
})).s("gm_string_ensemble_2").gain(0.28).pan(0.7)

// other · string ensemble 1 · "Strings 2"
const string_ensemble_1 = note("<~@8 A B C ~@7 D E F G H I D J ~@16 D E F G H I D K ~@13 L M ~@32>".pickRestart({
  A: "~ d4 g4 b4", B: "c5@6 b4@6 a4@4 g4@5 a4@3", C: "b4@5 ~", D: "c2", E: "g1@23 ~", F: "b1@23 ~", G: "c2 d2",
  H: "e2@23 ~", I: "b1", J: "d2@19 ~@5", K: "b1@7 ~", L: "~@16 [d2,d3,f#3,a3,d4]@5 ~@3",
  M: "[d2,d3,f#3,a3,d4]@4 ~@3 [d2,d3,f#3,a3,d4]@4 d2@2 [d3,d4] d2@2 [d3,f#3,a3,d4]@3 ~@5, ~@13 [f#3,a3]@2 ~@9", // D F#m
})).s("gm_string_ensemble_1").gain(0.28).pan(0.3)

// drums · kick
const kick = s("bd").struct(`<
  ~@10 A B ~ A B@2 C ~ D E@2 D E@4 ~@8 A B ~ A B@2 C ~ D E@2 D E@4 F G H I ~ J G H I K ~ L M ~ N O@2 N O@3 P N O@2 N O@3
  P N O@2 N O@3 P N O@2 N O@3 P ~
>`.pickRestart({
  A: "x ~@6 x", B: "~@7 x", C: "~@3 x ~@3 x", D: "x!2", E: "x ~@4 x ~@2", F: "~ x ~@22", G: "~ x ~@4 x ~@17", H: "~ x",
  I: "~@13 x ~@4 x ~@5", J: "x", K: "~@23 x", L: "x ~@4 x ~@18", M: "~@11 x ~@12", N: "~@19 x ~@4", O: "~@2 x",
  P: "~ x ~@2 x ~",
})).gain(0.4)

// drums · snare
const snare = s("sd").struct(`<
  ~@10 A B C A B@3 D E@3 F E@4 ~@8 A B C A B@3 D E@3 F E@3 G H I ~ J K H I ~ J K H L ~ M N O@2 P O@4 Q O@2 P O@4 Q O@2 P
  O@4 Q O@2 P O@4 ~
>`.pickRestart({
  A: "~ x!3", B: "x!4", C: "x ~@5 x ~@5 x ~@5 x ~@2 x ~ x", D: "x ~@5 x ~@11 x!2 ~ x!2 ~", E: "~ x ~ x",
  F: "~@2 x ~@2 x!2 ~", G: "~@6 x ~@12 x ~@4", H: "~@5 x ~@2", I: "~@7 x", J: "~ x ~@6", K: "~@3 x ~@4", L: "~@5 x",
  M: "~ x ~@6 x ~@3", N: "x ~@6 x ~@2 x!2 ~ x!2 ~ x ~@7", O: "~ x ~@5 x ~@5 x ~@5 x ~@4",
  P: "~ x ~@5 x ~@5 x ~@2 x!2 ~@6", Q: "~ x ~@11 x!2 ~ x!2 ~@6",
})).gain(0.4)

// drums · low tom
const low_tom = s("lt").struct("<~@17 A ~@23 A ~@30 B ~@7 B ~@7 B ~@8>".pickRestart({
  A: "~ x", B: "~@7 x ~@16",
})).gain(0.5)

// drums · hihat
const hihat = s("hh").struct(`<
  A B A C B A@2 B D B E@16 A C B A@2 B D B E@15 F G H I J K L M N O P Q R S T U V@31 ~
>`.pickRestart({
  A: "x ~@2 x ~@2 x ~@2 x ~ x!2 ~ x ~@2 x!2 ~@2 x ~@2", B: "x ~@2 x ~@2 x ~@2 x ~@2 x ~ x ~@2 x!2 ~@2 x ~@2",
  C: "x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~ x!2 ~@2 x ~@2", D: "x ~@2 x ~@2 x ~@2 x ~@2 x ~ x!2 ~ x!2 ~@2 x ~@2", E: "x!4",
  F: "x ~@5 x ~@5 x ~@6 x ~@4", G: "~ x ~@9 x ~@3 x ~@4 x ~@3", H: "~ x ~@4 x ~@9 x ~@4 x ~@2",
  I: "~@2 x ~@4 x ~@4 x ~@11", J: "~ x ~@4 x ~", K: "~@3 x ~@4", L: "x ~@4 x ~@2", M: "~ x ~@4 x ~@14 x ~@2", N: "~ x",
  O: "~@3 x ~@9 x ~@4 x ~@5", P: "~@9 x ~@8 x ~@4 x", Q: "~@7 x ~@4", R: "~@5 x ~@14 x ~@3", S: "~@11 x ~@12",
  T: "~@2 x ~@4 x ~@4 x ~@3 x ~@7", U: "x ~@6 x ~@2 x ~@8 x ~@4", V: "~ x ~@5 x ~@5 x ~@5 x ~@4",
})).gain(0.4)

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  A B C D E ~ F G@2 H ~@16 C D E ~ F G@2 H ~@16 I G J K L M N O P Q M R S T U ~@32
>`.pickRestart({
  A: "~@2 x ~@2 x", B: "~@2 x ~@2 x ~@2 x ~@2 x ~@11 x", C: "~@2 x ~@2 x ~@9 x ~@8", D: "~@5 x ~@2 x ~@2 x ~@2 x ~@9",
  E: "~@11 x ~@3 x ~@8", F: "~ x ~", G: "~@11 x ~@12", H: "~@5 x ~@5 x ~@3 x ~@8", I: "~ x ~@2", J: "~@17 x ~@4 x ~",
  K: "~@8 x ~@4 x ~@9 x", L: "~@4 x ~@9 x ~@4 x ~@4", M: "~@5 x ~@4 x ~@9 x ~@3", N: "~@11 x ~@4 x ~@7",
  O: "~@2 x ~@4 x ~@9 x ~@4 x ~", P: "~@8 x ~@14 x", Q: "~@4 x ~@8 x ~@10", R: "x ~@9 x ~@4 x ~@8",
  S: "~ x ~@4 x ~@9 x ~@4 x ~@2", T: "~@7 x", U: "~ x ~@4",
})).gain(0.2)

// drums · mid tom
const mid_tom = s("mt").struct("<~@17 A ~@23 A ~@30 B ~@7 B ~@7 B ~@8>".pickRestart({
  A: "~ x", B: "~@7 x ~@16",
})).gain(0.5)

// drums · open hat
const open_hat = s("oh").struct("<~@64 [~@13 x ~@10] ~@32>").gain(0.3)

// drums · crash
const crash = s("cr").struct("<~@18 A ~@6 B ~@16 A ~@6 C ~@14 C ~@7 C ~@7 C ~@7 C ~@5 C@2 ~>".pickRestart({
  A: "x", B: "~@3 x", C: "~@19 x ~@4",
})).gain(0.4)

// drums · ride bell
const ride_bell = s("rd").struct(`<
  ~@18 A@7 B ~@16 C A@5 D E ~@15 F G H I J I F@2 K L M@2 N O G O@6 M G L M O@3 N L@2 ~
>`.pickRestart({
  A: "x!8", B: "x!6 ~@2", C: "x ~ x!6", D: "x ~ x!5 ~", E: "x ~@2 x ~@2 x ~@2 x ~@2 x ~@3 x ~@7",
  F: "~ x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@4", G: "~ x ~@5 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~",
  H: "~ x ~@2 x ~@2 x ~ x!2 ~ x ~ x ~ x ~@2 x ~@2 x ~", I: "~ x ~@2 x ~@2 x ~ x ~ x ~ x ~@2 x ~@2 x ~@2 x ~",
  J: "~ x ~@2 x ~@2 x ~ x ~@2 x ~@3 x ~@2 x ~@2 x ~", K: "~ x ~@2 x ~@2 x ~@5 x ~@5 x ~@2 x ~",
  L: "~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@4", M: "~ x ~@2 x ~@2 x ~@5 x ~@2 x ~@2 x ~@2 x ~",
  N: "~ x ~@5 x ~@2 x ~@2 x ~@2 x ~@2 x ~@4", O: "~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~",
})).gain(0.3)

// drums · ride bell · soft notes
const ride_bell_soft = s("rd").struct(`<
  ~@42 A ~@5 B ~@16 C D ~@4 E F G F C@2 H ~ D ~@6 C D F C ~@3 H F ~@2
>`.pickRestart({
  A: "~ x ~@6", B: "~ x ~@5 x", C: "~@5 x ~@6", D: "~ x ~@4", E: "~@5 x ~@5 x", F: "~@11 x", G: "~@2 x",
  H: "~@2 x ~@8 x",
})).gain(0.2)

stack(
  bass, drawbar_organ, acoustic_guitar_steel, acoustic_guitar_steel_2, string_ensemble_2, string_ensemble_1, kick,
  snare, low_tom, hihat, hihat_soft, mid_tom, open_hat, crash, ride_bell, ride_bell_soft
)

More by Elvis Presley