I was testing the awesome pluginval by @dave96,
and was seeing my Superchord plug-in’s VST3 tail time being reported as 0, where it actually sends ‘infinite’. I do this because the plug-in can self-oscillate, like a generator, and therefore never stop making sound
I think I stumbled upon a Juce bug in the VST3 host code: the plug-in returns
UINT32_MAX=0xFFFFFFFF), but the latency is reported as 0 in pluginval.
Digging into Juce, I’ve narrowed it down to this piece of code in
juce_audio_processors\format_types\juce_VST3PluginFormat.cpp line 2299:
return jlimit (0, 0x7fffffff, (int) processor->getTailSamples()) / sampleRate;
processor->getTailSamples() returns a unsigned 32bit int which is cast to an
kInfiniteTail=0xFFFFFFFF becomes -1, which is limited to 0 by
Meaning my audio might get cut-off abruptly if the host decides to enforce the tail spec …
The plug-in itself is built with our own in-house framework.