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)));
}
}
void
-GroupTabs::subgroup (RouteGroup* g)
+GroupTabs::subgroup (RouteGroup* g, bool aux, Placement placement)
{
- g->make_subgroup ();
+ g->make_subgroup (aux, placement);
}
struct CollectSorter {
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 *);
changed();
}
- void make_subgroup ();
+ void make_subgroup (bool, Placement);
void destroy_subgroup ();
boost::shared_ptr<RouteList> route_list() { return routes; }
}
void
-RouteGroup::make_subgroup ()
+RouteGroup::make_subgroup (bool aux, Placement placement)
{
RouteList rl;
uint32_t nin = 0;
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;
}
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);
+ }
}
}