Conceptual work on signal flow / bussing
The signal flow capabilities of Ardour, while flexible, have been somewhat lacking in terms of basic aux sends, busing, cue feeds and general I/O friendliness. Even a modest amount of routing equivalent to a 4-bus console requires quite a bit of JACK plumbing.
In addition to that motivation, we have hazure being paid by Google's Summer of Code to implement surround panning. Some infrastructure is needed to support the n-channel panning plugins that hazure is developing, so I think this is a good time to tear into the signal flow of Ardour.
I've combined some ideas generated by recent IRC discussions regarding bussing, panning, signal flow and metering. This is a "straw man" design so feel free to tear it apart.
The basic design is as follows:
1) When creating a track or bus, you choose the pan mode (mono, stereo, 5.1 etc)
2) Any time a bus is created in Ardour, a corresponding "send" is created on every existing track and bus.
3) Each "bus send" (different than the existing "sends" in Ardour) has a panner control for each track/bus that it can be connected to. The panner control has an on/off switch and a level control for that send.
The total number of "redirects" available on the redirects pane will be increased to 6:
* inserts (exactly as they are now... a JACK output and input)
* sends (exactly as they are now... an insert with no return path)
* returns (a JACK input which gets "mixed" into the signal flow at that point)
* bus sends ( one of these per bus in the session )
* Meter point (this defines where the meter next to the fader gets its data)
All of the redirects can be moved around in the signal flow. The first 4 (plugins, inserts, sends and returns) can be arbitrarily created/destroyed per track. Bus sends are created/destroyed whenever the corresponding bus is destroyed.
One final point: the bus sends do not show up in the JACK graph, they are internal to Ardour. Tracks will have JACK inputs just like they do now. The only other JACK connections available will be the the inserts, sends, and returns that the user creates. The master bus will have a post-fader send created automatically and will be routed to the first physical outputs which emulates the same functionality we have now.
So, what are we showing here? The green dots are the on/off switches for the sends. The green bar is the level control. Just below that is the panner control. The only panner I've shown is a mono-to-stereo but there will be other types as well.
The only audio track (far left) has some pre-fader plugins and an insert, a pre-fader meter, a pre-fader cue feed for the musician, and post-fader sends to the drum subgroup, reverb bus, and master output. The master output (far right) has a post fader insert (for jamin?), a post-fader meter, and the final master send which is the main output. I hope everything else is fairly self-explanatory.