Strudelify
I Just Can't Stop Loving You cover art

1987 · I Just Can’t Stop Loving You

I Just Can't Stop Loving You

Michael Jackson With Siedah Garrett

KeyC majorTempo100 bpm
0:00/0:00
// I Just Can't Stop Loving You — Michael Jackson With Siedah Garrett
// 100 bpm, 4/4, key C major. Source: mcgill.
// Generated by strudelify. One cycle = one bar.
setcpm(100/4)

const chords = arrange(
  // intro-a (10 bars)
  [10, "<C5 [C5@2 C9sus@2] C9sus C5!2 C7 [C7@2 C5@2] C5!2 [C5@2 ~@2]>"],
  // intro-b (4 bars)
  [4, "<C5!4>"],
  // verse (8 bars)
  [8, "<Cadd9!2 Gm7!2 Cadd9!2 Gm7!2>"],
  // pre-chorus (8 bars)
  [8, "<F^9!2 Fm Am Bbadd9!2 Eb^9 G11>"],
  // verse (8 bars)
  [8, "<Cadd9!2 Gm7!2 Cadd9!2 Gm7!2>"],
  // pre-chorus (8 bars)
  [8, "<F^9!2 Fm Am Bbadd9!2 Eb^9 G11>"],
  // chorus (8 bars)
  [8, "<Gm7 C Gm7 C Gm7 [Fm7@2 Eb^7@2] G11!2>"],
  // interlude (2 bars)
  [2, "<C5 [Csus@2 C@2]>"],
  // verse (8 bars)
  [8, "<Cadd9!2 Gm7!2 Cadd9!2 Gm7!2>"],
  // pre-chorus (8 bars)
  [8, "<F^9!2 Fm Am Bbadd9!2 Eb^9 G11>"],
  // chorus (8 bars)
  [8, "<Gm7 C Gm7 C Gm7 [Fm7@2 Eb^7@2] G11!2>"],
  // interlude (1 bars)
  [1, "<C>"],
  // bridge (8 bars)
  [8, "<Bb11 Eb^7 Db11 Gb^7 B11 E^7 Abm7 [Abm7@2 Db@2]>"],
  // chorus (7 bars)
  [7, "<Abm7 Db Abm7 Db Abm7 [Gbm7@2 Fb^7@2] Ab11>"],
  // fadeout (9 bars)
  [9, "<Abm7 Db Abm7 Db Abm7 [Gbm7@2 Fb^7@2] Ab11 Abm7 Db>"],
)
const bassline = arrange(
  [10, "<c2!9 [c2@2 ~@2]>"],
  [4, "<c2!4>"],
  [8, "<c2!2 g2!2 c2!2 g2!2>"],
  [8, "<f2!3 a2 bb2!2 eb2 g2>"],
  [8, "<c2!2 g2!2 c2!4>"],
  [8, "<f2!3 a2 bb2!2 eb2 g2>"],
  [8, "<g2 c2 g2 c2 g2 [f2@2 eb2@2] g2!2>"],
  [2, "<c2!2>"],
  [8, "<c2!2 g2!2 c2!4>"],
  [8, "<f2!3 a2 bb2!2 eb2 g2>"],
  [8, "<g2 c2 g2 c2 g2 [f2@2 eb2@2] g2!2>"],
  [1, "<c2>"],
  [8, "<bb2 eb2 db2 gb2 b2 e2 ab2 [ab2@2 db2@2]>"],
  [7, "<ab2 db2 ab2 db2 ab2 [gb2@2 e2@2] ab2>"],
  [9, "<ab2 db2 ab2 db2 ab2 [gb2@2 e2@2] ab2!2 db2>"],
)

// chords · gm_piano
const keys = chord(chords).voicing().s("gm_piano").gain(0.8)
// bass · gm_electric_bass_finger
const bass = note(bassline).s("gm_electric_bass_finger").gain(0.9)
// drums
const drums = s("[bd hh] [sd hh] [bd hh] [sd hh]").gain(0.8)

stack(keys, bass, drums)