Strudelify

Lucky Lips

Cliff Richard

KeyF majorTempo145 bpm
0:00/0:00
// Lucky Lips — Cliff Richard
// 145 bpm, 4/4, key F major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 96 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
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
const bass = note(`<
  ~ A B C D A B E F G H I J K L M N O P Q R S T U V W X I J K L M N O P Q R S T U V Y Z AA AB AC X I J K L M N O P Q R S
  T U V AD X I J K L M N O P Q R S T U V AD X I J K L M N O P Q R S T F AE AF AG AH
>`.pickRestart({
  A: "f1@3 ~@3 a1@2 ~ c2@2 ~", B: "f1@3 ~@3 d2@2 ~ c2@2 ~", C: "bb1@3 ~@3 d2@2 ~ f2@2 ~",
  D: "c2@2 ~ bb1@2 ~ a1@2 ~ g1@2 ~", E: "bb1@5 ~@7 d2@4 ~@2 f2@4 ~@2", F: "c2@3 ~@3 bb1@4 ~@2 a1@3 ~@3 g1@3 ~@3",
  G: "f1@6 ~@6 a1@5 ~@7", H: "c2@5 ~@7 d2@5 ~ c2@4 ~@2", I: "c2@6 ~@6 e2@5 ~@7", J: "g2@5 ~@13 g2@6, ~@3 a2@2 ~",
  K: "c2@5 ~@7 e2@4 ~@8", L: "g2@5 ~@13 g2@5 ~, ~@3 a2@2 ~", M: "f1@4 ~@8 a1@5 ~@7",
  N: "c2@5 ~@13 c2@4 ~@2, ~@3 d2@2 ~", O: "f1@5 ~@7 a1@6 ~@6", P: "c2@2 ~@7 c2@2 ~, ~@3 d2@2 ~",
  Q: "bb1@6 ~@6 d2@5 ~@7", R: "f2@2 ~@4 g2@3 f2@2 ~", S: "c2@5 ~@7 bb1@5 ~@7", T: "a1 ~ g1 ~", U: "c2 ~@7",
  V: "~@6 c2@3 ~@3 c2@2 ~@4 c2@2 ~@4", W: "f1@12 a1@5 ~@7, c2 ~@23", X: "c2@5 ~@7 d2@6 c2@4 ~@2",
  Y: "f1@5 ~@7 a1@4 ~@2 c2@4 ~@2, c2 ~@11", Z: "f1@5 ~@7 d2@4 ~@2 c2@4 ~@2", AA: "bb1@2 ~@4 d2@2 ~ f2@2 ~",
  AB: "c2@4 ~@2 bb1@4 ~@2 a1@3 ~@3 g1@3 ~@3", AC: "f1@12 a1@5 ~@7", AD: "f1@12 a1@5 ~@7, c2 ~@11",
  AE: "f1@6 a1@4 ~@2 c2@5 ~ d2@4 ~@2", AF: "bb1@6 d2@4 ~@2 f2@5 ~ g2@5 ~", AG: "f2@5 ~ d2@6 c2@5 ~ a1@5 ~",
  AH: "f1 ~@7",
})).s("gm_electric_bass_finger").gain(0.66)

// chords · piano
const piano = note(`<
  ~ A@2 B C A@2 B C A@2 D@4 A@4 B@2 C@2 E F A@2 D@4 A@4 B@2 C@2 E F A@2 B C A@2 D@4 A@4 B@2 C@2 E F A@2 D@4 A@4 B@2 C@2
  E F A@2 D@4 A@4 B@2 C@3 A B A G
>`.pickRestart({
  A: "~@2 [f3,a3,c4,f4,a4,c5] ~@2 [f3,a3,c4,f4,a4,c5] ~@2 [f3,a3,c4,f4,a4,c5] ~@2 [f3,a3,c4,f4,a4,c5]", // F
  B: "~@2 [f3,bb3,d4,f4,bb4,d5] ~@2 [f3,bb3,d4,f4,bb4,d5] ~@2 [f3,bb3,d4,f4,bb4,d5] ~@2 [f3,bb3,d4,f4,bb4,d5]", // Bb
  C: "~@2 [g3,c4,e4,g4,c5,e5] ~@2 [g3,c4,e4,g4,c5,e5] ~@2 [g3,c4,e4,g4,c5,e5] ~@2 [g3,c4,e4,g4,c5,e5]", // C
  D: "~@2 [e3,g3,c4,e4,g4,c5] ~@2 [e3,g3,c4,e4,g4,c5] ~@2 [e3,g3,c4,e4,g4,c5] ~@2 [e3,g3,c4,e4,g4,c5]", // C
  E: "[g3,c4,e4,g4,c5,e5] ~@11", // C
  F: "~@2 [g3,c4,e4,g4,c5,e5]!2 ~ [g3,c4,e4,g4,c5,e5]!2 ~ [g3,c4,e4,g4,c5,e5]!2 ~ [g3,c4,e4,g4,c5,e5]", // C
  G: "[f3,a3,c4,f4,a4,c5] ~@3, db3 ~@11", // F
})).s("gm_piano").gain(0.35).pan(0.7)

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~ A@2 B@4 C@8 D E F@2 G H@8 I@4 E F@2 J@8 K L M@2 N@5 E F@2 O@2 P@2 Q R M@2 N@5 E F@2 O@2 P@2 Q R M@2 N@5 E F@2 O@2
  P@2 L S@3 T
>`.pickRestart({
  A: "[[c3,f3,a3]@5 [a3,c4]@4 [a3,c4]@6 [c4,f4]@2 ~@5 a3@2 [f3,a3,c4]@5 a3@4 [a3,c4,f4]@6 [c4,f4]@2 ~ [c3,f3]@3 [a3,c4] ~@2, f2@29 ~@19, ~@5 [c3,f3]@12 c3@12 [c3,f3]@13 ~@6, ~@9 f4 ~@5 a3@6 f4@8 ~@13 c4@2 ~@4, ~@17 f3@4 c4@2 ~@16 a3@5 ~@4]/2", // F Am F5 F F5 Am F5
  B: "[[bb2,f3,bb3,d4]@5 bb3 f4@3 [bb3,d4,f4]@6 f4@2 ~ [f3,bb3,f4]@3 f3 ~@2 [c3,e3,bb3]@6 ~ c4 ~ c4@2 ~ bb3@3 ~ [bb3,c4]@2 [bb3,c4]@3 ~ [bb3,c4]@2 [c3,f3,a3]@5 [a3,c4]@4 [a3,c4]@6 [c4,f4]@2 ~@5 a3@2 [f3,a3,c4]@5 a3@4 [a3,c4,f4]@6 [c4,f4]@2 ~ [c3,f3]@3 [a3,c4] ~@2, ~@5 bb2@13 bb2@78, ~@5 [f3,d4]@4 ~@6 d4@5 ~@10 c3@12 [c3,e3]@6 f2@21 c4@2 ~@16 a3@5 ~@4, ~@30 [e3,bb3]@6 e3@6 ~@11 [c3,f3]@12 c3@12 [c3,f3]@13 ~@6, ~@30 g4@3 g4@6 g4@6 g4@2 ~@10 f4 ~@5 a3@2 f3@4 f4@8 ~@13 c4@2 ~@4]/4", // Bb Bb5 C7 Bbsus2 F Am F5 F …
  C: "[[bb2,f3,bb3,d4]@5 bb3 f4@3 [bb3,d4,f4]@6 f4@2 ~ [f3,bb3,f4]@3 f3 ~@2 [c3,e3,bb3]@6 ~ c4 ~ c4@2 ~ bb3@3 ~ [bb3,c4]@2 [bb3,c4]@3 ~ [bb3,c4]@2 [f3,a3,c4]@5 ~ [a3,c4,f4]@4 [c4,f4]@2 f3@6 [a3,c4,f4]@4 c4@2 [c3,f3]@6 [a3,c4,f4]@4 c4@2 [f2,c3,f3]@6 [a3,c4,f4]@4 [c4,f4] ~ [c3,e3,bb3]@5 ~ [c4,g4]@3 ~ e3@2 [g2,c3,e3]@5 ~ [c4,g4]@3 ~ c4 ~ [g2,c3,e3]@6 [e3,bb3,c4,g4]@3 ~ e3@2 [c3,e3]@5 ~ [bb3,c4,g4]@3 ~ [bb3,c4]@2 [g2,c3,e3,bb3]@6 [e3,bb3,c4,g4]@3 ~ c4 ~ [g2,c3,e3]@5 ~ c4@3 ~ e3@2 e3@6 [bb3,c4,g4]@3 c4 bb3@2 [g2,c3,e3,bb3,c4]@6 [e3,c4,g4]@4 c4 ~, ~@5 bb2@13 bb2@174, ~@5 [f3,d4]@4 ~@6 d4@5 ~@10 c3@12 [c3,e3]@6 c3@12 [f2,c3]@10 f4 ~@11 a3@8 f2 ~@5 g2@10 c4 ~@11 bb3@8 ~@4 bb3@8 ~@16 bb3@7 e3@4 ~ bb3@8 e3@6 ~@12, ~@30 [e3,bb3]@6 e3@6 ~@11 f3@7 ~@6 f3@6 f2@10 f4 ~@18 e3@4 g4@8 ~@4 g4@9 ~@3 g4@8 ~@4 g4@8 ~@4 g4@8 ~@4 g4@8 ~@4 g4@8 ~@7, ~@30 g4@3 g4@6 g4@6 g4@2 ~@11 a3@8 ~@4 a3@8 [c3,f3]@6 ~@6 [c3,f3]@6 ~@5 [c3,bb3]@5 bb3@7 [c3,e3,bb3]@6 ~@7 c3@4 c4 ~ g2 ~@4 [c3,e3]@6 ~@7 [g2,c3]@6 ~@5 [g2,c3,bb3]@5 c4 ~ [g2,c3]@12 ~@6 [g2,c3,bb3]@6]/8", // Bb Bb5 C7 Bbsus2 F F5 F F5 …
  D: "[c3,f3]@6 [c4,f4]@4 [c4,f4]@2 [c3,f3]@6 [a3,c4,f4]@3 f4 [a3,c4]@2, f2!2, ~ a3@2 ~, ~ [c3,f3] ~ [c3,f3]", // F5 F Am F5
  E: "[f2,c3,f3,a3]@5 [a3,c4,f4]@4 f4 [a3,c4]@2 [c3,f3]@5 ~ [c4,f4]@4 f4@2, ~@5 [f2,c3,f3]@7 f2@12, ~@17 [c3,f3]@7, ~@3 a3", // F Am F5
  F: "[[f2,c3,a3]@6 [f3,eb4,f4]@4 f3@2 [c3,f3]@6 [f3,a3,eb4,f4]@3 f4 f3@2 [f2,c3,f3]@5 ~ [a3,eb4,f4]@3 f4 f3@2 [f2,c3]@6 [f2,c3,f3,a3,eb4,f4]@5 ~, f3@3 ~@3 a3@12 ~@4 [a3,eb4]@8 ~@4 [a3,eb4]@8 ~@6, ~@6 c3@6 f2 ~@5 [f2,c3]@6 ~@5 [f2,c3]@7 ~@12, ~@10 eb4@8 ~@11 f3@4 ~@15, ~@10 f4 ~@37]/2", // F F7 F5 F7 F5 F7 F5 F7 …
  G: "[bb2,f3,f4]@6 [f3,bb3,d4,f4]@3 f4 [f3,bb3,d4]@2 [f2,bb2,f3,bb3,d4]@6 [f3,d4,f4]@3 ~ bb3 [f2,bb2,f3,bb3], ~@6 bb2@6 ~@6 [bb2,bb3]@5 ~, ~@7 [d4,f4]", // Bb5 Bb Dm Bb5 Bb Dm
  H: "[~@6 [d4,f4]@3 ~@3 [f3,bb3]@6 [bb3,d4,f4]@4 ~@2 [g2,c3,e3,bb3,c4,g4]@6 [bb3,c4,g4]@4 bb3@2 [c3,e3]@5 ~ [c4,g4]@3 bb3@2 [g2,e3,bb3]@6 ~ [c4,g4]@3 ~ [bb3,c4]@2 [c3,e3,bb3]@6 [bb3,c4,g4]@4 [bb3,c4,g4]@2 [g2,c3,e3,bb3,c4,g4]@2 ~@26 [bb3,c4,g4]@2 [e3,bb3,c4,g4]@3 [g2,c3,e3,bb3,c4,g4]@2 ~ g4@3 [e3,bb3,c4,g4]@2 [g2,c3,e3,bb3,c4,g4]@4 [c3,e3,bb3]@3 [f3,a3,c4]@5 ~ [a3,c4,f4]@4 [c4,f4]@2 f3@6 [a3,c4,f4]@4 c4@2 [c3,f3]@6 [a3,c4,f4]@4 c4@2 [f2,c3,f3]@6 [a3,c4,f4]@4 [c4,f4] ~ [c3,e3,bb3]@5 ~ [c4,g4]@3 ~ e3@2 [g2,c3,e3]@5 ~ [c4,g4]@3 ~ bb3@2, ~@5 [f2,bb2,f3]@7 ~@6 bb2@174, ~@5 bb3@4 f4@2 [f2,bb2]@7 f2@6 ~@6 g2@11 [c3,e3]@6 ~@6 g2@7 g2@12 ~@27 e3@2 ~@6 [e3,bb3,c4]@4 ~@9 c3@12 [f2,c3]@10 f4 ~@11 a3@8 f2 ~@5 g2@10 c4 ~@11 c4 ~, ~@10 d4@8 ~@16 g4@8 ~@3 g4@8 ~ c3@6 ~@6 [c3,e3]@6 ~@27 c3@6 ~@2 [g2,c3]@6 ~@4 [g2,c4,g4] ~@7 f3@7 ~@6 f3@6 f2@10 f4 ~@18 e3@4 g4@8 ~@4 g4@3, ~@10 bb3@2 ~@6 f3 ~@11 [c3,e3]@4 c4 ~@6 bb3@4 c4 ~@7 [e3,bb3]@4 g4@8 ~@65 a3@8 ~@4 a3@8 [c3,f3]@6 ~@6 [c3,f3]@6 ~@5 [c3,bb3]@5 bb3@7 [c3,e3,bb3]@6 ~]/8", // Dm Bb5 Bb C7 C C5 Edim C5 …
  I: "[[g2,c3,e3]@6 [e3,bb3,c4,g4]@3 ~ e3@2 [c3,e3]@5 ~ [bb3,c4,g4]@3 ~ [bb3,c4]@2 [g2,c3,e3,bb3]@6 [e3,bb3,c4,g4]@3 ~ c4 ~ [g2,c3,e3]@5 ~ c4@3 ~ e3@2 e3@6 [bb3,c4,g4]@3 c4 bb3@2 [g2,c3,e3,bb3,c4]@6 [e3,c4,g4]@4 c4 ~ [c3,f3]@6 [c4,f4]@4 [c4,f4]@2 [c3,f3]@6 [a3,c4,f4]@3 f4 [a3,c4]@2, ~@6 c3@6 g2 ~@4 [c3,e3]@6 ~@7 [g2,c3]@6 ~@5 [g2,c3,bb3]@6 ~ [g2,c3]@12 ~@6 [g2,c3]@6 f2@12 f2@12, ~@9 g4@8 ~@4 g4@8 ~@4 g4@8 ~@4 g4@8 ~@4 g4@8 ~@31, ~@10 bb3@8 ~@16 bb3@7 e3@4 ~ c4 ~@19 bb3@12 a3@12 ~@6, ~@10 c4 ~@35 bb3@8 e3@6 ~@18 [c3,f3]@6 ~@6 [c3,f3]@6]/4", // C C7 C C7 Bbsus2 C7 C C7 …
  J: "[[bb2,f3,f4]@6 [f3,bb3,d4,f4]@3 f4 [f3,bb3,d4]@2 [f2,bb2,f3,bb3,d4]@6 [f3,d4,f4]@3 ~ bb3 [f2,bb2,bb3]@6 ~ [d4,f4]@3 ~@3 [f3,bb3]@6 [bb3,d4,f4]@4 ~@2 [g2,c3,e3,bb3,c4,g4]@6 [bb3,c4,g4]@4 bb3@2 [c3,e3]@5 ~ [c4,g4]@3 bb3@2 [g2,e3,bb3]@6 ~ [c4,g4]@3 ~ [bb3,c4]@2 [c3,e3,bb3]@6 [bb3,c4,g4]@4 [bb3,c4,g4]@2 [g2,c3,e3,bb3,c4,g4]@2 ~@26 [bb3,c4,g4]@2 [e3,bb3,c4,g4]@3 [g2,c3,e3,bb3,c4,g4]@2 ~ g4@3 [e3,bb3,c4,g4]@2 [g2,c3,e3,bb3,c4,g4]@4 [c3,e3,bb3]@3 [c3,f3,a3]@5 [a3,c4]@4 [a3,c4]@6 [c4,f4]@2 ~@5 a3@2 [f3,a3,c4]@5 a3@4 [a3,c4,f4]@6 [c4,f4]@2 ~ [c3,f3]@3 [a3,c4] ~@2, ~@6 bb2@6 ~@6 [bb2,bb3]@5 f3 ~@5 [f2,bb2,f3]@7 ~@6 bb2@150, ~@21 d4@8 bb3@4 ~ d4@8 ~@16 g4@8 ~@3 g4@8 ~ c3@6 ~@6 [c3,e3]@6 ~@27 c3@6 ~@2 [g2,c3]@6 ~@4 [g2,c4,g4] ~@2 f2@21 c4@2 ~@16 a3@5 ~@4, ~@21 f4@3 ~@9 f4@2 [f2,bb2]@7 f2@6 ~@6 g2@11 [c3,e3]@6 ~@6 g2@7 g2@12 ~@27 e3@2 ~@6 [e3,bb3,c4]@4 ~@14 [c3,f3]@12 c3@12 [c3,f3]@13 ~@6, ~@34 bb3@2 ~@6 f3 ~@11 [c3,e3]@4 c4 ~@6 bb3@4 c4 ~@7 [e3,bb3]@4 g4@8 ~@64 f4 ~@5 a3@2 f3@4 f4@8 ~@13 c4@2 ~@4]/8", // Bb5 Bb Dm Bb5 Dm Bb5 Bb C7 …
  K: "[bb2,f3,bb3,d4]@5 bb3 f4@3 [bb3,d4,f4]@6 f4@2 ~ [f3,bb3,f4]@3 f3 ~@2, ~@5 bb2@12 ~ bb2@5 ~, ~@5 [f3,d4]@4 ~@6 d4@5 ~@4", // Bb Bb5 Dm
  L: "[c3,e3,bb3]@6 ~ c4 ~ c4@2 ~ bb3@3 ~ [bb3,c4]@2 [bb3,c4]@3 ~ [bb3,c4]@2, ~ c3@2 [c3,e3], ~ [e3,bb3] e3 ~, ~@6 g4@3 g4@6 g4@6 g4@2 ~", // C7 Bbsus2 C Edim
  M: "[[f3,a3,c4]@5 ~ [a3,c4,f4]@4 [c4,f4]@2 f3@6 [a3,c4,f4]@4 c4@2 [c3,f3]@6 [a3,c4,f4]@4 c4@2 [f2,c3,f3]@6 [a3,c4,f4]@4 [c4,f4] ~, c3@12 [f2,c3]@12 f2@12 ~@6 f2 ~@5, ~@5 f3@7 ~@6 f3@6 ~@6 [c3,f3]@6 ~@6 [c3,f3]@6, ~@5 a3@4 ~@2 a3@4 ~@2 a3@4 ~@3, ~@22 f4 ~@11 f4 ~@13]/2", // F F5 F F5 F F5 F F5
  N: "[[c3,e3,bb3]@5 ~ [c4,g4]@3 ~ e3@2 [g2,c3,e3]@5 ~ [c4,g4]@3 ~ c4 ~ [g2,c3,e3]@6 [e3,bb3,c4,g4]@3 ~ e3@2 [c3,e3]@5 ~ [bb3,c4,g4]@3 ~ [bb3,c4]@2 [g2,c3,e3,bb3]@6 [e3,bb3,c4,g4]@3 ~ c4 ~ [g2,c3,e3]@5 ~ c4@3 ~ e3@2 e3@6 [bb3,c4,g4]@3 c4 bb3@2 [g2,c3,e3,bb3,c4]@6 [e3,c4,g4]@4 c4 ~ [c3,f3]@6 [c4,f4]@4 [c4,f4]@2 [c3,f3]@6 [a3,c4,f4]@3 f4 [a3,c4]@2, g2@12 ~@5 [c3,e3,bb3]@6 ~@7 c3@6 g2 ~@4 [c3,e3]@6 ~@7 [g2,c3]@6 ~@5 [g2,c3,bb3]@6 ~ [g2,c3]@12 ~@6 [g2,c3]@6 f2@12 f2@12, ~@5 [c3,bb3]@5 bb3@7 ~@5 bb3@8 ~@4 bb3@8 ~@16 bb3@7 e3@4 ~ c4 ~@19 bb3@12 a3@12 ~@6, ~@5 e3@4 g4@8 ~@4 g4@9 ~@3 g4@8 ~@4 g4@8 ~@4 g4@8 ~@4 g4@8 ~@4 g4@8 ~@31, ~@10 c4 ~@23 c4 ~@35 bb3@8 e3@6 ~@18 [c3,f3]@6 ~@6 [c3,f3]@6]/5", // C7 C5 C C5 C C7 C C7 …
  O: "[[bb2,f3,f4]@6 [f3,bb3,d4,f4]@3 f4 [f3,bb3,d4]@2 [f2,f3,bb3,d4]@6 [f3,bb3,d4,f4]@3 ~ bb3 [f2,bb2,bb3]@6 ~ [d4,f4]@3 ~@2 bb2 [f3,bb3]@6 [bb2,bb3,d4,f4]@4 ~@2, ~@6 bb2@6 bb2 ~@5 bb2 ~@2 d4@8 bb3@4 f4@2 f2@7 f2@6, ~@21 f4@2 f3 ~@5 [f2,bb2,f3]@7 ~@12, ~@17 d4@4 ~@3, ~@34 bb3@2 ~@6 f3 ~@5]/2", // Bb5 Bb Bb5 Dm Bb5 Bb Bb5
  P: "[[g2,c3,e3,bb3,c4,g4]@6 [bb3,c4,g4]@4 bb3@2 [c3,e3]@5 ~ [c4,g4]@3 bb3@2 [g2,e3,bb3]@6 ~ [c4,g4]@3 ~ [bb3,c4]@2 [c3,e3,bb3]@6 [bb3,c4,g4]@4 [bb3,c4,g4]@2, ~@6 g2@11 ~@12 g2@7 g2@12, ~@6 [c3,e3]@6 ~@5 [c3,e3]@6 ~@6 [e3,bb3]@4 ~@15, ~@10 g4@8 ~@3 g4@8 ~@4 g4@8 ~@7, ~@10 c4 ~@6 bb3@4 c4 ~@8 c3@6 ~@6 [c3,e3]@6]/2", // C7 C C5 Edim C5 Bbsus2 C7 C …
  Q: "[g2,c3,e3,bb3,c4,g4] ~@11", // C7
  R: "~@4 [bb3,c4,g4]@2 [e3,bb3,c4,g4]@3 [g2,c3,e3,bb3,c4,g4]@2 ~ g4@3 [e3,bb3,c4,g4]@2 [g2,c3,e3,bb3,c4,g4]@4 [c3,e3,bb3]@3, ~@3 c3@6 ~@2 [g2,c3]@6 ~@4 [g2,c4,g4] ~@2, ~@3 e3@2 ~@6 [e3,bb3,c4]@4 ~@9", // C7 C5 C7
  S: "[~@10 a3@2 [c3,f3]@5 [c3,f3] [c4,f4]@4 f4@2 [bb2,f4]@6 [f3,bb3,d4,f4]@3 f4 [f3,bb3,d4]@2 [f2,f3,bb3,d4]@6 [f3,bb3,d4,f4]@3 ~ bb3 f3 [c3,f3,a3]@5 [f3,c4,f4]@4 ~ a3@2 f3@5 [c3,f3] [c4,f4]@4 f4@2, ~@9 f4@9 ~@6 f3@3 ~@18 f4@2 bb3@10 f4@9 ~@6, ~@10 c4@8 a3@12 ~@15 d4@8 [c3,a3] ~@4 c4@8 a3@6, ~@12 f2@12 ~@6 bb2@6 bb2 ~@5 bb2 ~@4 bb2@12 ~ c3 ~@11, ~@47 f2@6 f2@7 f2@12]/3", // F5 Bb5 Bb F F5 F
  T: "[c3,a3,f4] ~@3, [f3,c4] ~@5", // F F5
})).s("gm_electric_guitar_clean").gain(0.3).pan(0.1)

// chords · electric guitar clean · soft notes
const electric_guitar_clean_2 = note(`<
  ~ A B C D A B C D E F G H I ~ J K ~@2 L M N O ~ P E F G H I ~ J K ~@2 L M N O ~ P A B C D E F G H I ~ J K ~@2 L M N O
  ~ P E F G H I ~ J K ~@2 L M N O ~ P E F G H I ~ J K ~@2 L M N O Q K R S ~
>`.pickRestart({
  A: "[c4,f4]@5 f4@3 ~@16", B: "~@5 f2@16 f4 ~@2, ~@5 f4@4 ~@15", C: "[f2,f4]@5 f2@12 ~@4 [bb3,d4,f4] ~@2, ~@17 f2@6 ~",
  D: "g4@3 ~ g4@2 f2@12 f2@6, [f2,c4] ~@3", E: "f2 ~, f4 ~@3", F: "~@22 a3 ~", G: "[c4,g4]@5 ~@12 g2@6 ~",
  H: "~ g2 ~@2", I: "~@5 e3 ~@3 g4@2 ~", J: "a3@5 ~@19", K: "~@6 a3@3 ~@2 c4", L: "[bb3,d4]@6 ~@12 f2@3 f2@2 ~, f2 ~",
  M: "f4 ~@3", N: "~@12 bb3@5 g2@6 ~", O: "~@5 e3 ~@6", P: "~@3 g2@2 ~ g2@3 ~@15", Q: "g4@3 ~ g4@2 f2@12 f2@6, c4 ~@3",
  R: "f2@12 ~@6 f2@3 f2@2 ~, bb3 ~@3, d4 ~@23", S: "f4@5 ~@7 a3@6 ~@4 c4@2",
})).s("gm_electric_guitar_clean").gain(0.15).pan(0.1)

// chords · rock organ
const rock_organ = note(`<
  ~ A B C D E@3 F@7 G@4 H@2 I@2 J K@7 L@4 H@2 I@2 M N@3 O P@3 Q@8 H@2 I@2 M R@3 Q@8 H@2 I@2 M S@7 T@4 H@2 U@4 O V W
>`.pickRestart({
  A: "[c5,f5,a5]", B: "[a4,c5,f5]", C: "[d5,f5,bb5]@3 ~", D: "[c5,e5,g5]",
  E: "[f5 ~ [d5,bb5], [c5,a5]@49 ~@23, ~ f5@2]/3", F: "[[e5,g5] a5@2 [e5,g5]@4, c5, ~ f5 ~@5]/7", G: "[a5, f5 ~@3]/4",
  H: "[d5,bb5]/2", I: "[c5,e5,g5]/2", J: "[c5,e5,g5] ~@7", K: "[~ [e5,g5]@5 [f5,a5]@12 [e5,g5]@24, ~ c5@41]/7",
  L: "[f5,a5]/4", M: "[c5,e5,g5] ~@11", N: "[~@5 [e5,g5]@19 [f5,a5]@48, ~@5 c5@66 ~]/3", O: "[d5,bb5]",
  P: "[[e5,g5] [f5,a5]@2, c5@49 ~@23]/3", Q: "[[e5,g5] [f5,a5], c5]/8", R: "[~@5 [e5,g5]@19 a5@48, ~@5 c5@67]/3",
  S: "[~@5 [e5,g5]@19 a5@48 [e5,g5]@96, ~@5 c5@163, ~@6 f5@7 ~@29]/7", T: "[a5, f5@29 ~@67]/4",
  U: "[[e5,g5]@3 [f5,a5], c5]/4", V: "[c5,a5]", W: "[c5,f5,a5] ~@7",
})).s("gm_rock_organ").gain(0.3).pan(0.2)

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

// drums · clap
const clap = s("cp").struct("<~@77 [~ x ~ x]!18 ~>").gain(0.72)

// drums · snare
const snare = s("sd").struct("<~ A@3 B A@3 B A@14 C B A@14 C B A@3 B A@14 C B A@14 C B A@18 C>".pickRestart({
  A: "~ x ~ x", B: "~@2 x!2 ~ x!2 ~ x!2 ~ x", C: "x",
})).gain(0.72)

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

stack(bass, piano, electric_guitar_clean, electric_guitar_clean_2, rock_organ, kick, clap, snare, hihat)

More by Cliff Richard