implement set-send-gains-to-{track_level,zero,unity}
authorPaul Davis <paul@linuxaudiosystems.com>
Tue, 21 Jul 2009 12:05:44 +0000 (12:05 +0000)
committerPaul Davis <paul@linuxaudiosystems.com>
Tue, 21 Jul 2009 12:05:44 +0000 (12:05 +0000)
git-svn-id: svn://localhost/ardour2/branches/3.0@5401 d708f5d6-7413-0410-9779-e7cbd77b26cf

gtk2_ardour/route_ui.cc
libs/ardour/ardour/session.h
libs/ardour/session.cc

index 577dc1ea31b0658d64566293168126dbb3a75b93..1ac651308a3244e0f5820120fc5324e0e67b0f00 100644 (file)
@@ -543,16 +543,19 @@ RouteUI::create_sends (Placement p)
 void
 RouteUI::set_sends_gain_from_track ()
 {
+       _session.globally_set_send_gains_from_track (_route);
 }
 
 void
 RouteUI::set_sends_gain_to_zero ()
 {
+       _session.globally_set_send_gains_to_zero (_route);
 }
 
 void
 RouteUI::set_sends_gain_to_unity ()
 {
+       _session.globally_set_send_gains_to_unity (_route);
 }
 
 bool
index 03112fb0220fda424a7d7ca122bd761d9528ce0a..8f70b4723e8a4c5576a0502d707ce8a1ee7cc4a5 100644 (file)
@@ -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) {
index 4ed908dc7dd4ab9d91dd4aa1bc3bdfaf1ea481bf..9eb090f02a296cd8324632458598ca841d6f2a66 100644 (file)
@@ -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"
@@ -2166,6 +2167,57 @@ Session::add_routes (RouteList& new_routes, bool save)
        RouteAdded (new_routes); /* EMIT SIGNAL */
 }
 
+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)
 {
@@ -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)
 {