jack_convolve

jack_convolve - a simple commandline convolution engine for jackd


What is it?

jack_convolve is a convolution engine. It convolves one (or more) signals with one (or more) impulse responses (IR). For this it uses the partitioned convolution technique.


What is convolution good for?

Well, it can be used, for example, to create good sounding reverbs (listen to Example 5 further down the page), but is not limited to that. Basically any soundfile can be used as a response file.


How does it perform?

Keep in mind though that the convolution gets more expensive as the length of the response file grows. Here on my Athlon 1.2ghz i can use a ca. 1 sec response file at a cpu load of around 10-15% (at a jack periodsize of 2048 ;)).

Also the cpu usage increases antiproportional to the partition size. Means: if at a jack period size of N jack_convolve uses M% dsp time, then it will use (2*M)% dsp time at a periodsize of N/2.

So if your box comes to a grind, you get millions of xruns and everything is sluggish, this doesn’t mean jack_convolve is broken but rather that you

a) used a too small periodsize

b) used a too long responsefile


Downloads:

Grab it here
Latest versions are jack_convolve-0.0.13.tgz and libconvolve-0.0.6.tgz


How to build:

It’s simple. Untar the source tarball, change into the newly created directory and type:

make

then as root:

make install

The binary will then live in

/usr/local/bin/

If you want it in

/usr/bin/

either change the Makefile or move it there:

mv /usr/local/bin/jack_convolve /usr/bin/

Requirements:

fftw3f

libsndfile

SRC (a.k.a libsamplerate)

libDSP

libconvolve

of course the -dev versions of the respective packages are needed if you use distribution packages..


Example sounds:

example 1

http://tapas.affenbande.org/jack_conv_ex2.ogg

http://tapas.affenbande.org/jack_conv_ex3.ogg

These ones sound better (although 4 has some room on its own):

http://tapas.affenbande.org/jack_conv_ex4.ogg

http://tapas.affenbande.org/jack_conv_ex5.ogg


Using the convolution code in your own application:

The convolution code itself is pretty neatly wrapped into the shared library libconvolve. It basically consists of two files:

convolve.h
convolve.c

The former provides a simple 3 call API. The latter implements it. Keep in mind though that it is licensed via GPL. Alternative licenses can be negotiated.


Where to get response files for cool sounding reverbs?

Have a look at

http://noisevault.com

They have quite a bit of stuff, plus links. Also a google search for “IR reponse files” might show some stuff.

Or simply create your own (you need some serious high quality gear for this though).

4 Comments

  1. [...] d June 12, 2005 at 2:24 am · Filed under Linux Audio jack_convolve 0.0.9 released. This release splits the software into the command line client [...]

  2. [...] reduce the cpu load at the expense of quality loss. This feature is experimental. Grab it here. No Comments » No comments yet. RSS f [...]

  3. [...] jack_convolve 0.0.9 released. This release splits the software into the command line client and the library libconvolve. [...]

  4. Harv says:

    Hi, I use jack_convolve to run IR files of guitar amp/cabs.
    It works amazing except the xruns issues.
    I don’t know how to get a 100% wet sound or if it’s set at 100% wet as default because the smaller files that work.
    I have an amd1.7gb with 1gb ram and an rt kernel with latency of 5.33secs, how do I adjust the partition size to get files at sizes 512kb to run without xruns?

    Thanx.

Leave a Reply