VST Parameters & Best Practice


#1

I’m currently building VST2/3, AAX, and AU plugins for Windows/OSX. I’ve seen a bunch of old threads that cite a variety of methods of handing parameter options. From what I can see, there are no related API tutorials on the subject.

I’ve looked at the plugin example…and it is rather…dirty. Wondering if I’m missing something, or if there is a clean way to handle parameter persistence/usage/automation, etc that is usable on most all platforms.

Is persistence separate from parameter usage? (I’m assuming it is, and in some cases, persistence of selected paths and other non-automatable values will be necessary)

Can anybody here shed a bit of light on the subject?

Many thanks,
-Matt


#2

The classes are deliberately designed to give you a lot of flexibility over how you deal with these things. But if you want a more pre-built solution, try the AudioProcessorValueTreeState class. That’s what we use in e.g. ROLI Equator to handle the parameters


#3

Thanks jules! I’m really loving Juce for exactly that reason. It doesn’t enforce design paradigms, so clean pattern implementations are a breeze.

I’ll take a look at that class - it’s likely the direction I’ll go, since equator is commercially deployed. Also - I’ve added another thread for this, but what OSX target are you currently building equator for? OSX SDK 10.5 doesn’t seem to be supported, which is fine - I’d just like to establish a baseline for support purposes.

Many thanks,
-M


#4

Yeah, I’d recommend forgetting about 10.5. A few people still support 10.6 but TBH 10.7 is probably a reasonable lower limit nowadays.


#5

There is some data online (although it’s not much).

This suggests that in December 2014, 12% of Mac users were on OS X 10.6 or below:

This suggests that in September 2015, the number has fallen to under 5%:

So these days it might be something like 1-2% of Mac users perhaps? Although music people tend to be more conservative with their updates so hard to say exactly :wink:

I would not worry about 10.6, especially since killing it off allows you to enjoy C++11!


#6

Sorry for dredging this up, but quick question.

If I want to support 10.7 all I need to do is switch the deployment target field in the Projucer to 10.7

Correct?

(Thanks in advance, John)