Как генерировать и воспроизводить белый шум на лету с OpenAL? - PullRequest
2 голосов
/ 16 сентября 2011

Я использую OpenAL в своем приложении для воспроизведения звуков на основе аудиофайлов * .caf.

Существует учебник , в котором описано, как генерировать белый шум в OpenAL :

amplitude - rand(2*amplitude)

Но они создают буфер с 1000 сэмплами, а затем просто зацикливают этот буфер с

alSourcei(source, AL_LOOPING, AL_TRUE);

Проблема с этим подходом: зацикливание белого шума просто не работает из-за смещения постоянного тока. Там будет заметное колебание в звуке. Я знаю, потому что я пытался зациклить десятки областей белого шума, сгенерированных в различных приложениях, и у всех них была та же самая проблема. Даже после попытки затухания и проверки того, что регионы обрезаются до пересечения нуля.

Поскольку (насколько я понимаю) OpenAL более низкоуровневый, чем аудиоустройства или аудио-очереди, должен быть способ генерировать белый шум на лету непрерывным образом, так что зацикливание не требуется.

Может быть, кто-то может указать на некоторые полезные ресурсы по этой теме.

1 Ответ

3 голосов
/ 16 сентября 2011

Решение с наименьшим изменением может состоять в том, чтобы просто создать гораздо более длинный буфер шума OpenAL (несколько секунд), чтобы колебание было слишком низким для того, чтобы его можно было легко услышать. Любая форма волны, скрытая с частотой повторения 44 Гц (1000 образцов при частоте дискретизации 44,1 Кб), находится в пределах нормального диапазона человеческого слуха.

...