2012-02-23 3 views
1

コンテキスト: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; 
} 

答えて

2

OKは - アップルのCore Audioエンジニアからの回答があった:

「プリセットの数を取得するために何のAPIはありませんサンプラーAUのみを任意のSF2やから一度に一つの楽器をロードします。 DLSバンクであるため、銀行ファイル全体を「ダイジェスト」しません(したがって、完全な内容についての知識はありません)。

関連する問題