Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/93.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 音频套件Swift 5-如何在启动/停止AKFM振荡器时停止尖叫噪音?_Ios_Swift_Audiokit - Fatal编程技术网

Ios 音频套件Swift 5-如何在启动/停止AKFM振荡器时停止尖叫噪音?

Ios 音频套件Swift 5-如何在启动/停止AKFM振荡器时停止尖叫噪音?,ios,swift,audiokit,Ios,Swift,Audiokit,我正在使用Swift 5和AudioKit开发一个应用程序,用户可以在其中播放不同频率的音调。当启动我的振荡器时,会有一种可怕的噪音,几乎像刮擦一样,但音调很高。在我下面的代码中,你可以看到我已经概述了斜坡持续时间,我的印象是,这将解决使用波形音频时出现的弹出/点击问题,但现在不是点击,而是这种丑陋的噪音。这发生在Xcode内部的IOS模拟器和构建到我的设备时 func playTone(){ 设osc=AKFM振荡器(波形:AKTable(.正弦),振幅:0) osc.rampDuration

我正在使用Swift 5和AudioKit开发一个应用程序,用户可以在其中播放不同频率的音调。当启动我的振荡器时,会有一种可怕的噪音,几乎像刮擦一样,但音调很高。在我下面的代码中,你可以看到我已经概述了斜坡持续时间,我的印象是,这将解决使用波形音频时出现的弹出/点击问题,但现在不是点击,而是这种丑陋的噪音。这发生在Xcode内部的IOS模拟器和构建到我的设备时

func playTone(){
设osc=AKFM振荡器(波形:AKTable(.正弦),振幅:0)
osc.rampDuration=0.1//更改斜坡持续时间会使划痕噪声持续更长时间。
osc.baseFrequency=1
osc.carrierMultiplier=1000//音调频率
osc.调制倍增器=5
osc.modulationIndex=osc.carrierMultiplier/100*4
AudioKit.output=osc
试试?AudioKit.start()
osc.start()
osc.振幅=1.0
睡眠(3)
osc.振幅=0
试试?音频套件。停止()
}

这是音频套件的错误吗?或者我的代码中有什么可以修改的吗?

那么,现在发生的是,你用某些默认值初始化FM振荡器,然后更改它们,但实际上不是立即更改,因为rampDuration应用于初始化值和之后设置的值之间。这可能有点让人困惑,因为在阅读代码时,您似乎在AudioKit启动之前设置了值。接下来,随着时间的推移,渐变以线性方式发生,它通过了大量不同的载波倍增器值,基本上在每一个微小的增量上都会产生截然不同的声音。因此,我建议您使用与最终结果接近或相同的值初始化振荡器,并且只让振幅倾斜以避免点击:

let osc = AKFMOscillator(waveform:AKTable(.sine),
                         baseFrequency: 1,
                         carrierMultiplier: 1000,
                         modulatingMultiplier: 5,
                         modulationIndex: 5.0/400.0,
                         amplitude: 0)

osc.rampDuration = 5 //Changing ramp duration makes the scratch noise last longer.

AudioKit.output = oscillator

...
“沙哑”的声音消失了