Strudelify

That's All Right (Mama)

Elvis Presley

KeyA majorTempo190 bpm
0:00/0:00
// That's All Right (Mama) — Elvis Presley
// 190 bpm, 4/4, key A major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 99 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(190/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
const bass = note(`<
  A@13 B@3 C D@4 A E A@8 B@4 D@3 F A G A@8 B@4 D@3 H A@11 I B@3 J D@3 K A@8 B@3 J D@4 A@5 L
>`.pickRestart({
  A: "a1 e1 a1 e1", B: "d2 a1 d2 a1", C: "d2@2 a1@2 d2 b1 c2 d2", D: "e2 b1 e2 b1", E: "a1@2 e1@2 a1@2 f#1 g#1",
  F: "e2@2 b1@2 e2@2 f#1 g#1", G: "a1@2 e1@2 a1 e1 f#1 g#1", H: "e2@2 b1@2 e2 e1 f#1 g#1", I: "a1@2 e1@2 a1!2 b1 c#2",
  J: "d2@2 a1@2 d2@2 c2 d2", K: "e2@2 b1@2 e2 f#1@2 g#1", L: "a1 e1 ~@2",
})).s("gm_fretless_bass").gain(0.36)

// chords · electric guitar jazz · "Jazz Electric"
const electric_guitar_jazz = note(`<
  A@5 B C D E F G H I J K L M N O N P Q R B C D E F G H I J K L M N O N P S T U V U V U W X@2 Y Z AA AB AC AD AE AF AG
  AH AI AJ AK AL AM AN F AO AP AQ J K L M N O N P Q AR AS AT AU AV AW AX AY AZ BA BB N BC BD BE BF ~ BG@3 BH
>`.pickRestart({
  A: "a2@2 [a3,c#4,e4]@2 e2 [a3,c#4,e4]!3", B: "~ [e4,a4]@2 ~", C: "[a4,c#5]@6 e5@4 c#5 e5 c#5@4",
  D: "a2@2 [e4,a4]@3 a4 e4@2", E: "[a4,c#5]@2 e4 e5@2 c#5 e4@2", F: "~@2 [a3,c#4,e4]@3 a4 e4@2",
  G: "~ [a4,c#5]@3 e5@2 [a4,c#5]@2", H: "[e4,a4,c#5] [a4,c#5]!4 e5@2 [a4,c#5]", I: "[a4,c#5]!6 a4@2",
  J: "~@2 [a3,c4]@3 f#4 c4@2", K: "d3@2 [c4,f#4] e4@2 a4 d4@2", L: "d3@2 [c4,f#4]@3 c4 a3@2",
  M: "[d3,f#4,a4]@2 f#4 [c4,e4]", N: "~@2 [d4,f#4,b4]!4 [d4,f#4,b4]@2",
  O: "[d4,f#4,b4]@2 [g#3,d4] [d4,f#4,b4]@2 [d4,f#4,b4] [d4,f#4,b4]@2", // Bm G#dim Bm
  P: "[d4,f#4,b4]!3 [d4,g#4,c#5]@2 [d4,f#4,b4] [d4,f#4,b4]@2", Q: "a2@2 [a3,a4]@3 f#4 e4@2",
  R: "[a2,a4]@2 c#4 f#4@2 a4 a3@2", S: "a1@2 [a2,a3]@3 f#3 e3@2", T: "[e4,a4] e2 f#2 g#2",
  U: "a2 [c#4,e4] [b3,d4] [a3,c#4]", V: "[b3,d4] [c#4,e4] e2@2 f#2@2 g#2@2", W: "[b3,d4] [c#4,e4]@2 f#4@2 e4@3",
  X: "[f#4 g4 f#4@2 e4@2 d4 c#4@2 b3@3 a3 g#3 g3@2]/2", Y: "e2@2 a4@3 c4 d3@2", Z: "a4 e4 c4 f#3@2 a4 d3@2",
  AA: "a2@2 a4@2 a2 f#3 a2@2", AB: "a4@2 a2 f#3@2 a4 f#3@2", AC: "e2 e4 b3 b2", AD: "g4@2 e3 g4@2 e4 [e3,g#3,b3]@2",
  AE: "e2@2 [e3,e4]@3 b3 [g#3,b3]@2", AF: "g4@3 [b3,g4]@2 e4 b2@2", AG: "a2@2 [c#4,a4]@3 [c#4,f#4]@2 ~",
  AH: "[a2,c#4,e4]@3 [c#4,f#4]@2 a4 [c#4,e4]@2", AI: "a2@2 e4@3 a4 ~@2, ~ c#4 ~@2",
  AJ: "a2@2 [e4,a4] [e4,a4]@2 [e4,a4] [c#4,e4]@2", AK: "~ [e3,a3]@2 ~", AL: "[a3,c#4]@6 e4@4 c#4 e4 c#4@4",
  AM: "a1@2 [e3,a3]@3 a3 e3@2", AN: "[a3,c#4]@2 e3 e4@2 c#4 e3@2", AO: "~ [a3,c#4]@3 e4@2 [a3,c#4]@2",
  AP: "[e3,a3,c#4] [a3,c#4]!4 e4@2 [a3,c#4]", AQ: "[a3,c#4]!6 a3@2", AR: "a4@2 a3 f#4@2 e4 a3@2", AS: "a2 f#4 e4@2 ~@4",
  AT: "~ [e4,a4] ~@2", AU: "a2 [c#4,f#4] ~@6", AV: "[c#4,e4]@5 a4 e4@2", AW: "a4 [a4,c#5]@2 ~",
  AX: "c#5@2 a2 e5 c#5 e5 a4@2", AY: "d3@2 [c4,e4]@3 f#4 c4@2", AZ: "[d3,a4]@2 [a3,f#4]@3 a4 f#4@2",
  BA: "d3@2 [f#4,c5]@3 e4 d4@2", BB: "[d3,c5]@4 ~ a4 [d4,f#4]@2", BC: "[d4,f#4,b4]!6 [d4,f#4,b4]@2",
  BD: "e2@2 e4@3 d4 [g#3,d4]@2", BE: "e2@2 e3 d4@2 e4 [g#3,d4]@2", BF: "a2@2 [a3,c#4,e4]@3 e4 [a3,c#4]@2",
  BG: "a2@2 [a3,c#4,e4]!2 e2 [a3,c#4,e4]!3", BH: "a2 [a3,c#4,e4] [a2,e3,a3,c#4,e4]@2",
})).s("gm_electric_guitar_jazz").gain(0.25).pan(0.2)

// other · acoustic guitar steel · "Steel String"
const acoustic_guitar_steel = note(`<
  A@13 B@4 C@4 A@10 B@4 C@4 A@10 B@4 C@4 A@12 B@4 C@4 A@8 B@4 C@4 A@5 D
>`.pickRestart({
  A: "a2 e2 a2 e2", B: "d3 a2 d3 a2", C: "e3 b2 e3 b2", D: "a2 e2 ~@2",
})).s("gm_acoustic_guitar_steel").gain(0.24).pan(0.8)

// drums · kick
const kick = s("bd").struct("<[x!2]!98 x>").gain(0.35)

// drums · rim
const rim = s("rim").struct("<[~ x ~ x]!98 [~ x ~@2]>").gain(0.4)

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

// drums · open hat
const open_hat = s("oh").struct(`<
  A ~ A ~ A ~ A ~ A ~ A@8 ~ A ~ A ~@4 A ~ A ~ A ~ A ~ A ~@5 A@8 ~@10 A ~ A@4 ~ A@2 ~ A ~ A@7 ~ A ~ A ~ A ~ A@7 ~ A ~ A ~
  A ~@2
>`.pickRestart({
  A: "~@7 x",
})).gain(0.25)

stack(bass, electric_guitar_jazz, acoustic_guitar_steel, kick, rim, hihat, open_hat)

More by Elvis Presley