使用TheAmazingAudioEngine播放多个声音时出现问题

时间:2016-01-06 18:49:19

标签: ios swift audio low-latency the-amazing-audio-engine

我正在实施一个带有TheAmazingAudioEngine框架的低延迟鼓组。我有一个带有单个按钮的场景和一个带有以下方法的viewController。如果我慢慢触摸按钮,此代码非常有效。但是如果我在短时间内多次触摸它 - 例如每秒10次 - ,声音就不会在某些触摸中播放,没有错误信息。音频样本很短(少于2秒)。

为什么会这样?我的实施有什么问题?

我选择TheAmazingAudioEngine而不是AVAudioPlayer来获得触摸和声音之间的低延迟。

override func viewDidLoad() {
    super.viewDidLoad()

    // Enable multiple touch for the button
    for v in view.subviews {
        if v.isKindOfClass(UIButton) {
            v.multipleTouchEnabled = true
        }
    }

    // Init audio
    audioController = AEAudioController(audioDescription: AEAudioController.nonInterleavedFloatStereoAudioDescription())

    audioURL = NSBundle.mainBundle().URLForResource("shortSound", withExtension: "wav")!

    do {
        try audioController?.start()
    } catch {
        print("AudioController start Error")
    }

}

override func viewDidDisappear(animated: Bool) {
    super.viewDidDisappear(animated)

    audioController?.stop()
}

@IBAction func playSound(sender: UIButton) {
    do {
        let player = try AEAudioFilePlayer(URL: audioURL)
        player.removeUponFinish = true
        audioController?.addChannels([player])
    } catch {
        print("Player start Error")
    }
}

0 个答案:

没有答案