summaryrefslogtreecommitdiff
path: root/libs/ardour
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2009-07-21 12:05:44 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2009-07-21 12:05:44 +0000
commit2093d59a9613dccd509c90f5413b1a2efd164c4b (patch)
treeea7999c80dd680b6da1b7cd955f1bdc5c94ba747 /libs/ardour
parent20342cf2644fee7b04d6cfdc4fc686897837a01b (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.h3
-rw-r--r--libs/ardour/session.cc53
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)
{