So basically, I am trying to make sure that this script slowly turns music up and the background rain down when a player enters the building. There is another block that the player hits which should slowly turn the music down and the rain back up. Instead it prints the "test" print over 400 times and instantly silences the music, and then instantly makes the rain shoot up to full volume. One would assume it has to do with debounce, but with and without, it still does this. Any ideas?

local s1 = workspace.Rain
local d = workspace.Jazz
local r = workspace.RainDoor

local bgm = workspace:WaitForChild("Music")

local music = bgm:GetChildren()

local debounce = false
local raindebounce = false

s1:Play()

d.Touched:Connect(function()
	if raindebounce == false and s1.Volume >= 5 then
		for i = 1,10 do
			s1.Volume = s1.Volume - 0.4
			raindebounce = true
			wait(0.1)
		end
		raindebounce = false
	end
	if debounce == false then
		while true do
			debounce = true
			local randomsong = math.random(1, #music)
			randomsongplay = music[randomsong]
			randomsongplay:Play()
			for i = 1,100 do
				randomsongplay.Volume = randomsongplay.Volume + 0.01
				wait(0.01)
			end
			wait(randomsongplay.TimeLength)
			for i = 1,100 do
				randomsongplay.Volume = randomsongplay.Volume - 0.01
				wait(0.01)
			end
			randomsongplay:Stop()
			wait()
		end
	end
end)
r.Touched:Connect(function()
	local exitdebounce = false
	if exitdebounce == false then
		exitdebounce = true
		for i = 1,10 do
			print'test'
			randomsongplay.Volume = randomsongplay.Volume - 0.1
			debounce = true
			wait(0.1)
		end
		for i = 1,10 do
			s1.Volume = s1.Volume + 0.4
			raindebounce = true
			wait(0.1)
		end
		exitdebounce = false
	end
end)
wait()

Any and all help will be greatly appreciated!