Библиотека гобоя Android щелкает в начале / конце звука
Я использую библиотеку гобоя в моем приложении для генерации звука. Их пример SineGenerator в значительной степени именно то, что мне нужно, просто синусоида, которая генерирует частоту, которая мне нужна. Эта сгенерированная синусоида позже используется пользователем в PlayAudioEngine.
Проблема в том, что чаще всего в начале или конце звука, который я играю, звучит щелчок. Я играю звуки короткими очередями, обычно длиной от 50 до 150 мс.
У меня действительно нет опыта в создании звуковых волн, так что, возможно, это просто я не вижу чего-то очень очевидного. Я попытался оптимизировать производительность (флаги компилятора + код), как предложено в этой статье, но это не дало никаких результатов. Я также попытался уменьшить амплитуду, но никаких заметных результатов.
Любые предложения приветствуются. Спасибо!
1 ответ
Щелчок при запуске генератора вызван отсутствием сброса фазы в Oscillator::setWaveOn(true)
(как упомянуто @greeble31 в комментариях). Это простое исправление для сценария "волна на", просто установите mPhase
в ноль.
Для "волны выключения" решение было бы иметь очень короткое снижение амплитуды, а не просто отключение звука.
Вы могли бы сделать это в Oscillator::renderAudio
Однако, вероятно, было бы более гибким для реализации отдельного Envelope
класс, который может справиться с рампой самостоятельно.