Sounds Logical
home

WaveWarp 2.0 Component

IndexCurrent GroupPrevious GroupNext GroupPrevious ComponentNext ComponentBottom of Page

Functional Description | Algorithm | Signal Implementations | Related Components | Example DWBs usage

Spectral Transformers:

Convolution

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:

IndexCurrent GroupPrevious GroupNext GroupPrevious ComponentNext ComponentTop of Page

home - news - products - store - support - site map - company info
© 2007 Sounds Logical. All rights reserved.
Sounds Logical
legal notice - privacy statement