[sdiy] IR Reverb

Olivier Gillet ol.gillet at gmail.com
Wed Feb 21 11:54:40 CET 2018

A google search for "partitioned convolution python" *yielded* this:

Very readable code and clear explanations. Once a few primitives (delay
lines) are defined, the code indeed fits on a screen!

On Wed, Feb 21, 2018 at 11:47 AM, Olivier Gillet <ol.gillet at gmail.com>

> I would suggest the following path:
> 1. Implement the algorithm in a high-level language like python or Julia
> to make sure you get the outline of the algorithm correct, without getting
> bogged down by the details (like data layout for FFT routines, writing for
> loops for every vector operation, etc). For an optimized low-latency
> (different FFT sizes for the head and tail) convolution, it shouldn't take
> more than one tall window of code.
> 2. Port to C/C++ on a desktop computer, running your reference python
> implementation on the side to compare results and troubleshoot. For this
> step, I usually prefer writing a command-line program instead of a plug-in.
> My favourite debugging method is to output multi-channel .wav files, with
> the audio output, and other channels showing whichever variable I need to
> trace. Again a matter of personal choice, but I consider any debugging
> environment that doesn't allow me to evaluate python/numpy expressions on
> the history of a variable useless for DSP development.
> 3. Port to the hardware platform of your choice. If you target a general
> purpose CPU, the same code as in step 2, with just the FFT routines
> abstracted away, can usually be used.
> On Wed, Feb 21, 2018 at 11:13 AM, Richie Burnett <
> rburnett at richieburnett.co.uk> wrote:
>> I'll second this. Convolution reverb using partitioned FFT Convolution is
>> quite a complex algorithm. Get it working on a proven and familiar platform
>> first.  Even if this isn't powerful enough to run in real time, you can
>> still assess the quality implications of Engineering tradeoffs etc, by
>> running WAV files of drum loops, vocal samples or whatever through the
>> algorithm and then listening to the output files.
>> Then worry about specifying and designing an embedded system to run it
>> once you've got a baseline algorithm that actually works.
>> In practice there might be a bit of iteration because optimisations for a
>> particular embedded platform will likely be different to your chosen
>> "comfort zone" desktop evaluation platform. But at least you will have
>> gained familiarity with the algorithms from working on your desktop
>> prototype first.
>> Diving straight into developing a Convolution reverb on a high-end
>> embedded DSP platform might be a steep learning curve if you don't have a
>> few simpler DSP projects already under your belt.
>> Also, depending on why you're doing this and your personal motivations,
>> you might find that once you get Convolution reverb working on the desktop
>> in non-realtime you don't actually like the sound, or the excitement of the
>> challenge has gone away once you achieve this milestone. In which case,
>> well done, you've learnt a lot along the way, and saved yourself the price
>> of a high-end DSP board and Dev tools.
>> -Richie,
>> Sent from my Xperia SP on O2
>> ---- Jay Schwichtenberg wrote ----
>> >If it would be me I'd get the code to work under Windows/iOS/Linux first
>> and
>> >then worry about the hardware.
>> >
>> >You have much better tools and would have quicker turnaround doing it in
>> >Windows/iOS/Linux first and if you can't get it to work there's no need
>> to
>> >build hardware.
>> >
>> >Just my 2 bits.
>> >Jay S.
>> >
>> >-----Original Message-----
>> >From: Synth-diy [mailto:synth-diy-bounces at synth-diy.org] On Behalf Of
>> Mike
>> >Beauchamp
>> >Sent: Tuesday, February 20, 2018 3:35 PM
>> >To: synth-diy at synth-diy.org
>> >Subject: Re: [sdiy] IR Reverb
>> >
>> >I've been looking at convolution and impulse response effects and
>> >interested in trying a few ideas out to maybe incorporate into future
>> >products. Is anyone comfortable with programming this and speccing out
>> >the required hardware (digital isn't my forte)?
>> >
>> >Mike
>> >
>> >
>> >On 02/15/2018 02:42 AM, Tim Ressel wrote:
>> >> (note: laughter is understandable and probably mandatory)
>> >>
>> >> So I just did a cannonball into the murky waters of impulse response
>> >> reverb. My tenuous grasp of DSP coupled with my sketchy math skills is
>> >> making this, well, interesting. So far I have acquainted myself with
>> >> linear convolution, which looks suspiciously like an FIR. Since it says
>> >> "impulse response" on the box, that seemed to make sense. But then I
>> >> stepped back and tried to imagine a reverb system as I understand it
>> and
>> >> got confused.
>> >>
>> >> Reverbs have two things going on: time delay and filtering. The time
>> >> component gives the reverb time and overall thickness of the reverb,
>> >> while the filtering can make the effect warmer or colder (yes,
>> >> oversimplified). So I am guessing the impulse response is a room
>> >> characterization used to color a reverb. However that seems incomplete.
>> >> Unless the impulse response is really long or is sets of impulse
>> >> responses over time.
>> >>
>> >> I suspect that gurgling sound is me in over my head.
>> >>
>> >_______________________________________________
>> >Synth-diy mailing list
>> >Synth-diy at synth-diy.org
>> >http://synth-diy.org/mailman/listinfo/synth-diy
>> >
>> >_______________________________________________
>> >Synth-diy mailing list
>> >Synth-diy at synth-diy.org
>> >http://synth-diy.org/mailman/listinfo/synth-diy
>> _______________________________________________
>> Synth-diy mailing list
>> Synth-diy at synth-diy.org
>> http://synth-diy.org/mailman/listinfo/synth-diy
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://synth-diy.org/pipermail/synth-diy/attachments/20180221/3a1f7f88/attachment.htm>

More information about the Synth-diy mailing list