Audio.Stop() Causing Clicking/Popping Noise

Hello everyone, I’ve got a problem where stopping a audio clip before it naturally finishes playing causes a noticeable click / pop noise. I figured this must have something to do with the actual speakers trying to adjust from the current volume to 0 instantly. The strange thing to me is that in a lot of cases I’m playing a audio clip that starts with a volume above 0 and that doesn’t seem to cause this problem (only stopping it does).

So if anyone knows how to fix this problem, I would love to know about it.

It’s perhaps more audible when stopping the audio, because there’s no sound to mask the click/pop noise.

You could try using a fade out, here’s some code which will do this for you:

	//Use StartCoroutine();
	IEnumerator VolumeFade(AudioSource _AudioSource, float _EndVolume, float _FadeLength)
	{
		
		float _StartVolume = _AudioSource.volume;
		
		float _StartTime = Time.time;
		
		while (Time.time < _StartTime + _FadeLength)
		{
			
			_AudioSource.volume = _StartVolume + ((_EndVolume - _StartVolume) * ((Time.time - _StartTime) / _FadeLength));
			
			yield return null;
			
		}

		if (_EndVolume == 0) {_AudioSource.Stop();}
		
	}

Here’s an example that will fade the volume of AudioSource myAudioSource to 0f over float myFadeLength seconds:

StartCoroutine(VolumeFade(myAudioSource, 0f, myFadeLength));

I ran into this as well. Setting the volume to 0f instead of using Stop() seems to work for me.

Just make sure to set the audioSource volume when you want to Play() it again.