路由到不同组混合器的多条总线使它们在渲染回调中共享变量
Multiple buses routed to different group mixer makes them to share variables in a Render Callback
我有一个渲染回调,其中 20 条总线同步并路由到同一个混音器,但现在我需要对这 20 条总线中的一些应用效果,所以现在,它们被分成 5 组。
所以现在,我有20辆公交车,分成4组。
总线 0-4 -路由到 - Mixer1
AUGraphSetNodeInputCallback (processingGraph,mixer1Node,
input, //0-4
&inputCallbackStruct
);
总线 5-9 -路由到 - Mixer2
AUGraphSetNodeInputCallback (processingGraph,mixer2Node,
input, //0-4
&inputCallbackStruct
);
总线 10-14 -路由到 - Mixer3 ...
总线 15-19 -路由到 - Mixer4 ...
现在,我的问题是这些组中的每一个都在 BusNumber 中获取 [0] 到 [4],渲染回调中的数据相同。因此,旧的 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),我可以在渲染回调中共享变量。
我有一个渲染回调,其中 20 条总线同步并路由到同一个混音器,但现在我需要对这 20 条总线中的一些应用效果,所以现在,它们被分成 5 组。
所以现在,我有20辆公交车,分成4组。
总线 0-4 -路由到 - Mixer1
AUGraphSetNodeInputCallback (processingGraph,mixer1Node,
input, //0-4
&inputCallbackStruct
);
总线 5-9 -路由到 - Mixer2
AUGraphSetNodeInputCallback (processingGraph,mixer2Node,
input, //0-4
&inputCallbackStruct
);
总线 10-14 -路由到 - Mixer3 ...
总线 15-19 -路由到 - Mixer4 ...
现在,我的问题是这些组中的每一个都在 BusNumber 中获取 [0] 到 [4],渲染回调中的数据相同。因此,旧的 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),我可以在渲染回调中共享变量。