コンテキスト:iOS5 AUSampler AudioUnitDLSまたはsf2ファイルのプリセット数をプログラムで決定しますか?
DLSまたはsf2ファイルのプリセット数を決定するプログラム的な方法があるかどうかを判断しようとしています。私はそれがAUSamplerのために 'AudioUnitGetProperty'か 'AudioUnitGetParameter'を通して利用できることを望んでいました。もちろん、オンザフライでプリセットを切り替えることができます。 Docsはこれが可能かどうかを示しません。
TechNote TN2283につきDLS/sf2をロードするための標準コードを使用しています。問題は、多くの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;
}