Strudelify

Anybody Seen My Baby

The Rolling Stones

KeyE minorTempo103 bpm
0:00/0:00
// Anybody Seen My Baby — The Rolling Stones
// 103 bpm, 4/4, key E minor. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: pitch bends are ignored
// note: Full arrangement: all 96 bars on a 24-step grid, each part at one level; ghost notes are separate "_soft" parts. Source detail keeps the original performance.
setcpm(103/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 2 · "synthbass2"
const bass = note(`<
  A@2 B C A@2 B C A@2 B C D E D E D E F G@2 H I J K H I J K H I J K H I J K C@2 A@2 B C A@2 B C D E D E D E F G@2 H I J
  K H I J K H I J L H M N O H M N L P ~ H I J K H I J K H I J L H M N O Q@2
>`.pickRestart({
  A: "a1@3 c2@3 d2@3 e2@3 d2@3 c2@3 a1@5 ~", B: "a1 c2 d2 e2 d2 c2 a1 g1", C: "a1@6 ~@3 a1@10 ~@5",
  D: "a1@6 ~@3 a1@6 e1@4 ~@5", E: "a1@2 ~ a1@2 e1 g1@2", F: "a1@6 ~@3 a1@6 e1@4 ~@2 e1@3", G: "e1/2",
  H: "c2@2 ~ c2@4 ~", I: "c2@2 ~ c2@4 d2", J: "e2@2 ~ e2@4 ~", K: "e2@2 ~ e2@4 g2", L: "e2@2 ~ e2@2 d2 e2 g2",
  M: "d2@2 ~ d2@4 d2", N: "e2@2 ~ e2@4 d2", O: "e2@2 ~ e2@2 g1 a1 b1", P: "c2 ~@3", Q: "[e2@43 ~@5]/2",
})).s("gm_synth_bass_2").gain(0.66)

// other · lead 1 square · "squarewave"
const lead_1_square = note("<~@72 A@4 ~@20>".pickRestart({
  A: "[e4@21 b4@6 a4@6 e4@56 ~@7]/4",
})).s("gm_lead_1_square").gain(0.44).pan(0.7)

// chords · distortion guitar · "distortion"
const distortion_guitar = note(`<
  ~@21 A@2 B@2 A@2 C@2 A@2 B@2 A@2 C@2 ~ D ~@3 D ~@3 D ~@9 A@2 B@2 A@2 C@2 A@2 B@2 A@2 C@2 ~@2 E@2 ~@2 A@2 B@2 A@2 C@2
  A@2 B@2 A@2 C@2 F@2
>`.pickRestart({
  A: "[[c3,c4]@8 d3 d3@2 d3 [d3,a3,d4]@4, g3@9 [a3,d4]@3 ~@4]/2", // C D5
  B: "[~@9 [e3,b3] d4 ~@2 e2@3, e2@23 ~ e2@14 ~@10, ~@3 [a3,d4]@11 ~@10, ~@6 d3@20 ~@7 [e3,b3]@15]/2", // E5 D5 E5
  C: "[~@2 [a3,c4] d4 [g3,d4]@2 [a3,c4] d4 d4@2 d4 ~@2 e2@3, e2@37 ~@11, ~@2 d3@2 ~@2 d3@2 g3@3 [e3,b3]@5]/2", // Am G5 Am E5
  D: "~@9 [g3,c4,e4]@3 [a3,c4,f4]@6 [g3,c4,e4]@2 ~@4", E: "~@9 [e4,g4,b4]@3 [e4,g4,c5]@6 [e4,g4,b4]@2 ~@4",
  F: "[[e2,b2,e3]@43 ~@5]/2", // E5
})).s("gm_distortion_guitar").gain(0.44).pan(0.7)

// chords · overdriven guitar · "overdrgitr"
const overdriven_guitar = note(`<
  ~@19 A@4 B@2 C@2 D@2 C@2 B@2 C@2 D@2 ~@17 A@4 B@2 C@2 D@2 C@2 B@2 C@2 D@2 E@4 ~@2 C@2 B@2 C@2 D@2 C@2 B@2 C@2 D@2 F@2
>`.pickRestart({
  A: "[~@15 e3 ~@2 g4@2 f#4 d4 b3 ~ d3@8, e2@25 ~@23, ~@9 b3@6 b3@12 e4@6 g3@6 b3@9 ~@21 a3@26 ~, ~@4 e4@3 e3@7 g3@2 [c3,g3]@8 ~@8, ~@3 g3@2 b3 e4@2 ~@8]/4", // C5
  B: "[~@6 d4@15 ~@12 g3@14 ~, [e2,b2]@47 ~, ~@6 a3@18 d4@23 ~, ~@21 b3@6 g3@5 ~@16, ~@30 e3@17 ~]/2", // E5
  C: "[~@2 g4@2 f#4 d4 b3 ~ d3@8, [c3,g3] ~, ~@21 a3@26 ~]/2", // C5
  D: "[~@2 c4 d4 [g3,d4]@2 c4 d4 [g3,d4]@8, [e2,b2]@47 ~, ~ a3 ~ a3 ~@4]/2", E: "[e4@21 b4@6 a4@6 e4@56 ~@7]/4",
  F: "[[e2,b2,e3]@43 ~@5]/2", // E5
})).s("gm_overdriven_guitar").gain(0.38).pan(0.1)

// chords · electric guitar clean · "cleangitr"
const electric_guitar_clean = note(`<
  ~@11 A@3 B C@3 B D@4 E@2 F@2 E@2 F@2 E@2 F@2 E@2 ~@9 A@3 B C@3 B D@4 E@2 F@2 E@2 F@2 E@2 F@2 E@2 ~@6 F@2 E@2 F@2 E@2
  F@2 E@2 F@2 E@2 G@2
>`.pickRestart({
  A: "[~@24 e4@14 ~@19 e4@15, ~@11 e3@25, ~@23 [a3,b3]@21 ~ b3@27, ~@13 e4@5 ~@6, ~@51 g3@20 ~]/3", // Asus2
  B: "~@5 e4@3, f3, ~ a3@7, ~ c4@3, ~@9 d4@8 ~@7",
  C: "[~@21 e4@2 ~ e4@14 ~@19 e4@15, a2@8 ~@5 e4@5 ~@6, g3@9 e4@9 b3@6 a3@24 ~@3 g3@20 ~, ~ b3@4 g3@3 b3@7 b3@9, ~@6 d4@14 ~@3 e3@24 ~@25]/3",
  D: "[~@45 e3@3 ~@15 d4@3 b3@3 ~@3 d3@6 ~@3 d3@6 ~@3 d3@5 ~, e2@25 ~@5 f#4@3 ~@6 d4@9, ~@9 b3@6 b3@12 e4@6 g3@6 b3@9 ~@3 g3@5 ~ g3@7 ~@5 a3@27, ~@12 e4@9 e3@21 g3@6 c3@23 ~@16 f#3@9, ~@18 g3@12 b3@6 e4@12 ~@6 g4@7 ~@35]/4",
  E: "[[e2,b2]@6 e3@14 ~@25 b3@3, ~@3 a3@11 ~@10, ~@6 d4@20 ~@7 e4@15, ~@21 e3@5 ~ e3@9 e3@5 ~ e3@6, ~@8 b3@5 b3@2 ~]/2", // E5
  F: "[~@15 d4@3 b3@3 ~@3 d3@6 ~@3 d3@6 ~@3 d3@5 ~, c3@23 ~@16 f#3@9, ~@3 g3@5 ~ g3@7 ~@5 a3@27, ~ g4 f#4 ~@2 d4@3]/2",
  G: "[[e3,b3,e4]@43 ~@5]/2", // E5
})).s("gm_electric_guitar_clean").gain(0.38).pan(0.6)

// drums · kick
const kick = s("bd").struct("<[x ~@2 x ~@4]!76 x ~ [x ~@2 x ~@4]!16 ~@2>").gain(0.72)

// drums · snare
const snare = s("sd").struct(`<
  [x ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x]!29
  [~@2 x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x]
  [x ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x]!46
  [~ x ~@2]
  [~@9 x ~ x!2 ~ x ~@9]
  [~@2 x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x]
  [x ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x]!15
  ~@2
>`).gain(0.24)

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

// drums · hihat · soft notes
const hihat_soft = s("hh").struct(`<
  ~@21 A@3 B C A@2 D A@3 B E A@2 D ~@19 A@3 B C A@2 D A@3 B E A@2 D ~@6 A@3 B C A@2 D A@3 B E A@2 D ~@2
>`.pickRestart({
  A: "~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x", B: "~@2 x ~@11 x ~@2 x ~@2 x ~@3",
  C: "~@5 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x", D: "~ x ~@10", E: "~ x ~@3 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x ~@2 x",
})).gain(0.24)

// drums · low tom
const low_tom = s("lt").struct("<~@77 [~@21 x!2 ~] ~@18>").gain(0.72)

// drums · mid tom
const mid_tom = s("mt").struct("<~@77 [~@3 x ~@2 x!2 ~@7 x!2 ~ x!2 ~@4] ~@18>").gain(0.64)

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

// drums · crash
const crash = s("cr").struct("<A ~@11 A ~@8 A ~@7 A ~@17 A ~@8 A ~@7 A ~@13 A ~@7 A ~@9>".pickRestart({
  A: "x",
})).gain(0.48)

// drums · congas
const congas = s("conga:18").struct("<~@20 [~@11 x!2 ~ x ~@9] ~@34 [~@11 x!2 ~ x ~@9] ~@40>").gain(1.54)

// drums · congas
const congas_2 = s("conga:33").struct("<~@20 [~@17 x!2 ~ x!2 ~ x] ~@34 [~@17 x!2 ~ x!2 ~ x] ~@40>").gain(1.54)

// drums · ht
const ht = s("ht").struct("<[~ x ~ x]!76 [~ x ~@2] ~ [~ x ~ x]!16 ~@2>").gain(0.48)

// drums · cabasa
const cabasa = s("cabasa:4").struct(`<
  [x ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x]!76
  ~@2
  [x ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x!2 ~ x]!16
  ~@2
>`).gain(1.22)

stack(
  bass, lead_1_square, distortion_guitar, overdriven_guitar, electric_guitar_clean, kick, snare, hihat, hihat_soft,
  low_tom, mid_tom, open_hat, crash, congas, congas_2, ht, cabasa
)

More by The Rolling Stones