When you join a game and a sound is already playing for some reason it will begin from the start.
I believe you can fix this by doing the following:
Play the song on the Server into workspace or replicatedstorage and save the TimePosition as an attribute. You can use a loop to do this throughout the song.
In a local script grab a reference to the sound (remember WaitForChild) and play it using the TimePosition attribute. Try this out.