我正在实施一个带有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")
}
}