路由到不同组混合器的多条总线使它们在渲染回调中共享变量

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),我可以在渲染回调中共享变量。