foo_convolve (Convolver 0.1.x) for foobar 2000 0.8x
Copyright (C) 2003-2004 Gian-Carlo Pascutto. All rights reserved.
Webpage: http://sjeng.org  E-mail: gcp@sjeng.org

1. Description
--------------

This DSP component takes impulse response and does a 
fast convolution of the sound data with that impulse 
response. 

Basically, it allows quick computation of any combination of 
linear time invariant effects, such as equalization, echo, 
flange, reverb, phase shift and so on. It can transform the 
sound to exactly  the image you would get as where the impulse 
response was recorded, allowing you to get an accurate reproduction 
of a big theather or stadium.

This effect is available as 'Acoustic Mirror' in Sound Forge.
A restricted version is available as 'Digital Convolution'
in Cool Edit.

2. Workings
-----------

For this to work, you need an impulse response. You can find
some on the web, or you can generate your own.

An impulse response describes how a complex system (such
as a room or stadium) response to an impulse. This is the
most basic sound: a single 'tic' or 'hit'. If you do this
in a small room, for example by clapping your hands, the 
echos will be quick and small. In a large hall, there will 
be multiple distant ones. This is all that is needed to
completely model the sound of that room: just record a single
impulse. You can find an impulse in the misc_impulses.zip
file: 'Unitpulse2K.wav'.
If you play it back, and record it again, for example with a 
microphone, the recording will be your impulse response. 
You can load this in Convolver and make everything played
back sound like it was played back at the place where you
recorded the impulse.

An alternative is to use an external effect. 
Just like with a real environment, any combination of linear
effects can be modelled by feeding a single impulse through
them. Load the 'Unitpulse2K.wav' in the effects processor,
run the effect, and save the result to a new WAV. This 
is your impulse response.

There are several sites with pre-made impulse response
on the internet. You can find them with google. Sonic Foundry,
the authors of Sound Forge, have a large library of impulse
responses for Acoustic Mirror. Some of them are in a proprietary
format, but by folloing the procedure in the previous paragraph,
they can be easily converted to WAV impulse responses.

3. Usage notes
--------------

Supported as impulse response are all audio formats that 
foobar2000 can read. This can be dependant upon installed
input components.

The software contains a pre-amplification slider that
can be used to adjust the output volume. This may be
needed for impulse responses with incorrect levels.

Alternative, one can use the 'Auto level adjust' function,
which takes an educated guess at the correct adjustment. 
The calculated level is displayed under 'Impulse power'.

The mix between processed and unprocessed sound (Wet/Dry)
can be controlled via a secondary slider. Note that if
the impulse response has a delay, the effect may not be
as intended.

4. Performance
--------------

(All measurements for 44.1kHz stereo sound)

On an AMD Athlon XP 1800 (1.53Ghz) machine, the component 
can do a stereo 1 048 576 tap filter, in full 32 bit floating
point precision, at 17 times realtime.

Sound Forge 6.0 performs the same operation, in 24 bit
fixed point precision, at 4.6 times realtime.

It can do a stereo 2 048 tap equalization at 130 times realtime. 
The default foobar2k equalizer runs at 34 times realtime. 
In effect, it can equalize faster than the equalizer can.

It needs about 24 bytes per tap per channel working memory.

5. Archive Contents
-------------------

readme.txt         - This document
foo_convolve.dll   - foobar 2000 DSP component

6. Disclaimer
-------------

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 
LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, 
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT 
LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, 
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY 
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT 
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE
USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
