Hosts not calling processBlockBypassed

I just started adding some anti-click fades to some plugins intending to use processBlockBypassed to find out when the host has bypassed the plugin but it looks like a lot of hosts never call this.

I've tried Logic, Reaper and BitWig with various formats and none of them call processBlockBypassed. Most just stop calling the processBlock method but some continue to call processBlock (BitWig) but just don't pass the audio. Presumably this is so the UI keeps responding and they do their own bypass fading.

Has anyone come across a host that actually calls this method? Or am I just being thick?

Did you ever work out what was going on with this @dave96? Just hitting a similar issue, wondering if I’ve missed something obvious.

Did you see this thread?

Even thouhg there is no conclusion either, it has already checked some ideas for research…

I don’t think I came across that in my searches for some reason, thanks for the link!

I know this is an old thread, but is anyone else experiencing this:
I’m on Windows 10 / VS 2019 and both Ableton 10 and Reaper 6 don’t call processBlockBypassed in my VST3. They just stop calling processBlock. That’s really annoying as I can’t do anything to declick bypass on/off switching…

Investigating further: Mac / VST3 / Ableton 10 behaves the same way. When bypassed neither processBlock nor processBlockBypassed are called…

I’m still experiencing this!!! nobody else? I think this is a JUCE bug :confused:

What makes you think it’s a JUCE bug? On the surface it seems like a host optimization to me?

It would be interesting to know if the underlying plugin APIs are being called or notified of this in some way though. Is there perhaps some kind of VST3 call like “wants process callback when bypassed”?

because it used to work but now it doesn’t. If I bypass a VST3 in Ableton 10 processBlockBypassed doesn’t get called (both on Mac and Windows). Might be the Host changed something, but then JUCE needs to adapt. Currently it’s not possible to do click-free bypassing because of this…

Do you know when it used to work? That would be useful for doing git bisects etc.
(As far as I was aware this never worked, hence my original post here from 2015…)

The host might have changed as well in the meantime… was it the very same version of Ableton?
(not saying there is nothing to see here…)

It was the same version which is the latest Ableton 10. It also happens with Reaper 6 on Windows. If this never worked @dave96, how do you get rid of the click when bypassing? The problem is that the host just doesn’t call processBlock anymore when bypass is active, so there is no way to implement some kind of crossfading…

I didn’t get rid of it. I just gave up trying in the end and moved on to something else as it seemed like a host bug.

I guess what would be interesting would be to try it on some non-JUCE based plugins and see if they suffer from the same problem?

I see!
So… Is there any solution to this from the JUCE team? All I want is a click-free bypass, it kind of weirds me out that this is so difficult to achieve :upside_down_face: @jules

Hi, did you solve this problem? I met the same problem.

nope :upside_down_face:

This seems to be a really old thread but let me add my 2 pennies.

IIRC If you’ve declared a bypass parameter in JUCE via getBypassParameter, then I don’t believe processBlockBypassed will ever be called (although that probably wasn’t implemented when Dave first wrote this post). If you haven’t then yes I’ve certainly seen DAW’s call this in the past.

However, Logic never will call this method as its bypass is not actually a bypass it just stops processing altogether. Reaper should have two different bypass mechanisms, one will stop processing altogether (like Logic) the other should indeed notify your bypass parameter or call processBlockBypassed, but it’s been years since I tested that. I’m less sure about BitWig, but that actually sounds quite smart as it means you get constant processing performance which can reduce glitches due to sudden changes in processing.

See my comment here for more information


Interesting, I can report that for Reaper and Ableton 10 it will call processBlockBypassed if you implemented the bypassParameter. However in both cases the parameter is not linked and if you bypass in the DAW neither processBlock nor processBlockBypassed are called.

Are you testing VST2 by any chance? linking can’t be done with VST2 (at least not in both directions). Which just adds another layer of complexity to the bypass shenanigans.

Nope, VST2 is dead (finally)