Extending the "Squeezer" to a multiband compressor


#1

Hi there!

There exists a nice compressor from Martin Zuther availabe online. I thougt it might be useful to extend that compressor to a multiband compressor. For that I use the DSP class from Vinnie Falco (thanks Vinnie, that’s great stuff!).

Currently I do a lot of GUI workings so that you can specify the amount of frequency bands before you compile (stored as defines, making the whole thing dynamic may come in the future…).

I started to extend the whole code from Zuther to an array structure inside of the plugin_processor and plugin_editor class. But each time I try to change any of the GUI elements the setParameter() function is somehow doing wrong (of course not. I am the fault, because the computer behaves like I tell him to).

My Problem described in a few words
I extended the Squeezer plugin_processor class within it’s member variables to some arrays (NUM_BANDS is static 4)

SqueezerPluginParameters pluginParameters[NUM_BANDS];
ScopedPointer pCompressor[NUM_BANDS];

Similar within the plugin_editor class I ‘extended’ the variables to arrays and same in the class methods.

SqueezerAudioProcessor *pProcessor;

OwnedArray p_arrInputLevelMeters[NUM_BANDS];
OwnedArray p_arrOutputLevelMeters[NUM_BANDS];
...
TextButton ButtonAbout[NUM_BANDS];
Label LabelDebug[NUM_BANDS];
...

Now I want to update any parameters from the GUI to control the compressor. But the callback does not work.

The whole code is availabe at:

https://drive.google.com/open?id=0B_hnLn3PxBAHRGhLbGU2NFhvMWs

Any ideas why the parameter change is called but the parameters are not updated?

Thanks and cheers
Thomas


#2

Got it!

Had to change the provided classes too. Declared a virtual function of void AudioProcessor::setParameter(int nIndex, float fValue, int band = 0); that fits my needs.