From: Steve Pope on
Richard Dobson <richarddobson(a)blueyonder.co.uk> wrote:

> Partitioned convolution (via FFT) is a very widely employed method
> to do convolution-based reverb with low latency.

I didn't know this. I worked on a digital reverb that was productized
in the late 1970's. We certainly did not use FFT's.

Is the FFT result audibly indistinguishable from the direct
convolution it is attempting to approximate? My general experience
is that human listeners can be very sensitive to slight
differences in algorithms.

Steve
From: Richard Dobson on
On 26/07/2010 23:21, Steve Pope wrote:
> Richard Dobson<richarddobson(a)blueyonder.co.uk> wrote:
>
>> Partitioned convolution (via FFT) is a very widely employed method
>> to do convolution-based reverb with low latency.
>
> I didn't know this. I worked on a digital reverb that was productized
> in the late 1970's. We certainly did not use FFT's.
>

There is still plenty of mileage/traction in synthetic reverbs, and in
other compute-intensive approaches such as direct emulation of physical
spaces. And for interactive transformations etc I suppose that synthetic
algorithms still offer much more than convolving reverbs can. I believe
the much-revered high-end Lexicon reverbs are still synthetic rather
than convolution-based. Part of the move towards convolution reverbs
in recent years has been stimulated by the much developed and refined
methods for capturing hall impulse responses (swept sine; multi-channel
including B-Format, etc).

And of course musicians are notorious for exploiting any new technology
for their own nefarious ends. Synthetic reverb is just what it is; but
with a convolving reverb you can choose pretty much any sound as the
impulse. little while ago I wrote an entirely standard fast convolution
program (not even partitioned, as it is an offline command-line
program); and when I sent it to a user for beta testing literally the
first thing he did was to take a 30sec big band track and convolve it
with itself. I must admit I was rather surprised that using such a huge
FFT (double-precision f/p) actually worked - and that the results were
musically engaging. You can record your own voice saying "bang" and
convolve it with whatever you want. And so on.


> Is the FFT result audibly indistinguishable from the direct
> convolution it is attempting to approximate? My general experience
> is that human listeners can be very sensitive to slight
> differences in algorithms.
>

Others on this list can answer this from a proper technical dsp
perspective; but the basic principle is that it is an exact match, not
an approximation. FFT fast convolution is just as its name suggests -
basically a (very) fast way to do exactly what a FIR filter does; and a
reverb is nothing more or less than a mammoth FIR filter. It is of
course down to the designer (and to the hardware precision employed) to
ensure there are no numeric compromises that would have audible
consequences. Done right, the outputs of FFT and direct convolution
should be identical.

Richard Dobson

From: Steve Pope on
Richard Dobson <richarddobson(a)blueyonder.co.uk> wrote:

>On 26/07/2010 23:21, Steve Pope wrote:

>> Is the FFT result audibly indistinguishable from the direct
>> convolution it is attempting to approximate? My general experience
>> is that human listeners can be very sensitive to slight
>> differences in algorithms.

>Others on this list can answer this from a proper technical dsp
>perspective; but the basic principle is that it is an exact match, not
>an approximation. FFT fast convolution is just as its name suggests -
>basically a (very) fast way to do exactly what a FIR filter does; and a
>reverb is nothing more or less than a mammoth FIR filter.

Well, the reverbs I worked with were IIR filters, although one
of my contributions was to use an FIR for the first part of the
impulse response followed by an IIR for the tail.

I can see where FFT with overlap/add produces an identical result
to an FIR. A truncated IIR is an FIR, but I'm not sure you're
saving any computation.

Steve
From: Rune Allnor on
On 27 Jul, 02:02, Richard Dobson <richarddob...(a)blueyonder.co.uk>
wrote:

> Others on this list can answer this from a proper technical dsp
> perspective; but the basic principle is that it is an exact match, not
> an approximation. FFT fast convolution is just as its name suggests -
> basically a (very) fast way to do exactly what a FIR filter does; and a
> reverb is nothing more or less than a mammoth FIR filter. It is of
> course down to the designer (and to the hardware precision employed) to
> ensure there are no numeric compromises that would have audible
> consequences. Done right, the outputs of FFT and direct convolution
> should be identical.

I'm a bit doubtful about all this. Again, you can not do FFTs
on data that have not yet been collected. Which means there is
significant delays involved in FFT-based processing. I still
can't see that FFTs are useful for real-time work that also
requires low latency.

Rune
From: Richard Dobson on
On 27/07/2010 11:10, Rune Allnor wrote:
> On 27 Jul, 02:02, Richard Dobson<richarddob...(a)blueyonder.co.uk>
> wrote:
>
>> Others on this list can answer this from a proper technical dsp
>> perspective; but the basic principle is that it is an exact match, not
>> an approximation. FFT fast convolution is just as its name suggests -
>> basically a (very) fast way to do exactly what a FIR filter does; and a
>> reverb is nothing more or less than a mammoth FIR filter. It is of
>> course down to the designer (and to the hardware precision employed) to
>> ensure there are no numeric compromises that would have audible
>> consequences. Done right, the outputs of FFT and direct convolution
>> should be identical.
>
> I'm a bit doubtful about all this. Again, you can not do FFTs
> on data that have not yet been collected. Which means there is
> significant delays involved in FFT-based processing. I still
> can't see that FFTs are useful for real-time work that also
> requires low latency.
>
> Rune

Well of course it is not literally 'zero latency" despite what some
commercial spin will suggest, but it is "low latency", and in the posh
Lake-Dsp style partitioned convolution which actually puts a small FIR
at the head of the process with parallel and overlapping progressively
longer blocks using FFTs, all I can say is, it works. A small to average
initial delay between the direct signal and the first early reflection
may be of the order of 20msecs; or down to 10msecs for small spaces
barely large enough for a string quartet. Small FFT sizes may not be the
fastest possible solution, but doable in real time on modern platforms
and on optimised custom hardware, and, as I said, even vanilla
implementations with a single partition size can work without perceived
inappropriate delays. 10msecs is a known threshold at which things are
empirically felt to respond "immediately". Lower is always better, but
for reverb it does not need to be ultra-low!

Richard Dobson