OpenAL и Поппинг Артефакты - PullRequest
3 голосов
/ 19 марта 2011

Я использую OpenAL для музыкального приложения для iPad. Раньше он работал нормально, но теперь, после обновления моего устройства до iOS 4.3, появляются треск / треск при воспроизведении. Они становятся очевидными, когда воспроизводятся несколько сэмплов (то есть аккордов), и происходят в начале нового сэмпла, после того, как 1-й или 2-й сэмпл уже был воспроизведен. Помимо этих артефактов, остальная часть аудиовыхода нормальная.

Я буферирую аудиоданные для каждого инструмента, создаю источник для каждого воспроизводимого звука и присоединяю источник к кешируемому буферу. Буфер прикрепляется к образцу аудиоданных с помощью alBufferDataStaticProc ()

Я также изменил AL_FREQUENCY контекста AL, чтобы он соответствовал частоте дискретизации файлов (16 кГц), но это устраняет проблему только тогда, когда воспроизводимый сэмпл (источник) имеет значение AL_PITCH, равное 1. является то, что если вы измените AL_PITCH, вы измените выходную частоту источника, которая не будет соответствовать выходной частоте контекста AL, вызывая проблему

Часть кода заимствована из Finch, которая выполняет большую часть инициализации данных. Вот URL к исходному коду: https://github.com/zoul/Finch

Я с нетерпением жду любых указателей.

1 Ответ

0 голосов
/ 26 марта 2011

Они становятся очевидными ... после того, как 1-й или 2-й семпл уже воспроизведен

Может быть, вы добавляете неинициализированные данные в буфер?Возможно, в результате очереди массив, который не был полностью заполнен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...