[linux-audio-dev] [ANN] First (alpha) release of JACE

fons adriaensen fons.adriaensen at skynet.be
Wed Jan 11 23:53:43 UTC 2006


JACE is a Convolution Engine for JACK and ALSA, using FFT-based
partitioned convolution with uniform partition sizes.

I wrote it mainly as a 'proof of concept' for something more
complicated, to be announced at the next LAC. But it could be
useful as it is, hence this release.

Main features:

 - Any matrix of convolutions between up to 16 input and 16
   outputs.

 - Maximum length for each convolution is one megasample (nearly
   22 seconds at 48 kHz).

 - Allows the use of a period size down to 1/16 of the partition
   size. This will not change the total delay (input + process +
   output) which will be twice the partition time in all cases,
   but at least allows you to use a smaller period size when
   other parts of your system require it.

 - It's fast (see performance examples below).

When used with a period size smaller than the partition size,
JACE will try to spread the CPU load evenly over all process
cycles that make up a partition. This works quite well if there
is enough work to be distributed, and less well otherwise. As an
extreme example, if there is only one input and one output, and
the convolution size is just one partition, it's clearly not
possible to spread the three elementary operations over 16
cycles. But in those cases the load will be small anyway, and
you can use a smaller partition size.

Code to use SSE (tested) and 3DNOW (untested !) for the MAC
steps is present, but disabled by default since it seems
to make little difference.

Performance on 2 GHz Pentium IV with 4 convolutions of
5.5 seconds each at Fs = 48 kHz. Load is as displayed by
qjackctl. Delay is input + process + output. 

  period    partition   load    delay
  -----------------------------------
   1024        8k        12%    340ms 
   1024        4K        17%    170ms
    512        4K        18%    170ms
    256        4K        19%    170ms
    128        2k        32%     85ms
     64        1k        59%     43ms


Grab it at <users.skynet.be/solaris/linuxaudio>. You will also
need libfftw3f, libsndfile, and two shared libs available at
the same place.

Enjoy !

-- 
FA





More information about the Linux-audio-dev mailing list