2017-02-22 2 views
0

Ich hatte einen Render-Callback mit 20 synchronisierten und zu einem Mixer gerouteten Bussen, aber jetzt muss ich Effekte auf einige dieser 20 Busse anwenden sie sind in Gruppen von 5 unterteilt.Mehrere Busse, die zu verschiedenen Gruppenmischern geroutet werden, lassen sie Variablen in einem Render-Callback teilen.

So jetzt habe ich 20 Busse in 4 Gruppen unterteilt.

Busse 0-4 -routed zu - Mischer1

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

Busse 5-9 -routed zu - Mixer2

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

Busse 10-14 -routed zu - Mixer3 ...

Busse 15-19 -routed zu - Mixer4 ...

Jetzt ist mein Problem, jede dieser Gruppen bekommen [0] bis [4] inBusNumber, wit h die gleichen Daten im Render-Callback. Also ist die alte inBusNumber [5] jetzt [0] von Mixer2, mit denselben Render-Daten von Bus [0] von Mixer1. Alle Variablen werden nun mit den Bussen der anderen Mixer geteilt.

Jetzt ist mein komplexer Rendercode nutzlos .... Ich brauche unabhängige Variablen auf jedem Bus.

Irgendwelche Ideen, wie man damit umgeht?

+0

Geht es darum, den Überblick darüber zu verlieren, welcher Bus innerhalb des Render-Callbacks ist? – dave234

+0

Ich bin auf kAudioUnitSubType_MatrixMixer, scheint besser für meinen Zweck – Fischer

+0

Wie kAudioUnitSubType_MatrixMixer funktioniert? Veröffentlichen Sie Ihre Lösung! – dave234

Antwort

0

Ich habe es mit kAudioUnitSubType_MatrixMixer gemacht. Es ermöglicht eine beliebige Anzahl von Eingängen und eine beliebige Anzahl von Ausgängen. Also Ich gründe Busse 0-4 zur Ausgabe von 0, Bussen 0-9 Ausgabe 1 ... etc. Es ist möglich Volumen von jedem Eingang auf jeden Ausgang der Matrix-Mixer auf diese Weise eingestellt werden:

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

Mit dieser Methode werden alle Busse zum selben Mixer (MatrixMixer) geroutet und ich kann Variablen im Render Callback teilen.

+0

können Sie diese Antwort akzeptieren? –

Verwandte Themen