X-MCFX is a VST2/VST3 plugin running on WIN64 and Mac-OS multichannel host programs,
performing matrix convolution of audio signals with up to 128 inputs and 128 outputs
(running up to 16384 FIR filters at once, with near-zero latency and low CPU load!)

You can download X-MCFX here. X-MCFX is free and open source. Contact the author for embedding it in commercial projects.

X-MCFX is a fork of the MCFX_Convolver plugin by Mathias Kronlachner, with improved performances (more than 2x), extended number of channels and recompiled both as VST2 and VST3.
X-MCFX is the modern replacement for the old X-volver program by Angelo Farina.

X-MCFX can be hosted inside a large number of sound processing programs, but for multichannel operation (that is, more than 2 inputs, 2 outputs) you need to employ a truly-multichannel host program. Unfortunately most sound processing programs and DAWs support only soundtracks with a limited number of audio channels (typically 2, 4 or 6 at most). Instead X-MCFX can operate with up to 128 channels, so your host program is better if capable of such large channel counts.

Furthermore, X-MCFX can produce an output stream having a different channel number than the input stream, and only a few audio processing programs allow for this possibility.

We recommend the usage of "graphical" sound processing programs, such as Plogue Bidule, Audio Mulch, PureData, Max, Element.

X-MCFX can also be employed inside traditional DAW programs, such as Reaper, but this makes quite more difficult to understand the signal paths.

This is a typical screenshot of Plogue Bidule, where an instance of X-MCFX is employed for processing a 32-channels audio file containing the raw signals from an Eigenmike(TM) and converting it to a 16-channels audio file in Ambix 3rd order format, employing a filter matrix of 32x16 (512) FIR filters, each filter being 4096 taps long:

After instancing X-MCFX and connecting its 32 inputs (from above) and its 16 outputs (to below), you can click on it for opening its user's interface:

The flag is red, as no filter matrix is loaded, so the oputput of the plugin is silence.

You can choose the path of the folder containing your FIR filter matrices in WAV format. And then you can choose the specific filter matrix you want to use, either with the drop-down list or navigating to a specific file, if it is in another folder.

When X-MCFX is opening a FIR filter matrix for the first time, it asks for the number of input channels (32 in our case):

You specify the number of input channels (columns in the FIR filter matrix), and you can optionally ask to store this info in the metadata of the WAV file, so at the next usage of this filter matrix file, this request will not be asked anymore.

After loading the filter matrix, the round flag becomes green and the relevant data of the filter matrix is shown on the GUI of X-MCFX:

Another intersting feature of X-MCFX is the possibility to change the gain in realtime, and also the size of minimum and maximum partitions, allowing to trade-off the performances of the convolver, in terms of latency vs CPU load. When the min partition size equates the buffer size of the host program, the plugin performs in "zero latency" mode (no additional plugin latency).

The following picture shows the selected FIR filter matrix, featuring 32 input channels (columns) and 16 outputs (rows):


This matrix contains 512 individual FIR filters, numbered from (1,1) to (16,32). You must remember that COLUMNS=INPUTS, ROWS=OUTPUTS.

So the signal coming out from X-volver on channel 1 will be the sum of the convolutions of the 32 inputs with the 32 filters displayed in the first row (channel) of the WAV file, and stored one after the other:

Out(1) = In(1)*f(1,1) + In(2)*f(1,2) + ... + In(32)*f(1,32)

The usage of X-MCFX is much faster (less CPU load) than any other previoius matrix convolver. In particular it outperfrms both our original X-volver and the MCFX_Convolver by Mathias Kronlachner, from which we started for this development.

These charts show the performance comparison between the original MCFX (left) and the new X-MCFX (right) as a function of the minimum partition size, when running a 32x16 FIR filter matrix using 4096-taps long FIR filters:

The new algorithm is particularly efficient when dealing with very small partition sizes, as required in very demanding real-time applications, such as Active Nosie Control or playing music on virtual instruments.

On the other side, the usage of a novel not-uniform partition scheme means that very long filters can be employed.

The longer the FIR filters, the larger is the advantage over the previous MCFX convolver. Here what happens when the FIR filter length is increased from 4096 to 16384 taps:

On a normal modern laptop with an i7 processor, the new X-MCFX plugin can deal with a massive FIR filter matrix of 128 inputs, 128 outputs (that is 16384 FIR filters), each long 65536 taps, with 512-taps buffering.
No other matrix convolver plugin can currently reach these large channel numbers and these impressive performances, whilst keeping such low latency.

All the contents are Copyright by Angelo Farina, 2021