Strudelify
Hound Dog cover art

Forrest Gump - The Soundtrack

Hound Dog

Elvis Presley

KeyB♭ majorTempo200 bpm
0:00/0:00
// Hound Dog — Elvis Presley
// 200 bpm, 4/4, key A# major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 161 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(200/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 · "FINGERDBAS"
const bass = note(`<
  ~@2 A B@2 C D E B F G D H I A J B C D E K C L M K I B J N@2 O E B P Q R K I P@4 S@2 P@2 L T U I U@2 J V S@2 U W X Y A
  I U Z U@2 S@2 U Z AA AB AC@2 ~@27 AD@6 AE@6 AF@8 AG@4 AH@6 AI@6 AJ@6 AK@6 AL@8 AM@4
>`.pickRestart({
  A: "bb1@4 ~@3 d2@3 ~ f2 g2@3 f2", B: "bb1@5 ~@2 d2@4 f2 g2@2 ~ f2", C: "bb1@5 ~@2 d2@3 ~ f2 g2@3 f2",
  D: "eb2@5 ~@2 g2@4 bb2 c3@3 bb2", E: "eb2@5 ~@2 g2@3 ~ bb2 c3@3 bb2", F: "bb1@5 ~@2 d2@4 f2 g2@2 ~ f2, ~@12 a2 ~@3",
  G: "f2@5 ~@2 a2@4 c3 d3@3 c3", H: "bb1@6 ~ d2@3 ~ f2 g2@3 [e2,f2]", I: "bb1 ~@7", J: "bb1@5 ~@2 d2@3 ~ f2 g2@2 ~ f2",
  K: "bb1@6 ~ d2@3 ~ f2 g2@2 ~ f2", L: "f2@5 ~@2 a2@4 c3 d3@2 ~ c3", M: "eb2@5 ~@2 g2@3 ~ bb2 c3@2 ~ bb2",
  N: "bb1@5 ~@2 d2@4 f2 g2@3 f2", O: "eb2@6 ~ g2@4 bb2 c3@2 ~ bb2", P: "bb1@4 ~@3 d2@4 f2 g2@2 ~ f2",
  Q: "f2@5 ~@2 a2@3 ~ c3 d3@2 ~ c3", R: "eb2@4 ~@3 g2@4 bb2 c3@2 ~ bb2", S: "eb2@4 ~@3 g2@3 ~ bb2 c3@3 bb2",
  T: "eb2@4 ~@3 g2@4 bb2 c3@3 bb2", U: "bb1@4 ~@3 d2@3 ~ f2 g2@2 ~ f2", V: "bb1@3 ~@4 d2@3 ~ f2 g2@2 ~ f2",
  W: "bb1@4 ~@3 d2@3 ~@2 g2@2 ~ f2, ~@11 f2@2 ~@3", X: "f2@5 ~@2 a2@3 ~ c3 d3@3 c3",
  Y: "eb2@4 ~@3 g2@3 ~ bb2 c3@2 ~ bb2", Z: "bb1@4 ~@3 d2@2 ~@2 f2 g2@2 ~ f2", AA: "f2@5 ~@2 a2@2 ~@2 c3 d3@2 ~ c3",
  AB: "eb2@4 ~@3 g2@2 ~@2 bb2 c3@3 bb2", AC: "[bb1@4 ~@3 eb2@4 ~ bb2@3 bb1@2 ~@15, ~@11 c3@2 ~@19]/2",
  AD: "[~@8 bb1@4 ~@3 d2@3 ~ f2 g2@3 f2 bb1@5 ~@2 d2@4 f2 g2@2 ~ f2 bb1@5 ~@2 d2@4 f2 g2@2 ~ f2 bb1@5 ~@2 d2@3 ~ f2 g2@3 f2 eb2@5 ~@2 g2@4 bb2 c3@3 bb2 eb2@5 ~@2 g2]/6",
  AE: "[~@3 bb2 c3@3 bb2 bb1@5 ~@2 d2@4 f2 g2@2 ~ f2 bb1@5 ~@2 d2@4 f2 g2@2 ~ f2 f2@5 ~@2 a2@4 c3 d3@3 c3 eb2@5 ~@2 g2@4 bb2 c3@3 bb2 bb1@6 ~ d2@3 ~ f2 g2@3 [e2,f2] bb1@2 ~@6, ~@36 a2 ~@59]/6", // Fmaj7
  AF: "[~@8 bb1@4 ~@3 d2@3 ~ f2 g2@3 f2 bb1@5 ~@2 d2@3 ~ f2 g2@2 ~ f2 bb1@5 ~@2 d2@4 f2 g2@2 ~ f2 bb1@5 ~@2 d2@3 ~ f2 g2@3 f2 eb2@5 ~@2 g2@4 bb2 c3@3 bb2 eb2@5 ~@2 g2@3 ~ bb2 c3@3 bb2 bb1@6 ~ d2@3 ~ f2 g2@2 ~ f2 bb1@5 ~@2 d2]/8",
  AG: "[~@3 f2 g2@3 f2 f2@5 ~@2 a2@4 c3 d3@2 ~ c3 eb2@5 ~@2 g2@3 ~ bb2 c3@2 ~ bb2 bb1@6 ~ d2@3 ~ f2 g2@2 ~ f2 bb1@2 ~@6]/4",
  AH: "[~@8 bb1@5 ~@2 d2@4 f2 g2@2 ~ f2 bb1@5 ~@2 d2@3 ~ f2 g2@2 ~ f2 bb1@5 ~@2 d2@4 f2 g2@3 f2 bb1@5 ~@2 d2@4 f2 g2@3 f2 eb2@6 ~ g2@4 bb2 c3@2 ~ bb2 eb2@5 ~@2 g2]/6",
  AI: "[~@3 bb2 c3@3 bb2 bb1@5 ~@2 d2@4 f2 g2@2 ~ f2 bb1@4 ~@3 d2@4 f2 g2@2 ~ f2 f2@5 ~@2 a2@3 ~ c3 d3@2 ~ c3 eb2@4 ~@3 g2@4 bb2 c3@2 ~ bb2 bb1@6 ~ d2@3 ~ f2 g2@2 ~ f2 bb1@2 ~@6]/6",
  AJ: "[~@8 bb1@4 ~@3 d2@4 f2 g2@2 ~ f2 bb1@4 ~@3 d2@4 f2 g2@2 ~ f2 bb1@4 ~@3 d2@4 f2 g2@2 ~ f2 bb1@4 ~@3 d2@4 f2 g2@2 ~ f2 eb2@4 ~@3 g2@3 ~ bb2 c3@3 bb2 eb2@4 ~@3 g2]/6",
  AK: "[~@3 bb2 c3@3 bb2 bb1@4 ~@3 d2@4 f2 g2@2 ~ f2 bb1@4 ~@3 d2@4 f2 g2@2 ~ f2 f2@5 ~@2 a2@4 c3 d3@2 ~ c3 eb2@4 ~@3 g2@4 bb2 c3@3 bb2 bb1@4 ~@3 d2@3 ~ f2 g2@2 ~ f2 bb1@2 ~@6]/6",
  AL: "[~@8 bb1@4 ~@3 d2@3 ~ f2 g2@2 ~ f2 bb1@4 ~@3 d2@3 ~ f2 g2@2 ~ f2 bb1@5 ~@2 d2@3 ~ f2 g2@2 ~ f2 bb1@3 ~@4 d2@3 ~ f2 g2@2 ~ f2 eb2@4 ~@3 g2@3 ~ bb2 c3@3 bb2 eb2@4 ~@3 g2@3 ~ bb2 c3@3 bb2 bb1@4 ~@3 d2@3 ~ f2 g2@2 ~ f2 bb1@4 ~@3 d2]/8",
  AM: "[~@4 g2@2 ~ f2 f2@5 ~@2 a2@3 ~ c3 d3@3 c3 eb2@4 ~@3 g2@3 ~ bb2 c3@2 ~ bb2 bb1@4 ~@3 d2@3 ~ f2 g2@3 f2 bb1@2 ~@6, ~@3 f2@2 ~@59]/4",
})).s("gm_electric_bass_finger").gain(0.4).pan(0.6)

// other · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note("<~@37 A B C D@2 E F E G H I J K ~@86 L M@2 N@2 O@2 P@2 Q R S T ~@12>".pickRestart({
  A: "~@4 ab4@3 bb4 db5@2 ~@2 db5@2 ~ bb4, ~@3 f4@2 ~@6 eb5@2 ~@3", B: "bb4@2 ~ ab4 bb4@10 ~@2",
  C: "~@3 f4 ab4@2 ~ bb4 db5@2 ~ eb5 db5@2 ~ bb4",
  D: "[bb4@2 ~ ab4 bb4@14 ~ f4 ab4@2 ~ bb4 db5@2 ~ eb5 [db5,eb5]@2 ~ bb4]/2", E: "bb4@2 ~ ab4 bb4@12",
  F: "~@3 f4 ab4@2 ~ bb4 db5@2 ~@2 db5@2 ~ bb4, ~@11 eb5@2 ~@3", G: "~@3 bb4@2 ~@2 bb4 f4@3 g4 bb4@2 ~@2",
  H: "b4 c5 ~ f5 b4 c5 ~ f5 b4 c5 ~ f5 b4 c5 ~ f5", I: "bb4 c5 ~ eb5 bb4 c5 ~ eb5 bb4 c5 ~ eb5 bb4 c5 ~ eb5",
  J: "bb4@2 ~@2 bb4@2 ~ f4 db5 [c5,db5] ~@2 g4 f4 ~ g4, ~@11 bb4@2 ~@3", K: "bb4 ~@7",
  L: "~@12 ab4@3 bb4, ~@11 f4@2 ~@3",
  M: "[db5@2 ~@2 db5@2 ~ bb4 bb4@2 ~ ab4 bb4@10 ~@5 f4 ab4@2 ~ bb4, ~@3 eb5@2 ~@27]/2",
  N: "[db5@2 ~ eb5 db5@2 ~ bb4 bb4@2 ~ ab4 bb4@14 ~ f4 ab4@2 ~ bb4]/2",
  O: "[db5@2 ~ eb5 [db5,eb5]@2 ~ bb4 bb4@2 ~ ab4 bb4@13 ~@2 f4 ab4@2 ~ bb4]/2", // Dbsus2
  P: "[db5@2 ~@2 db5@2 ~ bb4 bb4@2 ~ ab4 bb4@13 ~@2 bb4@2 ~@2 bb4, ~@3 eb5@2 ~@27]/2",
  Q: "f4@3 g4 bb4@2 ~@2 b4 c5 ~ f5 b4 c5 ~ f5", R: "b4 c5 ~ f5 b4 c5 ~ f5 bb4 c5 ~ eb5 bb4 c5 ~ eb5",
  S: "bb4 c5 ~ eb5 bb4 c5 ~ eb5 bb4@2 ~@2 bb4@2 ~ f4", T: "db5 [c5,db5] ~@2 g4 f4 ~ g4 bb4@2 ~@6, ~@3 bb4@2 ~@11",
})).s("gm_overdriven_guitar").gain(0.52).pan(0.6)

// chords · piano · "A.PIANO"
const piano = note(`<
  ~@2 A B C D E F G H I J K L M N M N O P Q R S T U@2 V B C B W X B@2 Y Z AA L AB@3 AC AD@2 AB AE AF AG AH L M@3 AI AJ@2
  M@2 AK AL AM AN M@4 AJ AO M@2 S AP AQ@2 ~@27 AR AS AT AU AV AW AX AY AZ BA BB BC BD BE BF BE BG BH BI BJ BK BL BM@2 BN
  BO AT AU BP BQ BR AU BS BT BU BC BV BW@2 BX BY BZ CA BW CB CC CD BC BD BF@2 CE CF CG CH BF CI@3 CJ
>`.pickRestart({
  A: "~@3 bb5@2 ~@3 [f5,bb5] ~@7, ~@3 f5 ~@12", B: "~@3 [bb4,f5,bb5] ~@4 [bb4,f5,bb5] ~@7",
  C: "~@4 [bb4,f5,bb5] ~@3 [bb4,f5,bb5] ~@7", D: "~@3 [bb4,f5,bb5] ~@4 [f5,bb5] ~@7, ~@4 bb4 ~@3",
  E: "~@3 [db5,g5] ~@4 g5@2 ~@6, ~@8 db5 ~@7", F: "~@3 [db5,bb5] ~@4 [db5,bb5]@2 ~@6",
  G: "~@3 [bb4,f5] ~@4 [bb4,f5] ~@7, ~@3 bb5@2 ~@3 bb5@2 ~@6", // Bb5
  H: "[bb4,bb5]@2 ~@2 [bb4,f5] ~@3 [bb4,f5] ~@7, f5 ~@3 bb5@2 ~@2 bb5@2 ~@6", // Bb Bb5
  I: "~@3 [eb5,a5] ~@4 [a4,a5] ~@7, ~@3 a4@2 ~@3 eb5@2 ~@6", J: "~@3 [db5,g5] ~@4 [g4,db5] ~@7, ~@3 g4@2 ~@3 g5@2 ~@6",
  K: "~ f5 ~ bb4 ~ f5 ~ bb4 ~ f5 ~ bb4 ~ f5 ~ bb4, bb5 ~ bb5 ~ bb5 ~ bb5 ~", L: "bb5 ~@15",
  M: "~@3 [bb5,f6,bb6] ~@4 [bb5,f6,bb6] ~@7", N: "~@4 [bb5,f6,bb6] ~@3 [bb5,f6,bb6] ~@7",
  O: "~@3 [db6,g6,bb6] ~@4 [db6,g6,bb6] ~@7", P: "~@4 [db6,eb6,g6] ~@3 [db6,eb6,g6] ~@7",
  Q: "~@3 [bb5,f6,bb6] ~@4 [bb5,f6] ~@7, ~@4 bb6 ~@3", R: "~@3 [bb5,f6] ~@4 [bb5,f6,bb6] ~@7, ~@3 bb6@2 ~@11",
  S: "~@3 [a5,eb6,a6] ~@4 [a5,eb6,a6] ~@7", T: "~@3 [db6,eb6] ~@4 [db6,eb6,g6] ~@7, ~@3 g6@2 ~@11",
  U: "[~ f6@2 ~@2 f6@2 ~@2 f6@2 ~@2 f6@2 ~ [f6,bb6]@2 ~@14, bb6@2 ~ bb5@2 ~@2 bb5@2 ~@2 bb5@2 ~@2 bb5@3 ~@14, ~@2 bb6 ~ bb6 ~ bb6 ~@9]/2", // Bb5
  V: "~@3 bb4 [f5,bb5] ~@3 [f5,ab5,bb5] ~@7", W: "~@3 [db5,g5,bb5] ~@4 [db5,g5,bb5] ~@7",
  X: "~@4 [db5,g5,bb5] ~@3 [db5,g5,bb5] ~@7", Y: "~@4 [a4,eb5,a5] ~@3 [a4,eb5,a5] ~@7",
  Z: "~@3 [g4,db5,eb5,g5] ~@4 [g4,db5,eb5,g5] ~@7", // Eb7
  AA: "~ f5 ~ bb4 bb5 f5@2 bb4 ~ f5 ~ bb4 ~ f5 ~ bb4, bb5 ~@3 bb5 ~ bb5 ~",
  AB: "~@3 [bb4,f5,bb5] ~@4 [bb4,f5,bb5] ~@3 [bb4,f5,bb5] ~@3", // Bb5
  AC: "~@3 [bb4,f5,ab5,bb5] ~@4 [bb4,f5,ab5,bb5] ~@3 [bb4,f5,ab5,bb5] ~@3", // Bb7
  AD: "~@3 [db5,eb5,g5,bb5] ~@4 [db5,eb5,g5,bb5] ~@3 [db5,eb5,g5,bb5] ~@3", // Eb7
  AE: "~@3 [bb4,f5,bb5] ~@4 [bb4,f5,ab5,bb5] ~@3 [bb4,f5,ab5,bb5] ~@3", AF: "~@3 [a4,eb5,a5] ~@4 [a4,eb5,a5] ~@7",
  AG: "~@3 [g4,db5,g5] ~@4 [g4,db5,g5] ~@7", // Gdim
  AH: "[bb4,f5,bb5] ~@3 [bb4,f5,bb5] ~@4 f5 ~ bb4 ~ f5 ~ bb4, ~@4 bb5 ~ bb5 ~", // Bb5
  AI: "~@3 [bb5,f6,g6,bb6] ~@4 [bb5,f6,g6,bb6] ~@7", AJ: "~@3 [db6,eb6,bb6] ~@4 [db6,eb6,bb6] ~@7",
  AK: "~@4 a5 eb6 ~@2 eb6 ~@7, ~@7 a6@2 ~@7", AL: "~@4 g5 db6 ~@2 db6 ~@7, ~@7 g6@2 ~@7",
  AM: "~@3 [bb5,f6,bb6] ~@4 [bb5,f6,bb6] ~@3 [bb5,f6,bb6] ~@3", AN: "[bb5,f6,bb6] ~@15",
  AO: "~@3 [db6,g6] ~@4 [db6,g6] ~@7", AP: "~@3 [g5,db6,g6] ~@4 [g5,db6,g6] ~@7",
  AQ: "[~ f6@2 ~@2 f6@2 ~@2 f6@2 ~@2 f6@2 ~ bb6 ~@15, bb6@2 ~ bb5@2 ~@2 bb5@2 ~@2 bb5@2 ~@2 bb5@2 ~@15, ~@2 bb6 ~ bb6 ~ bb6 ~@9]/2",
  AR: "~@11 bb5@2 ~@3, ~@11 f5 ~@4", AS: "[f5,bb5] ~@10 [bb4,f5,bb5] ~@4", AT: "[bb4,f5,bb5] ~@11 [bb4,f5,bb5] ~@3",
  AU: "[bb4,f5,bb5] ~@10 [bb4,f5,bb5] ~@4", AV: "[f5,bb5] ~@10 [db5,g5] ~@4, bb4 ~@7",
  AW: "g5@2 ~@9 [db5,bb5] ~@4, db5 ~@15", AX: "[db5,bb5]@2 ~@9 [bb4,f5] ~@4, ~@11 bb5@2 ~@3",
  AY: "[bb4,f5] ~@7 [bb4,bb5]@2 ~@2 [bb4,f5] ~@3, bb5@2 ~@6 f5 ~@3 bb5@2 ~@2", // Bb5 Bb Bb5
  AZ: "[bb4,f5] ~@10 [eb5,a5] ~@4, bb5@2 ~@9 a4@2 ~@3", BA: "[a4,a5] ~@10 [db5,g5] ~@4, eb5@2 ~@9 g4@2 ~@3",
  BB: "[g4,db5] ~@8 f5 ~ bb4 ~ f5 ~ bb4, g5 ~@3 bb5 ~ bb5 ~", BC: "~ f5 ~ bb4 ~ f5 ~ bb4 bb5 ~@7, bb5 ~ bb5 ~@5",
  BD: "~@11 [bb5,f6,bb6] ~@4", BE: "[bb5,f6,bb6] ~@11 [bb5,f6,bb6] ~@3", BF: "[bb5,f6,bb6] ~@10 [bb5,f6,bb6] ~@4",
  BG: "[bb5,f6,bb6] ~@10 [db6,g6,bb6] ~@4", BH: "[db6,g6,bb6] ~@11 [db6,eb6,g6] ~@3",
  BI: "[db6,eb6,g6] ~@10 [bb5,f6,bb6] ~@4", BJ: "[bb5,f6] ~@10 [bb5,f6] ~@4, bb6@2 ~@9 bb6@2 ~@3",
  BK: "[bb5,f6,bb6] ~@10 [a5,eb6,a6] ~@4", BL: "[a5,eb6,a6] ~@10 [db6,eb6] ~@4, ~@11 g6@2 ~@3",
  BM: "[[db6,eb6,g6] ~@8 f6@2 ~@2 f6@2 ~@2 f6@2 ~@2 f6@2 ~ [f6,bb6]@2 ~@6, ~@8 bb6@2 ~ bb5@2 ~@2 bb5@2 ~@2 bb5@2 ~@2 bb5@3 ~@6, ~@6 bb6 ~ bb6 ~ bb6 ~@5]/2", // Eb7 Bb5
  BN: "~@11 bb4 [f5,bb5] ~@3", BO: "[f5,ab5,bb5] ~@10 [bb4,f5,bb5] ~@4", BP: "[bb4,f5,bb5] ~@10 [db5,g5,bb5] ~@4",
  BQ: "[db5,g5,bb5] ~@11 [db5,g5,bb5] ~@3", BR: "[db5,g5,bb5] ~@10 [bb4,f5,bb5] ~@4",
  BS: "[bb4,f5,bb5] ~@11 [a4,eb5,a5] ~@3", BT: "[a4,eb5,a5] ~@10 [g4,db5,eb5,g5] ~@4",
  BU: "[g4,db5,eb5,g5] ~@8 f5 ~ bb4 bb5 f5@2 bb4, ~@4 bb5 ~@3", BV: "~@11 [bb4,f5,bb5] ~@4",
  BW: "[bb4,f5,bb5] ~@3 [bb4,f5,bb5] ~@6 [bb4,f5,bb5] ~@4", // Bb5
  BX: "[bb4,f5,bb5] ~@3 [bb4,f5,bb5] ~@6 [bb4,f5,ab5,bb5] ~@4", // Bb5 Bb7
  BY: "[bb4,f5,ab5,bb5] ~@3 [bb4,f5,ab5,bb5] ~@6 [db5,eb5,g5,bb5] ~@4", // Bb7 Eb7
  BZ: "[db5,eb5,g5,bb5] ~@3 [db5,eb5,g5,bb5] ~@6 [db5,eb5,g5,bb5] ~@4", // Eb7
  CA: "[db5,eb5,g5,bb5] ~@3 [db5,eb5,g5,bb5] ~@6 [bb4,f5,bb5] ~@4", // Eb7 Bb5
  CB: "[bb4,f5,ab5,bb5] ~@3 [bb4,f5,ab5,bb5] ~@6 [a4,eb5,a5] ~@4", CC: "[a4,eb5,a5] ~@10 [g4,db5,g5] ~@4",
  CD: "[g4,db5,g5] ~@7 [bb4,f5,bb5] ~@3 [bb4,f5,bb5] ~@3", CE: "[bb5,f6,bb6] ~@10 [bb5,f6,g6,bb6] ~@4",
  CF: "[bb5,f6,g6,bb6] ~@10 [db6,eb6,bb6] ~@4", CG: "[db6,eb6,bb6] ~@10 [db6,eb6,bb6] ~@4",
  CH: "[db6,eb6,bb6] ~@10 [bb5,f6,bb6] ~@4", // Eb7 Bb5
  CI: "[[bb5,f6,bb6] ~@11 a5 eb6 ~@2 eb6 ~@11 g5 db6 ~@2 db6 ~@10 [bb5,f6,bb6] ~@4, ~@15 a6@2 ~@14 g6@2 ~@15]/3", // Bb5
  CJ: "[bb5,f6,bb6] ~@3 [bb5,f6,bb6] ~@3 [bb5,f6,bb6] ~@7", // Bb5
})).s("gm_piano").gain(0.29).pan(0.7)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
  ~@2 A B C@2 D@2 A C E D A F A G C G D@2 C@2 H D A I A C B C D J A C K L A I A C@3 D@2 M C N D A F A C@3 D J O M P L C
  Q A C@3 L J C@2 P L R@2 ~@27 S C A C T D U C V W U X S B A B Y D Z C AA AB U AC S C@2 A T L U C V AD AE AC S C@3 T D Z
  AF V AB U X S C@3 T L AG C AH W AI AJ
>`.pickRestart({
  A: "~@4 [d4,f4,bb4]@2 ~@6 [d4,f4,bb4] ~@3", B: "~@4 [d4,f4,bb4] ~@7 [d4,f4,bb4]@2 ~@2",
  C: "~@4 [d4,f4,bb4] ~@7 [d4,f4,bb4] ~@3", D: "~@2 [db4,eb4,g4,bb4] ~@3 [db4,eb4,g4,bb4] ~",
  E: "~@4 [c4,eb4,a4]@2 ~@6 [c4,eb4,a4] ~@3", F: "[d4,f4,bb4] ~@7", G: "~@2 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~",
  H: "~@4 [c4,eb4,a4] ~@7 [c4,eb4,a4]@2 ~@2", I: "[d4,f4,bb4] ~@15",
  J: "~@4 [db4,eb4,g4,bb4] ~@7 [db4,eb4,g4,bb4]@2 ~@2", K: "~@2 [c4,eb4,a4] ~@3 [c4,eb4,f4,a4] ~",
  L: "~@4 [db4,eb4,g4,bb4]@2 ~@6 [db4,eb4,g4,bb4] ~@3", M: "~@4 [d4,f4,bb4] ~@7 [d4,f4,ab4,bb4] ~@3",
  N: "~@2 [c4,eb4,a4] ~@3 [c4,eb4,a4] ~", O: "~@4 [d4,e4,f4,bb4] ~@7 [d4,f4,bb4] ~@3",
  P: "~@4 [c4,eb4,a4] ~@7 [c4,eb4,a4] ~@3", Q: "[d4,f4,ab4,bb4] ~@7",
  R: "[~@4 [d4,f4,ab4,bb4]@2 ~@2 [db4,eb4,g4,bb4]@5 ~@2 [d4,f4,bb4]@2 ~@15]/2", S: "~@6 [d4,f4,bb4] ~",
  T: "~@4 [d4,f4,bb4] ~@7 [db4,eb4,g4,bb4]@2 ~@2", U: "~@2 [db4,eb4,g4,bb4] ~@3 [d4,f4,bb4] ~",
  V: "~@4 [d4,f4,bb4] ~@7 [c4,eb4,a4]@2 ~@2", W: "~@4 [c4,eb4,a4] ~@7 [db4,eb4,g4,bb4]@2 ~@2",
  X: "~@4 [d4,f4,bb4] ~@3 [d4,f4,bb4]@2 ~@6", Y: "~@2 [d4,f4,bb4] ~@3 [db4,eb4,g4,bb4] ~",
  Z: "~@4 [db4,eb4,g4,bb4]@2 ~@6 [d4,f4,bb4] ~@3", AA: "~@4 [d4,f4,bb4] ~@7 [c4,eb4,a4] ~@3",
  AB: "~@2 [c4,eb4,a4] ~@3 [db4,eb4,g4,bb4] ~", AC: "~@4 [d4,f4,bb4] ~@3 [d4,f4,bb4] ~@7",
  AD: "~@2 [c4,eb4,f4,a4] ~@3 [db4,eb4,g4,bb4] ~", AE: "~@4 [db4,eb4,g4,bb4] ~@7 [d4,f4,bb4]@2 ~@2",
  AF: "~@4 [d4,f4,ab4,bb4] ~@7 [d4,f4,bb4] ~@3", AG: "~@4 [db4,eb4,g4,bb4]@2 ~@6 [d4,e4,f4,bb4] ~@3",
  AH: "~@4 [d4,f4,ab4,bb4] ~@7 [c4,eb4,a4] ~@3", AI: "~@4 [db4,eb4,g4,bb4] ~@7 [d4,f4,bb4] ~@3",
  AJ: "~@4 [d4,f4,bb4] ~@3 [d4,f4,ab4,bb4]@2 ~@6", // Bb Bb7
})).s("gm_electric_guitar_clean").gain(0.35).pan(0.2)

// other · alto sax
const alto_sax = note(`<
  ~@2 A B C B D E F G H I J B K B L G D E C G M D C G C G C G N E O G P N O B Q G L G D E F B R S T G U G F B D E C G V
  W L B F B X G D E F G Y@2 Z ~@28 AA@2 AB@2 AC@2 AD@2 AE@3 AF AG@2 AH@2 AC@2 AI@2 AJ@4 AI@4 AK@2 AL@2 AM@4 AN@2 AH@2
  AC@2 AO@2 AP@4 AQ@2 AO@2 AC@2 AI@2 AR@4
>`.pickRestart({
  A: "bb2@2 ~@5 d3@3 ~ f3 g3@3 f3", B: "bb2 ~@7", C: "bb2 ~@6 d3@3 ~ f3 g3@3 f3", D: "eb3 ~@6 g3@4 bb3 c4@3 bb3",
  E: "eb3 ~@15", F: "bb2 ~@6 d3@4 ~ g3@3 f3, ~@11 f3@2 ~@3", G: "bb2 ~@15", H: "f3 ~@6 a3@2 ~@2 c4 d4@3 c4",
  I: "eb3 ~@6 g3@2 ~@3 c4@3 bb3, ~@11 bb3@2 ~@3", J: "bb2@2 ~@5 d3 ~@3 f3 g3@3 f3",
  K: "bb2 ~@6 d3@2 ~@3 g3@3 f3, ~@11 f3@2 ~@3", L: "bb2 ~@6 d3@4 f3 g3@3 f3", M: "f3 ~@6 a3@3 ~ c4 d4@3 c4",
  N: "eb3 ~@6 g3@3 ~ bb3 c4@3 bb3", O: "bb2 ~@6 d3@3 ~@2 g3@3 f3, ~@11 f3@2 ~@3",
  P: "f3 ~@6 a3@3 ~@2 d4@3 c4, ~@11 c4@2 ~@3", Q: "bb2 ~@6 d3@4 f3 g3@2 ~ f3", R: "f3@2 ~@5 a3@4 c4 d4@2 ~ c4",
  S: "eb3@2 ~@5 g3@4 bb3 c4@3 bb3", T: "bb2@2 ~@5 d3@4 ~ g3@3 f3, ~@11 f3@2 ~@3", U: "bb2@2 ~@5 d3@4 f3 g3@3 f3",
  V: "f3 ~@6 a3@4 c4 d4@3 c4", W: "eb3 ~@6 g3@4 ~ c4@3 bb3, ~@11 bb3@2 ~@3",
  X: "bb2 ~@6 d3@4 ~ g3@2 ~ f3, ~@11 f3@2 ~@3",
  Y: "[f3 ~@6 a3@4 ~ d4@3 ~ eb3 ~@6 g3@3 ~ bb3 c4@3 bb3, ~@11 c4@2 ~@2 c4@2 ~@15]/2", Z: "bb2 ~@7 eb3@2 ~@5 bb2",
  AA: "[~@8 bb2@2 ~@5 d3@3 ~ f3 g3@3 f3 bb2@2 ~@6]/2", AB: "[~@8 bb2 ~@6 d3@3 ~ f3 g3@3 f3 bb2@2 ~@6]/2",
  AC: "[~@8 eb3 ~@6 g3@4 bb3 c4@3 bb3 eb3 ~@7]/2", AD: "[~@8 bb2 ~@6 d3@4 ~ g3@3 f3 bb2 ~@7, ~@19 f3@2 ~@11]/2",
  AE: "[~@8 f3 ~@6 a3@2 ~@2 c4 d4@3 c4 eb3 ~@6 g3@2 ~@3 c4@3 bb3 bb2@2 ~@5 d3, ~@35 bb3@2 ~@11]/3",
  AF: "~@3 f3 g3@3 f3 bb2@2 ~@6", AG: "[~@8 bb2 ~@6 d3@2 ~@3 g3@3 f3 bb2@2 ~@6, ~@19 f3@2 ~@11]/2",
  AH: "[~@8 bb2 ~@6 d3@4 f3 g3@3 f3 bb2 ~@7]/2", AI: "[~@8 bb2 ~@6 d3@3 ~ f3 g3@3 f3 bb2 ~@7]/2",
  AJ: "[~@8 f3 ~@6 a3@3 ~ c4 d4@3 c4 eb3 ~@6 g3@4 bb3 c4@3 bb3 bb2 ~@6 d3@3 ~ f3 g3@3 f3 bb2 ~@7]/4",
  AK: "[~@8 eb3 ~@6 g3@3 ~ bb3 c4@3 bb3 eb3 ~@7]/2", AL: "[~@8 bb2 ~@6 d3@3 ~@2 g3@3 f3 bb2 ~@7, ~@19 f3@2 ~@11]/2",
  AM: "[~@8 f3 ~@6 a3@3 ~@2 d4@3 c4 eb3 ~@6 g3@3 ~ bb3 c4@3 bb3 bb2 ~@6 d3@3 ~@2 g3@3 f3 bb2@2 ~@6, ~@19 c4@2 ~@30 f3@2 ~@11]/4",
  AN: "[~@8 bb2 ~@6 d3@4 f3 g3@2 ~ f3 bb2 ~@7]/2", AO: "[~@8 bb2 ~@6 d3@4 ~ g3@3 f3 bb2@2 ~@6, ~@19 f3@2 ~@11]/2",
  AP: "[~@8 f3@2 ~@5 a3@4 c4 d4@2 ~ c4 eb3@2 ~@5 g3@4 bb3 c4@3 bb3 bb2@2 ~@5 d3@4 ~ g3@3 f3 bb2 ~@7, ~@51 f3@2 ~@11]/4",
  AQ: "[~@8 bb2@2 ~@5 d3@4 f3 g3@3 f3 bb2 ~@7]/2",
  AR: "[~@8 f3 ~@6 a3@4 c4 d4@3 c4 eb3 ~@6 g3@4 ~ c4@3 bb3 bb2 ~@6 d3@4 f3 g3@3 f3 bb2@2 ~@6, ~@35 bb3@2 ~@27]/4",
})).s("gm_alto_sax").gain(0.35).pan(0.1)

// drums · kick
const kick = s("bd").struct(`<
  ~@2 A B A B A B A B A B A C A B A B A B A B A B A C A B A B A B A B A B A C A B A B A B A B A B A C A B A B A B A B A
  B A C A B A B A B A B A B A C A B A B D B E F A B D B A B G F A B A H A B A@2 D A ~ I J K J K J K J K J K@2 I J K J K
  J K J K J K@2 I J K J K J K J K J K@2 I J K J K J K J K J K@2 I J K J K J K J K J K@2
>`.pickRestart({
  A: "x ~@10 x ~@4", B: "x ~@6 x ~@3 x ~@4", C: "x", D: "x ~@2 x ~@4 x ~@2 x ~@4", E: "x ~@7 x ~@6 x",
  F: "~@3 x ~@4 x ~@2 x ~@4", G: "x ~@2 x ~@4 x ~@6 x", H: "x ~@7 x ~@2 x ~@4", I: "~ x", J: "~@3 x ~@4 x ~@6 x",
  K: "~@3 x ~@4 x ~@7",
})).gain(0.46)

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

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

// … 13 more lines

More by Elvis Presley