| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- Preliminary documentation for fastconv.
- FASTCONV: multi-channel fast convolution (using FFTs)
- version: 1.0 2010
- usage message:
- fastconv [-aX][-f] infile impulsefile outfile [dry]
- -aX : scale output amplitude by X
- -f : write output as floats (no clipping)
- infile : input soundfile to be processed.
- impulsefile : soundfile or text file containing impulse response,
- e.g. reverb or FIR filter.
- (text file name must have extension .txt)
- Supported channel combinations:
- (a) mono infile, N-channel impulsefile;
- (b) channels are the same;
- (c) mono impulsefile, N-channel infile.
- [dry] : set dry/wet mix (e.g. for reverb)
- Range: 0.0 - 1.0, default = 0.0
- (uses sin/cos law for constant power mix)
- Note: some recorded reverb impulses effectively include the direct signal.
- In such cases <dry> need not be used
- Where impulsefile is a filter response (FIR), optimum length is power-of-two - 1.
- The primary application of fastconv is convolution reverberation using a
- sampled impulse response of a building or other responsive space. The term "fast"
- refers to the use of the Fast Fourier transform (FFT) to perfume the convolution.
- The program can also be used more experimentally, as the impulse response input can
- be any mono or multi-channel file (see details of available channel combinations below);
- a file can also be convolved with itself.
- The program uses double-precision processing throughout, and files of considerable
- length can be processed cleanly.
- Note however that the FFT of the impulse response is stored in main memory,
- so very large files may raise memory demands to critical levels.
- More on channel options:
- Impulse soundfile can be multi-channel.
- The .amb format is supported, also Logic Pro SDIR files for reading (change the file extension to .aifc).
- When the infile is multi-channel, impulse file must be mono, or the same number of channels.
- Where the impulse file is mono, data is duplicated for all input channels.
- Typical usage: linear-phase filtering. Output should be 100% "wet".
- The optimum length for a filter impulse response is power-of-two-1,
- e.g. 127,255, 511 etc. Most filter creation tools will output a file of this size.
- (More tools to support linear-phase filtering are in preparation!).
- When infile is mono, impulse soundfile can be multi-channel, outfile has channel count of
- impulse response.
- Typical usage: reverb convolution for spatialization, B-Format convolution
- It will be usual to supply a non-zero value for "dry", e.g. 0.5. Note however that some recorded
- or synthetic impulse responses may already include a "direct" component. In such cases,
- a "dry" value may not be needed.
- The program employs an rms-based gain scaling algorithm which attempts to ensure all outputs are
- approximately at the same level as the input. In normal use (e.g. a naturally decaying reverb impulse response),
- the -a flag should not be needed.
- When the -f flag is used, output is forced to floats, with no clipping. The program reports
- the output level together with a suggested corrective gain factor. This will be of particular relevance to more
- experimental procedures, such as convolving a soundfile with itself or with some other arbitrary source.
- Note for advanced users - use for FIR linear-phase filtering.
- Convolution implements a filtering process - equivalent to multiplication of the spectra of the two inputs.
- The most common filter in audio work is recursive - it recycles output samples back into the input. The output
- continues in principle for ever, hence the term "infinite impulse response" (IIR). The advantage of this technique
- (as employed for example in CDP's "filter' package) is that even a low-order filter (i.e. using a small
- number of delayed inputs and outputs) can be very powerful in its effects. A disadvantage in some applications
- can be that an IIR filter changes the phase of components in the input (frequency components are
- delayed by different amounts). This means among the things that the waveform shape of the input is not
- preserved. The timbre of the sound (even in regions not directly boosted
- or attenuated by the filter) will therefore be changed. In common parlance, such a filter "colours" the signal.
- The alternative is a linear phase filter, which preserves all phase relationships in the signal.
- All frequency components are delayed equally. To achieve this the impulse response must have a symmetrical
- shape (see illustration). The response decays identically either side of the central peak.
- This requires that there be no recirculated outputs reinjected into the filter.
- Such a filter has a Finite Impulse Response (FIR). The impulse response data now comprises literally the
- response of the filter to a single input sample (impulse). An impulse response of 31 samples means
- that the filter generates and adds together 31 delayed copies of the input, to create each output sample.
- While IIR filter coefficients may involve only two delayed samples ("a "second-order" filter), FIR responses
- need to employ many more samples to achieve similar effects. It would not be unusual to use a 511-th order FIR filter.
- This also means that the overall delay ("latency") of a FIR filter is much longer than that of an IIR filter.
- A FIR filter cannot resonate as an IIR filter can. By computing only delayed inputs, It is unconditionally
- "stable" - whereas a badly designed IIR filter can "blow up" with output values rapidly exceeding the sample limit.
- Fastconv supports the use of FIR coefficient files either in the form of either a short soundfile, or a
- plain text file containing (in a single column) the list of coefficients as floating-point numbers within
- the "normalised" range -1.0 to 1.0. For orthodox filtering purposes a mono soundfile should be used, to process
- all channels identically. FIR coefficient text files are generated by many engineering-oriented filter design
- applications. User may be tempted to write response files by hand; this can be done, but the results will be
- virtually impossible to predict or control.
- For maximum efficiency, such files should ideally have a size that is a power-of-two less one: e.g. 255, 511, 1023, etc.
- For more information about FIR filters, see :
- http://www.labbookpages.co.uk/audio/firWindowing.html
- August 23 2010
|