Best practice of making parameters automatable

I’ve started porting a big job I’ve done on a synth to JUCE. It has roughly a hundred parameters that could be automated (so far).
I have two related JUCE-noob-questions.

  1. setParameter in my AudioProcessor is called as expected when changing automated parameters, how do I best give this update to the GUI? I can’t just call the GUI-parameters, JUCE even “forbids” me.
    The Example plugin has a timer that updates all the plugin at every timing event, this is fine as long as there is just a couple of them but now I’ve got a hundred.

  2. When using ableton Ableton Live, one can normally press the little “configure” button on the plugin and then click on the GUI to choose which parameters that are going to be automatable. This worked fine when my plugin was VSTGUI, how do I support that with JUCE?
    I can export all my parameters to be visible just as the example plugin does up to about 30-ish parameters but it is not such a great option.

I see now it might not be the correct subforum… should be the general->audio plugins rather than general juce discussion I suppose… sorry for that.
Possible to move?

Others on this list are far better qualified to advise you that I, but I did find the following thread quite interesting,

Perhaps it provides you with some ideas.


It answers the first of my questions. Seemed to be no “standard way”, the approach I was already about to use and now implemented with events and eventAggregator and such works fine.

The second issue about exposing parameters is still there though.

You can override AudioProcessor::isParameterAutomatable. See here.

That is not really enough though, I have set isParameterAutomatable to return true for all the parameters to be automatable.
The problem is that I have soo many. If getNumParameters return more than about 30 Ableton Live freaks out and shows none.

I don’t have any experience with Ableton Live, so I can’t really advise on that. But if this is a genuine limitation then don’t set isAutomatable to true for all your parameters. Select a safe number and only set it true for that many. You might then want to create a set of controls to let your users change which parameters are automatable.

I kind of just take for granted that it is possible to “get it right” the way I want it. I had it just that way before I ported to JUCE.
Mayby setParameterNotifyingHost instead of just setParameter when turning sliders and stuff is part of the solution. I’ll try that as a start when I get home after work (lunch time here in sweden).

Yes, that’s important.

// It's vital to use setParameterNotifyingHost to change any parameters that are automatable // by the host, rather than just modifying them directly, otherwise the host won't know // that they've changed.

This comment is from JUCE\extras\audio plugin demo\Source\PluginEditor.cpp. Well worth a read through!

Also remember that when you update a slider upon a change from the host, then you should update it as follows (to avoid a recursive loop):

yup, that recursive loop trap I’ve learned the hard way :slight_smile: