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?
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…
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…)
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 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 @jules
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.
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.