2017-04-01 171 views
1

我用下面的代碼片段:loadAudioFiles拋出錯誤

import AVFoundation 


var ae:AVAudioEngine 
var sampler:AVAudioUnitSampler 
var mixer:AVAudioMixerNode 

var midiNoteNumberFor:Dictionary<String,UInt8> = [ 
    "BD":48, 
    "Snr":50, 
    "Hat":52, 
    "Hit":53, 
    "VI":68, 
    "V":67, 
    "i":60, 
    "III": 63 
] 
    let urls = Bundle.main.urls(forResourcesWithExtension: "wav", subdirectory: "wavs") 

    ae = AVAudioEngine() 
    mixer = ae.mainMixerNode 
    sampler = AVAudioUnitSampler() 

    ae.attach(sampler) 
    ae.connect(sampler, to: mixer, format: sampler.outputFormat(forBus: 0)) 

    do { 
     try sampler.loadAudioFiles(at: urls!) 

    } catch { 
     print(error) 
    } 


    do { 
     try ae.start() 

    } catch { 
     print("Error info: \(error)") 
    } 


func play(snd:String){ 
    sampler.startNote(midiNoteNumberFor[snd]!, withVelocity: 127,onChannel: 0) 

} 

然而,當我運行函數play(snd: "BD"),它引發以下錯誤:

Error Domain=com.apple.coreaudio.avfaudio Code=-10851 "(null)" UserInfo={failed call=error}

這是從第一擋到來條款。

回答

0

在構建設置中,您需要將文件引用添加到wavs目錄。