Несколько шин, направленных в разные группы микшеров, позволяют им совместно использовать переменные в обратном вызове рендеринга

У меня был обратный вызов рендеринга с 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] теперь равен [0] Mixer2, с теми же данными рендеринга шины [0], что и Mixer1. Все переменные теперь доступны для шин других микшеров.

Теперь мой сложный код рендеринга бесполезен.... Мне нужны независимые переменные на каждой шине.

Есть идеи как с этим бороться?

1 ответ

Решение

Я сделал это с помощью kAudioUnitSubType_MatrixMixer. Это позволяет иметь любое количество входов и любое количество выходов. Поэтому я настраиваю шины 0-4 на выход 0, шины 0-9 на выход 1... и т. Д. Можно настроить громкость с любого входа на любой выход Matrix Mixer следующим образом:

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

С помощью этого метода все шины направляются в один и тот же микшер (MatrixMixer), и я могу совместно использовать переменные в обратном вызове рендеринга.

Другие вопросы по тегам