Hello,
Let’s talk about plugin tails.
In VST2 (this paragraph is not in the question)
effGetTailSize
can return a tail length, however very few plugin makes use of that (Kotelnikov being one of them).
Almost all the VST2 I test return 0 for effGetTailSize
, which means “unspecified” and according to VST 2.0.0 documentation will get the hosts to call process
continuously.
In my tests, iZotope Ozone does seem to use this “1” sample value, to mean there is “no tail”. What is “no tail” in that context, a very fast termination of energy, or a signal to call process continuously? This is mysterious. But, this 1 value is unlikely to be correct, as a single IIR will bring much more tail than this.
For this plugin format, it seems safer to do what everyone does and return zero everywhere, which is what most JUCE plugins, all Voxengo plugins, all SIR plugins… do.
In VST3
In VST3, kInfiniteTail
signal an infinite tail (always call process) and kNoTail
indicates “no tail”. Now, this “no tail” has value 0 but could mean two different things:
- Either it means “this plugin has no tail, do not try to optimize” and it equivalent to 0 in VST2.
- Either it means “this plugin has no tail, the output is silent right from the first silent sample.”
In the wild, it turns out some plugins like SuperMassive return kNoTail
(0) but obviously it is an effect with a tail (and what a tail). So it seems again people have trouble following the intended semantics. And indeed, I cannot rightfully understand what Steinberg intended.
What does kNoTail means???