Strudelify

Good Time Woman

The Rolling Stones

KeyG majorTempo113 bpm
0:00/0:00
// Good Time Woman — The Rolling Stones
// 113 bpm, 4/4, key G major. Source: midi.
// Generated by strudelify. One cycle = one bar.
// note: Full arrangement: all 61 bars on a 16-step grid, each part at one level. Source detail keeps the original performance.
// note: Guitar parts that double another keep only their own notes (fills, solos): guitar program 27.
setcpm(113/4)

// Notation: c3@3 lasts 3 steps · ~ is a rest · [c3,e3] is a chord.
// A part's distinct bars are riffs (A, B, C...) played in order: edit a riff to change every repeat.

// chords · electric guitar clean
const electric_guitar_clean = note(`<
  ~ A B A C ~@2 A B A C ~@2 A B A C ~@2 A B A C A B ~ A@2 B A C ~@2 A B A C A B ~ A@2 B A C ~@10 A B A C ~@2
>`.pickRestart({
  A: "~@3 d3@2 ~@3", B: "~@8 d3 e3 ~@2 d3 e3 ~@2", C: "~@8 e3 f#3 ~@3 e3 ~@2",
})).s("gm_electric_guitar_clean").gain(0.38).pan(1)

// chords · electric guitar clean
const electric_guitar_clean_2 = note(`<
  ~ A B A C D B A B A C D B A B A C D B A B A C A B C A@2 B A C D B A B A C A B C A@2 B A C D B E F E F E F E F A B A C
  D G
>`.pickRestart({
  A: "[b2,d3,g3,b3,g4]@2 [d3,g3,b3,g4] [g3,b3,g4]@2 [g3,b3,g4] [d3,g3,b3,g4] [g3,b3,g4]", // G
  B: "[c3,e3,g3,c4,e4]@2 [e3,g3,c4,e4] [g3,c4,e4]@2 [g3,c4,e4] [e3,g3,c4,e4] [g3,c4,e4]", // C
  C: "[d3,a3,d4,f#4]@2 [d3,a3,d4,f#4] [a3,d4,f#4]@2 [a3,d4,f#4] [d3,a3,d4,f#4] [a3,d4,f#4]", // D
  D: "[b2,e3,g3,b3,e4]@2 [e3,g3,b3,e4] [g3,b3,e4]@2 [g3,b3,e4] [e3,g3,b3,e4] [g3,b3,e4]", // Em
  E: "[b2,d3,g3,b3,g4]!2 ~@2 [d3,g3,b3,g4] [g3,b3,g4] [d3,g3,b3,g4] [g3,b3,g4]", // G
  F: "[c3,e3,g3,c4,e4] [e3,g3,c4,e4] ~@2 [c3,e3,g3,c4,e4] [e3,g3,c4,e4]!2 [g3,c4,e4]", G: "[g3,b3,d4,g4]",
})).s("gm_electric_guitar_clean").gain(0.36).pan(0)

// bass · electric bass finger
const bass = note(`<
  ~ A B A C D B A B A C D B A B A C D B E F E G E F G E A B A C D B E F E G E F G E A B A C D B H I H I H I H I A B A C
  D J
>`.pickRestart({
  A: "g2@3 g2 ~ g2 d2 b1", B: "c2@3 c2 ~ e2 g2 e2", C: "d2@3 d2 ~ f#2 a2 f#2", D: "e2@3 e2 ~ g2 e2 g1",
  E: "g2@2 d2 g2 ~ d2 g2 d2", F: "c2@2 g1 c2 ~ g1 c2 g1", G: "d2@2 a1 d2 ~ a1 d2 a1", H: "g2@3 d2 g2 d2 g2 d2",
  I: "c2@3 g1 c2 g1 c2 g1", J: "g2",
})).s("gm_electric_bass_finger").gain(0.62)

// drums · kick
const kick = s("bd").struct("<~ A@5 B A@5 B A@5 B A@7 B A@5 B A@7 B A@5 B A@7 B A@5 B>".pickRestart({
  A: "x!2", B: "x",
})).gain(0.62)

// drums · rim
const rim = s("rim").struct("<~ A@5 ~ A@5 ~ A@5 ~ A@7 ~ A@5 ~ A@7 ~ A@5 ~ A@7 ~ A@5 ~>".pickRestart({
  A: "~ x ~ x",
})).gain(0.62)

// drums · snare
const snare = s("sd").struct("<A ~@5 A ~@5 A ~@5 A ~@7 A ~@5 A ~@7 A ~@5 A ~@7 A ~@6>".pickRestart({
  A: "~@3 x!2 ~@11",
})).gain(0.47)

// drums · hihat
const hihat = s("hh").struct("<~ A@5 B A@5 B A@5 B A@7 B A@5 B A@7 B A@5 B A@7 B A@5 ~>".pickRestart({
  A: "x!2 ~@2 x!2 ~@2", B: "x!2 ~@6",
})).gain(0.62)

// drums · mid tom
const mid_tom = s("mt").struct("<A B@5 A B@5 A B@5 A B@7 A B@5 A B@7 A B@5 A B@7 A B@5 ~>".pickRestart({
  A: "~@7 x!2 ~@2 x!2 ~ x ~", B: "~@7 x",
})).gain(0.62)

// drums · open hat
const open_hat = s("oh").struct("<~ A@5 ~ A@5 ~ A@5 ~ A@7 ~ A@5 ~ A@7 ~ A@5 ~ A@7 ~ A@5 ~>".pickRestart({
  A: "~ x ~ x",
})).gain(0.62)

// drums · crash
const crash = s("cr").struct("<~@60 x>").gain(0.62)

stack(electric_guitar_clean, electric_guitar_clean_2, bass, kick, rim, snare, hihat, mid_tom, open_hat, crash)

More by The Rolling Stones