Strudelify

Lucky Lips

Cliff Richard

KeyB majorTempo145 bpm
0:00/0:00
// Lucky Lips — Richard Cliff
// 145 bpm, 4/4, key B major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 96 bars on a 24-step grid, each part at one level. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): STEEL GTR.
setcpm(145/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(`<
  A B C D E F G H I B J K J K A L M F N O P Q R S I B J K J K A L M F N O P Q R S E F G H I B J K J K A L M F N O P Q R
  S I B J K J K A L M F N O P Q R S I B J K J K A L M F N O P Q T U V W X@2
>`.pickRestart({
  A: "e1@5 ~@7 g#1@5 ~@7", B: "b1@6 ~@4 c#2@5 ~ b1@2 g#1@5 ~", C: "a1@7 ~@5 c#2@5 ~ e2@5 ~",
  D: "b1@5 ~ a1@6 g#1@5 ~ f#1@6", E: "e1@6 ~@6 g#1@7 ~@5", F: "b1@7 ~@3 c#2@5 ~ b1@2 g#1@5 ~",
  G: "a1@9 ~@3 c#2@4 a1@2 e2@6", H: "b1@6 a1@6 g#1@6 f#1@5 ~", I: "e1@4 ~@8 g#1@5 ~@7", J: "b1@5 ~@7 d#2@5 ~@7",
  K: "f#2@5 ~@5 g#2@5 ~ f#2 ~ d#2@4 ~@2", L: "b1@5 ~@5 c#2@5 ~ b1@2 g#1@4 ~@2", M: "e1 ~ g#1 ~",
  N: "a1@3 ~@3 c#2@4 ~@2", O: "e2@7 ~@3 f#2@5 ~ e2 ~ c#2@4 ~@2", P: "b1@7 ~@5 a1@7 ~@5", Q: "g#1@2 ~ f#1@2 ~",
  R: "b1 ~@5", S: "~@4 b1 ~ b1@2 ~@2 b1 ~ b1@2 ~@2 b1 ~ b1@2 ~@2 b1@2", T: "b1@5 ~ a1@5 ~ g#1@5 ~ f#1@5 ~",
  U: "e1@5 ~ e1@5 ~ g#1@6 b1@5 ~", V: "a1@5 ~ a1@5 ~ c#2@6 e2@5 ~", W: "e2@5 ~ c#2@6 b1@6 g#1@5 ~", X: "[e1@9 ~@7]/2",
})).s("gm_electric_bass_finger").gain(0.48)

// chords · piano · "A.PIANO 2"
const piano = note(`<
  A B C D E F G H I J K L M N O P Q R S T U V W X Y Z AA AB AC@2 AD AE AF AG AH AI AJ AK AL AM E F G H I AN K L M N O P
  AO R S T U AP W AQ Y Z AA AR AC@2 AS AE AF AG AH AI AJ AK AL AM Y Z AA AR AC@2 AS AE AT AG AH AI AJ AK AU AV AW AX
  AY@2
>`.pickRestart({
  A: "e2@4 [b3,e4,g#4] ~@5 [b3,e4,g#4] ~ g#2@4 [b3,e4,g#4] ~@5 [b3,e4,g#4] ~", // E
  B: "~@4 [b3,e4,g#4] ~@5 [b3,e4,g#4] ~@5 [b3,e4,g#4] ~ g#2@4 [b3,e4,g#4] ~, b2@6 ~@4 c#3@5 ~ b2@2 ~@6", // E
  C: "~@4 [c#4,e4,a4] ~@5 [c#4,e4,a4] ~ c#3@4 [c#4,e4,a4] ~ e3@4 [c#4,e4,a4] ~, a2@7 ~@17", // A
  D: "~@4 [b3,d#4,f#4] ~@5 [b3,d#4,f#4] ~ g#2@4 [b3,d#4,f#4] ~@5 [b3,d#4,f#4] ~, b2 a2 ~ f#2", // B
  E: "~@4 [b3,e4,g#4] ~@5 [b3,e4,g#4] ~@5 [b3,e4,g#4] ~@5 [b3,e4,g#4] ~, e2@6 ~@6 g#2@7 ~@5", // E
  F: "~@4 [b3,e4,g#4] ~@5 [b3,e4,g#4] ~@5 [b3,e4,g#4] ~ g#2@4 [b3,e4,f#4,g#4] ~, b2@7 ~@3 c#3@5 ~ b2@2 ~@6", // E
  G: "~@4 [c#4,e4,a4] ~@5 [c#4,e4,a4] ~ c#3@4 [c#4,e4,a4] ~@5 [c#4,e4,a4] ~, a2@9 ~@7 a2@2 e3@6", // A
  H: "~@4 [b3,d#4,f#4] ~@5 [b3,d#4,f#4] ~@5 [b3,d#4,f#4] ~ f#2@4 [b3,d#4,f#4] ~, b2 a2 g#2 ~", // B
  I: "e2@4 [b3,e4,g#4]@2 ~@4 [b3,e4,g#4]@2 g#2@4 [b3,e4,g#4]@3 ~@3 [b3,e4,g#4]@2", // E
  J: "~@4 [b3,e4,g#4]@3 ~@3 [b3,e4,g#4]@2 ~@4 [b2,b3,e4,g#4]@2 g#2@4 [b3,e4,g#4]@2, b2@6 ~@4 c#3@5 ~@9", // E
  K: "b2@2 [b3,d#4,f#4] ~@2 [b3,d#4,f#4] d#3@2 [d#4,f#4] ~@2 [d#4,f#4], ~@16 b3 ~@5 b3 ~", // B D#m
  L: "f#3@2 [b3,d#4,f#4] ~@2 [b3,d#4,f#4] ~@2 [f#3,b3,d#4,f#4] d#3@2 [b3,d#4,f#4], ~@10 g#3@5 ~@9", // B
  M: "b2@2 [b3,d#4,f#4] ~@2 [b3,d#4,f#4] d#3@2 [b3,d#4,f#4] ~@2 [b3,d#4,f#4]", // B
  N: "f#3@4 [b3,d#4,f#4]@3 ~@3 [b3,d#4,f#4]@2 ~@4 [b3,d#4,f#4]@2 d#3@4 [b3,d#4,f#4]@2, ~@10 g#3@5 ~ f#3 ~@7", // B
  O: "e2@4 [b3,e4,g#4]@3 ~@3 [b3,e4,g#4]@2 g#2@4 [b3,e4,g#4]@2 ~@4 [b3,e4,g#4]@2", // E
  P: "b2@4 [b3,e4,g#4]@2 ~@4 [b3,e4,g#4]@3 ~@3 [b2,b3,e4,g#4]@2 g#2@4 [b3,e4,g#4]@2, ~@10 c#3@5 ~@9", // E
  Q: "~@4 [b3,e4,g#4] ~@5 [b3,e4,g#4] ~ g#2@4 [b3,e4,g#4] ~@5 [b3,e4,g#4] ~, e2 ~@3", // E
  R: "b2@4 [b3,e4,g#4] ~@5 [b3,e4] ~@5 [b2,e4,g#4]@2 ~@4 [e4,g#4]@2, ~@10 c#3@5 ~@3 g#2@6, ~@10 g#4@2 ~@4 b3 ~@5 b3 ~", // E E5 E
  S: "a2@4 [c#4,e4,a4]@2 ~@4 [c#4,e4,a4] ~ c#3@4 [e4,a4]@2 ~@4 [c#4,e4,a4] ~, ~@16 c#4 ~@7", // A A5 A
  T: "e3@4 [c#4,a4] ~@5 [e4,a4]@2 ~@4 [e3,c#4,e4,a4]@2 c#3@4 [e4,a4] ~, ~@2 e4 ~@2 f#3@3 ~@4, ~@10 c#4 ~@11 c#4@2", // F#m A5 A A5
  U: "~@4 [b3,f#4] ~@5 [b3,d#4,f#4] ~@5 [b3,f#4] ~@5 [b3,f#4] ~, b2@7 ~@5 a2@8 ~@4, ~@2 d#4 ~@5 d#4 ~@2 d#4", // B5 B B5
  V: "~@4 [b3,d#4,f#4] ~@5 [d#4,f#4]@2 ~@4 [b3,f#4] ~@5 [b3,d#4,f#4] ~, g#2@9 ~ b3 ~ f#2@9 ~@3, ~@8 d#4 ~@3", // B D#m B5 B
  W: "[b3,d#4,f#4] ~@7, b2@5 ~@19", // B
  X: "~@4 [b2,d#4,f#4,b4] ~ [b2,d#4,f#4,b4]@2 ~@2 [b2,d#4,f#4,b4] ~ [b2,d#4,f#4,b4]@2 ~@2 [b2,d#4,f#4,b4] ~ [b2,d#4,f#4,b4]@2 ~@2 [b2,b4]@2, ~@22 [d#4,f#4] ~", // B D#m
  Y: "e2@2 ~@2 [b3,e4,g#4] ~ g#2@2 ~@2 [g#2,b3,g#4] ~ b2@3 ~ [b2,e4]@2 c#3@3 ~ [b2,e4]@2, ~@4 e2@2 ~@4 e4@2 ~@4 [b3,g#4] ~@5 [b3,g#4] ~", // E G#m E5 E
  Z: "e2@2 ~@2 [e2,e4]@2 g#2@2 ~@2 [e4,g#4]@2 b2@3 ~ [b2,e4]@2 c#3@3 ~ [b2,b3,e4,g#4] ~, ~@4 [b3,g#4] ~@5 [g#2,b3] ~@5 [b3,g#4] ~@7", // E E5 E G#m E
  AA: "b2@2 ~@2 [b3,d#4,f#4] ~ d#3@2 ~@2 [b3,d#4,f#4] ~ f#3@3 ~ [b3,d#4,f#4] ~ g#3@4 [b3,d#4,f#4] ~, ~@2 b2 ~@2 d#3 ~@2 f#3 ~@2 f#3", // B
  AB: "b2@2 ~@2 [b3,d#4,f#4] ~ d#3@2 ~@2 [b3,d#4,f#4] ~ f#3@3 ~ [b3,d#4,f#4] ~ g#3@3 ~ [b3,d#4,f#4] ~, ~@2 b2 ~@2 d#3 ~@2 f#3 ~@2 f#3", // B
  AC: "b2@2 ~@2 [b3,d#4,f#4] ~ d#3@2 ~@2 [b3,d#4,f#4] ~ f#3@2 ~@2 [b3,d#4,f#4] ~ g#3@3 ~ [f#3,b3,d#4,f#4] ~, ~@2 b2 ~@2 d#3 ~@2 f#3 ~@3", // B
  AD: "e2@2 ~@2 [b3,e4,g#4] ~ g#2@2 ~@2 [b3,e4,g#4] ~ b2@2 ~@2 [b3,e4,g#4] ~ c#3@3 ~ [b2,b3,e4,g#4] ~, ~@2 e2 ~@2 g#2 ~@2 b2 ~@3", // E
  AE: "e2@2 ~@2 [b3,e4,g#4] ~ g#2@2 ~@2 [g#2,b3,e4,g#4] ~ b2@2 ~@2 [b3,e4,g#4] ~ c#3@2 ~@2 [b3,e4,g#4] ~, ~@2 e2 ~@5 b2 ~@2 b2", // E
  AF: "e2 ~ [e2,b3,e4,g#4] g#2 ~ [b3,e4,g#4] b2 ~ [b2,b3,e4,g#4] c#3 b2 [c#3,b3,e4,g#4], ~@10 g#2 ~@13", // E C#m7
  AG: "e2 ~ [e2,e4,g#4] g#2 ~ [g#2,b3,e4,g#4] b2 ~ [b2,e4,g#4] c#3 b2 [e4,g#4], ~@4 b3 ~@11 b3 ~@5 [c#3,b3] ~", // E C#7
  AH: "a2 ~ [a2,c#4,e4,a4] c#3 ~ [c#3,e4,a4] e3 ~ [e3,c#4,e4,a4] f#3 e3 [c#4,e4,a4], ~@10 c#4 ~@11 f#3 ~", // A
  AI: "a2 ~ [a2,c#4,e4,a4] c#3 ~ [c#3,e4,a4] e3 ~ [e3,c#4,e4,a4] f#3 e3 [f#3,e4], ~@10 c#4 ~@11 [c#4,a4] ~", // A F#7 F#m
  AJ: "d#3@2 ~@2 [b3,d#4,f#4]@2 ~@4 [d#3,b3,d#4] ~ c#3@4 [d#4,f#4]@2 c#3@3 ~ [d#4,f#4]@2, ~@4 d#3@4 ~@2 f#4@2 ~@4 b3 ~@5 [c#3,b3] ~", // B G#m D#m C#7
  AK: "b2@4 [b3,d#4,f#4]@2 b2@2 ~@2 [d#4,f#4]@2 a2@3 ~ [d#4,f#4]@2 a2@2 ~@2 [a2,b3,d#4,f#4] ~, ~@10 [b2,b3] ~@5 b3 ~@7", // B D#m B7 B
  AL: "[b2,b3,d#4,f#4] ~@7", // B
  AM: "~@4 [b2,d#4,f#4,b4] ~ [b2,d#4,f#4,b4]@2 ~@2 [b2,d#4,f#4,b4] ~ [b2,d#4,f#4,b4]@2 ~@2 [b2,d#4,f#4,b4] ~ [b2,d#4,f#4,b4]@2 ~@2 [b2,d#4,f#4,b4]@2", // B
  AN: "~@4 [b3,e4,g#4]@3 ~@3 [b3,e4,g#4]@2 ~@4 [b2,b3,e4,g#4]@2 g#2@4 [b3,e4,g#4]@2, b2@3 ~@2 c#3@3 ~@4", // E
  AO: "~@4 [b3,e4,g#4] ~@5 [b3,e4,g#4] ~ g#2@4 [b3,g#4] ~@5 [b3,e4,g#4] ~, e2@3 ~@5 e4 ~@3", // E
  AP: "~@4 [b3,f#4] ~@5 [d#4,f#4]@2 ~@4 [b3,f#4] ~@5 [b3,d#4,f#4] ~, g#2@3 ~ f#2@3 ~, ~@4 d#4@2 ~@4 b3 ~@5 d#4@2 ~@6", // B5 D#m B5 B
  AQ: "~@4 [b2,d#4,f#4,b4] ~ [b2,d#4,f#4,b4]@2 ~@2 [b2,d#4,f#4,b4] ~ [b2,d#4,f#4,b4]@2 ~@2 [b2,d#4,f#4,b4] ~ [b2,d#4,f#4,b4]@2 ~@2 [b2,f#4,b4]@2, ~@22 d#4 ~", // B B5
  AR: "b2@2 ~@2 [b3,d#4,f#4] ~ d#3@2 ~@2 [d#3,b3,f#4] ~ f#3@3 ~ [b3,d#4,f#4] ~ g#3@3 ~ [b3,d#4,f#4] ~, ~@2 b2 ~@2 d#4 ~@2 f#3 ~@2 f#3", // B
  AS: "e2@2 ~@2 [b3,e4,g#4] ~ g#2@2 ~@2 [b3,e4,g#4] ~ b2@2 ~@2 [b3,e4,g#4] ~ c#3@3 ~ [b2,b3,e4,g#4] ~, f2 ~@3 e2@2 ~@4 g#2@2 ~@4 b2@2 ~@6", // E
  AT: "e2 ~ [e2,b3,e4,g#4] g#2 ~ [g#2,b3,e4,g#4] b2 ~ [b2,b3,e4,g#4] c#3 b2 [c#3,b3,e4,g#4]", // E C#m7
  AU: "d#3@4 [d#4,f#4]@2 c#3@4 [b3,d#4] ~ b2@4 [d#4,f#4] ~ a2@4 [b3,d#4,f#4] ~, ~@4 b3 ~@5 f#4@2 ~@4 b3@2 ~@6", // D#m B D#m B
  AV: "e2@4 [b3,e4,g#4] ~ e2@4 [b3,e4,g#4] ~ g#2@4 [b3,e4,g#4] ~ b2@4 [b3,e4,g#4] ~", // E
  AW: "a2@4 [c#4,e4,a4] ~ a2@4 [c#4,e4,a4] ~ c#3@4 [c#4,e4,a4] ~ e3@4 [c#4,e4,a4] ~", // A
  AX: "e3@4 [b3,e4,g#4] ~ c#3@4 [b3,e4,g#4] ~ b2@4 [b3,e4,g#4] ~ g#2@4 [b3,e4,g#4] ~", // E
  AY: "[[b3,e4,g#4]@31 ~@17, e2@13 ~@11]/2", // E
})).s("gm_piano").gain(0.23)

// other · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note(`<
  A B C D E F G D H I J K L M N O P Q R S T U V W X Y Z AA AB@2 AC AD AE AF AG AH AI AJ V AK AL F G D H I J M L M N O P
  Q R S T U V W X Y Z AA AB@2 AC AD AE AF AG AH AI AJ V AK X Y Z AA AB@2 AC AD AE AF AG AH AI AJ AM AN AO AP AQ@2
>`.pickRestart({
  A: "e2@4 ~@8 g#2@5 ~@7", B: "b2@5 ~@5 c#3@4 ~@2 b2@2 g#2@4 ~@2", C: "a2@6 ~@6 c#3@4 ~@2 e3@5 ~",
  D: "d#3@2 ~ c#3@2 ~ b2@2 ~ a2@2 ~", E: "e2@7 ~@5 g#2@7 ~@5, f2 ~@7", F: "b2@7 ~@3 c#3@4 ~@2 b2@2 g#2@4 ~@2",
  G: "a2@9 ~@3 c#3@4 ~@2 e3@5 ~", H: "e2 ~@2 g#2 ~@2", I: "b2@4 ~@6 c#3@5 ~ b2@2 g#2@2 b2@2 g#2@2",
  J: "b2@5 ~@7 d#3@4 ~@8", K: "f#3@2 ~@3 g#3@2 ~ f#3 d#3 f#3 d#3", L: "b2 ~@2 d#3 ~@2",
  M: "f#3@4 ~@6 g#3@4 ~@2 f#3@2 d#3@2 f#3@2 d#3 ~", N: "e2@3 ~@3 g#2@2 ~@4", O: "b2@2 ~@3 c#3@2 ~ b2 g#2 b2 g#2",
  P: "e2@2 ~@3 e2 g#2@2 ~@3 g#2", Q: "b2@4 ~@6 b2@2 c#3@2 ~@2 c#3@2 b2@2 c#3@2 b2 ~", R: "a2@2 ~@3 a2 c#3@2 ~@3 c#3",
  S: "e3@3 ~@9 f#3 ~@3 f#3@2 e3 ~ f#3@2 e3@2, ~@5 e3@2 ~@5", T: "d#3@3 ~@7 d#3@2 c#3@4 ~@6 c#3@2",
  U: "b2@5 ~@5 b2@2 a2@4 ~@6 a2 ~", V: "b2 ~@7", W: "~@4 b2 ~ b2 ~@3 b2 ~ b2@2 ~@2 b2 ~ b2@2 ~@2 b2@2",
  X: "e2@2 ~@2 e2@2 g#2@2 ~@2 g#2 ~ b2@3 ~ b2@2 c#3@3 ~ b2@2",
  Y: "e2@2 ~@2 e2@2 g#2@2 ~@2 g#2 ~ b2@2 ~@2 b2@2 c#3@3 ~ b2 ~",
  Z: "b2@2 ~@2 b2@2 d#3@2 ~@2 d#3@2 f#3@3 ~ f#3@2 g#3@4 f#3@2",
  AA: "b2@2 ~@2 b2@2 d#3@2 ~@2 d#3 ~ f#3@3 ~ f#3@2 g#3@3 ~ f#3 ~",
  AB: "b2@2 ~@2 b2@2 d#3@2 ~@2 d#3@2 f#3@2 ~@2 f#3@2 g#3@3 ~ f#3 ~",
  AC: "[e2,f2]@2 ~@2 e2@2 g#2@2 ~@2 g#2@2 b2@2 ~@2 b2@2 c#3@3 ~ b2 ~", // Fmaj7
  AD: "e2@2 ~@2 e2@2 g#2@2 ~@2 g#2 ~ b2@2 ~@2 b2@2 c#3@2 ~@2 b2@2",
  AE: "e2@2 ~@2 e2@2 g#2@2 ~@2 g#2 ~ b2@2 ~@2 b2@2 c#3@2 b2@2 c#3@2",
  AF: "e2@2 ~@2 e2@2 g#2@2 ~@2 g#2@2 b2@2 ~@2 b2@2 c#3@2 b2@2 c#3 ~",
  AG: "a2@2 ~@2 a2@2 c#3@2 ~@2 c#3@2 e3@2 ~@2 e3@2 f#3@2 e3@2 f#3 ~", AH: "a2 ~ a2 c#3 ~ c#3 e3 ~ e3 f#3 e3 f#3",
  AI: "d#3@2 ~@2 d#3@4 ~@2 d#3 ~ c#3@4 ~@2 c#3@2 ~@2 c#3 ~", AJ: "b2@4 ~@2 b2@2 ~@2 b2 ~ a2@3 ~@3 a2@2 ~@2 a2 ~",
  AK: "~@4 b2 ~ b2@2 ~@2 b2 ~ b2@2 ~@2 b2 ~ b2@2 ~@2 b2 ~", AL: "e2@7 ~@5 g#2@7 ~@5",
  AM: "d#3@5 ~ c#3@5 ~ b2@5 ~ a2@5 ~", AN: "e2@4 ~@2 e2@5 ~ g#2@5 ~ b2@5 ~", AO: "a2@4 ~@2 a2@5 ~ c#3@5 ~ e3@4 ~@2",
  AP: "e3@5 ~ c#3@4 ~@2 b2@4 ~@2 g#2@4 ~@2", AQ: "[e2@13 ~@11]/2",
})).s("gm_electric_guitar_muted").gain(0.28).pan(0.6)

// chords · acoustic guitar steel · "STEEL GTR"
const acoustic_guitar_steel = note("<~@19 A ~@15 A ~@19 A ~@15 A ~@15 A ~@8>".pickRestart({
  A: "~@11 a3",
})).s("gm_acoustic_guitar_steel").gain(0.12).pan(0.2)

// chords · electric guitar clean · "CLEAN GTR"
const electric_guitar_clean = note(`<
  A B@2 C A@2 D C E A F C@3 A@2 G@2 H I J@2 K L E A F C@3 A@2 G@2 H I J@2 K L A@2 D C E A F C@3 A@2 G@2 H I J@2 K L E A
  F C@3 A@2 G@2 H I J@2 K L E A F C@3 A@2 G@2 H I J@3 G H G M ~
>`.pickRestart({
  A: "[g#3,b3,e4]@2 [g#3,b3,e4] [g#3,b3,e4]@2 [g#3,b3,e4]@3 [g#3,b3,e4] [g#3,b3,e4]@2 [g#3,b3,e4]", // E
  B: "[[g#3,b3,e4]@2 [g#3,b3,e4] [g#3,b3,e4]@2 [g#3,b3,e4]@3 [g#3,b3,e4] [g#3,b3,e4]@2 [g#3,b3] [a3,c#4]@2 [a3,c#4,e4] [a3,c#4,e4]@2 [a3,c#4,e4]@3 [a3,c#4,e4] [a3,c#4,e4]@2 [c#4,e4], ~@22 e4@5 ~@21]/2", // E G#m A C#m
  C: "[f#3,b3,d#4]@2 [f#3,b3,d#4] [f#3,b3,d#4]@2 [f#3,b3,d#4]@3 [f#3,b3,d#4] [f#3,b3,d#4]@2 [f#3,b3,d#4]", // B
  D: "[a3,c#4,e4]@2 [a3,c#4,e4] [a3,c#4,e4]@2 [a3,c#4,e4]@3 [a3,c#4,e4] [a3,c#4,e4]@2 [c#4,e4]", // A C#m
  E: "[g#3,b3,e4]@2 [g#3,b3,e4] [g#3,b3,e4]@2 [g#3,b3,e4]@3 [g#3,b3,e4] [g#3,b3,e4]@3", // E
  F: "[f#3,b3,d#4]@2 [f#3,b3,d#4] [f#3,b3,d#4]@2 [f#3,b3,d#4]@3 [f#3,b3,d#4] [f#3,b3,d#4]@3", // B
  G: "[g#3,b3,e4]@3 [g#3,b3,e4]@2 [g#3,b3,e4]@3 [g#3,b3,e4] [g#3,b3,e4]@2 [g#3,b3,e4]", // E
  H: "[a3,c#4,e4]@3 [a3,c#4,e4]@2 [a3,c#4,e4]@3 [a3,c#4,e4] [a3,c#4,e4]@2 [a3,c#4,e4]", // A
  I: "[a3,c#4,e4]@3 [a3,c#4,e4]@2 [a3,c#4,e4]@3 [a3,c#4,e4] [a3,c#4,e4]@2 [c#4,e4]", // A C#m
  J: "[f#3,b3,d#4]@3 [f#3,b3,d#4]@2 [f#3,b3,d#4]@3 [f#3,b3,d#4] [f#3,b3,d#4]@2 [f#3,b3,d#4]", K: "[f#3,b3,d#4] ~@5",
  L: "~@2 [f#3,b3,d#4] [f#3,b3,d#4]@2 [f#3,b3,d#4] [f#3,b3,d#4]@2 [f#3,b3,d#4] [f#3,b3,d#4]@2 [f#3,b3,d#4]", // B
  M: "[g#3,b3,e4]", // E
})).s("gm_electric_guitar_clean").gain(0.18).pan(0.9)

// drums · kick
const kick = s("bd").struct("<A@22 B C A@14 B C A@18 B C A@14 B C A@18 B ~>".pickRestart({
  A: "x ~@4 x!2 ~@5", B: "x", C: "~ x!3",
})).gain(0.48)

// drums · snare
const snare = s("sd").struct(`<
  A B A B A B A B A@3 B A@3 B A@3 B A@2 C D A@3 B A@3 B A@3 B A@2 C D A B A B A@3 B A@3 B A@3 B A@2 C D A@3 B A@3 B A@3
  B A@2 C D A@3 B A@3 B A@3 B A@3 B A E C ~
>`.pickRestart({
  A: "~ x ~ x", B: "~@3 x ~ x ~@3 x ~@2", C: "x", D: "~@2 x!2 ~ x!2 ~ x!2 ~ x", E: "~@3 x ~ x ~@2 x!4",
})).gain(0.48)

// drums · clap
const clap = s("cp").struct("<~@76 A B A B A B A B ~@12>".pickRestart({
  A: "~ x ~ x", B: "~@3 x ~ x ~@2 x!2 ~@2",
})).gain(0.42)

// drums · hihat
const hihat = s("hh").struct("<A@22 B ~ A@14 B ~ A@18 B ~ A@14 B ~ A@18 B ~>".pickRestart({
  A: "x ~ x!2 ~ x!2 ~ x!2 ~ x", B: "x",
})).gain(0.3)

// drums · crash
const crash = s("cr").struct("<x ~@95>").gain(0.3)

stack(bass, piano, electric_guitar_muted, acoustic_guitar_steel, electric_guitar_clean, kick, snare, clap, hihat, crash)

More by Cliff Richard