Routing matrix

This is an idea i got from reading Thorsten Wilms’ blog about routing matrices. It’s just a mindstorming thing, to get people’s feedback.

Anyway, this is a routing matrix for ardour, using parts of the mixer interface. It acts as a replacement for other JACK routing applications.

There could be a global toggle button for mixer/routing, and/or a per-track/bus toggle. Active plugins could become part of the “output” list, but in that case the outputs would function as inserts, indicating so by use of different colors or similar.

To get maximum flexibility, all jack ports would also have to be represented by vertical columns, even though they are not ardour internal tracks or buses.

Anyway, it’s just an idea :slight_smile: I don’t even know if something like this even vaguely resembles anything useful. Here’s the link to the mockup I made:

Critique (and ideas) are most welcome.

we plan to add a routing matrix to the code early in the lifecycle of 2.1. it will be modelled somewhat on Reaper’s routing matrix.

Yes, I read that. But if nobody minds, I will develop some of my own thoughts and ideas further on in this thread. I see no particularly good reasons to have more dialogs when the mixer already implements the notion of a column in a routing matrix already. It could be quite flexible and user friendly, but maybe hard to implement in comparison to a simpler reaper-style routing matrix.

With such an approach you would give up the chance to make the columns more narrow to fit more on the screen.

The mixer has nothing in common with a matrix except for the presence of columns.

But at least your mockup got me thinking about hide and rec buttons :wink:

Most analog mixers implements some kind of routing matrix functionality: Each channel has buttons for choosing which buses to send the signal to.

Other jack ports would have to be represented by special mixer strips that could be much narrower than the internal tracks and buses. They could also be expanded and collapsed with regard to which jack client they belong to, thus making the mixer a horizontal tree view.

I see the point on making more fit into the screen. That could be solved by making the mixer have yet another mode set: “ardour” mode showing columns as tracks and buses, and “jack” mode showing columns as (narrower) clients and ports. The “output” port list would stay unchanged between such a mode shift.

At least consider the possibility of having the signal movement be top->down, then right. The reaper way seems very strange to me by having the signal go from left->right then UP. AFAIK, the conventions for signal pathway visualization rarely makes signals move upwards. To me it’s a bit strange.

Also, ardour routes need some width, because each route has a minimum of two outputs (all mono tracks have a pan controller?), and sends can also be added to a route, which would add to the width of that route in the matrix editor. The tracks/buses always own more than one output, these outputs (JACK ports) would be children of the route in the matrix editor.

So “top level” matrix editor columns would be ardour tracks, ardour buses and JACK clients. “top level” minimum width then only applies to mono JACK clients with no more than one output port. I am under the impression that most JACK clients at least has support for stereo.

So maybe it would look something like this:

| ardour | JACK |
|Track_1| Track_2 |Hydrogn|
| L | R | L | R | S1| L | R |

| | | | | | | | ardour
| | | | | | | | Track_1/in 1
| | | | | | | | Track_2/in 1
| | | | | | X | | Hydrogen/in 1
| | | | | | | X | Hydrogen/in 2
| X | | X | | | | | master/in 1
| | X | | X | | | | master/in 2
| | | | | | | | JACK_client
| | | | | X | | | input
| | | | | | | | system
| | | | | | | | playback_1
| | | | | | | | playback_2

I was also thinking that a large, traditional matrix with a large number of ports could make it difficult to trace a given point in the matrix to its corresponding ports. Alternating colors usually helps, but they would look odd in a matrix, where essentially four different colors (two for each axis, input and output ports) would have to be mixed. What i propose then is a different type of matrix: If no ports are connected, the matrix area is completely blank. When the mouse enters a specific location that corresponds to a connection between two ports, a dummy connection would be drawn with a light color, to show the user what she’s connecting. This dummy connection would follow the mouse over the entire area, of course “snapped” to port locations. A single click on a location would make the dummy connection permanent with a stronger color (and of course acually make the connection). A second click will remove it.

A conncetion will then look something like this:

 |    [i]