Strudelify

Any Way You Want It

The Dave Clark Five

KeyD minorTempo160 bpm
0:00/0:00
// Any Way You Want It — The Dave Clark Five
// 160 bpm, 4/4, key D minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 77 bars on a 16-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(160/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 · tenor sax · "Sax"
const tenor_sax = note(`<
  ~@4 A B@3 A C@7 D E F@2 G H@3 A I@7 D J K@2 L M N O P Q R S@2 A B@3 A C@7 D E F@2 G H@3 A I@7 D J T@2
>`.pickRestart({
  A: "a3@2 g3@2 a3@2 g3@2 a3@2 a3@5 ~", B: "[a3@2 g3@2 a3@2 g3@2 a3@3 ~ g3@2 a3@34]/3",
  C: "[a3@2 g3@2 a3@2 g3@2 a3@3 ~ g3@2 a3@26 ~@2 f3@2 f3@2 f3@10 ~@2 f3@2 f3@2 f3@10 ~@2 a3@2 a3@2 a3@10 ~@2 c4@2 c4@2 c4@8 ~@2 d4@2 c4@2 d4@2 c4@2]/7",
  D: "d4@3 ~ c4@6 ~@2 d4@3 ~", E: "c4@2 ~ d4@2 d4@2 ~ d4@2 ~ c4@2 d4@2 ~", F: "[c4@22 ~@6 a3@3 ~]/2",
  G: "a3@3 ~ a3@3 ~ a3@2 a3@2 a3@3 ~", H: "[d4@3 ~ d4@2 c4@2 d4@2 d4@3 ~ c4@30 f3@3 ~]/3",
  I: "[d4@2 c4@2 d4@2 c4@2 d4@2 d4@3 ~ c4@26 ~@2 f3@2 f3@2 f3@10 ~@2 f3@2 f3@2 f3@10 ~@2 a3@2 a3@2 a3@10 ~@2 c4@2 c4@2 c4@8 ~@2 d4@2 c4@2 d4@2 c4@2]/7",
  J: "c4@2 ~ f3@2 f3@2 ~ a3@2 ~ a3@2 a3@2 ~", K: "[f3@31 ~]/2", L: "d3@3 ~ f3@3 ~ f3@6 ~@2",
  M: "d3@2 f3@2 f3@2 f3@2 g3@3 ~ f3@3 ~", N: "d3@3 ~ d3@3 ~ f3@3 ~ f3@3 ~", O: "c4@13 ~@3", P: "f3@3 ~ f3@3 ~ f3@6 ~@2",
  Q: "f3@2 f3@2 f3@2 f3@2 g3@3 ~ f3@4", R: "~@3 g3@2 g3@2 ~ g3@2 ~ g3@2 g3@2 ~", S: "[c4@31 ~]/2", T: "[f3@5 ~@3]/2",
})).s("gm_tenor_sax").gain(0.35).pan(0.3)

// chords · electric guitar clean · "Guitar"
const electric_guitar_clean = note(`<
  A B A C D E@2 F D E@2 G@5 H I J K D L@2 M D L@2 N@5 H O P Q R@2 S T R U V W X D E@2 F D E@2 G@5 H I J K D L@2 M D L@2
  N@5 H O Y Z
>`.pickRestart({
  A: "~@2 [c4,f4,a4]!2 ~@2 [c4,f4,a4]@2", B: "~@2 [d4,f4,a4]!2 ~@2 [d4,f4,a4]@2",
  C: "~@4 [d4,f4,a4]@2 [d4,f4,a4]@2 ~@4 [d4,f4,a4]@3 ~", D: "[c4,f4]@3 ~ [c4,f4]@3 ~ [c4,f4]@6 ~@2",
  E: "[[d4,f4]@3 ~ [d4,f4]@3 ~ [d4,f4]@5 ~ [c4,f4]@5 ~ [c4,f4]@2 [c4,f4]@2 ~@4 [c4,f4]@2 [c4,f4]@2]/2", // Dm F5
  F: "~@4 [d4,f4]@2 [d4,f4]@2 ~@4 d4@3 ~", // Dm
  G: "[~@4 [d4,f4]@2 [d4,f4]@2 ~@2 [a3,d4]@2 [a3,d4]@2 [a3,c4]@10 ~@2 [a3,c4]@2 [a3,c4]@2 [a3,d4]@10 ~@2 [d4,f4]@2 [d4,f4]@2 [c4,f4]@10 ~@2 [f4,a4]@2 [f4,a4]@2 [f4,a4]@8 ~@2 [f4,a4]@3 ~ [f4,a4]@3 ~]/5", // Dm D5 Am D5 Dm F5 F
  H: "[f4,bb4]@13 ~@3", I: "[e4,bb4]", J: "~@2 [f4,a4]!2 ~@2 [f4,a4]!2", K: "~@4 [f4,a4]@2 [f4,a4]@2 ~@4 [bb3,e4]@3 ~",
  L: "[[f4,a4]@3 ~ [f4,a4]@3 ~ [f4,a4]@5 ~ [f4,a4]@5 ~ [f4,a4]@2 [f4,a4]@2 ~@4 [f4,a4]@2 [f4,a4]@2]/2", // F
  M: "~@4 [f4,a4]@2 [f4,a4]@2 ~@4 [a3,d4]@3 ~", // F D5
  N: "[~@4 [f4,a4]@2 [f4,a4]@2 ~@2 [a3,d4]@2 [a3,d4]@2 [a3,c4]@10 ~@2 [a3,c4]@2 [a3,c4]@2 [a3,d4]@10 ~@2 [d4,f4]@2 [d4,f4]@2 c4@10 ~@2 [f4,a4]@2 [f4,a4]@2 [f4,a4]@8 ~@2 [f4,a4]@3 ~ [f4,a4]@3 ~, ~@23 f4@4 ~@13]/5", // F D5 Am D5 Dm F
  O: "[e4,bb4]@2 ~ [bb3,d4]@2 [bb3,d4]@2 ~ [bb3,e4]@8", P: "~@2 [a3,c4]!2 ~@2 [a3,c4]@2",
  Q: "~@4 [a3,c4]@2 [a3,c4]@2 [a3,d4]@3 ~ [a3,eb4]@3 ~", R: "[bb3,d4]@13 ~@3", S: "[a3,c4]@3 ~ [a3,d4]@4",
  T: "~@4 [eb4,a4]@2 [eb4,a4]@2 ~@4 [eb4,a4]@3 ~", U: "bb3@13 ~@3", V: "[b3,d4]",
  W: "~@2 [c4,e4,bb4]!2 ~@2 [c4,e4,g4]@2", X: "~@4 [c4,e4,a4]@2 [c4,e4,a4]@2 ~@4 [c4,e4,bb4]@3 ~",
  Y: "~@4 [a3,c4]@2 [a3,c4]@2 ~@4 [a3,c4]@3 ~", Z: "[a3,c4] ~@3",
})).s("gm_electric_guitar_clean").gain(0.39).pan(0.1)

// chords · piano
const piano = note(`<
  A B C D E F A G A H E B I J A K L M E N A J O P I G I Q A D I R S T A U V@2 W X L Y Z M AA I J C F AB AC W AD A D E Q
  AE AF A AG A J AB AH O AD W R A H W K AI AJ I AK
>`.pickRestart({
  A: "[a3,c4,f4]", B: "[a3,d4,f4]", C: "~@2 a4@2 c5@2 [a3,c4,f4]@3 ~ [a3,c4,f4]@3 ~ [a3,c4,f4]@2, f4 ~@3",
  D: "[a3,d4,f4] ~ [a3,d4,f4]@4 d3@2 [a3,d4,f4] ~ [a3,d4,f4]@4 d3@2", // Dm
  E: "[a3,c4,f4] ~ [a3,c4,f4]@4 f3@2 [a3,c4,f4] ~ [a3,c4,f4]@4 f3@2", // F
  F: "~@2 [a3,d4,f4] ~ [a3,d4,f4] ~ [a3,d4,f4] ~ [a3,d4,f4] ~ [a3,d4,f4]@5 d3", // Dm
  G: "~@2 [a3,d4,f4]@5 ~ [a3,d4,f4] ~ [a3,d4,f4]@6", H: "~@2 [a3,d4,f4]@6 [a3,d4,f4] ~ [a3,d4,f4]@3 ~ [a3,d4,f4]@2",
  I: "~@2 [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4]@4 f3@2", // F
  J: "~@2 [a3,d4,f4] ~ [a3,d4,f4] ~ [a3,d4,f4] ~ [a3,d4,f4] ~ [a3,d4,f4]@4 d3@2", // Dm
  K: "~@2 [c4,d4,f4,a4]@5 ~ [c4,d4,f4,a4] ~ [c4,d4,f4,a4]@6", L: "~@2 [bb3,d4,f4]@5 ~ [bb3,d4,f4] ~ [bb3,d4,f4]@6",
  M: "~@2 [bb3,c4,e4,g4] ~ [bb3,c4,e4,g4] ~ [bb3,c4,e4,g4] ~ [bb3,c4,e4,g4] ~ [bb3,c4,e4,g4]@5 c3", // C7
  N: "[a3,c4,f4] ~ [a3,c4,f4]@5 ~ [a3,c4,f4] ~ [a3,c4,f4]@2 ~@2 [bb3,c4,e4,g4] ~", // F C7
  O: "~@2 [a3,c4,f4]@5 ~ [a3,c4,f4] ~ [a3,c4,f4]@6", // F
  P: "~@2 f4@2 a4@2 [c4,d4,f4,a4]@3 ~ [c4,d4,f4,a4]@3 ~ [c4,d4,f4,a4]@2, c4 ~@3", // Dm7
  Q: "[c4,d4,f4,a4]@4 ~@2 a4 d5, ~@4 c4@3 ~, ~@5 f4@2 ~", R: "[c4,d4,f4,a4]", S: "[f3,bb3,d4]",
  T: "~@2 [bb3,c4,e4,g4] ~@3 [bb3,d4,f4]@2 [bb3,c4,e4,g4]@4 bb3 c4 e4 g4", // C7 Bb C7
  U: "~@2 [c4,eb4,f4,a4] ~ [c4,eb4,f4,a4] ~ [c4,eb4,f4,a4] ~ [c4,eb4,f4,a4] ~ [c4,eb4,f4,a4]@5 f3", // F7
  V: "[[f3,bb3,d4]@25 ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~ [f3,bb3,d4] ~]/2", // Bb
  W: "~@2 [a3,c4,f4]@6 [a3,c4,f4] ~ [a3,c4,f4]@3 ~ [a3,c4,f4]@2", // F
  X: "~@2 a4@2 c5@2 [c4,eb4,f4,a4]@3 ~ [c4,eb4,f4,a4]@3 ~ [c4,eb4,f4,a4]@2, eb4 ~@3", // F7
  Y: "~@2 [bb3,d4,f4] ~ [bb3,d4,f4] ~ [bb3,d4,f4] ~ [bb3,d4,f4] ~ [bb3,d4,f4] ~ [bb3,d4,f4] bb2 [bb3,d4,f4] ~", // Bb
  Z: "~@2 [b3,d4,f4,g4]@5 ~ [b3,d4,f4,g4] ~ [b3,d4,f4,g4]@6", AA: "[bb3,c4,e4,g4]@4 ~@2 g4 c5, ~@4 bb3@3 ~, ~@5 e4@2 ~",
  AB: "[a3,c4,f4]@4 ~@2 c5 f5, ~@4 f4@3 ~, ~@5 a4@2 ~", // F
  AC: "~@2 f4@2 a4@2 [a3,d4,f4]@3 ~ [a3,d4,f4]@3 ~ [a3,d4,f4]@2, d4 ~@3", // Dm
  AD: "[a3,d4,f4]@4 ~@2 a4 d5, ~@4 d4@3 ~, ~@5 f4@2 ~", // Dm
  AE: "~@2 d4@2 f4@2 [bb3,d4,f4]@3 ~ [bb3,d4,f4]@3 ~ [bb3,d4,f4]@2, bb3 ~@3", // Bb
  AF: "~@2 e4@2 g4@2 [bb3,c4,e4,g4]@3 ~ [bb3,c4,e4,g4]@3 ~ [bb3,c4,e4,g4]@2, bb3 ~@3", // C7
  AG: "~@2 [a3,c4,f4] ~ [a3,c4,f4] ~ [a3,c4,f4] ~@3 [a3,c4,f4]@2 [bb3,c4,e4,g4]@4", // F C7
  AH: "[c4,d4,f4,a4] ~ [c4,d4,f4,a4]@4 d3@2 [c4,d4,f4,a4] ~ [c4,d4,f4,a4]@4 d3@2", // Dm7
  AI: "[bb3,d4,f4]@4 ~@2 f4 bb4, ~@4 bb3@3 ~, ~@5 d4@2 ~", // Bb
  AJ: "[bb3,c4,e4,g4]@4 ~@2 [bb3,d4,f4]@2 ~@2 [bb3,c4,e4,g4] ~ [bb3,c4,e4,g4] ~ [bb3,c4,e4,g4] ~", AK: "[a3,c4,f4] ~@3",
})).s("gm_piano").gain(0.55).pan(0.9)

// bass · electric bass finger · "Bass"
const bass = note(`<
  A B A B A C@2 D A C@2 D E F E G H I J@2 A C@2 K A C@2 D E F E G H I L M N O P Q N O R S T A C@2 D A C@2 D E F E G H I
  J@2 A C@2 K A C@2 D E F E G H I U V
>`.pickRestart({
  A: "f2 ~ f2 e2", B: "d2 ~ d2 e2", C: "[d2@2 ~@2 d2@3 f2@3 ~@2 f2@2 e2@2]/2", D: "d2 ~ d2 ~", E: "~ f2!2 f2@5",
  F: "~ d2!2 d2@5", G: "~ d2 d3 c3", H: "bb2@4 g2 a2 bb2@2", I: "c3 ~ c2@2", J: "f2 ~ c2 ~", K: "d2 ~ d2 c2",
  L: "f2 ~ c3 d3", M: "f3 eb3 d3 c3", N: "bb2@3 f2", O: "bb2", P: "f2 c3", Q: "f3 ~ f2 ~", R: "[g2,f3]", S: "c3 bb2",
  T: "a2 g2", U: "f2@2 ~@2 c3 d3 e3@2", V: "f3 c3 f2 ~",
})).s("gm_electric_bass_finger").gain(0.72).pan(0)

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

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

// drums · low tom
const low_tom = s("lt").struct("<~@7 A ~@11 B ~@15 B ~@11 C B ~@7 A ~@15 A ~@2 B ~>".pickRestart({
  A: "~@7 x", B: "~@3 x!5", C: "~@5 x ~@2",
})).gain(0.56)

// drums · low tom · soft notes
const low_tom_soft = s("lt").struct("<~@19 A ~@15 A ~@12 A ~@26 A ~>".pickRestart({
  A: "~ x ~@2",
})).gain(0.32)

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

// drums · mid tom
const mid_tom = s("mt").struct("<~@7 A ~@7 B ~@23 B ~@12 B ~@3 A ~@3 B ~@11 A ~ B ~@2>".pickRestart({
  A: "~@13 x ~@2", B: "~@4 x!2 ~@2",
})).gain(0.64)

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

// drums · high tom
const high_tom = s("ht").struct("<~@15 A ~@23 A ~@12 A ~@7 A ~@13 A ~ B>".pickRestart({
  A: "~ x ~@2", B: "x",
})).gain(0.56)

// drums · crash
const crash = s("cr").struct(`<
  A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@4 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3 A ~@3
>`.pickRestart({
  A: "x",
})).gain(0.56)

// drums · tambourine
const tambourine = s("tb").struct("<~@16 A@4 ~@12 A@7 ~ A@4 ~@4 A ~@8 A@3 ~@13 A ~ A ~>".pickRestart({
  A: "x!8",
})).gain(0.64)

// drums · cabasa
const cabasa = s("cabasa:4").struct("<~@16 A@4 ~@12 A@7 ~ A@4 ~@4 A ~@8 A@3 ~@13 A ~ A ~>".pickRestart({
  A: "~ x ~ x ~ x ~ x",
})).gain(2.43)

// drums · shaker
const shaker = s("sh").struct("<~@16 A@4 ~@12 A@7 ~ A@4 ~@4 A ~@8 A@3 ~@13 A ~ A ~>".pickRestart({
  A: "x!4",
})).gain(0.64)

// drums · shaker · soft notes
const shaker_soft = s("sh").struct("<~@16 A@3 ~@13 A@3 ~ A@3 ~ A@4 ~@13 A@3 ~@13 A ~@3>".pickRestart({
  A: "~ x ~ x ~ x ~ x",
})).gain(0.4)

stack(
  tenor_sax, electric_guitar_clean, piano, bass, kick, snare, low_tom, low_tom_soft, hihat, mid_tom, open_hat, high_tom,
  crash, tambourine, cabasa, shaker, shaker_soft
)

More by The Dave Clark Five