2017-02-22 33 views
0

我有一個渲染回調與20條總線同步並路由到一個相同的混音器,但現在我需要應用效果這些20總線中的一些,所以現在,他們被分爲5組。多個總線路由到不同的組調音臺使他們在一個渲染回調共享變量

所以現在,我有20輛巴士分成4組。

巴士0-4 -routed到 - Mixer1

AUGraphSetNodeInputCallback (processingGraph,mixer1Node, 
                input, //0-4 
                &inputCallbackStruct 
               ); 

巴士5-9 -routed到 - Mixer2

AUGraphSetNodeInputCallback (processingGraph,mixer2Node, 
                input, //0-4 
                &inputCallbackStruct 
               ); 

巴士10-14 -routed到 - Mixer3 ...

巴士15-19 - 發送到 - 混音器4 ...

現在,我的問題是這些組中的每一個組都獲得[0]到[4] inBusNumber,wit h渲染回調中的相同數據。因此舊的inBusNumber [5]現在是Mixer2的[0],其Mixer1的總線[0]的渲染數據相同。所有變量現在與其他混音器的總線共享。

現在我的複雜渲染代碼是沒用的....我需要每個總線上的獨立變量。

任何想法如何處理它?

+0

這是一個失去跟蹤渲染回調中哪條總線的問題嗎? – dave234

+0

我正在轉向kAudioUnitSubType_MatrixMixer,看起來更適合我的目的 – Fischer

+0

kAudioUnitSubType_MatrixMixer是如何工作的?發佈您的解決方案 – dave234

回答

0

我用kAudioUnitSubType_MatrixMixer做了它。它允許有任意數量的輸入和任意數量的輸出。 所以我設置公共汽車0-4輸出0,公交車0-9輸出1 ...等,這是可以從任何輸入設定的音量以這種方式的矩陣混音器的任何輸出:

UInt32 element = (inputChannel<<16) | outputChannel; 
AudioUnitSetParameter(mixerMatrix, kMatrixMixerParam_Volume, kAudioUnitScope_Global, element, gain, 0); 

用這種方法,所有總線都被路由到同一個混音器(MatrixMixer),我可以在渲染回調中共享變量。

+0

你能接受這個答案嗎? –