WaveWarp 2.0 Component
      

Spectral Transformers:
Functional Description
The ouput is given by the linear (aperiodic) convolution of the two inputs,
computed over a selectable buffer length
(adjustable via the Parameter Window,
as summarised in the following table).
| Parameter | Purpose |
| "Buffer length" slider |
Adjusts the length of the input data buffers (same for both inputs)
which also defines the "Latency" (overall delay) of the
process.
The FFT buffer size is set to twice the "Buffer length" minus one,
rounded up to the nearest power of 2.
|
| "Output gain" slider |
Adjusts the overall gain of the output signal, after the convolution has been applied.
|
| "Scaling" selection |
If enabled,
the output of the convolution is reduced by
a factor given by the square-root of the FFT buffer size.
Otherwise, the raw values are used directly.
|
Algorithm
For efficiency, the linear (aperiodic) convolution of the two inputs
is implemented via Fast Convolution
(which utilises
the Fast Fourier Transform (FFT)).
Appropriate zero-padding and overlapping is applied to eliminate
circular convolution, such that
the output is exactly the linear (aperiodic) convolution of the two inputs
(as if the computations were carried out
in the time domain). The only observable consequence
of using the FFT
is the "latency" (delay) in the output.
By definition, the linear (aperiodic) convolution of two sequences
should have a length equal to:
| [length of first sequence] + [length of second sequence] -1 |
In order to operate in real-time
with selectable buffer length without incurring a data explosion, only the first
half of the total sequence is computed by
this component. There is no loss of generality since the total sequence can be
obtained by appropriate arrangement of
the input sequences.
For example, consider the sequence [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] linearly-convolved
with itself. The
complete resulting sequence is: [1, 4, 10, 20, 35, 56, 84, 120, 165, 220, 264, 296,
315, 320, 310, 284, 241, 180, 100]. This
can be obtained from the Convolution component by arranging the input sequences
as follows: first input sequence [1, 2, 3, 4, 5,
6, 7, 8, 9, 10, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]; second input sequence [1, 2, 3, 4, 5, 6, 7, 8, 9,
10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0].
For a detailed discussion on convolution (with emphasis on audio applications), see
[Roa] p. 419-432
and
[Moore] section 2.3.7.
Signal Implementations
| Audio signals | Control signals | Description |
| Single input single output mono-mono | n/a | The mono input is convolved with itself, and sent to the mono output |
| Single input single output mono-stereo | n/a | The mono input is convolved with itself, and sent (in duplicate) to the stereo output channels |
| Single input single output stereo-mono | n/a | The left input is convolved with the right input, and sent to the mono output |
| Single input single output stereo-stereo | n/a | The left input is convolved with the right input, and sent (in duplicate) to the stereo output channels |
| Double input single output mono-mono | n/a | The first input is convolved with the second input, and sent to the mono output |
| Double input single output mono-stereo | n/a | The first input is convolved with the second input, and sent (in duplicate) to the stereo output channels |
| Double input single output stereo-mono | n/a |
The average of the left and right channels of the first input is convolved
with the average of the left and right channels of the second input,
and sent to the mono output |
| Double input single output stereo-stereo | n/a |
The average of the left and right channels of the first input is convolved
with the average of the left and right channels of the second input,
and sent (in duplicate) to the stereo output channels |
Related components:
Example DrawingBoards illustrating usage:

      
|