Android双簧管库在声音的开始/结束处单击

时间:2018-12-16 16:04:39

标签: android oboe

我在我的应用中使用oboe库来生成声音。他们的示例SineGenerator恰好满足了我的需要,只是一个简单的正弦波,它产生了我需要的频率。此生成的正弦波稍后在PlayAudioEngine中使用。

问题在于,我播放的音频开始或结束时经常会有喀哒声。我会连续短时播放声音,通常长度在50-150ms之间。

我真的没有产生音频波的经验,所以也许这只是我没有看到非常明显的东西。我已尝试按照this article中的建议优化性能(编译器标志+代码),但未产生任何结果。我也尝试降低幅度,但是没有明显的结果。

任何建议都值得赞赏。谢谢!

1 个答案:

答案 0 :(得分:1)

启动振荡器时单击是由于未重置Oscillator::setWaveOn(true)中的相位引起的(如@ greeble31在评论中所述)。这是针对“波动”情况的简单修复,只需将mPhase设置为零即可。

对于“消音”,一种解决方案是幅度减小很短,而不是仅仅消减声音。

可以Oscillator::renderAudio中做到这一点,但是,实现一个单独的Envelope类可以独立处理斜坡下降可能更灵活。