VST3 Bypass

VST3 bypass support is now on the latest tip!

Nice!yes

Thanks for adding the bypass support to the wrapper.

If I rebuild my plugins with the new version.. will existing projects load correctly? As I never really looked into how vst3 works I can't quite tell from looking at the changelog. I guess to the host it just looks like there is a new parameter at the end with the bypass flag.

So what happens if I decide to add another param in a future update? Won't that cause troubles with the bypass information?

 

Good question: Everything will work just as before when you upgrade your PlugIn to the newest JUCE version and load an old project. Your plug-in code will never see the extra bypass parameter in the setStateInformation and getStateInformation methods and therefore you can transparently load old projects.

The other way around is more difficult: If a user saves a project using the a Plug-In which uses the newest JUCE version and then opens that project on a computer which still uses the old PlugIn. In this case your setStateInformation may get extra data at the end of the data block. JUCE uses this data to save the bypass parameter internally. The newest JUCE version will always filter out this data so that you never see it. But old JUCE code does not know anything about this data so has no way of filtering it. However, the extra data starts with eight zero bytes, so if your plug-in loads the state information into a string/ValueTree/var/... then you will be safe even in this case.

Also, if you add parameters to your plug-in in the future then everything will still be fine. This is because your AudioProcessor class is responsible for saving/restoring the state and you never even see the bypass parameter. 

Just pulled this into my project. Thanks!

The bypass parameter has :

info.stepCount = 2;

but it has 2 states and one step between them. stepCount should be 1 here.

Thanks for spotting. This is fixed now.

Very cool. works great under Cubase 8.x.

I've tested it under SONAR X2 (says build v21.0.00.01) with latest and all plug-ins starts as bypassed.

This is reproducible with JuceDemoPlugin.

Will try to debug it but if anyone finds a possible reason for that it'll great.

Hi ttg,

I need some help with this. The host bypass button in Sonar does not seem to have anything to do with the VST3 bypass. The VST 3 bypass button is located at the left of the plug-in name in the audio tracks fx list (you need to hover your mouse over the name to see the button). This button works correctly and as expected (but is independent of the host bypass button).

I've also confirmed that the host bypass does not modify the VST3 bypass with other non-JUCE plug-ins. Therefore I don't know what SONAR is indicating when in it brings up the plug-in with the host bypass button enabled. In fact, my recent VST3 bypass has nothing to do with this bug: I've checked out an old JUCE version just before I added the VST3 bypass stuff and Sonar still brings up the plug-in with host bypass enabled.

It would be great if anybody more familar with Sonar could help me understand what Sonar is trying to indicate when it enables the host bypass button by default. This would help me narrow down the problem.

Fabian

I'll check it next time I'm at the office. however on my test system the scenario is as follows:

- Compiled with older JUCE with no VST3 Bypass, the SONAR bypass is grayed out.

- Compiled with current JUCE tip, SONAR bypass is working as VST3 bypass and it is started toggled on (yellowish/orange).

So I don't understand how it's conflicting if it's not VST3 Bypass.

When you say 'older JUCE' which version were you using?

Older would be previous commit / ref still.

I'll try to provide better reproduce of the issue and investigate it further.

I've compared JUCE based performance vs other VST plug-ins. you can take FabFilter Micro evaluation (if with demo expired you can see it).

 

FabFilter:

- Upper left corner when VST3 instance has Host Bypass = Not Bypassed.

JUCE Based VST2:

- Upper left corner grayed out. (it seems SONAR isn't implementing bypass for VST2 since I've been reproducing this with several other plug-ins)

 

JUCE built from tag v3.2.0:

VST2: Grayed Out, VST3: Grayed Out

 

JUCE build from lastest tip (was at time of writing: fbc81a757e6492ee29b8ae90114659350a80fb21)

JUCE Based VST3:

- Upper left corner starts as bypassed (yellowish-oranged).

 

I've tried a little debugging (though I'm very novice in developing...) and it seems that things gets messed up here:

When we arrive to:


// for now we only store the bypass value
        privateData.setProperty ("Bypass", var (isBypassed()), nullptr);
 

even isBypassed() returned false, setProperty gets true...

It seems to be messed up by var (var::var (const bool v) noexcept      : type (&VariantType_Bool::instance)   { value.boolValue = v; })

 

* You can check out non-JUCE based plug-ins to see it happens only with JUCE.

* I've tested all with JuceDemoPlugin and cloning JUCE from git checking-out each time to make sure I'm reproducing properly.

 

 

Thanks for adding this. The VST3 bypass cannot be automated in Studio One, though. This is supposed to work right out of the box, right? The JUCE Demo Plug-in doesn't allow me to right-click the bypass button and add automation like other VST3 plug-ins do.

 

Best,

Stian