多个总线路由到不同的组调音台使他们在一个渲染回调共享变量
问题描述:
我有一个渲染回调与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]的渲染数据相同。所有变量现在与其他混音器的总线共享。
现在我的复杂渲染代码是没用的....我需要每个总线上的独立变量。
任何想法如何处理它?
答
我用kAudioUnitSubType_MatrixMixer做了它。它允许有任意数量的输入和任意数量的输出。 所以我设置公共汽车0-4输出0,公交车0-9输出1 ...等,这是可以从任何输入设定的音量以这种方式的矩阵混音器的任何输出:
UInt32 element = (inputChannel<<16) | outputChannel;
AudioUnitSetParameter(mixerMatrix, kMatrixMixerParam_Volume, kAudioUnitScope_Global, element, gain, 0);
用这种方法,所有总线都被路由到同一个混音器(MatrixMixer),我可以在渲染回调中共享变量。
+0
你能接受这个答案吗? –
这是一个失去跟踪渲染回调中哪条总线的问题吗? – dave234
我正在转向kAudioUnitSubType_MatrixMixer,看起来更适合我的目的 – Fischer
kAudioUnitSubType_MatrixMixer是如何工作的?发布您的解决方案 – dave234