Creating a background task that only is shown per client as they enter an area

I’m creating a weird music system that floats between client sided and a server sided playlist, so I have the majority already figured out but my only hang up is when you leave the area and come back, everything resets or a different song is played.

I’m utilizing Region3 to accomplish this, as it is a small game and here are the provided snippets of interest:

Honestly a lot of it is just trial and error as I was having trouble actually finding useful resources.\

The general idea is if remote is triggered, that means a player has entered the area and remote1 is triggered when a player leaves that area.

remote.OnServerEvent:Connect(function(plr)
	state = true
	print " on "
	print " this works"	
	if state == true and audio.TimePosition ~= 0 then
			remote:FireAllClients(plr, nowPlaying)			
			audio:Play()			
			MusicAudio.Volume = 0.5	
	end
	
	if state == true then
		local song = pickSong()		
		remote:FireAllClients(plr, nowPlaying)	
		audio.SoundId = "rbxassetid://" .. song	
		audio.TimePosition=0
		audio:Play()
		MusicAudio.Volume = 0.5			
	end	
	
		if 	audio.Ended:Wait() then
			audio:Stop()
		end
end)

remote1.OnServerEvent:Connect(function(plr)
	state = false
	print " off "
	remote1:FireClient(plr, nowPlaying)
	if state == false and audio.TimePosition ~= 0 then
		remote:FireAllClients(plr, nowPlaying)
		audio:Pause()
		MusicAudio.Volume = 0.5
	end
end)