On Sat, Oct 20, 2012 at 12:14:29AM -0400, David Robillard wrote:
convoLV2 is in an early stage of development and is
not yet suitable for
users. However, it serves as a working example of an LV2 plugin with
block length restrictions, in this case:
* Maximum block length must be passed as an instantiate option
* Block length must always be a power of 2 (a required feature)
See the links in the README and on the github page for details about
these features. The first should be trivial to implement in any host,
which is highly recommended. The second may be difficult or impossible,
though it is trivial in hosts that run plugins directly on the Jack
cycle[1] or process files with fixed parameters.
Since you invited remarks:
ConvoLV2 uses libzita-convolver, but in a very inefficient way,
by restricting it to a single partition size equal to the process
block size. This is NOT necessary in order to obtain zero latency,
in fact the whole point of zita-convolver is that it can provide
zero latency even if most of the convolution is computed using
partition sizes much larger than the process block size.
This plugin is intended to provide latency-free
synchronous convolution,
which inherently requires these restrictions.
This is simply not true. A fixed, power-of-2 block size is NOT
necessary in order to obtain zero latency, not even if you use
multiple partition sizes. Supporting an arbitrary block size
(within some reasonable limits) is just a bit more complicated.
But it can be done quite efficienty using two Convproc instances
for example.
Thirdly, for the use case of reverbs, the whole latency issue is
just irrelevant. A reverb IR should not contain the direct sound
(since this will be mixed in separately), and in fact the first
10 ms or so should be silence anyway, they don't contribute to
the effect and just cause coloration. Which means you can adopt
a scheme that permits arbitrary block sizes by allowing one (Jack)
period of latency. Just remove as many samples from the start of
the IR to compensate.
Ciao,
--
FA
A world of exhaustive, reliable metadata would be an utopia.
It's also a pipe-dream, founded on self-delusion, nerd hubris
and hysterically inflated market opportunities. (Cory Doctorow)