使用音量低于0.00001的AKMixer没有输出

时间:2019-01-28 06:52:53

标签: audiokit

我们正在使用两个AKMixer(一个用于左声道,一个用于右声道)和一个AKMixer作为输出,这两个混频器作为输入。 如果其中一个混音器的音量小于0.00001,则会丢失输出信号。但是可以降低音量,因为如果我们将主系统音量降低到超过0.00001的值,则耳机插孔上的信号会降低。

作为一种解决方法,我尝试将AKMixer.output.volume设置为0.5,将输入混音器设置为0.00001,并且它也可以工作。但是在我的应用程序中,我还需要最大的输出,比起一次更改两个音量级别时,我得到了怪异的“咔嗒声”。

如果有人可以帮助,那就太好了。解决方法或引起问题的方法。 谢谢。

var rightSine = AKOscillator(waveform: AKTable(.sine))

var rightPanner : AKMixer!

let pan2 = AKPanner(self.rightSine, pan: 1)
pan2.rampDuration = 0
let right1: AKMixer = AKMixer(pan2 /*, ....  some more */)
self.rightPanner = right1


let mix = AKMixer(self.rightPanner /* left channel... */)
mix.volume = 1.0
AudioKit.output = mix


do {
   try AudioKit.start()

} catch {
}

self.rightPanner.volume = 0.00002

这是用于初始化音频素材(缩短)并随后启动节点的代码。

*编辑:我正在测试输出中断的精确阈值。

1 个答案:

答案 0 :(得分:0)

AudioKit的AKMixer是Apple的AVAudioMixerNode的简单包装,因此,我无法深入研究以帮助您使用该节点解决问题。但是,如果您愿意使用AKBooster(放大或减少信号的工作),我认为使用较小的增益值会很好。

var rightSine = AKOscillator(waveform: AKTable(.sine))

var rightBooster: AKBooster!

let pan2 = AKPanner(self.rightSine, pan: 1)
pan2.rampDuration = 0
let right1: AKMixer = AKMixer(pan2 /*, ....  some more */)
self. rightBooster = AKBooster(right1)


let mix = AKMixer(self. rightBooster /* left channel... */)
mix.volume = 1.0
AudioKit.output = mix

self.rightBooster.gain = 0.00002