summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gtk2_ardour/group_tabs.cc8
-rw-r--r--gtk2_ardour/group_tabs.h2
-rw-r--r--libs/ardour/ardour/route_group.h2
-rw-r--r--libs/ardour/route_group.cc19
4 files changed, 20 insertions, 11 deletions
diff --git a/gtk2_ardour/group_tabs.cc b/gtk2_ardour/group_tabs.cc
index a1aedc6c5b..df0ad20373 100644
--- a/gtk2_ardour/group_tabs.cc
+++ b/gtk2_ardour/group_tabs.cc
@@ -308,7 +308,9 @@ GroupTabs::get_menu (RouteGroup* g)
if (g) {
items.push_back (MenuElem (_("Edit..."), sigc::bind (sigc::mem_fun (*this, &GroupTabs::edit_group), g)));
- items.push_back (MenuElem (_("Subgroup"), sigc::bind (sigc::mem_fun (*this, &GroupTabs::subgroup), g)));
+ items.push_back (MenuElem (_("Subgroup using Direct Bus"), sigc::bind (sigc::mem_fun (*this, &GroupTabs::subgroup), g, false, PreFader)));
+ items.push_back (MenuElem (_("Subgroup using Aux Bus (pre-fader)"), sigc::bind (sigc::mem_fun (*this, &GroupTabs::subgroup), g, true, PreFader)));
+ items.push_back (MenuElem (_("Subgroup using Aux Bus (post-fader)"), sigc::bind (sigc::mem_fun (*this, &GroupTabs::subgroup), g, true, PostFader)));
items.push_back (MenuElem (_("Collect"), sigc::bind (sigc::mem_fun (*this, &GroupTabs::collect), g)));
items.push_back (MenuElem (_("Remove"), sigc::bind (sigc::mem_fun (*this, &GroupTabs::remove_group), g)));
}
@@ -424,9 +426,9 @@ GroupTabs::edit_group (RouteGroup* g)
}
void
-GroupTabs::subgroup (RouteGroup* g)
+GroupTabs::subgroup (RouteGroup* g, bool aux, Placement placement)
{
- g->make_subgroup ();
+ g->make_subgroup (aux, placement);
}
struct CollectSorter {
diff --git a/gtk2_ardour/group_tabs.h b/gtk2_ardour/group_tabs.h
index 22ebd808cc..da9523d50d 100644
--- a/gtk2_ardour/group_tabs.h
+++ b/gtk2_ardour/group_tabs.h
@@ -93,7 +93,7 @@ private:
void collect (ARDOUR::RouteGroup *);
void set_activation (ARDOUR::RouteGroup *, bool);
void edit_group (ARDOUR::RouteGroup *);
- void subgroup (ARDOUR::RouteGroup *);
+ void subgroup (ARDOUR::RouteGroup *, bool, ARDOUR::Placement);
void activate_all ();
void disable_all ();
void remove_group (ARDOUR::RouteGroup *);
diff --git a/libs/ardour/ardour/route_group.h b/libs/ardour/ardour/route_group.h
index 7dbdc1d882..d5e4b274e1 100644
--- a/libs/ardour/ardour/route_group.h
+++ b/libs/ardour/ardour/route_group.h
@@ -135,7 +135,7 @@ class RouteGroup : public SessionObject
changed();
}
- void make_subgroup ();
+ void make_subgroup (bool, Placement);
void destroy_subgroup ();
boost::shared_ptr<RouteList> route_list() { return routes; }
diff --git a/libs/ardour/route_group.cc b/libs/ardour/route_group.cc
index 629216da39..a9e942ef3a 100644
--- a/libs/ardour/route_group.cc
+++ b/libs/ardour/route_group.cc
@@ -387,7 +387,7 @@ RouteGroup::audio_track_group (set<boost::shared_ptr<AudioTrack> >& ats)
}
void
-RouteGroup::make_subgroup ()
+RouteGroup::make_subgroup (bool aux, Placement placement)
{
RouteList rl;
uint32_t nin = 0;
@@ -407,7 +407,7 @@ RouteGroup::make_subgroup ()
try {
/* use master bus etc. to determine default nouts */
- rl = _session.new_audio_route (false, nin, 2, 0, 1);
+ rl = _session.new_audio_route (aux, nin, 2, 0, 1);
} catch (...) {
return;
}
@@ -415,11 +415,18 @@ RouteGroup::make_subgroup ()
subgroup_bus = rl.front();
subgroup_bus->set_name (_name);
- boost::shared_ptr<Bundle> bundle = subgroup_bus->input()->bundle ();
+ if (aux) {
- for (RouteList::iterator i = routes->begin(); i != routes->end(); ++i) {
- (*i)->output()->disconnect (this);
- (*i)->output()->connect_ports_to_bundle (bundle, this);
+ _session.add_internal_sends (subgroup_bus, placement, routes);
+
+ } else {
+
+ boost::shared_ptr<Bundle> bundle = subgroup_bus->input()->bundle ();
+
+ for (RouteList::iterator i = routes->begin(); i != routes->end(); ++i) {
+ (*i)->output()->disconnect (this);
+ (*i)->output()->connect_ports_to_bundle (bundle, this);
+ }
}
}