[PD] Making a Realtime Convolution External

Seth Nickell seth at meatscience.net
Tue Apr 5 21:22:21 CEST 2011


Hi Jamie,

Just scanned the source... big difference would be performance, and if
you're picky (you have to be pretty picky, honestly), some difference
in accuracy due to floating point's reduced precision at large/small
values. Convolution is still expensive enough for performance to
really matter.

the biggies:
- partconv implements a single fixed block size, but freq domain
convolution is faster by far on bigger blocks (peak on a core duo is
near 4k sample blocks). implementing growing block sizes makes a big
difference to low latency performance (e.g. 64 64 128 128 256 256 512
512 1024 1024 2048 2048 4096 4096), as you can get low latency while
most of your convolutions operating on the ideal high-performance
block size.
- vectorization (sse/altivec) of partconv would give a 2-3.5x performance boost

-seth

On Tue, Apr 5, 2011 at 8:26 AM, Jamie Bullock <jamie at postlude.co.uk> wrote:
>
> Hi Seth,
>
>
> On 5 Apr 2011, at 01:54, Seth Nickell wrote:
>
>> I'm planning to release our realtime convolution engine (extracted
>> from http://meatscience.net/pages/convolution-reverb) as a GPLed Pd
>> external.
>>
>
> What is the advantage of this over Ben Saylor's [partconv~] external, which provides partitioned convolution?
>
> Jamie
>
>



More information about the Pd-list mailing list