User Tools

Site Tools


conv:conv

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
conv:conv [2008/01/24 12:35] devaconv:conv [2008/09/04 12:09] (current) deva
Line 1: Line 1:
-=====Convolution implementation pages (Spring 2008 studies group under Ole Caprani)=====+=====Experiments with realtime convolution reverb - (Eksperimenter med realtids foldningsrumklang)===== 
 +Spring 2008 studies group under Ole Caprani\\ 
 +\\
 Our goal is to implement a realtime plugin to do convolution.\\ Our goal is to implement a realtime plugin to do convolution.\\
 The basic "Input Side" is way too slow (convolution implemented with two for loops), so we will be experimenting with a dft-multiply-idft algorithm (sometimes called "The Overlap-and-Save algorithm") instead.\\ The basic "Input Side" is way too slow (convolution implemented with two for loops), so we will be experimenting with a dft-multiply-idft algorithm (sometimes called "The Overlap-and-Save algorithm") instead.\\
 To do the actual fft we will use the fftw3 library (http://www.fftw.org), which implements the "Fastest Fourier Transform in the West" algorithm.\\ To do the actual fft we will use the fftw3 library (http://www.fftw.org), which implements the "Fastest Fourier Transform in the West" algorithm.\\
-The next step is to implement at test the "Partitioned Overlap-and-Save" algorithm, where the filter is split into partitions prior to convolution.+Currently we have implemented and tested convolution in the frequency domain where the input sound is partitioned which makes real time usage possible.
  
 ====Group==== ====Group====
Line 28: Line 30:
 As it is seen on the graphs the speed improves with the buffer size increasing, up to 1024 samples. At this point the iteration time starts fluctuating. This may be caused by internal cache size on the given CPU. As it is seen on the graphs the speed improves with the buffer size increasing, up to 1024 samples. At this point the iteration time starts fluctuating. This may be caused by internal cache size on the given CPU.
  
-====Links==== +====Literature==== 
-  * http://www.fftw.org The fftw library. +  * TGStockham Jr. High-speed convolution and correlationAFIPS Proc1966 Spring Joint Computer Conf., Vol 28, Spartan Books, 1966, pp229 233
-  * http://archive.cnmat.berkeley.edu/~adrian/Csigproc.html Some C optimizations that can be used when programming DSP+  * The Scientist and Engineer's Guide to Digital Signal Processing, copyright ©1997-1998 by Steven WSmithFor more information visit the book's website at: [[http://www.DSPguide.com]] 
-  * http://sunsite.univie.ac.at/Linux-soundapp/dsp.html - A list of links to various sites about audio and DSP programming. +  * Real-time partitioned convolution for Ambiophonics surround soundTorger, A.; Farina, AApplications of Signal Processing to Audio and Acoustics, 2001 IEEE Workshop on the Volume , Issue , 2001 Page(s):195 198 
-  * http://www.dspguide.com - A very good online book about audio convolution. +Further online references can be found in the links section.
-  * http://people.scs.fsu.edu/~burkardt/c_src/fftw3/fftw3.html Some info about the fftw3 library. +
-  * http://www.ludd.luth.se/~torger/brutefir.html#bruteconv_3 - Some info about partitioned convolution. +
-  * http://www.aurora-plugins.it/Public/Papers/164-Mohonk2001.PDF More on partitioned convolution. +
-  * http://www.linuxdevcenter.com/lpt/a/586 - A LADSPA tutorial+
  
 ====Code==== ====Code====
Line 51: Line 49:
  
 The input and filter files must be mono wav files. The input and filter files must be mono wav files.
 +
 +====Examples====
 +Here are a dry input file called ''drums.wav'' and a wet output file called ''output.wav'': {{:conv:sounds.tar.gz}}\\
 +Get impulse responses here [[http://www.voxengo.com/impulses]].\\
 +**NOTE**: Remember to convert them into mono before usage. Running the application on stereo files has undefined results.
 +
 +====Realtime LADSPA plugin====
 +We have experimented with implementing our code as a realtime ladspa plugin.\\
 +This however is a very fragile implementation that only works on a hardcoded filter file and jack buffersize.\\
 +If still interested, it can be fetched here: {{:conv:conv_opt_ladspa-0.1.tar.gz}}
 +
 +====Links====
 +  * http://www.fftw.org - The fftw library.
 +  * http://archive.cnmat.berkeley.edu/~adrian/Csigproc.html - Some C optimizations that can be used when programming DSP.
 +  * http://sunsite.univie.ac.at/Linux-soundapp/dsp.html - A list of links to various sites about audio and DSP programming.
 +  * http://www.dspguide.com - A very good online book about audio convolution.
 +  * http://people.scs.fsu.edu/~burkardt/c_src/fftw3/fftw3.html - Some info about the fftw3 library.
 +  * http://www.ludd.luth.se/~torger/brutefir.html#bruteconv_3 - Some info about partitioned convolution.
 +  * http://www.aurora-plugins.it/Public/Papers/164-Mohonk2001.PDF - More on partitioned convolution.
 +  * http://www.linuxdevcenter.com/lpt/a/586 - A LADSPA tutorial
 +
conv/conv.1201174506.txt.gz · Last modified: 2008/01/24 12:35 by deva