[LAD] ANN: convoLV2 0.2

Fons Adriaensen fons at linuxaudio.org
Sat Oct 20 11:44:51 UTC 2012

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.



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)

More information about the Linux-audio-dev mailing list