我在我的应用中使用oboe库来生成声音。他们的示例SineGenerator恰好满足了我的需要,只是一个简单的正弦波,它产生了我需要的频率。此生成的正弦波稍后在PlayAudioEngine中使用。
问题在于,我播放的音频开始或结束时经常会有喀哒声。我会连续短时播放声音,通常长度在50-150ms之间。
我真的没有产生音频波的经验,所以也许这只是我没有看到非常明显的东西。我已尝试按照this article中的建议优化性能(编译器标志+代码),但未产生任何结果。我也尝试降低幅度,但是没有明显的结果。
任何建议都值得赞赏。谢谢!
答案 0 :(得分:1)
启动振荡器时单击是由于未重置Oscillator::setWaveOn(true)
中的相位引起的(如@ greeble31在评论中所述)。这是针对“波动”情况的简单修复,只需将mPhase
设置为零即可。
对于“消音”,一种解决方案是幅度减小很短,而不是仅仅消减声音。
您可以在Oscillator::renderAudio
中做到这一点,但是,实现一个单独的Envelope
类可以独立处理斜坡下降可能更灵活。