在Swift的iOS 8应用程序中,我创建并存储MIDI数据
然后将数据传递给MidiPlayer,MidiPlayer在正确设置的AUGraph中播放MIDI。
虽然这在模拟器中运行良好,但有时音频在我的iPhone 4s上噼啪作响。当生成的MIDI包含快速音符的 lot 时会发生这种情况,我猜iPhone的CPU速度不够快。
我认为使用更大的缓冲区大小,情况会好一些。
如何设置更大的缓冲区?
我应该在AUGraph中解决RemoteIO,告诉它使用更大的缓冲区吗?
在初始化图表之前我尝试了以下操作:
var myAudioSession:AVAudioSession = AVAudioSession.sharedInstance()
println("IOBufferDuration : \(myAudioSession.IOBufferDuration)")
var theError:NSError?
myAudioSession.setPreferredIOBufferDuration(0.46, error: &theError)
if (theError != nil) {
println("Error: \(theError!.localizedDescription)")
}
println("New IOBufferDuration : \(myAudioSession.IOBufferDuration)")
myAudioSession.setActive(true, error: &theError)
if (theError != nil) {
println("Error: \(theError!.localizedDescription)")
}
但即使我没有收到错误,我的代码也没有影响缓冲区大小,这似乎是系统在启动时选择的。而且,音频变得沉默......
谢谢!