0

我有一个渲染回调,其中 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 ...

现在,我的问题是这些组中的每一个都在 [0] 到 [4] inBusNumber 中使用相同的数据在渲染回调中。所以旧的 inBusNumber [5] 现在是 Mixer2 的 [0],与 Mixer1 的总线 [0] 的渲染数据相同。现在所有变量都与其他混音器的总线共享。

现在我复杂的渲染代码没用了……我需要每条总线上的独立变量。

任何想法如何处理它?

4

1 回答 1

0

我是用 kAudioUnitSubType_MatrixMixer 制作的。它允许有任意数量的输入和任意数量的输出。因此,我将总线 0-4 设置为输出 0,将总线 0-9 设置为输出 1……等等。可以通过这种方式将任何输入的音量设置为矩阵混音器的任何输出:

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

使用这种方法,所有总线都被路由到同一个混音器(MatrixMixer),我可以在渲染回调中共享变量。

于 2017-03-01T11:37:06.233 回答