1
上下文:iOS5 AUSampler AudioUnit以編程方式確定DLS或sf2文件中的預設數量?
我一直在四處搜尋,試圖確定是否存在編程方式來確定DLS或sf2文件中的預設數量。我希望它可以通過'AudioUnitGetProperty'或'AudioUnitGetParameter'獲取AUSampler。當然,我希望能夠隨時切換預設。文檔沒有說明這是否可行。
我正在使用標準代碼加載DLS/sf2,每TechNote TN2283。問題是,有很多sf2文件,它是一個反覆試驗的過程,以找出預設的內容。
-(OSStatus) loadFromDLSOrSoundFont: (NSURL *)bankURL withPatch: (int)presetNumber
OSStatus result = noErr;
// fill out a bank preset data structure
AUSamplerBankPresetData bpdata;
bpdata.bankURL = (CFURLRef) bankURL;
bpdata.bankMSB = kAUSampler_DefaultMelodicBankMSB;
bpdata.bankLSB = kAUSampler_DefaultBankLSB;
bpdata.presetID = (UInt8) presetNumber;
// set the kAUSamplerProperty_LoadPresetFromBank property
result = AudioUnitSetProperty(self.mySamplerUnit,
kAUSamplerProperty_LoadPresetFromBank,
kAudioUnitScope_Global,
0,
&bpdata,
sizeof(bpdata));
// check for errors
NSCAssert (result == noErr,
@"Unable to set the preset property on the Sampler. Error code:%d '%.4s'",
(int) result,
(const char *)&result);
return result;
}