Strudelify
Shadow Dancing cover art

1978 · Shadow Dancing

Shadow Dancing

Andy Gibb

KeyG minorTempo102 bpm
0:00/0:00
// Shadow Dancing — Andy Gibb
// 102 bpm, 4/4, key G minor. Source: mcgill.
// Generated by strudelify. One cycle = one bar.
setcpm(102/4)

const chords = arrange(
  // intro (10 bars)
  [10, "<[F Eb Dadd9@2] [Dadd9@2 Eb D] Cm7 [Cm7 Bb Eb@2] [Eb@2 F@2] [F@2 Gm7@2] Gm7!3 [Gm7@2 ~@2]>"],
  // verse (8 bars)
  [8, "<Gm7 F Eb^7 D7 Eb^7 F Gm7!2>"],
  // pre-chorus (8 bars)
  [8, "<[Cm7@2 F7@2] [Bb^7@2 Gm7@2] [Cm7@2 D7@2] Gm [Cm7@2 F7@2] [Bb^7@2 Gm7@2] Cm7 D7>"],
  // chorus (8 bars)
  [8, "<Gm7!7 [Gm7@2 ~@2]>"],
  // interlude (10 bars)
  [10, "<[F Eb Dadd9@2] [Dadd9@2 Eb D] Cm7 [Cm7 Bb Eb@2] [Eb@2 F@2] [F@2 Gm7@2] Gm7!3 [Gm7@2 ~@2]>"],
  // verse (8 bars)
  [8, "<Gm7 F Eb^7 D7 Eb^7 F Gm7!2>"],
  // pre-chorus (8 bars)
  [8, "<[Cm7@2 F7@2] [Bb^7@2 Gm7@2] [Cm7@2 D7@2] Gm [Cm7@2 F7@2] [Bb^7@2 Gm7@2] Cm7 D7>"],
  // chorus (8 bars)
  [8, "<Gm7!8>"],
  // pre-chorus (9 bars)
  [9, "<[Cm7@2 F7@2] [Bb^7@2 Gm7@2] [Cm7@2 D7@2] Gm [Cm7@2 F7@2] [Bb^7@2 Gm7@2] Cm7 D7!2>"],
  // chorus (8 bars)
  [8, "<G5!8>"],
  // chorus (8 bars)
  [8, "<Gm7!8>"],
  // chorus (8 bars)
  [8, "<Gm7!8>"],
  // chorus (8 bars)
  [8, "<Gm7!8>"],
  // fadeout (8 bars)
  [8, "<Gm7!8>"],
)
const bassline = arrange(
  [10, "<[f2 eb2 d2@2] [d2@2 eb2 d2] c2 [c2 d2 eb2@2] [eb2@2 f2@2] [f2@2 g2@2] g2!3 [g2@2 ~@2]>"],
  [8, "<g2 f2 eb2 d2 eb2 f2 g2!2>"],
  [8, "<[c2@2 f2@2] [bb2@2 g2@2] [c2@2 d2@2] g2 [c2@2 f2@2] [bb2@2 g2@2] c2 d2>"],
  [8, "<g2!7 [g2@2 ~@2]>"],
  [10, "<[f2 eb2 d2@2] [d2@2 eb2 d2] c2 [c2 d2 eb2@2] [eb2@2 f2@2] [f2@2 g2@2] g2!3 [g2@2 ~@2]>"],
  [8, "<g2 f2 eb2 d2 eb2 f2 g2!2>"],
  [8, "<[c2@2 f2@2] [bb2@2 g2@2] [c2@2 d2@2] g2 [c2@2 f2@2] [bb2@2 g2@2] c2 d2>"],
  [8, "<g2!8>"],
  [9, "<[c2@2 f2@2] [bb2@2 g2@2] [c2@2 d2@2] g2 [c2@2 f2@2] [bb2@2 g2@2] c2 d2!2>"],
  [8, "<g2!8>"],
  [8, "<g2!8>"],
  [8, "<g2!8>"],
  [8, "<g2!8>"],
  [8, "<g2!8>"],
)

// 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)