local K=9 script:WaitForChild("\087\104\105\115\116\108\101")script:WaitForChild("\087\104\105\110\101")script:WaitForChild("\066\079\086")for K,q in pairs(car.DriveSeat:GetChildren())do for K,H in pairs(script:GetChildren())do if q.Name==H.Name then q:Stop()wait()q:Destroy()end end end car.DriveSeat.ChildRemoved:connect(function(K)if K.Name=="\083\101\097\116\087\101\108\100"then for K,q in pairs(car.DriveSeat:GetChildren())do for K,H in pairs(script:GetChildren())do if q.Name==H.Name then q:Stop()wait()q:Destroy()end end end end end)if not _Tune.Engine then return end handler:FireServer("\110\101\119\083\111\117\110\100","\087\104\105\115\116\108\101",car.DriveSeat,script.Whistle.SoundId,0,script.Whistle.Volume,true)handler:FireServer("\110\101\119\083\111\117\110\100","\087\104\105\110\101",car.DriveSeat,script.Whine.SoundId,0,script.Whine.Volume,true)handler:FireServer("\110\101\119\083\111\117\110\100","\066\079\086",car.DriveSeat,script.BOV.SoundId,0,script.BOV.Volume,true)handler:FireServer("\112\108\097\121\083\111\117\110\100","\087\104\105\115\116\108\101")handler:FireServer("\112\108\097\121\083\111\117\110\100","\087\104\105\110\101")car.DriveSeat:WaitForChild("\087\104\105\115\116\108\101")car.DriveSeat:WaitForChild("\087\104\105\110\101")car.DriveSeat:WaitForChild("\066\079\086")local q=tick()local H=0 if _Tune.Aspiration=="\083\105\110\103\108\101"or _Tune.Aspiration=="\083\117\112\101\114"then H=1 elseif _Tune.Aspiration=="\068\111\117\098\108\101"then H=2 end while wait()do local r=(script.Parent.Values.Boost.Value/(_Tune.Boost*H))*2 local G,U,v,M,c,P=0 BOVact=math.floor(r*20)if _Tune.Aspiration=="\083\105\110\103\108\101"or _Tune.Aspiration=="\068\111\117\098\108\101"then G=r U=(r/4)*K v=(1-(-r/20))*BOV_Pitch M=(-0.5+(r/2)*BOV_Loudness)*(1-script.Parent.Values.Throttle.Value)if BOVact<BOVact2 then if car.DriveSeat.BOV.IsPaused then if FE then handler:FireServer("\112\108\097\121\083\111\117\110\100","\066\079\086")else car.DriveSeat.BOV:Play()end end end if BOVact>=BOVact2 then if FE then handler:FireServer("\115\116\111\112\083\111\117\110\100","\066\079\086")else car.DriveSeat.BOV:Stop()end end elseif _Tune.Aspiration=="\083\117\112\101\114"then r=r/2 c=(script.Parent.Values.RPM.Value/_Tune.Redline)*Whine_Pitch P=(r/4)*K end handler:FireServer("\117\112\100\097\116\101\083\111\117\110\100","\087\104\105\115\116\108\101",script.Whistle.SoundId,G,U)handler:FireServer("\117\112\100\097\116\101\083\111\117\110\100","\087\104\105\110\101",script.Whine.SoundId,c,P)handler:FireServer("\117\112\100\097\116\101\083\111\117\110\100","\066\079\086",script.BOV.SoundId,v,M)if tick()-q>=.1 then BOVact2=math.floor(r*20)q=tick()end end
--Both
local Loudness = 9 --volume of the boost supplier (not exact volume so you kinda have to experiment with it also)

script:WaitForChild("Whistle")
script:WaitForChild("Whine")
script:WaitForChild("BOV")

for i, v in pairs(car.DriveSeat:GetChildren()) do
	for _, a in pairs(script:GetChildren()) do
		if v.Name == a.Name then
			v:Stop()
			wait()
			v:Destroy()
		end
	end
end

car.DriveSeat.ChildRemoved:connect(function(child)
	if child.Name == "SeatWeld" then
		for i, v in pairs(car.DriveSeat:GetChildren()) do
			for _, a in pairs(script:GetChildren()) do
				if v.Name == a.Name then
					v:Stop()
					wait()
					v:Destroy()
				end
			end
		end
	end
end)

if not _Tune.Engine then
	return
end
handler:FireServer("newSound", "Whistle", car.DriveSeat, script.Whistle.SoundId, 0, script.Whistle.Volume, true)
handler:FireServer("newSound", "Whine", car.DriveSeat, script.Whine.SoundId, 0, script.Whine.Volume, true)
handler:FireServer("newSound", "BOV", car.DriveSeat, script.BOV.SoundId, 0, script.BOV.Volume, true)
handler:FireServer("playSound", "Whistle")
handler:FireServer("playSound", "Whine")
car.DriveSeat:WaitForChild("Whistle")
car.DriveSeat:WaitForChild("Whine")
car.DriveSeat:WaitForChild("BOV")
local ticc = tick()
local _TCount = 0
if _Tune.Aspiration == "Single" or _Tune.Aspiration == "Super" then
	_TCount = 1
elseif _Tune.Aspiration == "Double" then
	_TCount = 2
end

while wait() do
	local psi = ((script.Parent.Values.Boost.Value / (_Tune.Boost * _TCount)) * 2)
	--(script.Parent.Values.RPM.Value/_Tune.Redline)
	local WP, WV, BP, BV, HP, HV = 0

	BOVact = math.floor(psi * 20)
	if _Tune.Aspiration == "Single" or _Tune.Aspiration == "Double" then
		WP = psi
		WV = (psi / 4) * Loudness

		BP = (1 - (-psi / 20)) * BOV_Pitch
		BV = ((-0.5 + ((psi / 2) * BOV_Loudness)) * (1 - script.Parent.Values.Throttle.Value))

		if BOVact < BOVact2 then
			if car.DriveSeat.BOV.IsPaused then
				if FE then
					handler:FireServer("playSound", "BOV")
				else
					car.DriveSeat.BOV:Play()
				end
			end
		end
		if BOVact >= BOVact2 then
			if FE then
				handler:FireServer("stopSound", "BOV")
			else
				car.DriveSeat.BOV:Stop()
			end
		end
	elseif _Tune.Aspiration == "Super" then
		psi = psi / 2
		HP = (script.Parent.Values.RPM.Value / _Tune.Redline) * Whine_Pitch
		HV = (psi / 4) * Loudness
	end

	handler:FireServer("updateSound", "Whistle", script.Whistle.SoundId, WP, WV)
	handler:FireServer("updateSound", "Whine", script.Whine.SoundId, HP, HV)
	handler:FireServer("updateSound", "BOV", script.BOV.SoundId, BP, BV)

	if (tick() - ticc) >= 0.1 then
		BOVact2 = math.floor(psi * 20)
		ticc = tick()
	end
end
