Библиотека гобоя Android щелкает в начале / конце звука - PullRequest
0 голосов
/ 16 декабря 2018

Я использую библиотеку oboe в своем приложении для генерации звука.Их пример SineGenerator в значительной степени именно то, что мне нужно, просто синусоида, которая генерирует нужную мне частоту.Эта сгенерированная синусоида позже используется пользователем в PlayAudioEngine .

Проблема в том, что чаще всего в начале или конце звука, который я играю, звучит щелчок.Я играю звуки короткими последовательными пакетами, обычно длиной от 50 до 150 мс.

У меня нет особого опыта в генерации звуковых волн, поэтому, возможно, это просто я не вижу чего-то очень очевидного.Я попытался оптимизировать производительность (флаги компилятора + код), как предложено в этой статье , но это не дало никаких результатов.Я также попытался уменьшить амплитуду, но никаких заметных результатов.

Любые предложения приветствуются.Спасибо!

1 Ответ

0 голосов
/ 17 декабря 2018

Щелчок при запуске генератора вызван отсутствием сброса фазы в Oscillator::setWaveOn(true) (как упомянуто @ greeble31 в комментариях).Это простое исправление для сценария «волна вкл», просто установите mPhase в ноль.

Для «волны вкл» решение будет иметь очень короткое снижение амплитуды, а не просто обрезание звукавыкл.

Вы могли бы сделать это в Oscillator::renderAudio, однако, возможно, было бы более гибко реализовать отдельный класс Envelope, который может обрабатывать линейное изменение независимо.

...