Strudelify
Gimme Some Lovin' cover art

Gimme Some Lovin' / Blues In F

Gimme Some Lovin'

The Spencer Davis Group

KeyG majorTempo151 bpm
0:00/0:00
// Gimme Some Lovin' — The Spencer Davis Group
// 151 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 132 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
setcpm(151/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(`<
  A B@2 A B A B A B@7 A B A@3 B A C D E F B@2 A B@2 A@2 B A B@4 A B A B A B A B@3 A@3 C G E H B A@3 B A B A B A B A B@3
  A B@4 A B A B A B I J K F B A B@2 A B A B A B@4 A B@3 A B@3 A B@3 A L D M H B@2 A@2 B A B A B@3 A@2 B A@2
>`.pickRestart({
  A: "g2 ~ g2 ~ g2@2 g2 ~ g2@2 ~@2 g1@3 ~", B: "g2 ~ g2 ~ g2 ~ g2 ~ g2@2 ~@2 g1@3 ~",
  C: "g2 ~ g2 ~ g2@2 g2 ~ g2 ~ g2 ~ g2 ~ g2 ~", D: "a#2 ~ a#2 ~ a#2 ~ a#2 ~ a#2 ~ a#2 ~ a#2 ~ a#2 ~",
  E: "c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3@2 c3 ~", F: "d#3 ~ d#3 ~ d#3@2 d#3 ~ d#3 ~ d#3 ~ d#3@2 d#3 ~",
  G: "a#2 ~ a#2 ~ a#2 ~ a#2 ~ a#2 ~ a#2 ~ a#2@2 a#2 ~", H: "d#3 ~ d#3 ~ d#3 ~ d#3 ~ d#3 ~ d#3 ~ d#3@2 d#3 ~",
  I: "g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2@2 g2 ~", J: "a#2 ~ a#2 ~ a#2@2 a#2 ~ a#2 ~ a#2 ~ a#2 ~ a#2 ~",
  K: "c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~ c3 ~", L: "g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~ g2 ~",
  M: "c3 ~ c3 ~ c3@2 c3 ~ c3 ~ c3 ~ c3@2 c3 ~",
})).s("gm_synth_bass_1").gain(0.62)

// chords · percussive organ · "ORGAN 2"
const percussive_organ = note(`<
  ~@4 A@8 B C B C B C B C B C D E F G H@2 I@4 ~@2 A@8 B C B C B C B C B C D E F G H@2 I@4 ~@2 A@8 B C B C B C B C B C D
  E F G H@2 I@4 ~@2 A@8 B C B C B C B C B C D E F G H@2 I@4 ~@2 A@4 J@4
>`.pickRestart({
  A: "[[f5,d6,f6]@24 [e5,c6,e6]@3 [f5,d6,f6]@2 [e5,c6,e6]@2 ~ [d5,b5,d6]@28 ~@4, g5@15 ~, c#6 ~@31 a#5 ~@31]/4", // Dm C Dm C G
  B: "[g4,b4,d5]@5 ~ [g4,c5,e5]@7 ~@3", C: "[g4,b4,d5]@5 ~ [g4,c5,e5]@6 ~@4", D: "[g4,b4,d5]", E: "[a#4,d5,f5]",
  F: "[c5,e5,g5]", G: "[d#5,g5,a#5]", H: "[[d5,b5]@7 [e5,c6]@9, g5 ~]/2", I: "[[d5,b5]@7 [e5,c6]@9]/2",
  J: "[[f5,d6,f6]@24 [e5,c6,e6]@3 [f5,d6,f6]@2 [e5,c6,e6]@2 ~ [d5,b5,d6]@28 [g2,g3]@2 ~@2, g5@15 ~, c#6 ~@31 a#5 ~@31]/4", // Dm C Dm C G
})).s("gm_percussive_organ").gain(0.52)

// chords · percussive organ · "ORGAN 2"
const percussive_organ_2 = note(`<
  ~@4 A@8 ~@10 B C D E F@2 G@4 ~@2 A@8 ~@10 B C D E F@2 G@4 ~@2 A@8 ~@10 B C D E F@2 G@4 ~@2 A@8 ~@10 B C D E F@2 G@4
  ~@2 A@4 H@4
>`.pickRestart({
  A: "[[f5,d6,f6]@24 [e5,c6,e6]@3 [f5,d6,f6]@2 [e5,c6,e6]@2 ~ [d5,b5,d6]@28 ~@4, g5@15 ~, c#6 ~@31 a#5 ~@31]/4", // Dm C Dm C G
  B: "[g4,b4,d5]", C: "[a#4,d5,f5]", D: "[c5,e5,g5]", E: "[d#5,g5,a#5]", F: "[[d5,b5]@7 [e5,c6]@9, g5 ~]/2",
  G: "[[d5,b5]@7 [e5,c6]@9]/2", // G C
  H: "[[f5,d6,f6]@24 [e5,c6,e6]@3 [f5,d6,f6]@2 [e5,c6,e6]@2 ~ [d5,b5,d6]@28 [g2,g3]@2 ~@2, g5@15 ~, c#6 ~@31 a#5 ~@31]/4", // Dm C Dm C G
})).s("gm_percussive_organ").gain(0.52)

// chords · trumpet
const trumpet = note(`<
  ~@4 A@8 ~@10 B C D E F@2 G@4 ~@2 A@8 ~@10 B C D E F@2 G@4 ~@2 A@8 ~@10 B C D E F@2 G@4 ~@2 A@8 ~@10 B C D E F@2 G@4
  ~@2 A@4 H@4
>`.pickRestart({
  A: "[[f4,d5,f5]@24 [e4,c5,e5]@3 [f4,d5,f5]@2 [e4,c5,e5]@2 ~ [d4,b4,d5]@28 ~@4, g4@15 ~, c#5 ~@31 a#4 ~@31]/4", // Dm C Dm C G
  B: "[g3,b3,d4]", C: "[a#3,d4,f4]", D: "[c4,e4,g4]", E: "[d#4,g4,a#4]", F: "[[d4,b4]@7 [e4,c5]@9, g4 ~]/2",
  G: "[[d4,b4]@7 [e4,c5]@9]/2", // G C
  H: "[[f4,d5,f5]@24 [e4,c5,e5]@3 [f4,d5,f5]@2 [e4,c5,e5]@2 ~ [d4,b4,d5]@28 [g1,g2]@2 ~@2, g4@15 ~, c#5 ~@31 a#4 ~@31]/4", // Dm C Dm C G
})).s("gm_trumpet").gain(0.53)

// chords · piano · "A.PIANO 1"
const piano = note(`<
  ~@11 A B C@2 D@3 C@4 E F G H I@2 J@2 K@2 ~@9 L B C@2 D@3 C@4 E F G H I@2 J@2 K@2 ~@9 A B C@2 D@3 C@4 E F G H I@2 J@2
  K@2 ~@9 L B C@2 D@3 C@4 E F G H I@2 J@2 K@2 ~@9 M
>`.pickRestart({
  A: "[a4,d5,f5] ~ [a4,d5,f5]@2 ~@2 [g4,c5,e5]@4 ~@2 [g4,c5,e5]@2 ~@2", B: "~@2 [g4,b4,d5] ~@2 [g4,c5,e5]@2 ~",
  C: "~@2 [g4,b4,d5] ~@2 [g4,c5,e5] ~@2", D: "~@4 [g4,b4,d5]@3 ~@3 [g4,c5,e5]@2 ~@4", E: "[g4,b4,d5]@7 ~",
  F: "[a#4,d5,f5]@7 ~", G: "[c5,e5,g5]@7 ~", H: "[d#5,g5,a#5]@15 ~",
  I: "[~@10 [g5,b5] ~@3 [e5,g5,c6]@10 ~@8, ~@5 d5 ~@10]/2", J: "[~@10 [g5,b5] ~@3 [e5,g5,c6]@14 ~@4, ~@5 d5 ~@10]/2",
  K: "[~@10 [d5,g5]@2 ~@2 [e5,g5,c6]@15 ~@3, ~@10 b5 ~@21]/2", // G5 C
  L: "[a4,d5,f5] ~ [a4,d5,f5]@2 ~@2 [g4,c5,e5]@4 ~@2 [g4,c5]@2 ~@2, ~@12 e5 ~@3", M: "~@6 [g3,g4] ~",
})).s("gm_piano").gain(0.72)

// drums · kick
const kick = s("bd").struct("x!2 ~ x!2 ~@3").gain(0.8)

// drums · snare
const snare = s("sd").struct("~ x ~ x").gain(0.8)

// drums · clap
const clap = s("cp").struct("~@3 x").gain(0.56)

// drums · hihat
const hihat = s("hh").struct("<[x!8]!131 [x!7 ~]>").gain(0.72)

// drums · crash
const crash = s("cr").struct("<~@22 A@4 ~@26 A@4 ~@26 A@4 ~@26 A@4 ~@15 B>".pickRestart({
  A: "x", B: "~@3 x",
})).gain(0.72)

// drums · tambourine
const tambourine = s("tb").struct("~ x ~ x").gain(0.72)

// drums · cowbell
const cowbell = s("cb").struct(`<
  ~@12 A B A B A B A B A B A B A B A B A B A B ~@10 A B A B A B A B A B A B A B A B A B A B ~@10 A B A B A B A B A B A B
  A B A B A B A B ~@10 A B A B A B A B A B A B A B A B A B A B ~@10
>`.pickRestart({
  A: "x ~ x ~@2 x ~ x", B: "~ x!2 ~",
})).gain(0.72)

stack(bass, percussive_organ, percussive_organ_2, trumpet, piano, kick, snare, clap, hihat, crash, tambourine, cowbell)

More by The Spencer Davis Group