diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2009-07-21 12:05:44 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2009-07-21 12:05:44 +0000 |
commit | 2093d59a9613dccd509c90f5413b1a2efd164c4b (patch) | |
tree | ea7999c80dd680b6da1b7cd955f1bdc5c94ba747 /libs/ardour | |
parent | 20342cf2644fee7b04d6cfdc4fc686897837a01b (diff) |
implement set-send-gains-to-{track_level,zero,unity}
git-svn-id: svn://localhost/ardour2/branches/3.0@5401 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour')
-rw-r--r-- | libs/ardour/ardour/session.h | 3 | ||||
-rw-r--r-- | libs/ardour/session.cc | 53 |
2 files changed, 56 insertions, 0 deletions
diff --git a/libs/ardour/ardour/session.h b/libs/ardour/ardour/session.h index 03112fb022..8f70b4723e 100644 --- a/libs/ardour/ardour/session.h +++ b/libs/ardour/ardour/session.h @@ -741,6 +741,9 @@ class Session : public PBD::StatefulDestructible, public boost::noncopyable boost::shared_ptr<Route> master_out() const { return _master_out; } void globally_add_internal_sends (boost::shared_ptr<Route> dest, Placement p); + void globally_set_send_gains_from_track (boost::shared_ptr<Route> dest); + void globally_set_send_gains_to_zero (boost::shared_ptr<Route> dest); + void globally_set_send_gains_to_unity (boost::shared_ptr<Route> dest); void add_internal_sends (boost::shared_ptr<Route> dest, Placement p, boost::shared_ptr<RouteList> senders); static void set_disable_all_loaded_plugins (bool yn) { diff --git a/libs/ardour/session.cc b/libs/ardour/session.cc index 4ed908dc7d..9eb090f02a 100644 --- a/libs/ardour/session.cc +++ b/libs/ardour/session.cc @@ -43,6 +43,7 @@ #include "pbd/stacktrace.h" #include "pbd/file_utils.h" +#include "ardour/amp.h" #include "ardour/analyser.h" #include "ardour/audio_buffer.h" #include "ardour/audio_diskstream.h" @@ -2167,6 +2168,57 @@ Session::add_routes (RouteList& new_routes, bool save) } void +Session::globally_set_send_gains_to_zero (boost::shared_ptr<Route> dest) +{ + boost::shared_ptr<RouteList> r = routes.reader (); + boost::shared_ptr<Send> s; + + /* only tracks */ + + for (RouteList::iterator i = r->begin(); i != r->end(); ++i) { + if (boost::dynamic_pointer_cast<Track>(*i)) { + if ((s = (*i)->internal_send_for (dest)) != 0) { + s->amp()->gain_control()->set_value (0.0); + } + } + } +} + +void +Session::globally_set_send_gains_to_unity (boost::shared_ptr<Route> dest) +{ + boost::shared_ptr<RouteList> r = routes.reader (); + boost::shared_ptr<Send> s; + + /* only tracks */ + + for (RouteList::iterator i = r->begin(); i != r->end(); ++i) { + if (boost::dynamic_pointer_cast<Track>(*i)) { + if ((s = (*i)->internal_send_for (dest)) != 0) { + s->amp()->gain_control()->set_value (1.0); + } + } + } +} + +void +Session::globally_set_send_gains_from_track(boost::shared_ptr<Route> dest) +{ + boost::shared_ptr<RouteList> r = routes.reader (); + boost::shared_ptr<Send> s; + + /* only tracks */ + + for (RouteList::iterator i = r->begin(); i != r->end(); ++i) { + if (boost::dynamic_pointer_cast<Track>(*i)) { + if ((s = (*i)->internal_send_for (dest)) != 0) { + s->amp()->gain_control()->set_value ((*i)->gain_control()->get_value()); + } + } + } +} + +void Session::globally_add_internal_sends (boost::shared_ptr<Route> dest, Placement p) { boost::shared_ptr<RouteList> r = routes.reader (); @@ -2183,6 +2235,7 @@ Session::globally_add_internal_sends (boost::shared_ptr<Route> dest, Placement p add_internal_sends (dest, p, t); } + void Session::add_internal_sends (boost::shared_ptr<Route> dest, Placement p, boost::shared_ptr<RouteList> senders) { |