From: Steve Pope on 26 Jul 2010 18:21 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 26 Jul 2010 20:02 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 26 Jul 2010 20:13 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 27 Jul 2010 06:10 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 27 Jul 2010 08:01
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 |