Better way for checking values?

Hi!
My code right nwo will only check when a track ends. How do I make it always check?
Thanks!

local musicFolder = game.ReplicatedStorage.Music 
local availableMusic = musicFolder:GetChildren() 
local currentTrack = game.ReplicatedStorage.CurrentTrack 


while true do 
		local randomTrack = availableMusic[math.random(1,#availableMusic)]
	function check()
		if game.Players.LocalPlayer.MusicPlaying == false then
			randomTrack.Volume = 0
		else
			randomTrack.Volume = 5
	end
end
	currentTrack.Value = "..."

	wait(2) 

	randomTrack:Play() 

	currentTrack.Value = randomTrack.Name
	check()
	randomTrack.Ended:Wait() 

end 

You can detect if a specific property changed using the GetPropertyChangedSignal()

Like something along the lines:

Make sure to do this in a local script

local musicFolder = game.ReplicatedStorage.Music 
local availableMusic = musicFolder:GetChildren() 
local currentTrack = game.ReplicatedStorage.CurrentTrack 
local player = game.Players.LocalPlayer
local MusicPlaying = player:WaitForChild("MusicPlaying")

local randomTrack

MusicPlaying:GetPropertyChangedSignal("Value"):Connect(function()
  if MusicPlaying.Value then
		randomTrack.Volume = 5
  else
		randomTrack.Volume = 0

	    currentTrack.Value = "..."
        wait(2) 

		randomTrack = availableMusic[math.random(1,#availableMusic)]
     	randomTrack:Play() 
        MusicPlaying.Value = true

        randomTrack.Ended:Connect(function()
             MusicPlaying.Value = false
        end)
  end
end)

I want it to always play, unless MusicPlaying is false.

Great, thanks!
I dont know why I wasn’t using functions more often.
I should, as they are really easy for calling code.

Thanks!