"Host Bypass" - VST2 vs. VST3 explanation?

SDK for VST 3 audio plug-in and host development.
ygrabit
Posts: 129
Joined: Fri Jun 17, 2016 7:52 am
Location: Hamburg

Re: "Host Bypass" - VST2 vs. VST3 explanation?

Post by ygrabit » Fri Apr 05, 2019 8:24 am

Hi
i will inform the Cakewalk developers about this non-conform use of VST3 bypass:
- when the plugin provides a bypass parameter (which is flagged with kIsBypass), the host should uses it when the user will bypass it.
- when the plugin does not provide a bypass parameter, the host could choose to implement its own bypass processing or not.
YVan Grabit

nborthwick
Posts: 3
Joined: Wed Jun 22, 2016 3:36 am

Re: "Host Bypass" - VST2 vs. VST3 explanation?

Post by nborthwick » Fri Apr 05, 2019 5:14 pm

Nonlinear wrote:
Arne Scheffler wrote:Just mark your bypass parameter as kIsBypass and you've done the correct thing. If there are hosts that don't work with this correctly, report it here and we'll try to talk with the developers to correct this.
It seems kIsBypass is only for VST3? How would I "connect it up" in VST2?

Don't know about other hosts but for one kIsBypass is not called by Cakewalk by Bandlab when the Host Bypass is engaged. I actually don't know WHAT it does but Cakewalk itself must be taking care of the bypass internally. It does Bypass the plugin but it is not a seamless transition if the plugin has latency.
kIsBypass is not a call. Its a flag that the plugin uses to indicate that a parameter is a bypass parameter. We definitely check for the presence of that flag and use that parameter as the host bypass parameter. Its implemented in fact exactly as the Steinberg SDK code samples did it. In Cakewalk host bypass is controlled by the button on the plugin window toolbar (top left). That button will be grayed out if the plugin doesn't expose a host bypass parameter.

For VST2 we don't support "soft bypass" out of the box because the AudioEffectX::setBypass() used to have problems with some VST2 plugins and wasn't universally implemented properly. There is a way to enable support for it in Cakewalk via a config flag however. VST2 bypass is limited because there is no API to query the bypass state only to set it. And yes kBypass doesn't apply to VST2 since bypass is not a parameter there.

- Noel Borthwick

Nonlinear
Posts: 14
Joined: Tue Mar 05, 2019 6:37 pm

Re: "Host Bypass" - VST2 vs. VST3 explanation?

Post by Nonlinear » Fri Apr 05, 2019 8:01 pm

nborthwick wrote:
Nonlinear wrote:
Arne Scheffler wrote:Just mark your bypass parameter as kIsBypass and you've done the correct thing. If there are hosts that don't work with this correctly, report it here and we'll try to talk with the developers to correct this.
It seems kIsBypass is only for VST3? How would I "connect it up" in VST2?

Don't know about other hosts but for one kIsBypass is not called by Cakewalk by Bandlab when the Host Bypass is engaged. I actually don't know WHAT it does but Cakewalk itself must be taking care of the bypass internally. It does Bypass the plugin but it is not a seamless transition if the plugin has latency.
kIsBypass is not a call. Its a flag that the plugin uses to indicate that a parameter is a bypass parameter. We definitely check for the presence of that flag and use that parameter as the host bypass parameter. Its implemented in fact exactly as the Steinberg SDK code samples did it. In Cakewalk host bypass is controlled by the button on the plugin window toolbar (top left). That button will be grayed out if the plugin doesn't expose a host bypass parameter.

For VST2 we don't support "soft bypass" out of the box because the AudioEffectX::setBypass() used to have problems with some VST2 plugins and wasn't universally implemented properly. There is a way to enable support for it in Cakewalk via a config flag however. VST2 bypass is limited because there is no API to query the bypass state only to set it. And yes kBypass doesn't apply to VST2 since bypass is not a parameter there.

- Noel Borthwick
Thank you for the info. RE VST3, the Host Bypass parameter does not appear to have any effect in Cakewalk but it does work in Cubase. I call "GetIsBypassed()" from my iPlug framework and Cakewalk returns nothing - Cubase returns bypass status (bool IsBypassed). So what do you think the problem could be?

Also, since I have your attention, Cakewalk does not seem to load the last factory preset in VST3 plugins. The VST2 version of the plugins loads all the presets but selecting the last preset in the VST3 versions does nothing, i.e., instead of "kNumPrograms" it's loading kNumPrograms - 1.

nborthwick
Posts: 3
Joined: Wed Jun 22, 2016 3:36 am

Re: "Host Bypass" - VST2 vs. VST3 explanation?

Post by nborthwick » Mon Apr 08, 2019 7:43 pm

Nonlinear wrote: Thank you for the info. RE VST3, the Host Bypass parameter does not appear to have any effect in Cakewalk but it does work in Cubase. I call "GetIsBypassed()" from my iPlug framework and Cakewalk returns nothing - Cubase returns bypass status (bool IsBypassed). So what do you think the problem could be?

Also, since I have your attention, Cakewalk does not seem to load the last factory preset in VST3 plugins. The VST2 version of the plugins loads all the presets but selecting the last preset in the VST3 versions does nothing, i.e., instead of "kNumPrograms" it's loading kNumPrograms - 1.
Is the bypass button grayed out? If so Cakewalk thinks that your plugin doesn't support bypass because I did not find a parameter flagged as a bypass param. If you send me a link to your plugin I can tell you why.
Regarding the factory preset issue again send me a link to your plugin and I can investigate it. You can PM me on our forums at https://discuss.cakewalk.com or send me a private message here if you like.

Post Reply