这是因为Oscillator在第一次启动时需要为其内部生成缓冲区,在此过程中会发出点击声。您可以通过在开始启动Oscillator之前先生成缓冲区来解决此问题。以下是代码示例:
import AudioKit
//创建Oscillator对象
let oscillator = AKOscillator()
//预先生成缓冲区
oscillator.rampDuration = 0
oscillator.play()
oscillator.stop()
//正常启动Oscillator
oscillator.rampDuration = 0.1 //如果需要,设置渐变时间
oscillator.start()
在这个例子中,我们以AKOscillator为例,首先创建了一个oscillator对象。然后,我们设置了rampDuration
属性为0,这将使Oscillator在开始时立即以最大振幅输出音频。我们接着调用play()
方法启动Oscillator,然后立即调用stop()
方法停止它。这样一来,内部缓冲区就已经被正确生成了,下一次启动时就不会再发出点击声了。最后,我们设置了渐变时间并调用start()
方法来正常启动Oscillator。