SynthMaker

Convolution

Archive · 2005 6 old posts

From the original SynthMaker forum (2004–2014), with its members’ names and dates.

TheAudiophileDutchman ·

I have been reading a lot about all kinds of convolution reverbs and effects lately. Would it be difficult to implement a realtime convolution algorithm in SM? 😕

platinumears ·

Well.. you would need to create a buffer of incoming audio of equal size to the impulse you are using, and then multiply each sample in the buffer by the corresponding sample in the impulse, while adding all the results together: the total is a single new output sample, which is why long impulses tend to munch cpu cycles 😕

I'm sure its possible, but I havent tried it.. good luck!

Dan W 🙂

rl ·

not quite. convolution in general terms is the calculation of the impact of a system function (e.g. a filter) on a signal function. Convolution can be calculated in the frequency domain and in the time domain. In frequency domain it's easy: you FFT both signals, multiply both spectra and iFFT back (but there is no iFFT module in SM unless you use other techniques such as the oscillator bank). In time domain a lot of calculations are needed according to the following formula (see www.bores.com ): http://www.bores.com/courses/intro/time/gifs/2_conv.gif

TheAudiophileDutchman ·

Thanks for the hints, guys.

In the meantime, based on the approaches mentioned, I've been doing some convolution 'research':

For time-domain convolution there's an extremely fast and compact solution available, far superior to the standard O(n^2) algorithm AND to FFT convolution, at least for FIR's of up to 1000-2000 samples. 🙂

http://www.musicdsp.org/showArchiveComment.php?ArchiveID=65 (note that the source code for Christian's surround plug-in is no longer available, because he's working on a commercial version now)

The issue here is that this is a recursive algorithm for use with either C++ or Delphi. How to implement an (iterative?) version in Synthmaker?

An other option would be to go for the frequency domain and mak and external call to the optimized FFTW dll-library from SM (see also http://www.fftw.org). Would this be possible at the moment/in the near future?

A general remark is that in 1995 Gardner patented the (only?) efficient way to achieve low-latency FFT convolution with long FIR's....

Sk ·

Loops and flow control commands are really needed in SM's code. They would be a great addition.

stefan ·

It's an interesting subject. Main issue is how to make it work, in a nice clean way, in a SIMD manner.

Wrote something here? To have a post removed or your name hidden, write to [email protected].

Before your first post

A few rules keep this a friendly place. You agree to them once.

Shown next to what you post, here and in the app. It doesn’t have to be your real name: 3–24 lower-case letters, digits or _ (capitals become lower case, spaces become _).

    Then your post goes up straight away.

    Delete this reply?

    Open it in SynthMaker?

    It goes on the track you’re editing there, in place of that track’s sound, and into My sounds. Your other tracks stay as they are.

    Want to keep that track’s sound? Start a new song in SynthMaker first (Song › New song), then open this.

    Report this reply?

    Only the developer reads reports. The person isn’t told who reported them.

    What’s wrong with it?

    Block this person?

    You won’t see their posts and replies here any more. They aren’t told, and you can unblock them at any time.

    People you’ve blocked

    Their posts and replies are hidden from you. Unblock someone to see them again.

    The community rules

    A few rules keep this a friendly place. Everyone agrees to them once, before their first post.