summaryrefslogtreecommitdiff
path: root/libs/ardour/session.cc
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2009-02-02 22:17:06 +0000
committerCarl Hetherington <carl@carlh.net>2009-02-02 22:17:06 +0000
commit54afc94e62b6397286d545744cea796f93f4b5f9 (patch)
tree589c5eedfb63e96da410801e1f8cc3d3d4c06cd1 /libs/ardour/session.cc
parent633629b2b1590b687a79990fe1fb0df35301e709 (diff)
Re-enable creation of stereo bundles for system IO, so that the mixer strip
connection menus for stereo tracks are populated again. Also enable disconnection via these menus. git-svn-id: svn://localhost/ardour2/branches/3.0@4481 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/session.cc')
-rw-r--r--libs/ardour/session.cc35
1 files changed, 34 insertions, 1 deletions
diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc
index 00fae6ac74..ed5ff668aa 100644
--- a/libs/ardour/session.cc
+++ b/libs/ardour/session.cc
@@ -595,7 +595,11 @@ Session::when_engine_running ()
BootMessage (_("Set up standard connections"));
/* Create a set of Bundle objects that map
- to the physical I/O currently available */
+ to the physical I/O currently available. We create both
+ mono and stereo bundles, so that the common cases of mono
+ and stereo tracks get bundles to put in their mixer strip
+ in / out menus. There may be a nicer way of achieving that;
+ it doesn't really scale that well to higher channel counts */
for (uint32_t np = 0; np < n_physical_outputs; ++np) {
char buf[32];
@@ -608,6 +612,20 @@ Session::when_engine_running ()
add_bundle (c);
}
+ for (uint32_t np = 0; np < n_physical_outputs; np += 2) {
+ if (np + 1 < n_physical_outputs) {
+ char buf[32];
+ snprintf (buf, sizeof(buf), _("out %" PRIu32 "+%" PRIu32), np + 1, np + 2);
+ shared_ptr<Bundle> c (new Bundle (buf, true));
+ c->add_channel (_("L"));
+ c->set_port (0, _engine.get_nth_physical_output (DataType::AUDIO, np));
+ c->add_channel (_("R"));
+ c->set_port (1, _engine.get_nth_physical_output (DataType::AUDIO, np + 1));
+
+ add_bundle (c);
+ }
+ }
+
for (uint32_t np = 0; np < n_physical_inputs; ++np) {
char buf[32];
snprintf (buf, sizeof (buf), _("in %" PRIu32), np+1);
@@ -619,6 +637,21 @@ Session::when_engine_running ()
add_bundle (c);
}
+ for (uint32_t np = 0; np < n_physical_inputs; np += 2) {
+ if (np + 1 < n_physical_inputs) {
+ char buf[32];
+ snprintf (buf, sizeof(buf), _("in %" PRIu32 "+%" PRIu32), np + 1, np + 2);
+
+ shared_ptr<Bundle> c (new Bundle (buf, false));
+ c->add_channel (_("L"));
+ c->set_port (0, _engine.get_nth_physical_input (DataType::AUDIO, np));
+ c->add_channel (_("R"));
+ c->set_port (1, _engine.get_nth_physical_input (DataType::AUDIO, np + 1));
+
+ add_bundle (c);
+ }
+ }
+
if (_master_out) {
/* create master/control ports */