The development of the VST3 version of the AutoGain taught me that different hosts behaves differentily
I always developed classic audio manipulation plugins, but with the AutoGain i explored a different kind of plugins, those that interact with the host.
The VST specification is not so stringent about on “how” each developer must implement the protocol, so everyone takes the approach they prefer or think it’s better.
In the AutoGain to be able to write automation I need to call the automation callback to inform the host of the change in the computed gain, there is a specific call for this action in the VST spec, but sometimes it’s implemented differently.
All of the host i tested developing the audio unit and VST2.4 version behaved the same, during the processing of the audio you could simply inform the host to change the parameter and the host behaved nicely. This was true for Ableton Live, Reaper and Logic for example, but when i started developing the VST3 for Cubase i found some hosts (no names made here!) that could not accept the command from the audio processing thread but only from the graphic thread, and one even crashed completely.
So i simply moved the host callback to the draw function of the gain indicator in the plugin GUI reading the gain value each time it’s redraw, I don’t know if it’s the right way to do it, some may say no, but it works, and it works pretty well!
Enjoy your plugin and if you find any problem or bug that you feel i need to know, drop me a line