From: Rune Allnor on
On 27 Jul, 14:01, Richard Dobson <richarddob...(a)blueyonder.co.uk>
wrote:
> 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.

OK, so we are comparing apples and oranges. This thread started from
a question about filtering implemented as FFTs vs TD convolution,
where
my opinions ought to be well known by now. What you are describing is
some sort of audio effect that from a purely technical POV is *not*
strict convolution, but rather a composite filter.

Rune
From: Richard Dobson on
On 27/07/2010 13:11, Rune Allnor wrote:
...
>>
>> 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.
>
> OK, so we are comparing apples and oranges. This thread started from
> a question about filtering implemented as FFTs vs TD convolution,
> where
> my opinions ought to be well known by now. What you are describing is
> some sort of audio effect that from a purely technical POV is *not*
> strict convolution, but rather a composite filter.
>
> Rune

Erm, partitioned convolution is still convolution (and can as described
be done entirely with FFTs). There is even a description in Numerical
Recipes. And reverb is hardly "some sort of audio effect" - it is one of
the most standard and mainstream processes around, albeit one with
infinite varieties. A reverb impulse response is still "just" an impulse
response, except it is somewhat longer than your typical FIR filter
response. So the only apples/oranges comparison is in the length of the
IR, and in the methods to reduce latency. But it is still convolution.
At least, that is what all the published papers say it is!

Richard Dobson


From: Rune Allnor on
On 27 Jul, 15:52, Richard Dobson <richarddob...(a)blueyonder.co.uk>
wrote:
> On 27/07/2010 13:11, Rune Allnor wrote:
> ..
>
>
>
> >> 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.
>
> > OK, so we are comparing apples and oranges. This thread started from
> > a question about filtering implemented as FFTs vs TD convolution,
> > where
> > my opinions ought to be well known by now. What you are describing is
> > some sort of audio effect that from a purely technical POV is *not*
> > strict convolution, but rather a composite filter.
>
> > Rune
>
> Erm, partitioned convolution is still convolution (and can as described
> be done entirely with FFTs). There is even a description in  Numerical
> Recipes. And reverb is hardly "some sort of audio effect" - it is one of
> the most standard and mainstream processes around, albeit one with
> infinite varieties. A reverb impulse response is still "just" an impulse
> response, except it is somewhat longer than your typical FIR filter
> response. So the only apples/oranges comparison is in the length of the
> IR, and in the methods to reduce latency. But it is still convolution.
> At least, that is what all the published papers say it is!

It might be *equivalent* to a convolution, the same way that
impelmenting the direct form I or II of the IIR is *equivalent*
to convolving with the IIR's IR.

But the computational algorithms - and thus the computational
workloads - are different.

Rune
From: Jerry Avins on
On 7/27/2010 10:24 AM, Rune Allnor wrote:

...

> But the computational algorithms - and thus the computational
> workloads - are different.

The algorithms, workloads, and latencies differ, but the results can be
bit exact.

Jerry
--
Engineering is the art of making what you want from things you can get.
�����������������������������������������������������������������������
From: robert bristow-johnson on
On Jul 27, 4:45 pm, Jerry Avins <j...(a)ieee.org> wrote:
> On 7/27/2010 10:24 AM, Rune Allnor wrote:
>
>    ...
>
> > But the computational algorithms - and thus the computational
> > workloads - are different.
>
> The algorithms, workloads, and latencies differ, but the results can be
> bit exact.

"bit exact" means that the round-off error would be identical in both
cases. let's assume no dither (since that would, of course, affect
non-deterministically the round-off). a straight-forward convolution
with a double-width accumulator and a single roundoff at the very end
of the summation might not be *exactly* the same bits of the same
convolution done with FFT and overlap-add or overlap-save.

that said, Rune, doing this frequency-domain convolution in real time
*does* entail some delay (could be a half second, i dunno, depends on
the size of the FFT), but it's seldom the entire algorithm. say it's
a 4096 FFT, right there is 1/10 second delay, maybe doing the FFT,
frequency-domain multiplication, iFFT and overlap-whatever could be
done in about the same time. for the dense tail of a reverb impulse
response, 200 ms delay might be good enough and any reflections that
are earlier are sparse and done in the time domain with that result
added.

also, in terms of semantics, "convolution" is convolution whether it's
done in the time domain or frequency domain. "time-domain
convolution" means any convolution that does not use or require any
transformation to the frequency domain. as far as i can tell, there
are only a couple of methods of doing that and they require one MAC
instruction for each tap.

there are multiple products that implement this convolutional reverb
(McDSP, Waves, Digidesign, i think). i am *sure* that fast
convolution is used for at least the dense reverb tail. i do not know
what the throughput delay is, but i know that they're real-time or can
be real-time.

at least that's how i see it.

r b-j