1
AVMIDIPlayer를 사용하여 하나의 노트 메시지 만 사용하여 MusicSequence를 재생할 때. 시간의 대부분은 잘 작동하지만, 경우에 따라서는 소리가없고 다음과 같이 기록 :AVMIDIPlayer DLSBankManager :: AddBank : 뱅크로드가 실패했습니다.
이DLSBankManager::AddBank: Bank load failed
Error Domain=com.apple.coreaudio.avfaudio Code=-10871 "(null)"
그것은 iOS9 잘 작동하지만, 내가 iOS10에서 테스트 할 때이 문제로 실행됩니다. sf2 사운드 뱅크 파일 URL이 올바르게 설정되었는지 확신합니다. 나는 아래의 코드를 붙여 넣습니다
func playAVMIDIPlayerPreview(_ musicSequence:MusicSequence) {
guard let bankURL = Bundle.main.url(forResource: "FluidR3 GM2-2", withExtension: "sf2") else {
fatalError("soundbank file not found.")
}
var status = OSStatus(noErr)
var data:Unmanaged<CFData>?
status = MusicSequenceFileCreateData (musicSequence,
MusicSequenceFileTypeID.midiType,
MusicSequenceFileFlags.eraseFile,
480, &data)
if status != OSStatus(noErr) {
print("bad status \(status)")
}
if let md = data {
let midiData = md.takeUnretainedValue() as Data
do {
try self.midiPlayerPreview = AVMIDIPlayer(data: midiData, soundBankURL: bankURL)
} catch let error as NSError {
print("Error \(error)")
}
data?.release()
self.midiPlayerPreview?.play({() -> Void in
self.midiPlayerPreview = nil
self.musicSequencePreview = nil
})
}
}
오류가이 라인에서 발생할 수 있습니다 :
try self.midiPlayerPreview = AVMIDIPlayer(data: midiData, soundBankURL: bankURL)
답장을 보내 주셔서 대단히 감사합니다. 하지만 내 코드에서 'errno'를 어디에 설정해야하는지 알려 줄 수 있습니까? – Song
그냥 내 대답을 편집;) –
위대한, 지금은 잘 작동합니다. 대단히 고마워. – Song