You’re assuming every plugin developer overrides AudioProcessor::processBypassed() and handles this… if they don’t then the delay compensation can be wrong if the AudioProcessorGraph is bypassed… I’ve added a delay to AudioProcessor and in the AudioProcessor’s processBypassed() method I delay the audio by the latency amount. processBypassed() is not a pure virtual method so developers aren’t forced to override it.
I had to add a new method:
AudioProcessor::prepareBypassDelay()
which gets called in AudioProcessorGraph:: setBypassed()
void setBypassed (bool shouldBeBypassed) noexcept
{
if (processor != nullptr)
{
if (auto* bypassParam = processor->getBypassParameter())
bypassParam->setValueNotifyingHost (shouldBeBypassed ? 1.0f : 0.0f);
// Added by Rail Jon Rogut
if (shouldBeBypassed)
processor->prepareBypassDelay();
}
bypassed = shouldBeBypassed;
}
Rail