我有一个渲染回调,有20条总线同步并路由到同一个混合器,但现在我需要对这20条总线中的一些总线应用效果,所以现在,它们被分成5个一组。
所以现在,我有20辆公交车,分成4组。
总线0-4 -routed to - Mixer1
AUGraphSetNodeInputCallback (processingGraph,mixer1Node,
input, //0-4
&inputCallbackStruct
);
总线5-9 -routed to - Mixer2
AUGraphSetNodeInputCallback (processingGraph,mixer2Node,
input, //0-4
&inputCallbackStruct
);
公交车10-14 -routed to - Mixer3 ...
公交车15-19 -routed to - Mixer4 ...
现在,我的问题是,这些组中的每一个都达到了4 inBusNumber,在渲染回调中使用相同的数据。因此,旧的inBusNumber 5现在是Mixer2,具有与Mixer1总线相同的渲染数据。所有变量现在都与其他混音器的总线共享。
现在我复杂的渲染代码已经没用了……我需要每个总线上的独立变量。
有没有什么办法来处理它呢?
发布于 2017-03-01 19:37:06
我和kAudioUnitSubType_MatrixMixer一起做的。它允许有任意数量的输入和任意数量的输出。所以我将总线0-4设置为输出0,将总线0-9设置为输出1...等。可以通过这种方式设置矩阵混音器的任何输入到任何输出的音量:
UInt32 element = (inputChannel<<16) | outputChannel;
AudioUnitSetParameter(mixerMatrix, kMatrixMixerParam_Volume, kAudioUnitScope_Global, element, gain, 0);
使用此方法,所有总线都被路由到相同的混合器(MatrixMixer),并且我可以在呈现回调中共享变量。
https://stackoverflow.com/questions/42399520
复制相似问题