Если вы просто хотите получить чистый звук при паузе или остановке воспроизведения, тогда вам вообще не нужно затухать - просто найдите точку пересечения нуля и остановитесь на ней (или, более реалистично, просто заполните оставшуюся часть финала). буфер с тишиной). Как вы заметили, затухание, когда пользователь ожидает немедленного прекращения звука, будет звучать неестественно, поскольку результат не связан с действием.
Причиной остановки в точке пересечения нуля является то, что ноль - это значение устойчивого состояния, когда звук остановлен, поэтому переход между двумя состояниями происходит плавно. Если вы останавливаете воспроизведение, когда амплитуда последнего сэмпла велика, вы фактически вводите переходные процессы в аудио с точки зрения звукового оборудования, когда оно восстанавливает аналоговый сигнал, который будет слышен как щелчки и / или щелчки.
Другой подход заключается в очень быстром затухании до нуля (~ <10 мсек), что фактически дает то же самое, что и метод пересечения нуля. </p>