Qtractor Wiki How To - 9 Distributing Plugins' Load to multiple CPU Cores


How To - Contents

Distributing Plugins’ Load to multiple CPU Cores

The real-time CPU load of plugins can be a problem. It can lead to xruns or require a big buffer size – or both. One of the workarounds is to try to distribute their load across multiple CPU cores. This is not possible with jack1. But jack2 can - under certain conditions - use more than one CPU core:

A good use case is a Qtractor session with several buses containing reverb plugins. Those plugins can be moved to other plugin hosts, e.g. Carla with its engine running in Multiple Clients mode or Non Mixer XT. Each mixer strip in Non Mixer XT can act as an own jack client, can host multiple plugins and assigns the mixer strip’s name to the associated jack ports. Very nice.

Let’s assume we have a Qtractor session that is already set up as in How To - 7 Equal Latency for Tracks and Buses.

To parallelize audio processing we have to

An Insert Send adds a latency of one Latency Unit. So make sure that each bus has either an Insert Send/Return to a mixer strip or to itself (from an Insert Send to its own Return) to get the same latency for all buses.

Moving plugins from tracks to Non Mixer XT should be possible as well. To get the same latency for all tracks you can use Insert Sends in all tracks or a bus with Insert Send (for tracks without an Insert Send) and a bus without an Insert Send (for tracks with an Insert Send).

Start Non Mixer XT and open the corresponding project before you start Qtractor and load the saved session, otherwise the connections to and from the Insert Sends will not be established. Using a session manager to automate the setup is beyond the scope of the How-To.