Strudelify

Don't Talk To Him

Cliff Richard

KeyC majorTempo121 bpm
0:00/0:00
// Don't Talk To Him — Richard Cliff
// 121 bpm, 4/4, key C major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: sustain pedal (CC 64) lengthens the held notes
// note: duplicate parts dropped: ch 6 "SWEEP PAD" pad sweep (copy of ch 5 "SWEEP PAD" pad sweep)
// note: Full arrangement: all 111 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(121/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 · synth bass 1 · "SYN BASS 1"
const bass = note("<~@27 A@9 B C D@4 E A@8 F ~@17 A@9 B C D@4 E A@23 G ~@2>".pickRestart({
  A: "c1 c2 c1 c2 c1 c2 c1 c2", B: "c1@2 c2@2 c1@2 c2@2 c1@2 ~@2 c1 ~ f1@2, ~@5 c2@2 ~",
  C: "g1@2 g2@2 g1@2 g2@2 g1@2 g2@2 g1 ~ g1@2", D: "a1 a2 a1 a2 a1 a2 a1 a2", E: "a1 a2 a1 a2 a1 a2 a1 b1",
  F: "c1 ~@15", G: "c1@2 c2@2 c1@2 c2@2 c1@2 c2 ~@5",
})).s("gm_synth_bass_1").gain(0.54)

// chords · piano · "A.PIANO 1"
const piano = note(`<
  ~ A@2 B C D E@2 F@3 B C D G@4 H I J@2 K L M N@2 O@3 P Q@3 R S@2 T U V@4 W@3 X Y@3 Z A@2 B C D AA@4 H I J@2 K L M AB@2
  O@3 P Q@3 AC@2 AD@2 AE AF@4 AG@3 AH AI@3 AJ AK@3 AJ AK@3 AL AI@3 AJ AK@3 AM ~@2
>`.pickRestart({
  A: "[[c5,e5] ~@5 c5@2 ~@4 a4@2 [g4,e5]@14 ~@4, ~ e5@3 ~@12, ~@4 d5@4 [e4,c5]@7 ~@17]/2", // C
  B: "~@6 c5@2 a4 ~@3 c5@2 [b4,d5]@2, ~ [e4,a4] c5 ~, ~@10 a4@5 ~", // Bm A5
  C: "~@3 [e4,g4]@5, ~@2 d5@5 ~@9, ~@4 b4@3 ~@9, ~@5 a4@2 ~@9", D: "~ f4 ~ c5 a4@2 [f4,a4]@2, ~ [f4,a4] c5@2",
  E: "[~@6 a4@2 [a4,c5] ~@3 e5@2 g4@2 ~@4 [e4,g4]@4 [e4,g4]@4 [e4,g4]@2 [f4,a4]@2, ~ [d4,f4] f4@2 ~@4, ~@5 d5@3 ~@8, ~@7 [c5,e5]@5 ~@4]/2", // Am Em F Dm C
  F: "[~@4 g4@4 [f4,a4]@3 ~@3 e5@4 ~@4 c5@2 ~@4 a4@2 [g4,e5]@14 ~@4, ~@4 e4 ~@7 [e4,g4]@4 ~@2 e5@6 ~@24, ~@14 c5@8 ~@2 [e4,c5]@7 ~@17, ~@5 d5 ~@6]/3", // F C Em C
  G: "[~@6 a4@2 [a4,c5] ~@3 e5@2 g4@2 ~@4 [e4,g4]@4 [e4,g4]@4 ~@2 [f4,a4]@6 [e4,g4]@3 ~ [f4,a4] ~ d5@2 [g4,c5,e5] ~ f5@4 f5@2 [f4,a4,e5]@4 [f4,a4,d5]@4 ~@3 c5, ~ [d4,f4] f4@2 ~@3 [e4,g4] ~@7 [f4,a4,c5], ~@5 d5@3 ~@23 d5, ~@14 [c5,e5]@10 ~@22 [a4,d5]@7 ~@11]/4", // Am Em F Em F C Fmaj7 Dm …
  H: "[c4,e4]@4 [c4,e4]@4 ~ b4@2 ~@2 a4@2 ~, a4@2 ~ [d4,g4,b4]", I: "~@3 e5 [f4,a4,e5]@4, [f4,a4] ~",
  J: "[~@6 c5@2 a4@6 f5@3 ~ f5@2 ~@2 d5@2 ~@7 c5, [f4,a4,d5]@4 c5@4 ~@4 d5@2 ~ d5, ~@7 [a4,d5]@3 [f4,a4,e5]@2 ~ [f4,a4,c5]@3]/2", // Dm D5 Fmaj7 F
  K: "e4 ~ [c4,e4]@2 ~ b4 ~ a4, a4 ~, c4 ~@11 [d4,g4,b4]@4", L: "~@5 e5@2 ~ [f4,a4,e5]@8, [f4,a4] ~",
  M: "~@6 c5@2 [a4,c5] ~ c5@2 a4@2 a4@2, [f4,a4,d5]@2 ~ c5", N: "[~@3 e5 e5@4 d5@4 ~@4, [b3,f4,a4] [f4,b4]@2 ~]/2",
  O: "[[e4,c5] ~ [d4,b4]@2 ~@6 [e4,c5]@10 [d4,b4] ~ [e4,c5]@2 ~@2 [d4,b4]@4 ~@9 b4 [d4,f4]@4 [d4,f4]@4, ~@3 [d4,b4]@3 ~@9 [f4,d5]@5 ~@4, ~@19 c5 a4@4]/3", // C G C G C G Dm G …
  P: "~@7 b4 [d4,f4]@4 [d4,f4]@4, [f4,d5] ~, ~@3 c5 a4@4", // Dm
  Q: "[e4@2 [d4,b4]@4 [d4,b4]@4 [e4,c5]@10 [d4,b4] ~ [e4,c5]@3 ~ [d4,b4]@2 ~@2 d5@8 ~ e5 [d4,f4,a4]@4 [d4,f4,a4]@2 ~@2, c5 ~@29 f4@10 ~@8, ~@19 d5 c5@3 ~]/3", // G C G C G Dm
  R: "~@6 c5!2 ~@2 g5@2 g5@2 g5@2, ~@8 [d5,f5,a5]@7 ~", // Dm
  S: "[[c5,e5]@6 ~@4 [c5,a5]@4 [d5,a#5]@4 [d5,a#5]@2 ~@2 f5!2 f5@2 f5@2 e5@2 g5@2, ~@6 [d5,a#5]@8 ~@6 [c5,a5]@4 a4 ~@7]/2", // C F Gm F
  T: "[c5,e5]@3 ~@2 [b4,d5]@2 [b4,d5], ~@3 [c5,e5]@3 ~@2", U: "~@2 d5@2 [f#4,a4]@11 ~",
  V: "[~@2 [b4,g#5]@4 ~@14 [b4,g#5]@2 ~@4 g#5@4 ~@9 g#5 [b4,d5,f#5]@24, [c#5,a5]@3 [b4,g#5]@3 ~@7 b4 ~@5 a5 ~@12, ~@5 [c#5,a5]@6 [c#5,a5]@3 ~ [d5,b5]@5 ~@12]/4", // E Bm F#m E F#m G
  W: "[c6 ~ [d5,b5]@4 [d5,b5]@4 ~@10 [d5,b5]@2 c6@2 ~@2 [d5,b5]@4 ~@9 b5 [d5,f5,a5]@8, e5@4 ~ [e5,c6]@6 e5@4 [f5,d6]@5 ~@4, ~@19 c6 ~@4]/3", // G Dm C Dm
  X: "~@7 b4 [f4,a4]@8, [f4,d5] ~, ~@3 c5 ~@4", // F Dm
  Y: "[e5@2 [d5,b5]@4 [d5,b5]@4 ~@10 [d5,b5]@2 ~@17 b5 [d5,f5,a5]@8, c6 ~@9 [e5,c6]@12 [e5,c6]@8 [f5,d6]@10 ~@8, ~@13 [d5,b5]@3 ~@3 c6 ~@4]/3", // G Dm C Dm G
  Z: "~@7 b4 [f4,a4]@6 g4!2, [f4,d5]@9 ~@7, ~@3 c5 ~@4", // F Dm
  AA: "[~@6 a4@2 [a4,c5] ~@3 e5@2 g4@2 ~@4 [e4,g4]@4 [e4,g4]@4 [e4,g4]@2 [f4,a4]@6 [e4,g4]@3 ~ f4 ~ d5@2 [g4,c5,e5] ~ f5@4 f5@2 [f4,a4,e5]@4 [f4,a4,d5]@4 ~@3 c5, ~ [d4,f4] f4@2 ~@11 [f4,a4,c5], ~@5 d5@3 ~@23 d5, ~@14 [c5,e5]@10 ~@16 a4@4 ~@2 [a4,d5]@7 ~@11]/4", // Am Em F Em C Fmaj7 Dm F …
  AB: "[~@3 e5 e5@4 d5@6 ~@2, [b3,f4,a4]@2 [f4,b4]@5 ~]/2", // Bm7b5 Fdim
  AC: "[~@6 c5 ~@3 g5@2 g5 ~@9 [d5,a#5]@4 [c5,a5]@2 ~@2 [d5,a#5]@2, ~@7 c5@5 ~@4 [c5,e5]@11 ~@5, ~@8 [d5,f5,a5]@4 ~@2 g5@5 ~@13]/2", // Gm F Gm C Dm
  AD: "[~@2 [d5,a#5]@2 ~@2 f5!2 [a4,f5]@2 f5@2 ~@4 [c5,e5]@4 ~@6 [b4,d5]@3 ~ [b4,d5]@2, ~@2 [c5,a5]@4 e5@2 ~@3 [c5,e5]@3 ~@2, ~@7 g5@3 ~@6]/2", // Gm Dm C Bm F C
  AE: "~ [f#4,a4]@2 ~, ~ d5@5 ~@2", // F#m
  AF: "[[c#5,a5]@2 [b4,g#5]@2 ~@2 b4@3 ~ [c#5,a5]@9 ~@3 [c#5,a5]@2 ~@2 b4@2 ~@2 [d5,b5]@7 ~@2 g#5 [b4,d5,f#5]@20 ~@4, ~@6 g#5@13 ~ [b4,g#5]@4 ~@2 g#5@10 ~@2 a5@2 ~@24]/4", // F#m E F#m G Bm E
  AG: "[~@2 [d5,b5]@2 ~@2 [d5,b5]@3 ~ [e5,c6]@10 ~@2 [e5,c6]@4 ~@4 [f5,d6]@7 ~@3 [d5,f5,a5]@4 ~@4, [e5,c6]@2 ~@8 [d5,b5]@3 [d5,b5]@5 ~ c6@3 ~@2, ~@39 b5@5 ~@4]/3", // G C Dm C G
  AH: "[f4,d5]@5 ~@3 [f4,a4]@4 ~@4, ~@3 c5@3 ~@2, ~@7 b4@5 ~@4", // Dm F
  AI: "[~@2 b5@4 b5@3 ~ [e5,c6]@10 ~@6 [d5,b5]@2 ~@2 f5@8 ~@2 [d5,f5,a5]@4 ~@4, [e5,c6]@2 ~@9 [e5,c6]@3 ~ d6@3 ~ c6@3 ~@2, ~@2 d5@2 ~@2 d5@13 ~ [d5,b5]@6 ~@13 b5@5 ~@4]/3", // C G Dm C G
  AJ: "[f4,d5]@3 ~ [f4,a4]@2 ~@2, ~@6 c5@5 ~@5, ~@7 b4@4 ~@5", // Dm F
  AK: "[~@2 [d5,b5]@3 ~ b5@3 ~ [e5,c6]@10 ~@6 [d5,b5]@2 ~@2 [f5,d6]@7 ~@3 [d5,f5,a5]@4 ~@4, [e5,c6]@4 ~@2 d5@13 ~ [d5,b5]@6 ~@13 b5@5 ~@4, ~@11 [e5,c6]@3 ~@5 c6@3 ~@2]/3", // G C G Dm C G C
  AL: "[f4,d5]@5 ~@3 [f4,a4]@4 ~@4, ~@6 c5@5 ~@5, ~@7 b4@4 ~@5", // Dm F
  AM: "[f4,d5]@3 ~ [f4,a4] ~@3, ~@3 c5@2 ~@3, ~@7 b4@3 ~@6", // Dm F
})).s("gm_piano").gain(0.72).pan(0.6)

// chords · pad sweep · "SWEEP PAD"
const pad_sweep = note(`<
  ~ A@3 B@2 C@8 D@3 E@8 F@6 G@2 H@4 I@7 J@7 K@8 E@8 F@6 G@2 H@4 I@7 L@3 M@4 N@12 O@2 P@2 ~@2
>`.pickRestart({
  A: "[g4@31 a4@17, [c4,e4]]/3", B: "[[b3,d4,g4]@15 [c4,f4,a4]@17]/2",
  C: "[~@79 a4@16 ~ [b3,d4]@15 [c4,f4,a4]@17, d4@16 c4@81 ~@31, ~@15 e4@97 ~@16, ~@15 g4@65 ~@15 g4@17 ~@16]/8", // Bm F
  D: "[d4@15 [c4,e4,g4]@32 ~]/3", // C
  E: "[f4@15 ~@12 g4@4 ~@32 d4@15 ~@2 [e4,a4]@15 ~ f4@32, a4@29 ~@2 a4@47 ~@17 a4@33, d4@12 ~@3 c4@48 ~@16 c4@49, ~@15 e4@16 f4@49 ~@48]/8", // A5
  F: "[[g3,b3]@32 [e4,g4]@31 [d4,f4,a4]@33, g4@31 ~@65, d4@29 ~@3 c4@28 ~@36]/6", G: "[c4,e4,g4]/2",
  H: "[[d4,f4,a4]@31 ~@25 a4@8, ~@31 c4@33, ~@31 [e4,g4]@15 ~ f4@17, ~@39 a#4@16 ~@9]/4", // Dm Em
  I: "[[e4,g4]@15 [d4,f#4]@17 [c#4,e4]@31 [d4,f#4]@32 [c4,e4,g4]@17, ~@15 a4@81 ~@16]/7", // Em D C#m D C
  J: "[~@15 [d4,f4,a4]@32 ~ e4@30 ~@2 [f4,a4]@31 ~, ~@47 [c4,g4]@32 d4@31 ~@2]/7", // Dm F C5
  K: "[g4@31 a4@16 ~ [b3,d4]@15 c4@17 d4@15 [c4,e4,g4]@32 ~, [c4,e4]@47 g4@16 [f4,a4]@32 ~@33]/8", // Bm C F
  L: "[~@5 [d4,f4,a4]@11]/3", M: "[[c4,e4,g4]@29 ~@3 [f4,a4]@31 ~, ~@31 d4@31 ~@2]/4",
  N: "[~ e4@28 ~@3 [f4,a4]@31 ~, [c4,g4]@29 ~@2 d4@31 ~@2]/4", O: "[~ e4@28 ~@3, [c4,g4]@29 ~@3]/2",
  P: "[[d4,f4,a4]@13 ~@3]/2", // Dm
})).s("gm_pad_sweep").gain(0.3).pan(0.1)

// chords · overdriven guitar · "OVERDRIVE"
const overdriven_guitar = note("<~@17 A B@3 C D@3 E@2 ~@32 A F@3 C D@3 E@2 ~@42>".pickRestart({
  A: "[d3,a3,d4]@9 ~@2 a3 [d3,d4] ~@3", // D5 D
  B: "[[a2,e3,a3]@10 ~@2 g3@2 ~ [f2,c3,f3]@5 ~@2 [f2,c3] ~ [f2,c3,f3]@16 ~@8, ~@11 [g2,d3]@3 ~@34]/3", // A5 F5 G5
  C: "[d3,a3,d4]@8 ~@4 [d3,a3,d4] ~@3", // D5
  D: "[[a2,e3,a3]@11 ~ [g2,d3,g3] ~@3 c3@5 ~@3 [f2,c3,f3]@18 ~@6, ~@15 [f2,f3]@5 ~@28]/3", // A5 G5 F5 F
  E: "[[g2,d3,g3]@5 ~ [g2,c3,g3] ~ [g2,d3,g3]@20 ~@4]/2", // G5 C5 G5
  F: "[[a2,e3,a3]@10 ~@2 g3@2 ~ [f2,c3,f3]@5 ~@2 [f2,c3] ~ [c3,f3]@16 ~@8, ~@11 [g2,d3]@3 ~@9 f2@16 ~@9]/3", // A5 F5 G5
})).s("gm_overdriven_guitar").gain(0.24).pan(0.8)

// bass · electric bass finger · "FINGERDBAS"
const bass_2 = note(`<
  ~ A B C D E F G H I J C K L F G M N O P Q R S P T U V ~@24 W J C K L F G M X O Y Q Z AA P AB AC AD ~@42
>`.pickRestart({
  A: "c2@5 ~ c2 ~ c2@6 ~@2", B: "c2@5 ~ c2 ~ c2@4 g1 ~ g#1@2", C: "a1@5 ~ a1 ~ a1@6 d1@2",
  D: "e1@5 ~ e1 ~ e1@4 b1@2 e1@2", E: "f1@5 ~ f1 ~ f1@6 c1@2", F: "d1@5 ~ d1 ~ d1@8", G: "c2@5 ~ c2 ~ c2@4 g1@2 a1@2",
  H: "c2@5 ~ c2 ~ c2@7 ~", I: "c2@6 c2 ~ c2@8", J: "c2@5 ~ c2 ~ c2@4 g1@2 g#1@2", K: "e1@2 ~ e1 b1@2 b1 e1",
  L: "f1@4 ~@2 f1 ~ f1@6 c1@2", M: "c2@5 ~ c2 ~ c2@4 ~@4", N: "d2@5 ~ d1 ~ d1@3 ~ d1@2 a1 ~",
  O: "a1@6 e1 ~ a1@5 ~ e1@2", P: "f1@5 ~ f1 ~ f1@3 ~ f1@2 c2@2", Q: "f1@6 f1 ~ f1@3 ~ f1@2 e1@2",
  R: "d1@5 ~ d1 ~ d1@3 ~ d1@2 ~@2", S: "a1@5 ~ e1 ~ a1@6 g1@2", T: "f1@5 ~ f1@2 f1@5 ~ f1@2",
  U: "g1@5 ~ g1 ~ g1@3 ~ g1@2 d2@2", V: "g1@6 g1 ~ g1 ~ g1@2 a1@2 b1@2", W: "c2@4 ~@2 c2 ~ c2@8",
  X: "d2@5 ~ d1 ~ d1@3 ~@2 a1 ~@2, ~@6 d1 ~", Y: "f1@5 ~ f1 ~ f1@3 ~ f1@2 c2 ~", Z: "d1@5 ~ d1 ~ d1@6 a1 ~",
  AA: "a1@6 e1 ~ a1@6 g1@2", AB: "f1@5 f1@2 f1@5 ~@2 f1@2", AC: "g1@5 ~ g1 ~ g1@3 ~ g1@2 d2 ~",
  AD: "g1@3 ~@3 g1 ~ g1 ~ g1@2 a1@2 b1@2",
})).s("gm_electric_bass_finger").gain(0.4)

// other · electric guitar muted · "MUTED GTR"
const electric_guitar_muted = note("<~@9 A B C D E F G H ~@34 A B C D E F G H ~@52>".pickRestart({
  A: "~@6 c4 ~@5 g3@2 a3 ~", B: "c4@5 ~ c4 ~@4 g3@2 a3 ~@2", C: "a3@5 ~ a3 ~@3 g3 ~ a3 ~ c4 ~",
  D: "b3@5 ~ g3 ~@5 g3@2 ~@2", E: "a3@5 ~ a3 ~@5 g3 ~ a3 ~", F: "c4@4 ~@2 c4 ~@5 g3@2 a3 ~",
  G: "c4@5 ~ c4 ~@5 g3 ~ a3 ~", H: "c4@5 ~ c4 ~@9",
})).s("gm_electric_guitar_muted").gain(0.29).pan(0.9)

// drums · kick
const kick = s("bd").struct(`<
  ~ A@15 B A C A C A D A E A ~ F@3 G F@3 G F@3 H F@3 G F@3 G F@3 G A@15 B A B F@3 G F@3 G F@3 G F@3 G F@3 G F@3 G F@3 G
  F@3 G F@3 G F@3 I ~@2
>`.pickRestart({
  A: "x ~@2 x!2 ~@3", B: "x", C: "x ~@5 x ~ x ~@2 x ~@4", D: "x ~@4 x ~@2 x ~@2 x ~@4",
  E: "x ~ x ~@2 x ~@2 x ~@2 x ~@4", F: "x ~@2 x ~@2 x ~ x ~@7", G: "x ~@2 x ~@2 x ~ x ~ x!2 ~@4",
  H: "x ~@2 x ~@2 x!2 ~@8", I: "x ~@2 x ~@2 x ~ x ~ x ~@5",
})).gain(0.32)

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

// drums · snare · soft notes
const snare_soft = s("sd").struct(`<
  ~@30 A ~@3 A ~@3 B ~@3 A ~@3 A ~@3 A ~@21 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@2
>`.pickRestart({
  A: "~ x", B: "~@7 x",
})).gain(0.06)

// drums · clap
const clap = s("cp").struct("<~ A@15 ~@2 A ~ A ~ A ~ A ~@26 A@15 ~ A ~@43>".pickRestart({
  A: "~@3 x",
})).gain(0.32)

// drums · low tom
const low_tom = s("lt").struct("<A ~@15 B ~@9 C ~@7 D ~@3 E ~@7 F ~@3 G ~@15 B ~ B ~@42>".pickRestart({
  A: "~@5 x ~@2", B: "~@4 x!3 ~", C: "~@10 x!3 ~@3", D: "~@7 x", E: "~@5 x ~ x!2 ~@4 x!2 ~", F: "~@9 x!2 ~ x ~@3",
  G: "~@3 x",
})).gain(0.32)

// drums · hihat
const hihat = s("hh").struct(`<
  ~ A B@3 C B D E B F B@5 G H@3 I J K L M N ~ O@8 ~@4 P O@3 Q@8 A B@3 C B D E B F B@5 G H@2 O@8 ~@4 O@4 Q@23 R ~@2
>`.pickRestart({
  A: "~@4 x ~ x ~ x ~@2 x ~@4", B: "x ~ x!3 ~ x ~ x ~ x!2 ~@4", C: "x ~ x!3 ~ x!3 ~ x!2 ~@4",
  D: "x ~ x!3 ~ x ~ x ~@2 x ~@4", E: "x ~ x!2 ~@2 x ~ x ~@2 x ~@4", F: "x ~ x!2 ~ x ~ x ~@3 x ~@4", G: "x ~ x!2 ~@12",
  H: "x ~ x!2 ~@2 x!3 ~ x!2 ~@4", I: "x ~ x!2 ~@2 x!6 ~@4", J: "x ~ x!2 ~ x!4 ~@2 x ~@4", K: "x ~ x!2 ~ x!4 ~ x!2 ~@4",
  L: "x ~ x!2 ~ x!7 ~@2 x!2", M: "x!4 ~ x!7 ~ x!3", N: "x ~ x!2 ~ x!7 ~@4", O: "x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2",
  P: "~ x ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2", Q: "~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x!2", R: "~@2 x!2 ~@2 x!2 ~@2 x ~@5",
})).gain(0.29)

// drums · mid tom
const mid_tom = s("mt").struct("<A ~@20 B ~@4 C ~@7 D ~@3 E ~@7 F ~@3 G ~@60>".pickRestart({
  A: "~@8 x!2 ~@6", B: "~@3 x", C: "~@5 x!4 ~@7", D: "~@5 x!2 ~", E: "~@11 x!2 ~@3", F: "~ x ~ x ~@4",
  G: "~@4 x ~ x!2 ~@2 x!2 ~@4",
})).gain(0.32)

// drums · open hat
const open_hat = s("oh").struct("<~ A B@14 C D@9 ~ E@8 ~@4 E@4 ~@8 A B@14 C D@2 E@8 ~@4 E@4 ~@26>".pickRestart({
  A: "~@5 x!2 ~", B: "~@3 x", C: "~ x ~@2", D: "~ x ~ x", E: "~ x ~ x ~ x ~ x",
})).gain(0.32)

// drums · high tom
const high_tom = s("ht").struct("<~@25 A B ~@7 C ~@3 D ~@7 E ~@3 F ~@60>".pickRestart({
  A: "~@14 x!2", B: "x!2 ~ x!2 ~@11", C: "~ x", D: "~@10 x!2 ~@4", E: "x", F: "x ~ x!2 ~@12",
})).gain(0.32)

// drums · crash
const crash = s("cr").struct("<~ A ~@24 B ~@12 A ~@11 A ~@59>".pickRestart({
  A: "x", B: "~@9 x ~@4 x ~",
})).gain(0.32)

// drums · ride
const ride = s("rd").struct("<~@35 A B@2 C ~@4 B@8 ~@26 A B@2 C ~@4 B@8 D B@3 D B@3 D B@3 D B@2 E ~@2>".pickRestart({
  A: "x!5 ~ x ~", B: "x!4", C: "x!7 ~", D: "~ x!3", E: "x!3 ~",
})).gain(0.32)

// drums · ride · soft notes
const ride_soft = s("rd").struct("<~@35 A B@2 C ~@38 A B@2 C ~@30>".pickRestart({
  A: "~@5 x ~ x", B: "~ x ~ x ~ x ~ x", C: "~@7 x",
})).gain(0.19)

stack(
  bass, piano, pad_sweep, overdriven_guitar, bass_2, electric_guitar_muted, kick, snare, snare_soft, clap, low_tom,
  hihat, mid_tom, open_hat, high_tom, crash, ride, ride_soft
)

More by Cliff Richard