2012-02-23 42 views
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; 
} 

回答

2

OK - 不得不從蘋果的核心音頻工程師的回答:

「沒有API來獲取預設數目的採樣AU僅在任何SF2或時間裝載一臺儀器。 DLS銀行,因此它不會「消化」整個銀行文件(因此不知道其全部內容)。「

相關問題