Matrix Routing & Patching

The dialog used in Ardour 2.X for routing/patching was often a source of confusion to new users. Although it was really very efficient to use, it wasn't at all obvious how to use it or what the underlying model was.

For Ardour 3.0, we have looked for inspiration at several other audio technology systems that use a matrix for routing, and tried to take the best of their approaches and do it even better. The result is a more obvious, more powerful, more visually indicative method of managing patching that we call the port matrix. The same technique is used for both MIDI and audio, but the examples below show the audio versions.

One important design note: the variety of hardware that people use in conjunction with Ardour means that any user interface element like the port matrix has be able to handle some very simple situations (e.g. a single stereo output and single stereo input from a consumer soundcard) just as well as some very complex ones (e.g. multiple MADI interfaces ganged together to create more than 100 channels of input and output). We're optimistic that our design in Ardour 3.0 does a pretty good job no matter what the number of physical inputs and outputs are, but you particularly if you use low channel count soundcards you may sometimes wonder why it is designed the way it is. The moment you move to an 8 channel soundcard, it will become much more apparent. Here is the important part: if you are using a relatively simple setup, you will likely find the right-click context menu on a track/bus input or output button able to do all the routing you want. The matrix will remain tucked away out of sight, until you want to get an overview of the your whole session's routing.

One other note, about terminology. We use the word "port" to refer to an individual connection point for 1 channel of audio or 1 stream of MIDI data. For example, a stereo track or bus has 2 input ports and 2 output ports. Each of these ports can be connected to any number of other ports in a JACK system, which could include other Ardour tracks/busses, your audio or MIDI hardware, or other JACK software.

The Global Port Matrix

the global audio port matrix

The screenshot shows the global (audio) port matrix. At the lower left, you will see two sets of tabs. On the vertical axis, "Sources" (where a signal can come from), and 5 tabs labelled "Hardware", "Ardour Tracks", "Ardour Busses", "Ardour Misc" and "Other". On the horizontal axis, "Destinations" (where a signal can go to and the same set of 5 tabs. We adhere to this signal flow geometry in all examples of the port matrix: the signal somes from the left and flows down and to the right.

Using the cells

Each cell of the matrix shows a green circle if the two ports that "intersect" there are connected, or is empty if they are disconncted. Click in the cell to connect or disconnect ports. Click and drag in horizontal or vertical lines to (dis)connect one port to/from a set of ports. Click and drag diagonally to achieve sequential connections (or to disconnect them). As you move the mouse pointer around the port matrix, a pair of red indicators highlights the ports corresponding to the cell you are in (see the screenshot above)

If you move the mouse pointer over the port names, the red line of the indicators will not be visible, but the red indicators around each port will appear, showing more clearly what is connected to what.

You can right click in the cell to get a menu that allows you to disconnect one or all ports, and to add a new port to either the source or destination (if possible). A similar menu is accessible via right click on the names of the port owners along the edges of the matrix, or on each port name.

By default, the port matrix shows all ports individually. The right click cell menu provides an option to display the port matrix with all commonly owned ports (e.g. all the inputs of a track) collapsed down to a single "port". If we enabled this for the routing setup that is shown, then instead of showing the L and R ports for in 5+6, there would just be a single row for in 5+6. If anything else is connected to either the L or R port, the corresponding cell will have the green circle to show that. If only some of the individual ports in a collapsed "group" are connected, then the cell will show part of a circle (typically half, to indicate just the L or R channel being connected).

Using the tabs

Clicking on one of the tabs will change the set of ports displayed on that axis. The 5 categories are:

Ports corresponding to the input and output of an audio or MIDI hardware interface
Ardour Tracks
Ports that are the input or output of all tracks in this instance of Ardour
Ardour Busses
Ports that are the input or output of all busses in this instance of Ardour
Ardour Misc
Ports corresponding to input or output in this instance Ardour that are not related to tracks or busses (e.g. the auditioner, the click outputs)
Ports owned by other JACK clients

Note that in a variety of circumstances there will be no ports in one
or more of the categories. For example, in the screenshot above, there
are no other JACK clients with ports that we can send data to, so the
“Destinations” axis has no “Other” tab. It is also missing an “Ardour Misc”
tab, because Ardour has no audio non-track/bus related ports to send
data to.

Per-track/bus routing matrix

When editing the input or output connectivity of just a single track or bus, a very similar but obviously somewhat smaller version of the matrix is used. Here is an example of the matrix used for editing the output routing of a track called "...":

a single track port matrix

As you can see its more or less identical to the global matrix, except that the Sources list shows only ports owned by the particular track/bus being edited. The Destinations axis (again, on the right to retain the "signal flow from up/left to down/right" model) shows the normal set of tabs that we saw in the global matrix, allowing you to connect the track output to any available destination.

I like this also.

It is looking more familiar.