Strudelify
Bad Case Of Lovin' You ( Doctor, Doctor) cover art

1999

Bad Case Of Lovin' You ( Doctor, Doctor)

Robert Palmer

KeyE majorTempo153 bpm
0:00/0:00
// Bad Case Of Lovin' You ( Doctor, Doctor) — Robert Palmer
// 153 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 114 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
setcpm(153/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.

// chords · distortion guitar · "ds guitar"
const distortion_guitar = note(`<
  ~ A B@3 C@8 D@8 E@3 F@2 ~ G ~ H@5 I@2 J K I@2 J L@3 M@2 N@2 O P@3 Q@2 ~ R ~ S@5 T@2 U V T@2 U W@4 X@6 Y@4 Z AA AB AC Z
  AA AB AD@3 AE AF AE AG AH AD@3 AE AI ~ AJ ~ AK@8
>`.pickRestart({
  A: "~@7 [b3,e4]@3 [b3,e4]@3 [b3,e4]@3 [b3,e4]@3 ~@3 [b3,e4]@2", // E5
  B: "[~@4 [b3,e4]@3 ~@3 [b3,e4]@2 ~ [b3,e4]@3 ~@3 [a3,d4]@11 ~@2 [b3,e4]@3 [b3,e4]@3 [b3,e4]@3 [b3,e4]@3 ~@3 [b3,e4]@3 ~@22]/3", // E5 D5 E5
  C: "[~@8 [b3,e4]@3 [b3,e4]@3 [b3,e4]@3 [b3,e4]@3 ~@3 [b3,e4]@3 ~@3 [b3,e4]@3 ~@3 [b3,e4]@2 ~ [b3,e4]@3 ~@3 [a3,d4]@11 ~ [b3,e4]@3 [b3,e4]@3 [b3,e4]@3 [b3,e4]@3 ~@3 [b3,e4]@6 ~@19]/4", // E5 D5 E5
  D: "[~@2 [a3,e4]@24 [b3,f#4]@24 ~@6 [b3,e4]@3 [b3,e4]@3 [b3,e4]@3 [b3,e4]@3 ~@3 [b3,e4]@3 ~@3 [b3,e4]@3 ~@3 [b3,e4]@2 ~ [b3,e4]@3 ~@3 [a3,d4]@6 ~@6 [b3,e4]@3 [b3,e4]@3 [b3,e4]@3 [b3,e4]@3 ~@3 [b3,e4]@3 ~@3 [b3,e4]@3 ~@3 [b3,e4]@2 ~ [b3,e4]@3 ~@3 [a3,d4]@11 ~ [b3,e4]@3 [b3,e4]@3 [b3,e4]@3 [b3,e4]@3 ~@3 [b3,e4]@6 ~@19]/8", // A5 B5 E5 D5 E5 D5 E5
  E: "[~@2 [a3,e4]@24 [b3,f#4]@24 ~@7 [b3,e4]@3 [b3,e4]@3 [b3,e4]@3 [b3,e4]@3 ~@3]/3", // A5 B5 E5
  F: "[[b3,e4]@3 ~@3 [b3,e4]@2 ~@4 [b3,e4]@2 ~ [b3,e4]@3 ~@3 [a3,d4]@6 [b3,e4]@3 ~@18]/2", G: "~ [b3,e4] ~@6",
  H: "[~ a3@16 b3@8 [b3,f#4]@8 ~@2 [b3,e4]!4 ~, ~ e4@24 ~@15]/5", // B5 E5
  I: "[[b3,e4]@2 ~@4 [b3,e4]@3 ~@3 [b3,e4]@2 ~ [b3,e4]@3 ~@3 [a3,d4]@11 ~ [b3,e4]@3 [b3,e4]@3 [b3,e4]@3 [b3,e4]@3 ~@3]/2", // E5 D5 E5
  J: "[b3,e4] ~@3", K: "~@3 [b3,e4]!4 ~",
  L: "[~@3 [a3,e4]@24 ~ [b3,f#4]@24 ~@5 [b3,e4]@3 [b3,e4]@3 [b3,e4]@3 [b3,e4]@3 ~@3]/3", // A5 B5 E5
  M: "[~ [b3,e4]@3 ~@3 [b3,e4]@3 ~@3 [b3,e4]@2 ~ [b3,e4]@3 ~@3 [a3,d4]@6 ~@6 [b3,e4]@3 [b3,e4]@3 [b3,e4]@3 [b3,e4]@3 ~@2]/2", // E5 D5 E5
  N: "[~ [b3,e4]@3 ~@3 [b3,e4]@3 ~@3 [b3,e4]@2 ~ [b3,e4]@3 ~@3 [a3,d4]@11 ~ [b3,e4]@3 [b3,e4]@3 [b3,e4]@3 [b3,e4]@3 ~@2]/2", // E5 D5 E5
  O: "~ [b3,e4]@6 ~@17", P: "[~@4 [a3,e4]@24 [b3,f#4]@24 ~@6 [b3,e4]@3 [b3,e4]@3 [b3,e4]@3 [b3,e4]@3 ~@2]/3",
  Q: "[~ [b3,e4]@3 ~@3 [b3,e4]@3 ~@3 [b3,e4]@2 ~ [b3,e4]@3 ~@3 [a3,d4]@6 [b3,e4]@3 ~@17]/2", R: "~@4 [b3,e4]@3 ~@17",
  S: "[~@4 a3@48 b3@24 [b3,f#4]@24 ~@7 [b3,e4]@3 [b3,e4]@3 [b3,e4]@3 [b3,e4]@3 ~, ~ e4@18 ~@11]/5", // B5 E5
  T: "[~@2 [b3,e4]@2 ~@4 [b3,e4]@3 ~@3 [b3,e4]@2 ~ [b3,e4]@3 ~@3 [a3,d4]@11 ~ [b3,e4]@3 [b3,e4]@3 [b3,e4]@3 [b3,e4]@3 ~]/2", // E5 D5 E5
  U: "~ [b3,e4]@3 ~@8", V: "~@11 [b3,e4]@3 [b3,e4]@3 [b3,e4]@3 [b3,e4]@3 ~",
  W: "[~@5 [a3,e4]@48 [b3,f#4]@36 ~ [b3,f#4]@4 ~@2]/4", // A5 B5
  X: "[[a#3,f4]@2 ~ [a3,e4]@24 [e3,b3]@24 [a3,e4]@12 [g#3,c#4]@9]/6", Y: "[~@2 [b3,f#4]@24 ~@2 [b3,e4]!4]/4",
  Z: "~@3 [b3,e4]@3 ~@3 [b3,e4]@3 ~@3 [b3,e4]@2 ~ [b3,e4]@3 ~@3", // E5
  AA: "[a3,d4]@11 ~ [b3,e4]@3 [b3,e4]@3 [b3,e4]@3 [b3,e4]@3", AB: "~ [b3,e4]@2 ~@5", AC: "~@4 [b3,e4]!4",
  AD: "[~@7 [a3,e4]@24 [b3,f#4]@24 ~@6 [b3,e4]@3 [b3,e4]@3 [b3,e4]@3 [b3,e4]@2]/3", // A5 B5 E5
  AE: "~@4 [b3,e4]@3 ~@3 [b3,e4]@3 ~@3 [b3,e4]@2 ~ [b3,e4]@3 ~@2", // E5
  AF: "~ [a3,d4]@6 ~@6 [b3,e4]@3 [b3,e4]@3 [b3,e4]@3 [b3,e4]@2", // D5 E5
  AG: "~ [a3,d4]@11 ~ [b3,e4]@3 [b3,e4]@3 [b3,e4]@3 [b3,e4]@2", AH: "~@2 [b3,e4]@3 ~@7",
  AI: "~ [a3,d4]@6 [b3,e4]@3 ~@14", AJ: "~@7 [b3,e4]@3 ~@14",
  AK: "[~@7 a3@48 ~ b3@24 [b3,f#4]@21 [b3,e4]@27 [b3,e4]@2 ~ [e3,b3]@3 ~ [e3,b3]@3 [b3,e4]@39 ~@15, ~@7 e4@72 ~@113]/8", // B5 E5
})).s("gm_distortion_guitar").gain(0.19)

// other · overdriven guitar · "od guitar 1"
const overdriven_guitar = note(`<
  ~@4 A B@2 ~ A B@2 ~@15 C@2 D E@4 ~@3 F G@2 ~@15 H@2 I J@4 K@6 L@3 M@3 N@2 O@2 P@2 ~@6 Q R@2 ~@16 S T U@2 V@2 W X@3
>`.pickRestart({
  A: "~@4 a3@3 d4@2 ~ e4@3 f#4@3 ~@2 d4 a3@3 g3@2, ~@17 e4@2 ~@5", B: "[~ e3@12 ~@11]/2", C: "[~@7 e3@2 e3 ~@6]/2",
  D: "~@18 e3@2 ~ g3@2 ~", E: "[g#3@3 a3@41 ~ f#3@6 e3@24 ~@21]/4", F: "~@6 a3@3 d4@2 ~ e4@3 f#4@3 e4@2 d4 a3@3",
  G: "[g3 e3@8 ~@7]/2", H: "[~@22 e3@6 e3@3 ~@17]/2", I: "~@19 e3@2 ~ g3@2", J: "[~ g#3@3 a3@41 ~ f#3@6 e3@24 ~@20]/4",
  K: "[~@5 d5@26 ~ d5@9 d5@6 b4@3 ~@30 a3@3 d4@2 ~ e4@3 f#4@3 e4@2 d4 a3@3 g3@3 d5@26 ~ d5@9 d5@6 b4, ~@25 d5@16 ~@31]/6",
  L: "[~@2 b4@9 [d5,g5]@3 ~@6 d5@12 a5@3 e6@3 e6@6 d6@2 ~ c6@3 a5@3 a5@6 b5@3 f#5@3 b5@6 ~, ~@20 g5@9 ~@43]/3", // G5
  M: "[e6@2 c#6@6 a5@3 b5@4 ~@2 a5@6 g5@3 ~ d6@2 d#6@2 ~ e6@2 ~@2 e6@5 d6@3 ~ d#6@2 b5@2 ~@5 b5@6 a5@3 f#5@3 b5@3 ~@3]/3",
  N: "[a#5@3 ~@3 a5@23 ~@3 g3@3 ~ c#4@3 e4@3 f4@3 f#4@3]/2", O: "[e4 c#4 e3@8 ~ d3 g#3 b3 c4 c#4]/2",
  P: "[b3 g#3 a3@8 ~@6]/2", Q: "~@9 a3@3 d4@2 ~ e4@2 ~ f#4@3 e4@2 d4", R: "[a3 g3 e3@8 ~@6]/2", S: "~ e3@6 e3@3 ~@14",
  T: "~@11 e3", U: "[~ g3@2 ~ g#3@2 ~ a3@41]/2", V: "[~ f#3@6 ~ e3@24 ~@16]/2", W: "~@11 [f5,a5]@9 g5@3 ~",
  X: "[~@2 a5@5 ~ d4@3 d4@2 ~@2 b3@2 ~ e4@39 ~@15]/3",
})).s("gm_overdriven_guitar").gain(0.32).pan(0.9)

// other · overdriven guitar · "od guitar 2"
const overdriven_guitar_2 = note("<~@33 A@2 B@3 ~@7 C@2 D@3 ~@11 E@4 F@4 ~@13 G@2 H I@2 ~@7 J@2 K@3 ~@15>".pickRestart({
  A: "[~@3 a5@23 ~ a5@3 ~@3 g5@4 ~@2 e5@6 d5@3]/2", B: "[e5@6 g5 a5@10 ~@7]/3",
  C: "[a4 [b4,c5] [d5,e5] [f5,g5,a5] b5@36 [a5,a#5]@2 ~ a5@3 g5@2]/2", D: "[~ a5@3 g5@48 ~@20]/3",
  E: "[~@5 a5@26 ~ a5@9 a5@6 g5@3 a5@32 ~@14]/4", F: "[~@5 a5@26 ~ a5@9 a5@6 g5@3 e5@27 ~@19]/4",
  G: "[~@6 a5@23 ~ a5@3 ~@3 g5@4 ~@2 e5@5 ~]/2", H: "d5@2 ~ e5@18 g5@3", I: "[a5@5 ~@3]/2",
  J: "[~@4 [a4,b4] [c5,d5,e5] [f5,g5,a5] b5@36 [a5,a#5]@2 ~ a5@2]/2", K: "[~ g5@3 a5@3 g5@48 ~@17]/3",
})).s("gm_overdriven_guitar").gain(0.36).pan(0)

// bass · electric bass finger · "bass"
const bass = note(`<
  ~ A B@8 C@5 D@8 E F G ~ H I J K E L E F@2 M N F@3 O P E Q R S Q@2 T P U Q V ~ W X Y Z@2 AA@6 AB@6 AC AD AE AF AG AH AI
  AJ AK AL AM F@2 AN AO F Q@2 AP AQ AR Q AS AT Q@2 AP AQ AR Q AU ~ AV AW AX@8
>`.pickRestart({
  A: "~ e2@3 e2@2 ~ e2@3 e2@3 ~ e2@2 e2@3 e2@2 ~ e2@2",
  B: "[~@2 e2@2 ~ e2@3 e2@2 ~ e2@3 e2@2 ~ e2@2 ~ e2@2 ~ e2@3 e2@2 ~ e2@3 e2@2 ~ e2@3 e2@2 ~ e2@2 ~ e2@2 ~ e2@3 b1@3 b1@2 d2@3 e2@3 g2@3 ~ e2 d2 a1@3 ~ g1@3 e2@2 ~ e2@3 e2@2 ~ e2@3 e2@2 ~ e2@2 ~ e2@2 ~ e2@3 e2@2 ~ e2@3 e2@2 ~ e2@3 e2@2 ~ e2@2 ~ e2@2 ~ e2@3 e2@2 ~ e2@3 e2@2 ~ e2@3 e2@2 ~ e2@2 ~ e2@2 ~ e2@3 b1@3 b1@2 d2@3 e2@3 g2@3 ~ e2 d2 a1@3 ~ g1@3 e2@2 ~ e2@3 e2@2 ~ e2@3 e2@2 ~ e2@2 ~ e2@2 ~ e2]/8",
  C: "[~@2 e2@2 ~ e2@3 e2@2 ~ e2@3 e2@2 ~ e2@2 ~ e2@2 ~ e2@3 e2@2 ~ e2@3 e2@2 ~ e2@3 e2@2 ~ e2@2 ~ e2@2 ~ e2@3 e2@2 ~ e2@3 e2@2 ~ e2@3 e2@2 ~ e2@2 ~ e2@2 ~ e2@3 a1@2 ~ a1@3 a1@3 a1@3 a1@3 a1@2 ~ a1@3 a1@2 ~ b1@3 b1@3 b1@3 b1@2 ~ b1@3 b1@2 ~ b1@3 b1]/5",
  D: "[~@2 e2@2 ~ e2@3 e2@2 ~ e2@3 e2@2 ~ e2@2 ~ e2@2 ~ e2@3 e2@2 ~ e2@3 e2@2 ~ e2@3 e2@2 ~ e2@2 ~ e2@2 ~ e2@3 e2@2 ~ e2@3 e2@2 ~ e2@3 e2@2 ~ e2@2 ~ e2@2 ~ e2@3 e2@2 ~ e2@3 e2@2 ~ e2@3 e2@2 ~ e2@2 ~ e2@2 ~ e2@3 e2@2 ~ e2@3 e2@2 ~ e2@3 e2@2 ~ e2@2 ~ e2@2 ~ e2@3 e2@2 ~ e2@3 e2@2 ~ e2@3 e2@2 ~ e2@2 ~ e2@2 ~ e2@3 a1@2 ~ a1@3 a1@3 a1@3 a1@3 a1@2 ~ a1@3 a1@2 ~@2 b1@2 ~ b1@2 ~ b1@3 b1@3 b1@2 ~ b1@2 b1@2 ~@2]/8",
  E: "b1@3 e2@3 e2@3 e2@3 e2@2 ~ e2@2 ~ e2@2 ~ e2@3", F: "e2@3 e2@3 e2@2 ~ e2@3 e2@3 e2@3 e2@2 ~ e2@3",
  G: "e2@2 ~ e2@3 ~@18", H: "~ e2 ~@6", I: "~@6 e1 g1", J: "g#1@3 a1@3 a1@3 a1@3 a1@2 ~ a1@2 ~ a1@3 a1@3",
  K: "a1@3 a1@2 ~ a1@2 ~ a1@2 ~ a1@3 a1@2 ~ a1@3 a1@2 ~", L: "e2@2 ~ b1@3 b1@3 b1@3 b1@3 b1@2 ~ b1@3 b1@3",
  M: "e2@3 b1@2 ~ b1@3 d2@2 ~ e2@3 g2@3 e2 ~ d2 a1@3", N: "g1@3 e2@2 ~ e2@3 e2@3 e2@3 e2@3 e2@2 ~ e2@3",
  O: "e2@3 a1@3 a1@3 a1@3 a1@3 a1@2 ~@2 a1@2 a1@3", P: "~ a1@2 ~ b1@3 b1@2 ~ b1@2 ~ b1@3 b1@2 ~ b1@2 ~ b1@2",
  Q: "~ e2@3 e2@3 e2@3 e2@3 e2@2 ~ e2@3 e2@3 e2@2", R: "~ e2@3 e2@2 ~ e2@3 e2@2 ~ e2@3 d3@3 g#2@3 d3@2",
  S: "~ g#2@3 d3@3 f#2@9 e2@3 e2@2 ~ e2@2", T: "~ e2@3 a1@2 ~ a1@2 ~ a1@2 ~ a1@3 a1@3 a1@3 a1@2",
  U: "~ b1@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@3 e2@2 ~ e2@2 ~ e2@2", V: "~ e2@2 ~ e2@3 ~@17", W: "~@4 e2@3 ~@17",
  X: "~@19 e1@3 g1@2", Y: "~ g#1@3 a1@2 ~ a1@3 a1@3 a1@2 ~ a1@2 ~ a1@3 a1@2",
  Z: "[~@2 a1@2 ~ a1@3 a1@3 a1@3 a1@3 a1@2 ~ a1@3 a1@2 b1@2 ~ e2@2 ~ e2@2 ~ e2@2 ~ e2@3 e2@2 ~ e2@2 ~ e2@2]/2",
  AA: "[~@2 e2@2 ~ b1@2 ~ b1@3 b1@2 ~ b1@3 b1@3 b1@3 b1@3 b1@2 e2@3 ~ e2@2 ~ e2@3 e2@2 ~ e2@2 ~ e2@3 e2@3 e2@2 ~ e2@3 e2@2 ~ e2@3 e2@2 ~ e2@2 ~ e2@2 ~ e2@3 e2@2 ~ e2@3 e2@2 ~ e2@3 e2@2 ~ e2@2 ~ e2@2 ~ e2@3 e2@3 b1@3 b1@3 d2@2 ~ e2@3 g2@3 e2 ~ d2 a1@3 g1@3 e2@2 ~ e2@3 e2@3 e2@2 ~ e2@2 ~ e2@2 ~ e2]/6",
  AB: "[~@2 e2@2 ~ e2@3 e2@2 ~ e2@3 e2@2 ~ e2@2 ~ e2@2 ~ e2@3 e2@2 ~ e2@3 e2@2 ~ e2@3 e2@2 ~ e2@2 ~ e2@2 ~ e2@3 e2@2 ~ e2@3 e2@2 ~ e2@3 e2@2 ~ e2@2 ~ e2@2 ~ e2@3 e2@3 a1@2 ~ a1@3 a1@3 a1@3 a1@2 ~ a1@2 ~ a1@3 a1@2 ~ a1@3 a1@3 a1@3 a1@3 a1@2 ~ a1@3 a1@2 ~ a1@3 b1@3 ~ b1@2 ~ b1@3 b1@2 ~ b1@3 b1@2 ~]/6",
  AC: "b1@2 ~ b1@2 ~ b1@3 b1@2 ~ b1@2 ~ b1@2 ~ b1@4 ~@2", AD: "a#1@4 ~@2 a1@3 a1@3 a1@3 a1@3 a1@2 ~ a1@3",
  AE: "a1!4 c#2 e2 g2 f#2", AF: "e2@3 c#2@3 e2@2 ~ e2@3 e2@3 e2@3 e2@2 ~ e2@2 ~",
  AG: "e2@3 e2@3 e1@2 ~ e1@3 g#1@3 b1@3 d2@3 c#2@3", AH: "b1@3 g#1@3 a1@3 a1@2 ~ a1@2 ~ a1@3 a1@3 a1@3",
  AI: "a1@2 ~ a1@3 c#2@2 ~ c#2@3 c#2@3 c#2@3 c#2@3 c#2@2 ~", AJ: "c#2@2 ~ c#2@2 ~ b1@3 b1@2 ~ b1@3 b1@3 b1@2 ~ b1@3",
  AK: "b1@2 ~ b1@6 b2@2 ~ b2@3 b2@3 b2@3 b2@3", AL: "b2@3 b2@6 b1@3 b1@2 ~ b1@3 b1@2 ~ b1@2 ~",
  AM: "b1@2 ~ b1@3 e2@3 e2@3 e2@2 ~ e2@2 ~ e2@2 ~ e2@3", AN: "e2@2 ~ e2@3 b1@2 ~ b1@3 d2@2 ~ e2@2 ~ g2@3 e2 ~ d2",
  AO: "a1@3 g1@3 e2@3 e2@2 ~ e2@3 e2@2 ~ e2@2 ~ e2@2 ~", AP: "~ e2@2 ~ e2@2 ~ a1@3 a1@2 ~ a1@3 a1@3 a1@2 ~ a1@2",
  AQ: "~ a1@2 ~ a1@3 b1@3 b1@3 b1@3 b1@3 b1@2 ~ b1@2", AR: "~ b1@2 ~ b1@3 e2@3 e2@3 e2@2 ~ e2@2 ~ e2@2 ~ e2@2",
  AS: "~ e2@2 ~ e2@2 ~ e2@2 ~ e2@3 e2@3 e2@2 ~ d3@3 g#2@2", AT: "~ d3@3 g#2@3 d3@3 f#2@9 e2@2 ~ e2@2",
  AU: "~ e2@2 ~ e2@3 e2@3 ~@14", AV: "~@7 e2@3 ~@14", AW: "~@11 e1",
  AX: "[~ g1@3 g#1@3 ~ a1@3 a1@2 ~ a1@3 a1@2 ~ a1@2 ~ a1@2 ~ a1@2 ~ a1@3 a1@3 a1@3 a1@3 a1@2 ~ a1@3 a1@2 ~ a1@3 b1@3 e2@2 ~ e2@3 e2@2 ~ e2@3 e2@2 ~ e2@3 e2@2 ~ e2@3 b1@3 b1@3 b1@3 b1@3 b1@3 b1@2 ~ b1@2 ~ e2@6 e2@3 e2@2 ~ e2@2 ~ e2@3 e2@3 e2@2 ~ e2@3 b2@3 a2@3 ~ g2@3 e2@39 ~@15]/8",
})).s("gm_electric_bass_finger").gain(0.48)

// chords · electric guitar clean · "cl guitar L"
const electric_guitar_clean = note(`<
  ~ A B@2 ~ A B@2 ~ A B@2 C@4 D@2 B@2 ~ E@3 F@2 ~ G ~ H@2 I@3 J@2 ~ K L@2 ~ M@3 N@2 O@2 ~ P@3 Q@2 ~ R ~ S@2 T@3 U@2 ~ V
  W@2 ~ X@2 Y@2 Z@2 AA@2 AB@4 ~ AC ~ AD ~ AC ~ AD ~ AE@3 ~ AF ~ AG ~ AE@3 ~ AH ~ AI ~ AJ@2 AK@5 ~
>`.pickRestart({
  A: "~@8 [e3,g#3,b3,e4]@3 ~@3 [e3,g#3,b3,e4]@3 ~@7", // E
  B: "[~@20 [d3,a3,d4,f#4]@11 ~ [e3,g#3,b3,e4]@3 ~@3 [e3,g#3,b3,e4]@3 ~@7]/2", // D E
  C: "[~@23 [e3,a3,c#4,e4]@2 ~ [e3,a3,c#4,e4]@24 [f#3,b3,d#4,f#4]@24 ~@6 [e3,g#3,b3,e4]@3 ~@3 [e3,g#3,b3,e4]@3 ~@7]/4", // A B E
  D: "[~@20 [d3,a3,d4,f#4]@6 ~@6 [e3,g#3,b3,e4]@3 ~@3 [e3,g#3,b3,e4]@3 ~@7]/2", // D E
  E: "[[e3,a3,c#4,e4]@2 ~ [e3,a3,c#4,e4]@24 [f#3,b3,d#4,f#4]@24 ~@6 [e3,g#3,b3,e4]@3 ~@3 [e3,g#3,b3,e4]@3 ~@6]/3", // A B E
  F: "[~@7 [d3,a3,d4,f#4]@2 [e3,g#3,b3,e4] ~@6]/2", G: "~ [e3,g#3,b3,e4] ~@6",
  H: "[[e3,a3,c#4,e4]@2 ~ [e3,a3,c#4,e4]@24 ~@21]/2", // A
  I: "[~ [e3,g#3,b3,e4]@8 [f#3,b3,d#4,f#4]@8 ~@2 [e3,g#3,b3,e4] ~ [e3,g#3,b3,e4] ~@2]/3", // E B E
  J: "[~@21 [d3,a3,d4,f#4]@11 ~ [e3,g#3,b3,e4]@3 ~@3 [e3,g#3,b3,e4]@3 ~@6]/2", // D E
  K: "~@3 [e3,g#3,b3,e4] ~ [e3,g#3,b3,e4] ~@2", // E
  L: "[~@21 [d3,a3,d4,f#4]@11 ~@2 e4@3 ~@3 e4@3 ~@5, ~@11 [e3,g#3,b3] ~ [e3,g#3,b3] ~@2]/2", // D E
  M: "[~ [e3,a3,c#4,e4]@2 ~ [a3,c#4,e4]@24 [f#3,b3,d#4,f#4]@24 ~@6 [e3,g#3,b3,e4]@3 ~@3 [e3,g#3,b3,e4]@3 ~@5, ~ e3@8 ~@15]/3", // A B E
  N: "[~@22 [d3,a3,d4,f#4]@6 ~@6 [e3,g#3,b3,e4]@3 ~@3 [e3,g#3,b3,e4]@3 ~@5]/2", // D E
  O: "[~@22 [d3,a3,d4,f#4]@11 ~ [e3,g#3,b3,e4]@3 ~@3 [e3,g#3,b3,e4]@3 ~@5]/2", // D E
  P: "[~@2 [c#4,e4]@2 [e3,a3,c#4,e4]@24 [f#3,b3,d#4,f#4]@24 ~@6 [e3,g#3,b3,e4]@3 ~@3 [e3,g#3,b3,e4]@3 ~@5, ~ [e3,a3]@2 ~@69]/3", // C#m A B E A5
  Q: "[~@22 [d3,a3,d4,f#4]@6 ~ [b3,e4]@3 ~@16, ~@28 [e3,g#3]@3 ~@17]/2", R: "~@5 [b3,e4]@3 ~@16, ~@4 [e3,g#3]@3 ~@17",
  S: "[~@2 [e3,a3,c#4,e4]@2 ~ [a3,c#4,e4]@24 ~@19, ~ e3@6 ~@5]/2", // A
  T: "[~@5 [g#3,b3,e4]@24 [f#3,b3,d#4,f#4]@24 ~@6 [e3,g#3,b3,e4]@3 ~@3 [e3,g#3,b3,e4]@3 ~@4, ~ e3@6 ~@11]/3", // E B E
  U: "[~@23 [d3,a3,d4,f#4]@11 ~ [e3,g#3,b3,e4]@3 ~@3 [e3,g#3,b3,e4]@3 ~@4]/2", // D E
  V: "~@11 [e3,g#3,b3,e4]@3 ~@3 [e3,g#3,b3,e4]@3 ~@4", // E
  W: "[~@24 f#4@11 ~ [b3,e4]@3 ~@3 [b3,e4]@3 ~@3, ~@23 [d3,a3,d4]@11 ~ [e3,g#3]@3 ~@3 [e3,g#3]@3 ~@4]/2", // E5 D5 E
  X: "[~@3 [e3,a3,c#4,e4]@2 ~ [c#4,e4]@24 ~@18, ~@5 [e3,a3]@24 ~@19]/2", // A C#m A5
  Y: "[~@2 [b3,d#4,f#4]@8 ~@4 [f#3,b3,d#4,f#4] ~, ~@5 f#3@24 ~@19]/2", Z: "[[f3,a#3,d4,f4] ~ [e3,a3,c#4,e4]@8 ~@6]/2",
  AA: "[~ [e3,g#3,b3,e4]@4 ~@3]/2", AB: "[~ [e3,a3,c#4,e4]@4 [g#3,c#4,e4,g#4]@4 [f#3,b3,d#4,f#4]@4 ~@3]/4",
  AC: "~@12 [e3,g#3,b3,e4]@3 ~@4 e4@3 ~@2, ~@6 [e3,g#3,b3] ~", // E
  AD: "~ f#4@11 ~ [b3,e4]@3 ~@3 [b3,e4]@3 ~@2, [d3,a3,d4]@11 ~ [e3,g#3]@3 ~@3 [e3,g#3]@3 ~@3", // E5 D5 E
  AE: "[~@4 [e3,a3,c#4,e4]@2 ~ [e3,a3,c#4,e4]@24 [f#3,b3,d#4,f#4]@24 ~@6 [e3,g#3,b3,e4]@3 ~@3 [e3,g#3,b3,e4]@3 ~@2]/3", // A B E
  AF: "~ [d3,a3,d4,f#4]@6 ~@6 [e3,g#3,b3,e4]@3 ~@3 [e3,g#3,b3,e4]@3 ~@2", // D E
  AG: "~ [d3,a3,d4,f#4]@11 ~ [e3,g#3,b3,e4]@3 ~@3 [e3,g#3,b3,e4]@3 ~@2", // D E
  AH: "~@2 [d4,f#4]@5 ~ [b3,e4]@3 ~@13, ~ [d3,a3]@6 [e3,g#3]@3 ~@14", AI: "~@8 [g#3,b3,e4]@3 ~@13, ~@7 e3@3 ~@14",
  AJ: "[~@5 [e3,a3,c#4,e4]@2 ~ [e3,a3,c#4,e4]@24 ~@16]/2", // A
  AK: "[~@8 [e3,g#3,b3,e4]@24 [f#3,b3,d#4,f#4]@21 [e3,g#3,b3,e4]@27 [e3,g#3,b3,e4]@2 ~ [e3,g#3,b3,e4]@3 ~ [e3,g#3,b3,e4]@3 [e3,g#3,b3,e4]@15 ~@15]/5", // E B E
})).s("gm_electric_guitar_clean").gain(0.22).pan(0.7)

// chords · electric guitar clean · "cl guitar R"
const electric_guitar_clean_2 = note(`<
  ~ A@2 B@2 C@2 B@2 C@2 B@2 D ~ C@2 E@2 F@2 G ~ H I ~@4 G ~@3 H I H J H I H J K ~ L M L M L N O ~ L M ~@4 O ~@3 P Q P R
  P Q P R S ~@12 T U T V T U W V X ~ W Y W Y W Z AA ~ W Y ~@4 AA ~@7
>`.pickRestart({
  A: "[~@11 [e3,g#3]@3 ~@3 [e3,g#3]@3 ~@3 [e3,g#3,b3]@3 ~@3 [e3,g#3,b3,e4]@3 ~@3 [e3,g#3,b3,e4]@3 [e3,g#3,b3,e4]@3 ~@7, ~@10 [b3,e4]@3 ~@3 [b3,e4]@3 ~@3 e4@3 ~@23]/2", // E E5
  B: "[~@11 [e3,g#3,b3,e4]@3 ~@3 [e3,g#3,b3,e4]@3 ~@3 [e3,g#3,b3,e4]@3 ~@22]/2", // E
  C: "[~@11 [e3,g#3,b3,e4]@3 ~@3 [e3,g#3,b3,e4]@3 ~@3 [e3,g#3,b3,e4]@3 ~@3 [e3,g#3,b3,e4]@3 ~@3 [e3,g#3,b3,e4]@3 [e3,g#3,b3,e4]@3 ~@7]/2", // E
  D: "e4 [e3,a3,c#4] ~@22", // A
  E: "[~@12 e3@3 ~@3 e3@2 ~@4 e3@2 ~@4 e3@2 ~@4 e3@2 ~ e4@3 ~@6, ~@11 [g#3,b3,e4]@3 ~@3 [g#3,b3,e4]@3 ~@3 [g#3,b3,e4]@3 ~@3 [g#3,b3,e4]@3 ~@3 [g#3,b3,e4]@3 [e3,g#3,b3]@3 ~@7]/2", // E
  F: "[~@12 [e3,g#3]@3 ~@3 [e3,g#3]@3 ~@3 [e3,g#3]@2 ~@22, ~@11 [b3,e4]@3 ~@3 [b3,e4]@3 ~@3 [b3,e4]@3 ~@22]/2", // E E5
  G: "~ [e3,a3,c#4,e4] ~@22", H: "~@4 [e3,g#3,b3,e4] ~ [e3,g#3,b3,e4] ~",
  I: "[e3,g#3,b3,e4]@3 ~@3 [e3,g#3,b3,e4]@3 ~@3 [e3,g#3,b3,e4]@2 ~ [e3,g#3,b3,e4]@3 ~@6", // E
  J: "~ e3@2 ~@21, [g#3,b3,e4] ~@7", K: "~@2 [e3,a3,c#4,e4] ~@21", L: "~@13 [e3,g#3,b3,e4]@3 ~@3 [e3,g#3,b3,e4]@3 ~@2",
  M: "~ [e3,g#3,b3,e4]@2 ~@4 [e3,g#3,b3,e4]@3 ~@3 [e3,g#3,b3,e4]@3 [e3,g#3,b3,e4]@3 ~@5", N: "~ [e3,g#3,b3,e4]@3 ~@20",
  O: "~@3 [e3,a3,c#4,e4] ~@20", P: "~@14 [e3,g#3,b3,e4]@3 ~@3 [e3,g#3,b3,e4]@3 ~",
  Q: "~@2 [e3,g#3,b3,e4]@3 ~@3 [e3,g#3,b3,e4]@2 ~@4 [e3,g#3,b3,e4]@3 [e3,g#3,b3,e4]@3 ~@4", // E
  R: "~@2 [e3,g#3,b3,e4]@3 ~@19", S: "~@4 [e3,a3,c#4,e4] ~@19", T: "~@16 e3@3 ~@3 e3@2, ~@5 [g#3,b3,e4] ~ [g#3,b3,e4]",
  U: "~@4 e3@2 ~@4 e3@2 ~@4 e3@2 ~ e4@2 ~@3, ~ [g#3,b3,e4] ~ [g#3,b3,e4] ~ [g#3,b3,e4] [e3,g#3,b3] ~", // E
  V: "~@2 [e3,g#3] ~@9, ~ [b3,e4] ~@6", W: "~@16 [e3,g#3,b3,e4]@3 ~@3 [e3,g#3,b3,e4]@2", X: "~@5 [a3,c#4,e4] e3 ~@17",
  Y: "~@4 [e3,g#3,b3,e4]@3 ~@3 [e3,g#3,b3,e4]@3 ~@3 [e3,g#3,b3,e4]@3 [e3,g#3,b3,e4]@3 ~@2", // E
  Z: "~@4 [e3,g#3,b3,e4]@3 ~@17", AA: "~@6 [e3,a3,c#4,e4] ~@17",
})).s("gm_electric_guitar_clean").gain(0.18).pan(0.3)

// drums · kick
const kick = s("bd").struct("<~ A@9 B@19 C@16 D@17 E@10 F G@16 A@21 H I ~ J>".pickRestart({
  A: "~ x ~@5 x ~@5 x ~@5 x ~@4", B: "~ x ~@2 x ~@2 x ~@2 x ~", C: "~ x ~ x ~ x ~ x", D: "~@2 x ~@2 x ~@2 x ~@2 x",
  E: "~@5 x ~@5 x ~@5 x ~@5 x", F: "~ x!3", G: "x!4", H: "~@5 x ~@8 x ~@5 x ~@3", I: "~ x ~@2 x ~@4 x ~@2",
  J: "~@3 x ~@4",
})).gain(0.29)

// drums · snare
const snare = s("sd").struct(`<
  A B C@6 D B C@12 E F C ~@3 G F H@2 I J H@2 K L H@3 M@9 N O M ~@3 P O M@2 Q R S@6 T U S@2 V W@2 X W X W@3 Y Z W@2 AA Z
  W@6 AB@6 AC AD AB AE ~@2 AF AD AB@3 AG AH ~ AI
>`.pickRestart({
  A: "~@16 x ~ x!2 ~@2 x ~", B: "x ~@6 x ~@11 x ~@4", C: "~@2 x ~@2 x", D: "~@8 x ~@8 x!2 ~ x ~@2 x",
  E: "~@8 x ~@9 x!3 ~@3", F: "x!2 ~@7 x ~@11 x ~@2", G: "~@18 x!2 ~ x ~@2", H: "~@3 x ~@3 x",
  I: "~@9 x ~@8 x ~@2 x!2 ~", J: "x ~@2 x ~@3 x", K: "~@9 x ~@8 x ~ x!2 ~@2", L: "x ~ x ~@6 x ~@11 x ~@2",
  M: "~@5 x ~@5 x", N: "~@10 x ~@8 x ~ x!2 ~", O: "~ x ~ x ~@6 x ~@11 x ~", P: "~@19 x ~ x!2 ~",
  Q: "~@11 x ~@8 x ~@2 x", R: "x!2 ~@9 x ~@11 x", S: "~@11 x ~@11 x", T: "~@11 x ~@8 x ~ x!2",
  U: "~@2 x ~ x ~@6 x ~@11 x", V: "~ x", W: "x!2", X: "x!2 ~@2 x ~@3", Y: "x ~@20 x ~ x", Z: "x ~@2 x ~ x ~@6 x ~@11",
  AA: "x ~@11 x ~@8 x ~ x", AB: "~ x ~@11 x ~@10", AC: "~ x ~@11 x ~@8 x ~", AD: "x!2 ~@2 x ~ x ~@6 x ~@10",
  AE: "~ x ~@22", AF: "~@23 x", AG: "~ x ~@5 x ~@4", AH: "~ x ~@2 x ~@7", AI: "~@7 x!3 ~@14",
})).gain(0.29)

// drums · low tom
const low_tom = s("lt").struct("<~@81 [~@2 x!4 ~@2] ~@29 [~@5 x ~@2] ~@2>").gain(0.32)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A B C@2 D C@2 E D C@3 D@2 C@6 D F G H I@2 J K G H L M G N@2 M G N@3 L@2 B@6 O P Q R S@2 T U Q R O V Q C@3 W C@2 X Y
  C@2 Z AA N AB N AB AA@2 N AC AB N@2 AD AB N@2 B AA@2 B@6 AE AF AG AH AI@2 AJ AI AG AH AE C AK AL ~@2
>`.pickRestart({
  A: "~@4 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~", B: "~ x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~",
  C: "~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x", D: "~@5 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x",
  E: "~@2 x ~@2 x ~@2 x ~@2 x ~@12", F: "~@5 x ~@2 x ~@2 x ~@12", G: "~@2 x!6", H: "x!6 ~ x", I: "~ x ~ x ~ x ~ x",
  J: "~@3 x ~ x ~ x", K: "~ x ~ x ~ x ~@2", L: "x ~ x!6", M: "x!5 ~@3", N: "x!8",
// … 31 more lines

More by Robert Palmer