[sdiy] IR Reverb

Olivier Gillet ol.gillet at gmail.com
Wed Feb 21 11:47:22 CET 2018

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/52d14f3e/attachment.html>

More information about the Synth-diy mailing list