Strudelify

Just a Gigolo I Ain't Got Nobody

David Lee Roth

KeyG majorTempo126 bpm
0:00/0:00
// Just a Gigolo   I Ain't Got Nobody — David Lee Roth
// 126 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 114 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(126/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 B C B A D E B F G H A@2 I J F K L B A D C E B G@2 H A@2 I J M K L N ~ C O P Q G R S T D U V W X Y Z AA D@2 AB AC AD
  AE AF ~ C O P Q G R S T AG AH AD AE G AI AJ ~ C AK AD AE M AL AM AN A U AD AE X Y AO AP A C AB AC AD AE AQ AR D AS AD
  AE M AI AT J M AU AV AW AX ~
>`.pickRestart({
  A: "g2@4 g1 ~ b2@5 ~ d3@5 ~ e3@4 d3 ~", B: "a1@4 ~@2 a1@3 ~@3 d2@4 ~@2 d2@3 ~@3",
  C: "g2@4 g1@2 b2@5 ~ d3@5 ~ b2@4 d3 ~, a2 ~@23", D: "g2@5 ~ b2@4 ~@2 d3@5 ~ e3@3 ~ g1@2",
  E: "g2@4 ~@2 g2@3 ~@3 a#1@4 ~@2 a#1@3 ~@3", F: "a1@5 ~ c2@4 ~@2 e2@5 ~ f#2@3 ~ a0@2",
  G: "a1@4 a0 ~ c2@5 ~ e2@5 ~ f#2@4 e2 ~", H: "d2@4 d1@2 f#2@5 ~ a2@5 ~ f#2@4 a2 ~, e2 ~@23",
  I: "f2@4 f1 ~ a2@5 ~ c3@5 ~ d3@4 c3 ~", J: "e2@4 e1 ~ g#2@5 ~ b2@5 ~ c3@4 b2 ~",
  K: "a1@4 ~@2 a1@3 ~@3 d#2@4 ~@2 d#2@3 ~@3", L: "d2@4 ~@2 d2@3 ~@3 e2@4 ~@2 e2@3 ~@3",
  M: "a1@4 a0@2 c2@5 ~ e2@5 ~ c2@4 e2 ~, b1 ~@23", N: "a1 ~@5", O: "g2@2 g1 f#2@2 f#1 f2@2 f1 e2@2 e1",
  P: "e2@4 e1@2 g#2@5 ~ b2@5 ~ c3@3 ~ b2@2", Q: "e2@4 e1 ~ g#2@5 ~ b2@4 e1 ~ c3@3 ~@3",
  R: "d2@4 d1@2 c2@5 ~ e2@5 ~ c2@4 e2 ~, b1 ~@23", S: "g2@4 g1@2 b2@5 ~ d3@5 ~ e3@4 g1 ~",
  T: "g2@5 ~ b2@4 ~@2 d3@4 g1 ~ e3@3 ~ d3 ~", U: "g2@4 g1 ~ f#2@4 f#1@2 f2@4 f1@2 e2@4 e1@2",
  V: "e2@4 e1 ~ g#2@5 ~ b2@4 ~@2 c3@5 ~", W: "e2@4 ~@2 g#2@4 ~@2 b2@4 ~@2 c3@2 b2 ~ e1@2",
  X: "a1@4 a0@2 c#2@5 ~ e2@5 ~ f#2@4 a0 ~", Y: "a1@5 ~ c#2@4 ~@2 e2@4 a0 ~ f#2@3 ~ e2 ~",
  Z: "d2@4 d1@2 c2@5 ~ e2@5 ~ f#2@4 d1 ~", AA: "d2@5 ~ c2@4 ~@2 e2@4 d1 ~ f#2@3 ~ e2 ~",
  AB: "c2@4 c1@2 e2@5 ~ g2@5 ~ a2@4 c1 ~", AC: "c2@5 ~ e2@4 ~@2 g2@4 c1 ~ a2@3 ~ g2 ~",
  AD: "e2@4 e1@2 g#2@5 ~ b2@5 ~ c3@4 e1 ~", AE: "e2@5 ~ g#2@4 ~@2 b2@4 e1 ~ c3@3 ~ b2 ~", AF: "a1@2 a0 ~@9",
  AG: "g2@4 g1 ~ b2@5 ~ d3@4 ~@2 e3@5 ~", AH: "g2@4 ~@2 b2@4 ~@2 d3@4 ~@2 e3@2 d3 ~ g1@2",
  AI: "d2@5 ~ c2@4 ~@2 e2@5 ~ f#2@3 ~ d1@2", AJ: "g2@2 g1 ~@9", AK: "g2@4 g1@2 f#2@4 f#1@2 f2@4 f1 ~ e2@4 e1@2",
  AL: "d2@4 d1 ~ c2@5 ~ e2@5 ~ f#2@4 e2 ~", AM: "g2@4 g1@2 b2@5 ~ d3@5 ~ e3@3 ~ d3@2",
  AN: "g2@4 g1 ~ b2@5 ~ d3@4 g1 ~ e3@3 ~@3", AO: "d2@4 d1@2 f#2@5 ~ a2@5 ~ b2@4 d1 ~",
  AP: "d2@5 ~ f#2@4 ~@2 a2@4 d1 ~ b2@3 ~ a2 ~", AQ: "a1@4 a0 ~ c#2@5 ~ e2@5 ~ f#2@4 e2 ~",
  AR: "d2@4 d1@2 g2@5 ~ a2@5 ~ g2@4 a2 ~, e2 ~@23", AS: "g2@4 ~@2 g2@3 ~@3 f2@4 ~@2 f2@3 ~@3",
  AT: "g2@4 ~@2 g2@3 ~@3 f#2@4 f#1@2 f2@4 f1@2", AU: "d2@4 d1 ~ f#2@5 ~ a2@5 ~ b2@4 a2 ~",
  AV: "g2@4 ~@2 g2@3 ~@3 c2@4 ~@2 c2@3 ~@3", AW: "d2@4 d1@2 d2@4 d1@2 g2@4 ~@2 g2@3 ~@3",
  AX: "~@4 e2@2 f#2 ~@3 g2 ~@13",
})).s("gm_fretless_bass").gain(0.36)

// bass · fretless bass · soft notes
const bass_soft = note(`<
  A B ~ C A@2 D B E@2 ~ A@2 F G E H I B A@2 ~ J C E@2 ~ A@2 F G ~ H ~ B ~@5 E ~@3 A ~ K L ~@4 A@2 ~@10 E ~@3 M N ~@2 E O
  ~@7 O ~@2 A ~@7 A ~@5 E ~ A P ~@3 O ~ G ~ O Q ~@3
>`.pickRestart({
  A: "~@16 g1 ~@7", B: "~@4 a0 ~@19", C: "~@4 a0 ~@11 d1 ~@7", D: "~@16 a#0 ~@7", E: "~@16 a0 ~@7", F: "~@16 f1 ~@7",
  G: "~@16 e1 ~@7", H: "~@4 a0 ~@11 d#1 ~@7", I: "~@4 d1 ~@19", J: "~@4 g1 ~@19", K: "~@8 e1 ~@3",
  L: "~@10 e1 ~@5 e1 ~@7", M: "~@8 g1 ~@3", N: "~@10 g1 ~@5 g1 ~@7", O: "~@16 d1 ~@7", P: "~@4 g1 ~@11 f1 ~@7",
  Q: "~@16 c1 ~@7",
})).s("gm_fretless_bass").gain(0.2)

// chords · electric guitar muted · "Muted Guitar"
const electric_guitar_muted = note(`<
  A B A C D E F B G H I D J K L M N O C P Q R S T U V W Q X Y Z M AA AB AC ~ J AD AE AF AG V AH AI AJ ~ AK AL AM AN AO
  AP P X AQ AR AK AL ~@2 J AS AK AL H V AT AU AV AW AK AL H AG ~@2 AX ~ AK AL V AG AV AW AJ AY AK AL AZ BA BB BC A AX BD
  BE BF BG BH BI A BJ AE AF V BK BL BM H W BN BO BP ~
>`.pickRestart({
  A: "~@4 [g3,b3,d4] ~@7 [g3,b3,d4]@3 ~ g2 ~ [g3,b3,d4]@2 ~@4", // G
  B: "[c4,e4,g4,a4]@3 ~ [c4,e4,g4,a4] ~@7 [c4,d4,f#4,a4]@4 ~@2 [c4,d4,f#4,a4]@3 ~@3", // Am7 D7
  C: "[c4,e4,g4,a4]@9 ~@3 [c4,d4,f#4,a4]@4 ~@2 [c4,d4,f#4,a4]@3 ~@3", D: "~@6 [g3,b3,d4]@4 ~@2 [g3,b3,d4]@3 ~@9",
  E: "~@4 [b3,d4,f#4,a4] ~@7 [b3,d4,f#4,a4]@3 ~ g2 ~ [b3,d4,f#4,a4]@2 ~@4", F: "[g3,b3,d4]@3 ~ [c#4,e4,g4,a#4]@3 ~",
  G: "~@6 [a3,c4,e4]@4 ~@2 [a3,c4,e4]@3 ~@3 a3@2 c4@2 e4 ~", // Am
  H: "~@4 [c4,e4,g4,a4] ~@7 [c4,e4,g4,a4]@3 ~ a2 ~ [c4,e4,g4,a4]@2 ~@4", // Am7
  I: "~@4 [c4,d4,f#4,a4] ~@7 [c4,d4,f#4,a4]@3 ~ d3 ~ [c4,d4,f#4,a4]@2 ~@4", // D7
  J: "~@6 [b3,d4,f4,g4]@4 ~@2 [b3,d4,f4,g4]@3 ~@9", // G7
  K: "[c4,d#4,f4,a4]@3 ~ [c4,d#4,f4,a4] ~@5 [c4,d#4,f4,a4]@5 ~ f3 ~ [c4,d#4,f4,a4]@2 ~@4", // F7
  L: "~@4 [b3,d4,f4,g#4] ~@7 [b3,d4,f4,g#4]@3 ~ e3 ~ [b3,d4,f4,g#4]@2 ~@4", // Bdim
  M: "[c4,e4,g4,a4]@3 ~ [c4,e4,g4,a4] ~@5 [c4,e4,g4,a4]@5 ~ a2 ~ [c4,e4,g4,a4]@2 ~@4", // Am7
  N: "[c4,e4,g4,a4]@9 ~@3 [c4,d#4,g4,a4]@3 ~ [c4,d#4,g4,a4] ~@7", // Am7 Am7b5
  O: "[g3,b3,d4]@4 ~@2 [g3,b3,d4]@3 ~@3 [b3,d4,f4,g#4]@9 ~@3", // G Bdim
  P: "~@6 [g3,b3,d4]@4 ~@2 [g3,b3,d4]@3 ~@3 g3@2 b3@2 d4 ~", // G
  Q: "[g3,b3,d4]@3 ~ [g3,b3,d4] ~@5 [g3,b3,d4]@5 ~ g2 ~ [g3,b3,d4]@2 ~@4", // G
  R: "~@6 [b3,d4,f#4,a4]@4 ~@2 [b3,d4,f#4,a4]@3 ~@9", // Bm7
  S: "[g3,b3,d4]@3 ~ [g3,b3,d4] ~@7 [c#4,e4,g4,a#4]@3 ~ [c#4,e4,g4,a#4] ~@7", // G C#dim
  T: "[c4,e4,g4,a4]@3 ~ [c4,e4,g4,a4] ~@7 [c4,d4,f#4,a4]@9 ~@3", // Am7 D7
  U: "[a3,c4,e4]@3 ~ [a3,c4,e4] ~@5 [a3,c4,e4]@5 ~ a2 ~ [a3,c4,e4]@2 ~@4", // Am
  V: "~@6 [c4,e4,g4,a4]@4 ~@2 [c4,e4,g4,a4]@3 ~@9", W: "~@6 [c4,d4,f#4,a4]@4 ~@2 [c4,d4,f#4,a4]@3 ~@3 c4@2 f#4@2 a4 ~",
  X: "[b3,d4,f4,g4]@3 ~ [b3,d4,f4,g4] ~@5 [b3,d4,f4,g4]@5 ~ g2 ~ [b3,d4,f4,g4]@2 ~@4", // G7
  Y: "~@6 [c4,d#4,f4,a4]@4 ~@2 [c4,d#4,f4,a4]@3 ~@9", // F7
  Z: "~@6 [b3,d4,f4,g#4]@4 ~@2 [b3,d4,f4,g#4]@3 ~@3 d4@2 g#4@2 b4 ~", // Bdim
  AA: "[c4,e4,g4,a4]@9 ~@3 [c4,d#4,g4,a4]@4 ~@2 [c4,d#4,g4,a4]@3 ~@3", // Am7 Am7b5
  AB: "[g3,b3,d4]@3 ~ [g3,b3,d4] ~@7 [b3,d4,f4,g#4]@9 ~@3", AC: "[c4,e4,g4,a4]@3 ~@5", AD: "~@16 c4 ~@5 b3 ~",
  AE: "~@4 b3 ~ [b3,d4,e4,g#4]@3 ~@3 [b3,d4,e4,g#4]@3 ~@7 b3 ~", // E7
  AF: "[b3,d4,e4,g#4]@3 ~@7 [b3,d4,e4,g#4]@6 b3 ~ [b3,d4,e4,g#4]@2 ~@4", // E7
  AG: "~@6 [c4,e4,g4,a4]@4 ~@2 [c4,e4,g4,a4]@3 ~@3 g3@2 c4@2 e4 ~", AH: "~@6 [g3,b3,d4]@4 ~@2 [g3,b3,d4]@3 ~@7 d3 ~",
  AI: "[g3,b3,d4]@3 ~@7 [g3,b3,d4] ~@5 g3 ~ b3@2 d4@2 g4@2", // G
  AJ: "~@6 [b3,d4,f4,g4]@4 ~@2 [b3,d4,f4,g4]@3 ~@3 f3@2 b3@2 d4 ~", AK: "~@3 [b3,d4,e4,g#4] ~@2 [b3,d4,e4,g#4] ~@5",
  AL: "[b3,d4,e4,g#4]@4 ~@2 [b3,d4,e4,g#4]@2 ~@2 [b3,d4,e4,g#4]@6 e3 ~ [b3,d4,e4,g#4]@4 ~@2", // E7
  AM: "~@6 [c#4,e4,g4,a4]@4 ~@2 [c#4,e4,g4,a4]@3 ~@7 e3 ~", // A7
  AN: "[c#4,e4,g4,a4]@3 ~@7 [c#4,e4,g4,a4] ~@5 g3 ~ c#4@2 e4@2 a4@2", // A7
  AO: "~@4 e3 ~ [c4,e4,g4,a4]@3 ~@3 [c4,e4,g4,a4]@3 ~@7 e3 ~", // Am7
  AP: "[c4,e4,g4,a4]@3 ~@7 [c4,e4,g4,a4]@6 e3 ~ [c4,e4,g4,a4]@2 ~@4", // Am7
  AQ: "~@4 g3 ~ [g3,c4,e4]@3 ~@3 [g3,c4,e4]@3 ~@7 g3 ~", AR: "[g3,c4,e4]@3 ~@7 [g3,c4,e4]@6 g3 ~ [g3,c4,e4]@2 ~@4",
  AS: "~@4 d3 ~@5 c#3 ~@13", AT: "~@4 d3 ~ [g3,b3,d4]@3 ~@3 [g3,b3,d4]@3 ~@7 d3 ~",
  AU: "[g3,b3,d4]@3 ~@7 [g3,b3,d4]@6 d3 ~ [g3,b3,d4]@2 ~@4", AV: "~@3 [g3,b3,d4] ~@2 [g3,b3,d4] ~@5",
  AW: "[g3,b3,d4]@4 ~@2 [g3,b3,d4]@2 ~@2 [g3,b3,d4]@6 g2 ~ [g3,b3,d4]@4 ~@2", // G
  AX: "~@4 [b3,d4,f4,g4] ~@7 [b3,d4,f4,g4]@3 ~ g2 ~ [b3,d4,f4,g4]@2 ~@4", AY: "~@4 d3 ~@19",
  AZ: "~@4 e3 ~ [c#4,e4,g4,a4]@3 ~@3 [c#4,e4,g4,a4]@3 ~@7 e3 ~", // A7
  BA: "[c#4,e4,g4,a4]@3 ~@7 [c#4,e4,g4,a4]@6 e3 ~ [c#4,e4,g4,a4]@2 ~@4", // A7
  BB: "~@3 [c4,d4,f#4,a4] ~@2 [c4,d4,f#4,a4] ~@5", // D7
  BC: "[c4,d4,f#4,a4]@4 ~@2 [c4,d4,f#4,a4]@2 ~@2 [c4,d4,f#4,a4]@6 d3 ~ [c4,d4,f#4,a4]@4 ~@2", // D7
  BD: "~@6 [g3,c4,e4]@4 ~@2 [g3,c4,e4]@3 ~@7 g3 ~", BE: "[g3,c4,e4]@3 ~@7 [g3,c4,e4] ~@5 c4 ~ e4@2 g4@2 c5@2",
  BF: "~@6 [b3,d4,e4,g#4]@2 ~@4 [b3,d4,e4,g#4]@3 ~@9", // E7
  BG: "[b3,d4,e4,g#4]@3 ~@7 [b3,d4,e4,g#4]@2 ~@4 e5@2 b4 ~ g#4@2 d4 ~", // E7
  BH: "~@6 [c#4,e4,g4,b4]@4 ~@2 [c#4,e4,g4,b4]@3 ~@3 g3@2 c#4@2 e4 ~", // C#m7b5
  BI: "~@4 [a3,c4,e4,g4] ~@7 [a3,c4,e4,g4]@3 ~ d3 ~ [a3,c4,e4,g4]@2 ~@4", // Am7
  BJ: "[g3,b3,d4]@3 ~ [g3,b3,d4] ~@7 [c4,d#4,f4,a4]@9 ~@3", // G F7
  BK: "[c4,e4,g4,a4]@3 ~ [c4,e4,g4,a4] ~@5 [c4,e4,g4,a4]@5 ~ d3 ~ [c4,e4,g4,a4]@2 ~@4", BL: "[g3,b3,d4]@9 ~@7 c#3 ~@7",
  BM: "~@6 [b3,d4,e4,g#4]@4 ~@2 [b3,d4,e4,g#4]@3 ~@3 d4@2 g#4@2 b4 ~", // E7
  BN: "[g3,b3,d4]@9 ~@3 [g3,c4,e4]@3 ~ [g3,c4,e4] ~@7", BO: "~@12 [b3,e4,f4,a4]@3 ~ [b3,e4,f4,a4] ~@7",
  BP: "[b3,e4,f4,a4] ~@23", // Esus4
})).s("gm_electric_guitar_muted").gain(0.42)

// other · synth brass 1 · "Trombone"
const synth_brass_1 = note(`<
  A B C D ~@12 E F G H ~@12 I J K ~@4 L M N O N ~@3 P Q R S@2 T U V W X@2 R ~@4 Y M Z O@2 AA AB AC AD AE AF N ~ AG@2 AH
  AI M K O AJ AK@2 AL@2 R AM S@2 U@2 W@2 X@2 AN AO AP@2 AQ AR AS ~@3 AT@2 AU AV@3
>`.pickRestart({
  A: "b3 ~@3 b3 ~ d4@5 ~ g4@6 d4@4 g4 ~", B: "c4@5 ~ c4@5 ~ a3@6 g3@4 a3 ~", C: "~ b3 ~@2 b3 ~ d4@5 ~ g4@6 d4@4 g4 ~",
  D: "c4@5 ~ c4@5 ~ a3@5 ~ g3@4 a3 ~", E: "c4@11 ~ c4@10 ~@2", F: "g3@4 ~@2 g3@5 ~", G: "a3 ~@11",
  H: "~@6 f#3@4 g3@13 ~", I: "c4@10 ~@2 c4@11 ~", J: "g3@7 ~@3 g3@13 ~", K: "a3 ~@23",
  L: "~@6 b3@2 ~@2 b3 ~@5 b3 ~@2 b3 ~@4", M: "c4 ~@23", N: "d4 ~@23", O: "b3 ~@23",
  P: "~@6 b3@2 ~@2 b3 ~@5 b3 ~ b3 ~@5", Q: "~@2 c#4 ~@21", R: "c#4 ~@23", S: "[~@2 a3@5 ~]/2", T: "~@10 b3@7 ~ g3 ~@5",
  U: "~@10 b3@8 g3 ~@5", V: "~@10 c4@9 g3 ~@4", W: "~@10 c4@8 g3 ~@5", X: "~@10 b3@8 g#3 ~@5",
  Y: "~@6 a3@4 b3 ~@5 a3@2 b3 ~@5", Z: "[a3,a#3] ~@23", AA: "~ d4 ~@4 d4 ~@5 d4 ~@9 d4 ~",
  AB: "~@4 d4 ~@5 d4 ~ d4@2 ~@2 d4 ~ d4@2 ~@4", AC: "g#3 ~@5 g#3 ~@5 g#3 ~@9 g#3 ~",
  AD: "~@4 g#3 ~@5 g#3 ~ g#3@3 ~ g#3 ~ g#3@3 ~@3", AE: "a3 ~@5 a3 ~@5 a3 ~@9 a3@2",
  AF: "~@4 a3@2 ~@4 a3 ~ a3@3 ~ a3 ~ a3@2 ~@4", AG: "[d4@30 c#4@6 c4@6 b3@5 ~]/2", AH: "b3",
  AI: "~@6 b3 ~@3 b3 ~@5 b3 ~ b3@2 ~@4", AJ: "b3 ~@11", AK: "[d4@5 c#4 c4 b3]/2",
  AL: "[b3@28 ~@2 b3 ~@3 b3 ~@5 b3 ~ b3 ~@5]/2", AM: "c#4 ~@11", AN: "~@6 c#4@7 ~@3 c#4@7 ~",
  AO: "~@2 d4@4 ~@2 d4@3 ~, ~@16 c#4 ~@7", AP: "[~@6 d4@24 c#4@6 c4@6 b3@5 ~]/2", AQ: "b3@11 ~",
  AR: "~@6 b3 ~@3 b3 ~@5 b3 ~ b3@3 ~@3", AS: "c4 ~@11", AT: "[a3@3 ~ a3 ~ b3@5 ~ c4@6 c#4@3 ~ d4@19 ~@7]/2",
  AU: "~@6 g3@2 a3@2 b3 ~ d4@4 c4@2 g3@4 a3@2", AV: "[b3@2 ~@5 d4@3 ~ d4@41 ~@20]/3",
})).s("gm_synth_brass_1").gain(0.51)

// chords · synth brass 1 · "Trumpets 1 & 2"
const synth_brass_1_2 = note(`<
  A B C D ~@12 E F G H ~@12 E I J ~@4 K L M N O ~@3 P Q L R@2 S T U V W@2 L ~@4 X L M N Y Z AA AB AC AD AE Y ~ AF@3 AG ~
  M N@2 AH@2 AI AJ L@2 AK@2 AL S AM AN W@2 AO AP AQ@2 AR@2 AS ~@3 AT@2 AU AV@3
>`.pickRestart({
  A: "[d4,g4] ~ d4 [g4,b4]@3 [b4,d5]@3 [g4,b4]@2 [b4,d5], ~@4 g4 ~@19", // G5 G Bm G Bm
  B: "[e4,a4]@5 ~ [e4,a4]@6 [f#4,d5]@6 [e4,a4]@4 d5@2, ~@22 f#4 ~", // A5 D A5
  C: "[d4,g4]@2 ~@2 [d4,g4]@2 [g4,b4]@5 ~ [b4,d5]@6 [g4,b4]@4 b4@2, ~@22 d5 ~", // G5 G Bm G
  D: "[e4,a4]@5 ~ [e4,a4]@6 [f#4,d5]@6 [e4,a4]@4 [f#4,d5] ~", E: "[g4,e5] [a4,d#5]",
  F: "[b4,d5]@7 ~@4 d5@12 ~, ~@5 b4@7", G: "g4 ~@11, d5 ~@23", H: "~@6 [a#4,c#5]@4 [b4,d5]@11 ~@3",
  I: "b4@10 ~@5 b4@8 d5, d5@8 ~@2 d5@13 ~", J: "g4 ~@11",
  K: "~@6 g#4@2 ~@2 [g#4,e5] ~@5 [g#4,e5] ~@2 e5 ~@4, ~@6 e5 ~@11 g#4@2 ~@4", L: "[g4,e5] ~@23", M: "[f#4,d5] ~@23",
  N: "[g4,d5] ~@23", O: "b4 ~@11, g5 ~@23", P: "~@6 [g#4,e5]@2 ~@2 [g#4,e5] ~@5 [g#4,e5] ~ [g#4,e5] ~@5",
  Q: "[g4,g#4,e5] ~@23", R: "[~@3 g4@3 f#4@5 ~, ~@12 d5@31 ~@5]/2", S: "~@10 [g4,e5]@8 [b4,d5] ~@5",
  T: "~@10 g4@7 [b4,d5] ~@6, ~@9 e5@7 ~@8", U: "~@10 g4@7 c5 e5 ~@5, ~@9 e5@8 ~@7",
  V: "~@10 e5@8 [c5,e5] ~@5, ~@3 g4@3 ~@2", W: "~@10 [g#4,e5]@8 [b4,d5] ~@5",
  X: "~@6 [f#4,d#5]@4 [g#4,e5] ~@5 [f#4,d#5]@2 [g#4,e5] ~@5", Y: "[b4,g5] ~@23",
  Z: "[b4,g5] ~@5 b4@2 ~@4 [b4,g5] ~@9 [b4,g5] ~, ~@6 g5 ~@17", // Em
  AA: "~@4 [b4,g5] ~@5 [b4,g5] ~ [b4,g5]@3 ~ [b4,g5] ~ [b4,g5] ~@5", // Em
  AB: "b4@2 ~@4 [b4,e5] ~@5 [b4,e5] ~@9 [b4,e5] ~, e5 ~@23", // E5
  AC: "~@4 [b4,e5] ~@5 [b4,e5] ~ [b4,e5]@3 ~ [b4,e5] ~ [b4,e5] ~@5", // E5
  AD: "[c5,e5] ~@5 [c5,e5] ~@5 [c5,e5] ~@9 [c5,e5] ~", // C
  AE: "~@4 [c5,e5] ~@5 [c5,e5] ~ [c5,e5]@3 ~ [c5,e5] ~ e5@3 ~@3, ~@18 c5 ~@5", // C
  AF: "[[b4,g5]@30 [a#4,f#5]@5 ~ f5@5 ~ e5@5 ~ e5@24, ~@35 a4@6 g#4@5 ~ g#4@24 ~]/3", // Em D#m
  AG: "~@6 e5@3 ~ [g#4,e5] ~@5 [g#4,e5] ~ [g#4,e5] ~@4 [a4,e5], ~@6 g#4 ~@17", // C#m A5
  AH: "[[b4,g5]@30 [a#4,f#5]@6 [a4,f5]@6 [g#4,e5]@5 ~]/2", AI: "[g#4,e5]",
  AJ: "~@6 e5@2 ~@2 [g#4,e5] ~@5 [g#4,e5] ~ e5@2 ~@4, ~@6 g#4 ~@11 g#4 ~@5", AK: "[~@4 g4@4 f#4@7 ~, ~@4 d5@11 ~]/2",
  AL: "~@10 [g4,e5]@7 b4 d5 ~@5", AM: "~@9 [g4,e5]@9 [c5,e5] ~@5", AN: "~@10 [g4,e5]@8 [c5,e5] ~@5",
  AO: "~@4 [g4,e5]@9 ~@4 g4@7, ~@16 e5@7 ~", AP: "~@2 [f#4,e5]@4 ~@2 [f#4,e5]@3 ~",
  AQ: "[~ [b4,g5]@4 [a#4,f#5] [a4,f5] [g#4,e5]]/2", AR: "[e5@26 ~@8 b3@7 ~ b3@5 ~, g#4 ~]/2", AS: "c4 ~@23",
  AT: "[[a3,a4]@3 ~ a3 ~ b3@5 [c4,c5]@6 ~ [c#4,c#5]@5 ~ d5@12 ~@12, ~@4 a4@2 ~@17 d4@12 ~@13, ~@5 b4@6 ~@37]/2", // A C C#
  AU: "~@3 [g3,g4] [a3,a4] b3 [d4,d5]@2 [c4,c5] [g3,g4]@2 [a3,a4], ~@10 b4 ~@13", // G A D C G A
  AV: "[[b3,b4] ~@6 d5@2 ~@2 g5@41 ~@20, ~@3 d4@2 b4@21 ~@10]/3", // B
})).s("gm_synth_brass_1").gain(0.51)

// drums · kick
const kick = s("bd").struct(`<
  A@3 B A@2 C A@2 C A@2 C@3 A C@2 A B A@2 C A C A C A@2 C@4 A@2 B A C A@2 C A C B A@2 C@3 A@2 D A C A C@2 A@2 B A C@2 D
  A C A B A@2 C@2 A@2 C B A@2 C A C@3 B A C@2 A@2 C@2 D A C@3 A C@2 D A@9 C B@3 ~
>`.pickRestart({
  A: "x!2", B: "x", C: "x ~@5 x ~@4 x", D: "x ~@4 x ~@6",
})).gain(0.31)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@3 A ~@11 A ~@2 A ~@2 A ~@6 A ~@5 A ~@3 A ~@2 A ~@8 A ~@8 A ~@9 A ~@2 A@2 ~@3 A ~@25 A ~@3 A ~@2 A@2 ~@2
>`.pickRestart({
  A: "~@11 x",
})).gain(0.2)

// drums · hihat
const hihat = s("hh").struct(`<
  A ~@2 B A ~@14 A@2 ~@14 B A ~@6 B A ~@6 B A ~@6 B A ~@2 B A ~@2 A@2 ~@6 B A ~@6 A@2 ~@6 B A ~@6 B A ~@9 B@2 C ~
>`.pickRestart({
  A: "~ x ~ x", B: "~ x ~@2", C: "~ x",
})).gain(0.36)
// … 32 more lines

More by David Lee Roth