Strudelify

Summer Holiday

Cliff Richard

KeyE majorTempo132 bpm
0:00/0:00
// Summer Holiday — Richard Cliff
// 132 bpm, 4/4, key E major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 69 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 26.
setcpm(132/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.

// other · vibraphone
const vibraphone = note(`<
  ~@6 A B ~@4 C D ~@6 E F G ~ A B ~@4 C D ~@7 H I J K ~@5 E F L M N O ~@4 P Q R@8 S
>`.pickRestart({
  A: "~@22 [e3,g#3,b3] ~", B: "[e4,g#4,b4]@11 ~@13", C: "~@5 b3 [g#4,b4]@2 a#3 [g4,a#4]@2 a3", D: "[f#4,a4]@7 ~@17",
  E: "~@12 [d#4,d#5] ~@5 g#5@2 ~@4, ~@18 g#4 ~@5", // D#
  F: "f#4@2 ~@4 [c#4,c#5] ~@5 [a#3,a#4] ~@5 f#3@2 ~@4, f#5 ~@17 f#4 ~@5", // C# A#
  G: "[d#4,d#5]@2 ~@4 [b3,b4] ~@5 [a3,a4] ~@5 f#3@2 ~@4, ~@18 f#4 ~@5", // D# B A
  H: "c#4@2 ~@4 [e4,e5] ~@5 [d#4,d#5]@2 ~@4 f#4@2 ~@4, c#5 ~@17 f#5 ~@5", // E D#
  I: "e4 ~@5 g#4 ~@2 [b3,b4] ~@2, e5 ~@11 g#5 ~@11", J: "c#4@2 ~@4 [e4,e5] ~@5 [d#4,d#5] ~@5 [f#4,f#5] ~@5, c#5 ~@23",
  K: "[e4,e5] ~@23", L: "[d#4,d#5]@2 ~@4 [b3,b4] ~@5 [c4,c5] ~@5 g4@2 ~@4, ~@18 g5 ~@5", M: "f4 ~@11, f5 ~@23",
  N: "~@22 [f3,a3,c4] ~", O: "[f4,a4,c5]@11 ~@13", P: "~@5 c4 [a4,c5]@2 b3 [g#4,b4]@2 a#3", Q: "[g4,a#4]@7 ~@17",
  R: "[~@18 [a4,a5]@4 [g4,g5]@20 [a4,a5]@4 [f4,f5]@20 [a4,a5]@4 [g4,g5]@20 [a4,a5]@4 [f4,f5]@20 [a4,a5]@4 [g4,g5]@20 [a4,a5]@3 ~ [f4,f5]@20 [a4,a5]@4 [g4,g5]@13 ~ [g4,g5]@3 ~@3 [a#4,a#5]@3 ~@3]/8", // A G A F A G A F …
  S: "[c5,c6]@5 ~ [c5,c6] ~@5", // C
})).s("gm_vibraphone").gain(0.34).pan(0.9)

// chords · string ensemble 1
const string_ensemble_1 = note(`<
  ~@2 A B A B ~@8 C D E D F G@2 ~@11 H I J K L M ~@5 D E D F G@2 ~@3 N O N O ~@11 P Q
>`.pickRestart({
  A: "~@12 [d#5,b5,d#6]@5 ~ [c#5,a5,c#6]@2 ~@2 [c#5,a5,c#6]@2", B: "[b4,g#5,b5]@2 [g#4,e5,g#5] ~",
  C: "~ [b4,e5,g#5,b5] [g#4,b4,e5,g#5] [e4,b4,e5]", D: "[f#4,a4,c#5,f#5] [g#4,a4,c#5,g#5]",
  E: "[b3,e4,g#4,b4]@2 [e4,g#4,b4,e5] [g#4,b4,e5,g#5]", F: "[b3,e4,g#4,b4]!2 [e4,g#4,b4,e5] [g#4,b4,e5,g#5]",
  G: "[[b4,d#5,g#5,b5]@5 ~]/2", // G#m
  H: "~@3 [g#3,c#4,e4,g#4] [a3,d#4,f#4,a4] [b3,e4,g#4,b4] [c#4,f#4,a4,c#5] [d#4,g#4,b4,d#5] [e4,a4,c#5,e5] [f#4,b4,d#5,f#5] [g#4,c#5,e5,g#5] [a4,d#5,f#5,a5]", // C#m D#dim E F#m G#m A B C#m …
  I: "[b4,e5,g#5,b5]@12 [g#4,b4,e5]@5 ~@7, ~@4 g#5 ~@3", // E
  J: "~@12 [d#5,f#5,b5,d#6]@4 [d#5,f#5,b5,d#6] ~ [c#5,e5,a5,c#6]@3 ~ [c#5,e5,a5,c#6] ~", // B A
  K: "[b4,e5,g#5,b5]@3 [g#4,b4]@2 ~, ~@2 [e5,g#5] ~", // E G#m E
  L: "~@12 [d#5,f#5,b5,d#6]@4 [f#5,b5]@2 [e5,a5,c#6]@2 ~@2 [c#5,e5,a5,c#6] ~, ~@16 [d#5,d#6] ~ c#5 ~@5", // B B5 A D#
  M: "[b4,e5,g#5,b5]@6 [g#4,b4]@5 ~, ~@3 [e5,g#5]@2 ~", N: "~@12 [e5,c6,e6]@5 ~ [d5,a#5,d6]@2 ~@2 [d5,a#5,d6]@2",
  O: "[c5,a5,c6]@2 [a4,f5,a5] ~", P: "~@12 [e4,g4,c5,e5]@2 ~@4 [d4,f4,a#4,d5]@3 ~@3",
  Q: "[f4,a4,c5,f5]@10 ~@2 [f4,a4,c5,f5]@3 ~@9", // F
})).s("gm_string_ensemble_1").gain(0.23).pan(0.4)

// chords · acoustic guitar steel
const acoustic_guitar_steel = note(`<
  ~ A B C D A B C D A B@2 E F G B H B H I J K L A B C D A B@2 E F G A B C D A B@2 H F G B H B H I J K M N O P Q N O@2 R
  S N O P Q N O P S T
>`.pickRestart({
  A: "[g#3,b3,e4]@3 ~ [g#3,b3,e4] ~ [g#3,b3,e4] ~@3 [g#3,b3,e4] ~ [g#3,c#4,e4]@3 ~ [g#3,c#4,e4] ~ [g#3,c#4,e4] ~@3 [g#3,c#4,e4] ~", // E C#m
  B: "[f#3,a3,c#4]@3 ~ [f#3,a3,c#4] ~ [f#3,a3,c#4]@2 ~@2 [f#3,a3,c#4] ~ [f#3,b3,d#4]@3 ~ [f#3,b3,d#4] ~ [f#3,b3,d#4]@2 ~@2 [f#3,b3,d#4] ~", // F#m B
  C: "[g#3,b3,e4]@3 ~ [g#3,b3,e4] ~ [g#3,b3,e4] ~@3 [g#3,b3,e4] ~ [g#3,c#4,e4]@3 ~ [g#3,c#4,e4] ~ [g#3,c#4,e4]@2 ~@2 [g#3,c#4,e4] ~", // E C#m
  D: "[f#3,a3,c#4]@3 ~ [f#3,a3,c#4] ~ [f#3,a3,c#4] ~@3 [f#3,a3,c#4] ~ [f#3,b3,d#4]@3 ~ [f#3,b3,d#4] ~ [f#3,b3,d#4] ~@3 [f#3,b3,d#4] ~", // F#m B
  E: "[g#3,b3,e4]@3 ~ [g#3,b3,e4] ~ [g#3,b3,e4] ~@3 [g#3,b3,e4] ~ [g#3,b3,e4]@3 ~ [g#3,b3,e4] ~ [g3,a#3,e4] ~@3 [g3,a#3,e4] ~", // E Edim
  F: "[f#3,a3,c#4]@3 ~ [f#3,a3,c#4] ~ [f#3,a3,c#4]@2 ~@2 [f#3,a3,c#4] ~ [f#3,b3,d#4]@3 ~@3 [e3,a3,c#4]@2 ~@4", // F#m B A
  G: "[g#3,b3,e4]@2 [g#3,b3,e4] [g#3,b3,e4]@2 [g#3,b3,e4] [g#3,b3,e4]@2 [g#3,b3,e4] [g#3,b3,e4]@2 [g#3,b3,e4]", // E
  H: "[g#3,b3,e4]@3 ~ [g#3,b3,e4] ~ [g#3,b3,e4] ~@3 [g#3,b3,e4] ~ [g#3,b3,e4]@3 ~ [g#3,b3,e4] ~ [g#3,b3,e4] ~@3 [g#3,b3,e4] ~", // E
  I: "[g#3,b3,d#4]@3 ~ [g#3,b3,d#4] ~ [g#3,b3,d#4]@2 ~@2 [g#3,b3,d#4] ~ [g#3,b3,d#4]@3 ~ [g#3,b3,d#4] ~ [g#3,b3,d#4]@2 ~@2 [g#3,b3,d#4] ~", // G#m
  J: "[g#3,b3,d#4]@3 ~ [g#3,b3,d#4] ~ [g#3,b3,d#4] ~@3 [g#3,b3,d#4] ~ [g#3,b3,d#4]@3 ~ [g#3,b3,d#4] ~ [g#3,b3,d#4] ~@3 [g#3,b3,d#4] ~", // G#m
  K: "[f#3,a#3,c#4]@3 ~ [f#3,a#3,c#4] ~ [f#3,a#3,c#4]@2 ~@2 [f#3,a#3,c#4] ~ [a#3,c#4,f#4]@3 ~ [a#3,c#4,f#4] ~ [a#3,c#4,f#4]@2 ~@2 [a#3,c#4,f#4] ~", // F#
  L: "[b3,d#4,f#4]@3 ~ [b3,d#4,f#4] ~ [b3,d#4,f#4] ~@3 [b3,d#4,f#4] ~ [b3,d#4,f#4]@3 ~ [b3,d#4,f#4] ~ [b3,d#4,f#4] ~@3 [b3,d#4,f#4] ~", // B
  M: "[b3,d#4,f#4]@3 ~ [b3,d#4,f#4] ~ [b3,d#4,f#4] ~@3 [b3,d#4,f#4] ~ [c4,e4,g4]@3 ~ [c4,e4,g4] ~ [c4,e4,g4] ~@3 [c4,e4,g4] ~", // B C
  N: "[a3,c4,f4]@3 ~ [a3,c4,f4] ~ [a3,c4,f4] ~@3 [a3,c4,f4] ~ [a3,d4,f4]@3 ~ [a3,d4,f4] ~ [a3,d4,f4] ~@3 [a3,d4,f4] ~", // F Dm
  O: "[g3,a#3,d4]@3 ~ [g3,a#3,d4] ~ [g3,a#3,d4]@2 ~@2 [g3,a#3,d4] ~ [g3,c4,e4]@3 ~ [g3,c4,e4] ~ [g3,c4,e4]@2 ~@2 [g3,c4,e4] ~", // Gm C
  P: "[a3,c4,f4]@3 ~ [a3,c4,f4] ~ [a3,c4,f4] ~@3 [a3,c4,f4] ~ [a3,d4,f4]@3 ~ [a3,d4,f4] ~ [a3,d4,f4]@2 ~@2 [a3,d4,f4] ~", // F Dm
  Q: "[g3,a#3,d4]@3 ~ [g3,a#3,d4] ~ [g3,a#3,d4] ~@3 [g3,a#3,d4] ~ [g3,c4,e4]@3 ~ [g3,c4,e4] ~ [g3,c4,e4] ~@3 [g3,c4,e4] ~", // Gm C
  R: "[a3,c4,f4]@3 ~ [a3,c4,f4] ~ [a3,c4,f4] ~@3 [a3,c4,f4] ~ [a3,c4,f4]@3 ~ [a3,c4,f4] ~ [g#3,b3,f4] ~@3 [g#3,b3,f4] ~", // F Fdim
  S: "[g3,a#3,d4]@3 ~ [g3,a#3,d4] ~ [g3,a#3,d4]@2 ~@2 [g3,a#3,d4] ~ [g3,c4,e4]@3 ~@3 [f3,a#3,d4]@2 ~@4", // Gm C A#
  T: "[a3,c4,f4]@11 ~ [a3,c4,f4]@2 ~@10", // F
})).s("gm_acoustic_guitar_steel").gain(0.22).pan(0.1)

// chords · electric guitar jazz
const electric_guitar_jazz = note("<~ A B A B ~@28 A B A B C D E F@2 G ~@21 H I H J ~>".pickRestart({
  A: "~@6 [g#4,b4]@3 ~@3 [g#4,b4]@4 f#4@2 [e4,g#4]@3 ~@3", B: "[g#4,b4]@3 ~@3 [g#4,b4]@3 ~ [g#4,b4]@13 ~",
  C: "~@6 [g#4,b4]@5 ~ [g#4,b4]@4 f#4@2 [e4,g#4]@3 ~@3", D: "[g#4,b4]@3 ~@3 [g#4,b4]@3 ~ [g#4,b4]@8 ~@4 e4@2",
  E: "f#4@3 ~@3 f#4@2 ~@2 f#4@6 e4 ~ c#4@3 ~@3", F: "[e4@5 ~ f#4@2 g4@2 g#4@2 c#5@6 f#4@9 ~@7 f#4@6 e4@2 c#4@5 ~]/2",
  G: "e4@4 ~@2 [g#4,b4]@6 [f#4,a4]@6 [e4,g#4]@5 ~", H: "~@6 [a4,c5]@3 ~@3 [a4,c5]@4 g4@2 [f4,a4]@3 ~@3",
  I: "[a4,c5]@3 ~@3 [a4,c5]@3 ~ [a4,c5]@13 ~", J: "[a4,c5]@3 ~@3 [a4,c5]@3 ~ [a4,c5]@10 ~@4",
})).s("gm_electric_guitar_jazz").gain(0.52).pan(0.7)

// chords · electric guitar jazz · soft notes
const electric_guitar_jazz_2 = note("<~ A ~ A ~@29 A ~ A ~ A ~@26 B ~ B ~@2>".pickRestart({
  A: "~@8 a4 ~@3", B: "~@8 a#4 ~@3",
})).s("gm_electric_guitar_jazz").gain(0.29).pan(0.7)

// other · pizzicato strings
const pizzicato_strings = note("<~@20 A B C ~@16 D E F G ~@5 A B H I ~@17>".pickRestart({
  A: "~@12 [d#4,d#5] ~@5 [g#4,g#5] ~@5", B: "[f#4,f#5] ~@5 c#4@2 ~@4 [a#3,a#4] ~@5 f#3@2 ~@4, ~@6 c#5 ~@11 f#4 ~@5",
  C: "[d#4,d#5] ~@5 b3@2 ~@4 [a3,a4] ~@5 [f#3,f#4] ~@5, ~@6 b4 ~@17", // D# A F#
  D: "c#4@2 ~@4 [e4,e5] ~@5 [d#4,d#5] ~@5 f#4@2 ~@4, c#5 ~@17 f#5 ~@5", // E D#
  E: "e4 ~@5 g#4 ~@2 [b3,b4] ~@2, e5 ~@11 g#5 ~@11", // B
  F: "[c#4,c#5] ~@2 e4 ~@2 [d#4,d#5] ~@2 f#4 ~@2, ~@6 e5 ~@11 f#5 ~@5", G: "e4 ~@11, e5 ~@23",
  H: "[d#4,d#5] ~@5 b3@2 ~@4 [c4,c5] ~@5 [g4,g5] ~@5, ~@6 b4 ~@17", I: "[f4,f5] ~@23",
})).s("gm_pizzicato_strings").gain(0.46).pan(0.4)

// chords · synth strings 1
const synth_strings_1 = note("<A@8 B@7 C@8 D@8 E@8 F@6 G@8 H@8 I@8>".pickRestart({
  A: "[~@23 [g#3,b3,e4]@12 [g#3,c#4,e4]@12 [f#3,a3,c#4]@12 [f#3,b3,d#4]@12 [g#3,b3,e4]@12 [g#3,c#4,e4]@12 [f#3,a3,c#4]@12 [f#3,b3,d#4]@12 [g#3,b3,e4]@12 [g#3,c#4,e4]@12 [f#3,a3,c#4]@12 [f#3,b3,d#4]@12 [g#3,b3,e4]@12 [g#3,c#4,e4]@12 [f#3,a3,c#4]]/8", // E C#m F#m B E C#m F#m B …
  B: "[~@11 [f#3,b3,d#4]@12 [g#3,b3,e4]@12 [g#3,c#4,e4]@12 [f#3,a3,c#4]@12 [f#3,b3,d#4]@12 [f#3,a3,c#4]@12 [f#3,b3,d#4]@12 [g#3,b3,e4]@12 [e4,g#4,b4]@6 [e4,g4,a#4]@6 [c#4,f#4,a4]@12 [b3,d#4,f#4]@12 [g#3,b3,e4]@24 [f#3,a3,c#4]]/7", // B E C#m F#m B F#m B E …
  C: "[~@11 [f#3,b3,d#4]@12 [g#3,b3,e4]@24 [f#3,a3,c#4]@12 [f#3,b3,d#4]@12 [g#3,b3,e4]@24 [g#3,b3,d#4]@48 [f#3,a#3,c#4]@24 [f#3,b3,d#4]@24 [g#3,b3,e4]]/8", // B E F#m B E G#m F# B …
  D: "[~@11 [g#3,c#4,e4]@12 [f#3,a3,c#4]@12 [f#3,b3,d#4]@12 [g#3,b3,e4]@12 [g#3,c#4,e4]@12 [f#3,a3,c#4]@12 [f#3,b3,d#4]@12 [g#3,b3,e4]@12 [g#3,c#4,e4]@12 [f#3,a3,c#4]@12 [f#3,b3,d#4]@12 [f#3,a3,c#4]@12 [f#3,b3,d#4]@12 [g#3,b3,e4]@12 [e4,g#4,b4]@6 [e4,g4,a#4]@6 [c#4,f#4,a4]]/8", // C#m F#m B E C#m F#m B E …
  E: "[~@11 [b3,d#4,f#4]@12 [g#3,b3,e4]@24 [g#3,b3,e4]@12 [g#3,c#4,e4]@12 [f#3,a3,c#4]@12 [f#3,b3,d#4]@12 [g#3,b3,e4]@12 [g#3,c#4,e4]@12 [f#3,a3,c#4]@12 [f#3,b3,d#4]@12 [g#3,b3,e4]@12 [g#3,c#4,e4]@12 [f#3,a3,c#4]@12 [f#3,b3,d#4]@12 [f#3,a3,c#4]]/8", // B E C#m F#m B E C#m F#m …
  F: "[~@11 [f#3,b3,d#4]@12 [g#3,b3,e4]@24 [c#4,f#4,a4]@12 [b3,d#4,f#4]@12 [g#3,b3,e4]@24 [f#3,a3,c#4]@12 [f#3,b3,d#4]@12 [g#3,b3,e4]@24 [f#3,a3,c#4]]/6", // B E F#m B E F#m B E …
  G: "[~@11 [f#3,b3,d#4]@12 [g#3,b3,e4]@24 [g#3,b3,d#4]@48 [f#3,a#3,c#4]@24 [f#3,b3,d#4]@12 [g3,c4,e4]@12 [a3,c4,f4]@12 [a3,d4,f4]@12 [g3,a#3,d4]@12 [g3,c4,e4]@12 [a3,c4,f4]]/8", // B E G#m F# B C F Dm …
  H: "[~@11 [a3,d4,f4]@12 [g3,a#3,d4]@12 [g3,c4,e4]@12 [a3,c4,f4]@12 [a3,d4,f4]@12 [g3,a#3,d4]@12 [g3,c4,e4]@12 [g3,a#3,d4]@12 [g3,c4,e4]@12 [a3,c4,f4]@12 [f4,a4,c5]@6 [f4,g#4,b4]@6 [d4,g4,a#4]@12 [c4,e4,g4]@12 [a3,c4,f4]@12 [a3,d4,f4]@12 [g3,a#3,d4]]/8", // Dm Gm C F Dm Gm C Gm …
  I: "[~@11 [g3,c4,e4]@12 [a3,c4,f4]@12 [a3,d4,f4]@12 [g3,a#3,d4]@12 [g3,c4,e4]@12 [a3,c4,f4]@12 [a3,d4,f4]@12 [g3,a#3,d4]@12 [g3,c4,e4]@12 [a3,c4,f4]@12 [a3,d4,f4]@12 [d4,g4,a#4]@12 [c4,e4,g4]@6 [a#3,d4,f4]@6 [a3,c4,f4]@12 ~@13]/8", // C F Dm Gm C F Dm Gm …
})).s("gm_synth_strings_1").gain(0.14)

// bass · electric bass finger
const bass = note(`<
  ~ A B A B C D E F G H I J K L M N M O P Q R S C D E F G H I J K T U V U W U X Y Z AA AB M N M AC P Q AD AE AF AG AH AI
  AJ AK AL AM AN AF AG AH AI AF AG AH AN AO
>`.pickRestart({
  A: "e2 ~ c#2 ~", B: "f#2@6 ~@6 b1@2 ~@2 b1 ~ c#2@3 ~ d#2 ~", C: "e2@5 ~@5 e2@2 c#2@6 ~@4 c#2@2",
  D: "f#2@6 ~@4 f#2 ~ b1@2 ~@2 b1@2 c#2@3 ~ d#2 ~", E: "e2@3 ~@2 e2 c#2@3 ~@2 g#2",
  F: "f#2@6 ~@4 c#3@2 b2@2 ~@2 b2 ~ g#2 ~ b2 ~ g#2@2", G: "e2@5 ~@5 e2 ~ c#2@6 ~@4 g#2@2",
  H: "f#2@5 ~@5 c#3@2 b2@3 ~@3 g#2@4 ~@2", I: "f#2@6 ~@4 f#2 ~ b2@7 ~@3 b2 ~", J: "e2@6 ~@4 e2@2 g#2@3 ~@3 g2@4 ~@2",
  K: "f#2@7 ~@3 f#2 ~ b2@3 ~@3 a2@3 ~@3", L: "e2@4 ~@2 e2@3 ~ e2 ~ e2@4 ~@2 e2@3 ~@3",
  M: "f#2@7 ~@3 f#2@2 b1@7 ~@3 b1@2", N: "e2@7 ~@3 e2@2 b1@5 ~ e2@4 ~@2", O: "e2@6 ~@4 g#2@2 b2@5 ~ g#2@4 ~@2",
  P: "g#2@6 ~@4 g#2@2 b2@6 ~@4 b2 ~", Q: "g#2@7 ~@3 g#2@2 b2@8 ~@2 b2 ~", R: "f#2@5 ~ f#2@3 ~ f#2 ~ f#2@5 ~ f#2@5 ~",
  S: "b2@3 ~@3 b1@5 ~ c#2@5 ~ d#2@4 ~@2", T: "e2@4 ~@6 e2 ~ b1@3 ~ b1 ~ c#2@3 ~ d#2 ~",
  U: "e2@2 ~ e2@2 ~ c#2@2 ~ c#2@2 ~", V: "f#2@4 ~@2 f#2@4 ~@2 b1@2 ~@2 b1@2 c#2@3 ~ d#2 ~",
  W: "f#2@4 ~@2 f#2@4 ~@2 b1@2 ~@2 b1@2 c#2@3 ~ d#2@2", X: "f#2@2 ~ f#2@2 ~ b1@2 ~ b1@2 ~",
  Y: "f#2@4 ~@2 f#2@4 ~@2 b1@5 ~ c#2@3 ~ d#2 ~", Z: "e2@2 ~ e2@2 ~ g#2@2 ~ g2@2 ~",
  AA: "f#2@4 ~@2 f#2@5 ~ b1@4 ~@2 a1@4 ~@2", AB: "g#1@2 ~ b1@2 ~ e2@2 ~ g#2@2 ~", AC: "e2@6 ~@4 g#2@2 b2@5 ~ g#2@5 ~",
  AD: "f#2@9 ~@3 f#2@6 ~@4 f#2 ~", AE: "b2@3 ~@3 b1@5 ~ c2@5 ~ c2@4 ~@2", AF: "f2@5 ~@5 f2@2 d2@6 ~@4 d2@2",
  AG: "g2@6 ~@4 g2 ~ c2@2 ~@2 c2@2 d2@3 ~ e2 ~", AH: "f2@3 ~@2 f2 d2@3 ~@2 a2",
  AI: "g2@6 ~@4 d3@2 c3@2 ~@2 c3 ~ a2 ~ c3 ~ a2@2", AJ: "f2@5 ~@5 f2 ~ d2@6 ~@4 a2@2",
  AK: "g2@5 ~@5 d3@2 c3@3 ~@3 a2@4 ~@2", AL: "g2@6 ~@4 g2 ~ c3@7 ~@3 c3 ~", AM: "f2@6 ~@4 f2@2 a2@3 ~@3 g#2@4 ~@2",
  AN: "g2@7 ~@3 g2 ~ c3@3 ~@3 a#2@3 ~@3", AO: "f2@5 ~ f2 ~@5",
})).s("gm_electric_bass_finger").gain(0.5)

// drums · kick
const kick = s("bd").struct("<~ [x!2]!68>").gain(0.48)

// drums · rim
const rim = s("rim").struct("<~ A B A B A@28 ~@10 A@25 ~>".pickRestart({
  A: "~ x ~ x", B: "~@3 x ~ x ~@3 x ~@2",
})).gain(0.6)

// drums · snare
const snare = s("sd").struct("<A ~@32 B C B C B C B C B@2 ~@26>".pickRestart({
  A: "~@15 x!4 ~@3 x ~", B: "~ x ~ x", C: "~@3 x ~ x ~@3 x ~@2",
})).gain(0.42)

// drums · hihat
const hihat = s("hh").struct("<~ A B@3 A B@9 A B@7 A B@9 ~@10 A B@7 A B@8 A B@3 A B@3 ~>".pickRestart({
  A: "~@2 x!2 ~ x!2 ~ x!2 ~ x", B: "x ~ x!2 ~ x!2 ~ x!2 ~ x",
})).gain(0.3)

// drums · crash
const crash = s("cr").struct("<~ A ~@3 A ~@9 A ~@7 A ~@9 A ~@9 A ~@7 A ~@8 A ~@3 A ~@3 B>".pickRestart({
  A: "x", B: "x!2",
})).gain(0.3)

// drums · ride
const ride = s("rd").struct("<~@33 [~@2 x!2 ~ x!2 ~ x!2 ~ x] [x ~ x!2 ~ x!2 ~ x!2 ~ x]!9 ~@26>").gain(0.3)

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

// drums · cabasa · soft notes
const cabasa_soft = s("cabasa:4").struct(`<
  ~@3 A ~ B ~@2 A ~ B ~@2 A ~ B ~@2 A ~ B ~@2 A ~ B ~@2 A ~ B ~@2 A ~ B ~@2 A ~ B ~@2 A ~ B ~@2 A ~ B ~@2 A ~ B ~@2 A ~
  B ~@2 A ~ B ~@3
>`.pickRestart({
  A: "~ x ~@10", B: "~ x ~ x ~@5 x ~@2",
})).gain(0.3)

// drums · shaker
const shaker = s("sh").struct(`<
  ~ A B C D E A B C D E A B C D E A B C D E A B C D E A B C D E A B C D E A B C D E A B C D E A B C D E A B C D E A B C
  D E A B C D E A B ~
>`.pickRestart({
  A: "x!2 ~ x!2 ~", B: "~ x ~ x ~ x!2 ~ x!2 ~ x", C: "x!5 ~", D: "x ~ x ~@3 x ~ x!2 ~ x", E: "x!3 ~ x ~",
})).gain(0.18)

stack(
  vibraphone, string_ensemble_1, acoustic_guitar_steel, electric_guitar_jazz, electric_guitar_jazz_2, pizzicato_strings,
  synth_strings_1, bass, kick, rim, snare, hihat, crash, ride, cabasa, cabasa_soft, shaker
)

More by Cliff Richard