Bypass Inserts not working with my plugin

Hi all,
I am trying to connect my bypass parameter to the host’s bypass button. I found out there is a method that is being used for this. I overridden the method in my PluginProcessor as shown below :

In PluginProcessor.h

AudioProcessorParameter* getBypassParameter() const override;


in PluginProcessor.cpp

AudioProcessorParameter* PluginProcessor::getBypassParameter() const
{
if(AudioProcessor::getBypassParameter()==nullptr)
{
return paramterTree.getParameter(pBypassBtn);
//This is being called all the time.
}
else
{
//This is never being called! So whenever this method is called. It is always nullptr
return nullptr;
}
}

Now it communicates with DAW and it changes the bypass button that I have on my GUI. But I have another issue now. In Cubase, there is a "Bypass Inserts " button.


This button, as its name implies, activates/bypasses all inserts(plugins) at once. But the minute I implement the getBypassParameter as above, it stops activating/bypassing.

Also, I tried to debug the getBypassParameter. When it is being called it is always nullptr. There is no single call with a nonnullptr value.
The "bypass inserts " button is another button that bypasses all inserts. Without overriding the getBypassedParamter, it works and bypasses all plugins including mine. But after overriding the getBypassedParamter, my plugin stays on all the time. The “bypass inserts” button is not working for my plugin anymore. I want to keep getBypassedParamter overridden and the “bypass inserts” button keeps working as it works before overriding the getBypassedParamter.

Looks like you’re using JUCE. In this case you should ask in the JUCE forum how to properly implement a bypass parameter in their framework.

I already did and got nowhere!

I have no problem writing the code without using JUCE calls, so a simple help or hint what to look for when pressing the Bypass Insert button is appreciated. Any recommendation where to look for in the VST3 documentation for that Cubase/Nuendo feature?

If you press this button in Cubase, the plug-in’s bypass parameter is set to 1. The same as if you bypass the plug-in alone.

Normally the “bypass inserts” and “bypass” button of the Cubase, does the same thing. If I click on the “bypass” button of the Cubase, it bypasses the plugin. If I click on the the “bypass inserts” button, it triggers the “bypass” button of the Cubase and again bypass the plugin. The minute I implement the method that Cubase calls to manipulate the bypass parameter, the behavior changes.

If I click on the “bypass” button of the Cubase, it bypasses the plugin and at the same time changes the “plugin’s bypass” button. So that my plugin can turn off the all lights on the Gui and also lights up the "plugin’s bypass button…I don’t do anything to make all these changes. Cubase changes the plugin’s bypass button and since it is connected to a listener, everything is being handled by itself.

But if I click on the" bypass inserts " button, it triggers the" bypass" button of the Cubase but doesn’t call the method that changes “plugin’s bypass” button. Also it does not bypass the plugin. So it stays on in the plugin list. It is not something that only happens from the plugin side. Cubase still shows that my plugin is on. I cannot bypass it. After implemention of the bypass parameter call method, Cubase cannot bypass the plugin.

I’m not familiar with Juce, but if you click on either the bypass button of the individual plug-in or the channel-insert bypass button, Cubase calls the VST3 plug-ins IEditController::setParamNormalized (tag, value) method where tag is the tag of the bypass parameter and value is 1.0.
Just place a breakpoint in the Juce Library where they implement the IEditController::setParamNormalized method and you will see that Cubase calls it with the same values.

Thank you for the hint. This will help a lot. I will chcek it.