WaveWarp 2.0 Component
      

MATLAB:
Functional Description
A seamless interface for sending any Finite Impulse Response (FIR) digital filter designed in
MATLAB into WaveWarp for real-time implementation. The filter implementation
utilizes a proprietary zero-latency algorithm. As such, this component is especially suitable for
applications such as "live" room simulations etc.
If the application specifically requires selective filtering at low frequencies, it is recommended to
employ multirate techniques, whereby the signal is downsampled before filtering.
The Multirate
category of the Component Library contains a wide range of downsamplers (and upsamplers) for this purpose.
All WaveWarp components automatically adapt to the sample rate of the incoming signal, so it is straightforward
to connect a digital filter component after a downsampler in order to realise the significant performance
gains inherent to multirate techniques
(refer to the
WaveWarp Users' Guide
for more information on WaveWarp's multirate signal processing functionality; and see
[CrRa]
and
[StNg]
for a detailed treatment
of multirate filtering.)
| Parameter | Purpose |
| "Name of filter coefficient vector:" dialog |
Enter any valid MATLAB variable name under which the FIR filter
coefficients are sent from the MATLAB workspace to WaveWarp.
|
| "Enter desired MATLAB code..." dialog |
Enter any valid MATLAB code to design the filter. (Note that the default setting utilizes the "fir1" command
which requires the MATLAB Signal Processing Toolbox, available separately from The MathWorks.)
The MATLAB code can make use of any pre-existing workspace variables. Likewise, any m-functions, scripts, or mex functions
may be used. After the filter has been successfully designed, it is automatically sent to WaveWarp for real-time
implementation (i.e., MATLAB is only used in the design stage and not in the implementation).
| "Export to ASCII file" button | If pressed,
the FIR filter coefficients are sent to an ASCII file in a format readable by WaveWarp's
standalone (i.e. non-MATLAB-enabled) filter components
(refer to the
WaveWarp Users' Guide
for
a detailed description of the specific FIR structure implemented in WaveWarp, and the
associated ASCII file format for storing the coefficients).
|
| "Signal gain" slider and dialogs |
Scales the overall amplitude of the signal after the filtering process.
The gain can be set via the slider or either of the linear or decibel data entry dialogs. Although the slider has pre-defined limiting values,
these can be overwritten by any arbitrary value entered in either of the dialogs. |
| "Mute" button | If selected, sets the amplitude of the WaveWarp output signal to zero.
|
| "Bypass" button | If selected,
the filter is bypassed and the output is made equal to the input (whilst respecting the "Mute" state and the
"Signal gain" settings).
|
|
Algorithm
The FIR filter is implemented using a proprietary algorithm which combines highly efficient (FFT-based) fast convolution with
multirate (filterbank) methods. The algorithm has zero latency, yielding results which are identical to those
obtained by direct convolution, but with much greater computational efficiency. Note that there are alternative algorithms
for performing zero-latency efficient convolution (e.g.
[Ga]
), but these are
all "single rate" methods, and do not take advantage of multirate techniques employed
in the proprietary hybrid approach adopted here.
Signal Implementations
| Audio signals | Control signals | Description |
| Single input single output mono-mono | n/a | The mono audio input is filtered and sent to the mono audio output. |
| Single input single output mono-stereo | n/a | The mono audio input is filtered and sent (in duplicate) to the stereo audio output channels. |
| Single input single output stereo-mono | n/a | Each audio input channel is filtered separately (but with the same filter coefficients). The filtered channels are then averaged and sent to the mono audio output. |
| Single input single output stereo-stereo | n/a | Each audio input channel is filtered separately (but with the same filter coefficients) and sent to the separate stereo output channels. |
Related components:
Example DrawingBoards illustrating usage:

      
|