Continuing the discussion from VST3 Bypass:
In the current VST3 implementation, the special Bypass parameter is given an id which depends on the number of parameters exposed by the AudioProcessor.
put simply, it is
Bypass.id = processor.getNumParameters().
Let’s say that I have 10 parameters in my AudioProcessor, indices for them will be 0-9 and Bypass will have id = 10.
Now, if I release a new version of my plug-in which has 5 more parameters in the AudioProcessor, they will be numbered 0-14 and the Bypass will be given id = 15.
The problem is: if I saved a host session with the earlier version, automation for the bypass parameter has been recorded with id = 10 there.
When I install the newer version of the plug-in and reopen the same session, the automation recorded for id = 10 will not apply to the bypass anymore, because now the bypass has id = 15.
My proposed solution is to reserve a (very high!) constant ID to be given to the Bypass parameter in the VST3 wrapper, no matter how many parameters are there in the AudioProcessor.
I am aware that this implies breaking some of the automation that may have been created since when the Bypass parameter has been made automatable in VST3, but that was only 23 days ago according to GitHub and thus I think this is the lesser evil (in contrast with leaving behind this chronic problem)