ok here's what I tried : I tried using a local script that connects to a part and when it is touched, it changes the music. The problem with this is that it changes the music for everyone, not just the person that touches it.
Try placing the sound into their head. Put the following script in a regular script, and read the 2 comments at the top of the script.
sounds = {} -- Don't touch this, it'll generate itself. -- Create a new model in Lighting called 'Sounds' and put all your sounds in there. function generateSoundsTbl() for _, child in pairs(game.Lighting.Sounds) do table.insert(sounds, child.Name) end end function getNextSound(prevSound) local nextSound for key, value in pairs(sounds) do if(value == prevSound) then if(key < #sounds) then nextSound = sounds[key + 1] else nextSound = sounds[1] end end end return nextSound end function removeSounds(parent) local oldSound for _, child in pairs(parent:GetChildren()) do if(child:IsA("Sound")) then oldSound = child.Name child:Destroy() end end return oldSound end debounce = false script.Parent.Touched:connect(function(hit) humanoid = hit.Parent:findFirstChild("Humanoid") if(debounce == false) then debounce = true if(humanoid ~= nil) then oldSound = removeSounds(hit.Parent.Head) nextSound = getNextSound(oldSound) sound = game.Lighting.Sounds:findFirstChild(nextSound) if(sound ~= nil) then sound:clone().Parent = hit.Parent.Head end end wait(0.2) debounce = false end end) generateSoundsTbl()