1
'패치 0 뱅크 0x0/0을 찾을 수 없습니다'와 함께 사운드 폰을로드하는 중입니다. 전체 최종 경로를 보면 사운드 폰의 URL이 올바르게 나타납니다. AVAudioUnitMidiInstrument
AVAudioUnitSampler 오류 loadSoundBankAtURL -> 패치 0 뱅크 0x0/0을 찾을 수 없습니다.
AVAudioUnitSampler
에서
AVAudioUnitSampler
상속은 자신의 이니셜이 없습니다. AVAudioUnitMidiInstrument
에는 AudioComponentDescription
중 하나를 사용하면 같은 오류가 발생합니다. 에서
var error:NSError?
let soundBankUrl:NSURL = NSURL(fileURLWithPath:
NSBundle.mainBundle().pathForResource("FluidR3 GM2-2", ofType: "SF2"))
var audioEngine:AVAudioEngine = AVAudioEngine()
// sampler
var audioCompDesc = AudioComponentDescription(
componentType: OSType(kAudioUnitType_MusicDevice),
componentSubType: OSType(kAudioUnitSubType_Sampler),
componentManufacturer: OSType(kAudioUnitManufacturer_Apple),
componentFlags: 0, componentFlagsMask: 0)
var sampler:AVAudioUnitSampler = AVAudioUnitSampler(audioCompDesc)
// var sampler:AVAudioUnitSampler = AVAudioUnitSampler()
let loaded = sampler.loadSoundBankAtURL(soundBankUrl, error: &error)
결과 : 낮은 수준의 API를 사용하여
Unable to find patch 0 bank 0x0/0
하나는 오디오 장치의 속성을 설정합니다.
AUSamplerBankPresetData bpdata;
bpdata.bankURL = (__bridge CFURLRef) presetURL;
bpdata.bankMSB = kAUSampler_DefaultMelodicBankMSB;
bpdata.bankLSB = kAUSampler_DefaultBankLSB;
bpdata.presetID = (UInt8) patch;
return [self loadSynthFromPresetURL:(NSURL*)presetURL
withPatch:(int) patch
audioUnit: (AudioUnit) audioUnit
samplerBankPesetData: (AUSamplerBankPresetData) bpdata];
result = AudioUnitSetProperty(audioUnit,
kAUSamplerProperty_LoadPresetFromBank, kAudioUnitScope_Global,
0, &samplerBankPresetData, sizeof(samplerBankPresetData));
답장을 보내 주셔서 감사합니다. 지금까지의 모든 업그레이드, 나는 점점 더 많은 C 수정을 해킹했습니다. 이 방법은 훨씬 쉽습니다. – plivesey