Strudelify

Bits and Pieces

The Dave Clark Five

KeyA minorTempo150 bpm
0:00/0:00
// Bits and Pieces — The Dave Clark Five
// 150 bpm, 4/4, key A minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: ch 1 "Trombone" named as a brass, played on trombone (its clavinet patch is not one)
// note: sustain pedal (CC 64) lengthens the held notes
// note: Full arrangement: all 85 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(150/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.

// chords · trombone
const trombone = note(`<
  ~@3 A B C D@2 B E D@2 B F G@2 H I J ~@2 A B C J A B E J A B F K A H I J ~@2 L M N O P Q R S ~@2 A B T D@2 B U D@2 B E
  V@2 H W J ~@2 A B T J A B U J A B E X A H W Y@2 Z
>`.pickRestart({
  A: "~@4 g4@2 g4@2 [f4,a4]@3 ~ [e4,g4]@3 ~", B: "[e4,g4]@3 ~ [e4,g4]@3 ~ [f4,a4]@3 ~ [e4,g4]@3 ~",
  C: "c5@3 ~ c5@3 ~ [a4,c5]@2 [a4,c5]@2 [g4,c5]@2 [g4,c5]@2", // Am C5
  D: "[[g4,d#5]@3 ~ [g4,c5]@3 ~ a4@3 ~ g4@6 ~@2 g4@2 g4@2 [f4,a4]@3 ~ [e4,g4]@3 ~, ~@3 c5 ~@4]/2", // Cm C5 F Em
  E: "c5@3 ~ c5@3 ~ [a4,c5]@3 ~ [g4,c5]@3 ~", F: "c5@3 ~ c5@2 c5@2 [a4,c5]@2 [a4,c5]@2 [g4,c5]@2 [g4,c5]@2",
  G: "[[g4,d#5]@3 ~ c5@3 ~ a4@3 ~ g4@6 ~@2 g4@2 g4@2 [f4,a4]@3 ~ [e4,g4]@3 ~, ~@3 c5 ~@4]/2", // Cm F Em
  H: "[e4,g4]@3 ~ [e4,g4]@3 ~ [f4,a4]@3 ~ g4@2 g4@2", I: "c5@3 ~ [g4,c5]@3 ~ [a4,c5]@3 ~ c5@2 c5@2",
  J: "[g4,d#5]@3 ~ [g4,c5]@3 ~ a4@3 ~ [g4,c5]@4", K: "[g4,d#5]@3 ~ c5@3 ~ a4@3 ~ [g4,c5]@4",
  L: "[d4,g#4,b4]@3 ~ [d4,g#4,b4]@3 ~ [d4,g#4,b4]@5 ~ a4@2", M: "[d4,g#4,b4]@3 ~ [d4,g#4,b4]@2 [d4,g#4,b4]@10",
  N: "~@4 [g4,c#5]@2 b4@2 c#5@2 b4@2 [g4,c#5]@3 ~", O: "b4 a4@7", P: "~@4 [c4,a4]@2 f#4@2 [c4,a4]@5 ~ f#4@2",
  Q: "[c4,a4]@2 [c4,a4]@3 ~ f#4@2 c4@6 ~@2, ~@2 a4 ~", R: "[f4,b4]@3 ~ b4@2 b4@2 g4@2 g4@2 g4@2 g4@2",
  S: "d5@3 ~ b4@3 ~ g4@3 ~ [f4,a4]@4", T: "c5@3 ~ c5@3 ~ [a4,c5]@3 ~ [g4,c5]@2 [g4,c5]@2",
  U: "c5@3 ~ c5@2 c5@2 [a4,c5]@3 ~ [g4,c5]@3 ~", // Am C5
  V: "[d#5@2 d#5@2 c5@3 ~ a4@3 ~ g4@6 ~@2 g4@2 g4@2 [f4,a4]@3 ~ [e4,g4]@3 ~, ~@3 c5 ~@4]/2", // F Em
  W: "c5@3 ~ [g4,c5]@3 ~ [a4,c5]@3 ~ c5@3 ~", X: "d#5@2 d#5@2 c5@3 ~ a4@3 ~ [g4,c5]@4",
  Y: "[[g4,d#5]@3 ~ [g4,c5]@3 ~ a4@3 ~ g4@10 ~@2 [f4,a4,c5]@6 ~@2, ~@3 c5 ~@4]/2", Z: "[e4,g4,c5]@15 ~",
})).s("gm_trombone").gain(0.68).pan(0.6)

// chords · piano
const piano = note(`<
  ~@3 A@2 B C B A C D@2 C@3 A@2 C D ~@2 C@2 D A@2 D B D@2 C D@2 A B C B E@2 F G H@2 I@2 J@2 ~@2 K A K@2 A C A D C A@2 C
  A C D C ~@2 D A D@2 A D B C D C A D@2 A B@2 L M
>`.pickRestart({
  A: "c4@5 g3@2 c4 [a3,c4,f4]@4 [g3,c4,e4]@4, [e4,g4] ~, g3 ~@3", // F C Em
  B: "c4@3 ~@2 c4@3 [a3,c4,f4]@4 [g3,c4,e4]@4, [e4,g4] ~, g3@2 ~ g3@5 ~@8", // F C Em
  C: "~@3 [g3,c4,e4,g4]@5 [a3,c4,f4]@4 [g3,c4,e4]@4", D: "[g3,c4,e4]@3 ~ [a3,c4,f4]@2 [g3,c4,e4]@2",
  E: "[~@29 g3@3, c3@27 c4@5, g3@3 e4, c4@19 g4@13, [e4,g4] c5]/2", // Em
  F: "~@2 [g#3,e4,d5] ~@3 [g#3,e4,b4,d5] ~, ~@4 b4 ~@11", G: "~@6 e4 ~, ~@7 g#3@8 ~, ~@9 d4@5 ~@2",
  H: "[~@25 a4@3 e4@2 ~ c#4, [g3,c#4]@29 ~@3, a4@23 e4@5 ~@4, ~@15 a2@15 ~@2, ~@23 c#5@7 ~@2]/2", // Gdim
  I: "[~@25 d5@3 a4@2 ~ f#4, [c4,f#4]@29 ~@3, d5@23 a4@5 ~@4, ~@15 d3@15 ~@2, ~@23 f#5@7 ~@2]/2", // Cdim
  J: "[~@29 b3@2 ~, [g2,f3]@27 d4@4 ~, b3@21 b4@3 g4@7 ~, d4@19 d5@12 ~, ~@16 g5@15 ~]/2", // G7
  K: "~ c4 [a3,c4,f4] [g3,c4,e4], [g3,e4,g4] ~", L: "c4@3 ~@2 c4@3 ~@3 [a3,c4,f4,a4]@5, [e4,g4] ~, g3@2 ~ g3@5 ~@8",
  M: "[g3,e4,g4]@15 ~", // C
})).s("gm_piano").gain(0.47).pan(0.9)

// chords · electric guitar clean · "Guitar"
const electric_guitar_clean = note(`<
  ~@3 A B@3 A C A C A C@3 A@3 C ~@2 B@2 A@2 B C B@2 A B C@2 A@3 B D E F@2 G H I J K L ~@2 M@2 N O@2 M C B A@3 C A B A B
  ~@2 B C A@3 B@3 C A C B A@2 B@2 P Q
>`.pickRestart({
  A: "[g3,c4,e4]@2 ~ c3 [g3,c4,e4] ~@3 [a3,f4]@3 ~ [g3,e4]@3 ~", // C Dm C
  B: "~@3 c3 [g3,c4,e4,g4]@2 ~@2 [a3,f4]@3 ~ [g3,e4]@3 ~", // C Dm C
  C: "~ [g3,c4,e4,g4] ~ c3 [g3,c4,e4]@2 ~@2 [a3,f4]@3 ~ [g3,e4]@3 ~", // C Dm C
  D: "~@3 c3 [c4,e4,g4]@2 ~@3 [e3,c4] ~@2 [e3,c4]@3 ~", E: "~@3 c3 [c4,e4,g4]@2 ~@3 [e3,c4] ~ c3 [e3,c4]@2 ~@2",
  F: "[~ [g#3,d4] ~ d3 [g#3,d4]@2 ~ [g#3,d4]@2 [d3,g#3] ~@2 [d3,g#3]@3 [d3,g#3]@2 [g#3,d4] ~ d3 [g#3,d4]@2 ~ [g#3,d4] ~ d3 ~ g#3 d3 g#3 ~ d3]/2", // G#dim Ddim G#dim
  G: "a2 [g3,c#4] ~ a2 [g3,a3,c#4] e3 ~ [g3,a3,c#4] e4 [g3,a3,c#4] ~@2 [g3,a3]@2 ~ [g3,a3,c#4], ~@11 e3@2 ~@3", // Gdim A7 Gsus2 A7
  H: "~@3 e3 [g3,a3] e3 ~ c#4 ~ [g3,e4] ~ e3 [g3,c#4]@2 ~@2", // Gsus2 C Gdim
  I: "~ [c4,d4,f#4,a4] ~ a3 [c4,d4,f#4,a4]@2 ~ [c4,d4,f#4] ~ [c4,d4,f#4] ~ a3 [c4,d4,f#4]@2 ~ [c4,d4,f#4]", // D7
  J: "~ [c4,d4] ~ a3 [c4,d4,f#4] a3 ~ [c4,d4,f#4] ~ f#4 ~ a3 ~ a3@2 c4, ~@6 [d4,f#4] ~", // Csus2 D7 D
  K: "~ [b3,d4,g4] ~@2 [b3,d4,f4]@2 ~ [b3,d4,f4] ~@3 g2 ~ g3 ~ [b3,d4], ~@3 g2@5 ~@4 [b3,d4,f4]@2 ~@2", // G Bdim Bm Bdim
  L: "~@4 [b3,d4,f4]@2 ~ [b3,d4,f4,g4] ~ f4 ~ g3 [b3,d4,f4]@2 ~@2", M: "[g3,c4,e4]@3 ~@5 [a3,c4,f4]@3 ~ [g3,c4,e4]@3 ~",
  N: "[g3,c4,e4,g4]@2 ~ c3 [g3,c4,e4]@2 ~@2 [a3,c4,f4]@3 ~ [g3,c4,e4]@3 ~", // C F C
  O: "~@3 c3 [g3,c4,e4,g4]@3 ~ [a3,c4,f4]@3 ~ [g3,c4,e4]@3 ~", // C F C
  P: "~ [g3,c4,e4,g4] ~ c3 [g3,c4,e4]@2 ~@2 [a3,c4,f4]@2 ~ f2 [a3,c4,f4] ~@3", Q: "[g3,c4,g4]@15 ~",
})).s("gm_electric_guitar_clean").gain(0.51).pan(0.3)

// bass · fretless bass · "Bass"
const bass = note(`<
  ~@3 A B A@2 B A@2 B@2 A B@3 A@2 B ~@2 A B A B@2 A@2 B A@5 B@3 C D E F G H I J K L ~@2 M N M N@3 B A B A@6 B ~@2 A@2 B
  A@3 B A@4 B A@4 O P
>`.pickRestart({
  A: "c2 ~@2 c2!2 ~@2 c2 f2@3 ~ c2@3 ~", B: "c2 ~@2 c2!2 ~@3 f2@3 ~ c2@3 ~", C: "c2 ~@2 c2!2 ~@2 c2!2 ~@2 c2!2 g1 ~ a1",
  D: "c2 ~@2 c2!2 ~@2 c2!2 ~@2 c2!2 ~@2 c2", E: "e2@2 ~ e2 ~@3 b1 e2@2 ~ e2 ~@3 b1",
  F: "e2@2 ~ e2 ~@3 b1 e2@2 ~ e2 ~ e2 ~ e2", G: "a1@2 ~ a1 ~@3 e1 a1@2 ~ a1 ~@3 e1",
  H: "a1@2 ~ a1 ~@4 a1@2 ~ a1 a1@2 ~ a1, ~@7 e1@2 ~@7", I: "d2@2 ~ d2 ~@4 d2 ~@2 d2 ~@3 a1, ~@7 a1@2 ~@7",
  J: "d2@2 ~ d2 ~@3 a1 d2@3 ~ d2@2 ~ d2, ~@11 e2@2 ~@3", K: "g2@2 ~ g2 ~@4 g2 ~@2 g2 ~@3 d2, ~@7 d2@2 ~@7",
  L: "g2@2 ~ g2 ~@3 d2 g2@3 ~ g2@2 ~ a2, ~@11 a2@2 ~@3", M: "c2@2 ~ c2 ~@3 c2 f2@3 ~ c2@3 ~",
  N: "c2@2 ~ c2 ~@3 g1 f2@3 ~ c2@3 ~", O: "c2 ~@2 c2!2 ~@2 c2 f2 ~@2 f2!2 ~@3", P: "c2@15 ~",
})).s("gm_fretless_bass").gain(0.46).pan(0.1)

// bass · fretless bass
const bass_2 = note(`<
  A@3 B@2 C@2 B@2 C@2 B@2 C@2 B@2 D ~ A@2 B@2 C@2 B@2 C@2 B@2 C@2 B@2 D ~ E F G@2 H@2 I@2 J@2 A@2 B@2 C@2 B@2 C@2 B@2
  C@2 B@2 D ~ A@2 B@2 C@2 B@2 C@2 B@2 C@2 B@2 D ~ K L
>`.pickRestart({
  A: "g2@3 ~ g2@3 ~ g2@3 ~ g2@3 ~", B: "c2@7 ~ f2@3 ~ c2@3 ~", C: "c2@3 ~ e2@3 ~ f2@3 ~ e2@3 ~", D: "c2@3 ~@13",
  E: "c2@7 ~ c2@5 ~ c2 ~", F: "c2@3 ~ c2@3 ~ d2@3 ~ d#2@3 ~", G: "e2@3 ~ e2@3 ~ e2@3 ~ e2@3 ~",
  H: "a2@3 ~ a2@3 ~ a2@3 ~ a2@3 ~", I: "d2@3 ~ d2@3 ~ d2@3 ~ d2@3 ~", J: "g2@7 ~ g2@7 ~", K: "c2@7 ~ f2@7 ~",
  L: "c2@15 ~",
})).s("gm_fretless_bass").gain(0.42).pan(0)

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

// drums · snare
const snare = s("sd").struct(`<
  A@2 B A@5 C A@3 D A@3 D A@3 B A@5 E A@3 C A@3 E A@3 B F@3 E F@4 A B A@5 G A@3 H A@3 G A@3 B A I A I A J A@3 J A I A D
  A K J L
>`.pickRestart({
  A: "x!4", B: "x!2 ~ x!3 ~ x!3 ~ x!2 ~@3", C: "~@15 x", D: "~@4 x ~@4 x ~ x!2 ~@2 x", E: "~ x ~ x ~@4 x!2 ~@2 x!2 ~@2",
  F: "~ x ~ x", G: "~@4 x ~@4 x ~ x!3 ~@2", H: "~ x ~ x!3 ~@2 x!2 ~@2 x!2 ~@2", I: "x ~@3 x ~@3 x!2 ~@2 x ~@3",
  J: "~@4 x ~@4 x ~ x!3 ~ x", K: "x ~@2 x!3 ~@2 x!2 ~@2 x!2 ~ x", L: "x",
})).gain(0.59)

// drums · low tom
const low_tom = s("lt").struct("<A@2 ~@6 B ~@8 C@3 ~@10 B ~@4 A@3 ~@9 A ~@6 D ~@3 D ~@3 D A@3 ~@16 E ~@2>".pickRestart({
  A: "x!4", B: "~@8 x ~@2 x ~@4", C: "~ x!3", D: "~@15 x", E: "~@11 x ~@4",
})).gain(0.59)

// drums · hihat
const hihat = s("hh").struct(`<
  ~@3 A B C@2 D ~ A@3 E A D F E G@3 ~ C F A D C ~ A C@2 ~ A F C ~@15 B C@2 D H E A@2 C ~ A@2 F E ~@4 B A C A D E A D@2 E
  A@2 D E A ~ E G
>`.pickRestart({
  A: "x ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x", B: "x ~@2 x!3 ~ x!2 ~@2 x!3 ~ x", C: "x ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@3",
  D: "x ~@2 x!2 ~@3 x ~@2 x!2 ~@2 x", E: "x ~@2 x ~@12", F: "x ~@2 x!2 ~@2 x!3 ~ x!3 ~ x", G: "x",
  H: "x!2 ~ x!2 ~@2 x!2 ~@2 x!2 ~@2 x",
})).gain(0.59)

// drums · mid tom
const mid_tom = s("mt").struct("<~@8 A ~@21 A ~@27 B ~@23 C ~@2>".pickRestart({
  A: "~@5 x ~@2 x ~@7", B: "x ~@10 x ~@4", C: "~@7 x ~@8",
})).gain(0.59)

// drums · open hat
const open_hat = s("oh").struct(`<
  ~@5 A@2 B ~@6 B ~@6 A ~@2 B A ~@2 A@2 ~@3 A ~@16 A@2 B C D ~@2 A ~@4 D ~@6 A ~ B D ~ B@2 D ~@2 B ~@3 D ~
>`.pickRestart({
  A: "~@15 x", B: "~@7 x ~@8", C: "~@3 x", D: "~ x ~@2",
})).gain(0.52)

// drums · high tom
const high_tom = s("ht").struct("<~@8 [x!2 ~ x ~ x ~@10] ~@21 [x!2 ~ x ~ x ~@10] ~@27 [~@7 x ~@8] ~@26>").gain(0.59)

// drums · crash
const crash = s("cr").struct(`<
  ~@3 A ~@5 A ~@2 B A ~@2 B ~@10 A ~@3 A ~@7 A ~@3 A ~@11 A ~@3 A ~@13 A ~@3 A ~@2 B A ~@2 A
>`.pickRestart({
  A: "x", B: "~ x ~@2",
})).gain(0.59)

// drums · ride
const ride = s("rd").struct(`<
  ~@39
  [x ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x]
  [x!2 ~ x!2 ~@2 x!2 ~@2 x!2 ~@2 x]
  [x ~@2 x!2 ~@2 x!3 ~ x!2 ~@2 x]
  ~
  [x ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x]!3
  [x!2 ~ x!2 ~@2 x!2 ~@2 x!2 ~@2 x]
  ~@38
>`).gain(0.59)

// drums · tambourine
const tambourine = s("tb").struct("<~@39 [~@3 x]!3 ~ [~@3 x]!4 ~@38>").gain(0.66)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@39 [x!2 ~ x!3 ~ x!3 ~ x!3 ~ x]!3 ~ [x!2 ~ x!3 ~ x!3 ~ x!3 ~ x]!4 ~@38>").gain(2)

// drums · shaker
const shaker = s("sh").struct("<~@39 [x ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x]!3 ~ [x ~@2 x!2 ~@2 x!2 ~@2 x!2 ~@2 x]!4 ~@38>")
  .gain(0.59)

stack(
  trombone, piano, electric_guitar_clean, bass, bass_2, kick, snare, low_tom, hihat, mid_tom, open_hat, high_tom, crash,
  ride, tambourine, cabasa, shaker
)

More by The Dave Clark Five