2017-02-22 36 views
0

У меня был обратный вызов рендеринга с 20 шинами, синхронизированными и направленными в один и тот же микшер, но теперь мне нужно применить эффекты к некоторым из этих 20 автобусов, так что теперь , они делятся на группы по 5.Несколько автобусов, маршрутизированных в разные группы микшера, позволяют им обмениваться переменными в обратном вызове Render

Итак, у меня есть 20 автобусов, разделенных на 4 группы.

Автобусы 0-4 -routed к - Mixer1

AUGraphSetNodeInputCallback (processingGraph,mixer1Node, 
                input, //0-4 
                &inputCallbackStruct 
               ); 

Автобусы 5-9 -routed к - MIXER2

AUGraphSetNodeInputCallback (processingGraph,mixer2Node, 
                input, //0-4 
                &inputCallbackStruct 
               ); 

Автобусы 10-14 -routed к - Mixer3 ...

Автобусы 15-19 -пропускаются до - Mixer4 ...

Теперь, моя проблема заключается в том, что каждая из этих групп получает [0] - [4] inBusNumber, wit h те же данные в обратном вызове рендеринга. Таким образом, старый inBusNumber [5] теперь [0] Mixer2 с теми же данными визуализации шины [0] Mixer1. Все переменные теперь используются совместно с шинами других микшеров.

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

Любые идеи, как с этим бороться?

+0

Стоит ли потерять трек о том, какой автобус находится внутри обратного вызова рендеринга? – dave234

+0

Я перехожу к kAudioUnitSubType_MatrixMixer, кажется лучше для моей цели – Fischer

+0

Как работает kAudioUnitSubType_MatrixMixer? Отправьте свое решение! – dave234

ответ

0

Я сделал это с помощью 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), и я могу совместно использовать переменные в обратном вызове рендеринга.

+0

вы можете принять этот ответ? –