1

我正在使用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")
    }
}
4

0 回答 0