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