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.
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.