summaryrefslogtreecommitdiff
path: root/libs
diff options
context:
space:
mode:
authorBen Loftis <ben@harrisonconsoles.com>2015-12-02 20:06:29 -0600
committerBen Loftis <ben@harrisonconsoles.com>2015-12-02 20:06:29 -0600
commit20facc4d1805ddc0f1f8b46d9083e934cd4649c8 (patch)
tree577e9326c456f14e7554651610627754e3c1b20d /libs
parent16a100703b28d2c5937804ff2e33bd44c2267b05 (diff)
Faderport: map automation indicator LEDs
Diffstat (limited to 'libs')
-rw-r--r--libs/surfaces/faderport/faderport.cc38
-rw-r--r--libs/surfaces/faderport/faderport.h1
2 files changed, 39 insertions, 0 deletions
diff --git a/libs/surfaces/faderport/faderport.cc b/libs/surfaces/faderport/faderport.cc
index be9186501e..4228bf521a 100644
--- a/libs/surfaces/faderport/faderport.cc
+++ b/libs/surfaces/faderport/faderport.cc
@@ -1028,6 +1028,7 @@ FaderPort::set_current_route (boost::shared_ptr<Route> r)
boost::shared_ptr<AutomationControl> control = _current_route->gain_control ();
if (control) {
control->Changed.connect (route_connections, MISSING_INVALIDATOR, boost::bind (&FaderPort::map_gain, this), this);
+ control->alist()->automation_state_changed.connect (route_connections, MISSING_INVALIDATOR, boost::bind (&FaderPort::map_auto, this), this);
}
boost::shared_ptr<MonitorProcessor> mp = _current_route->monitor_control();
@@ -1042,6 +1043,42 @@ FaderPort::set_current_route (boost::shared_ptr<Route> r)
}
void
+FaderPort::map_auto ()
+{
+ boost::shared_ptr<AutomationControl> control = _current_route->gain_control ();
+ const AutoState as = control->automation_state ();
+
+ switch (as) {
+ case ARDOUR::Play:
+ get_button (FP_Read).set_led_state (_output_port, true);
+ get_button (FP_Write).set_led_state (_output_port, false);
+ get_button (FP_Touch).set_led_state (_output_port, false);
+ get_button (FP_Off).set_led_state (_output_port, false);
+ break;
+ case ARDOUR::Write:
+ get_button (FP_Read).set_led_state (_output_port, false);
+ get_button (FP_Write).set_led_state (_output_port, true);
+ get_button (FP_Touch).set_led_state (_output_port, false);
+ get_button (FP_Off).set_led_state (_output_port, false);
+ break;
+ case ARDOUR::Touch:
+ get_button (FP_Read).set_led_state (_output_port, false);
+ get_button (FP_Write).set_led_state (_output_port, false);
+ get_button (FP_Touch).set_led_state (_output_port, true);
+ get_button (FP_Off).set_led_state (_output_port, false);
+ break;
+ case ARDOUR::Off:
+ get_button (FP_Read).set_led_state (_output_port, false);
+ get_button (FP_Write).set_led_state (_output_port, false);
+ get_button (FP_Touch).set_led_state (_output_port, false);
+ get_button (FP_Off).set_led_state (_output_port, true);
+ break;
+ }
+
+}
+
+
+void
FaderPort::map_cut ()
{
boost::shared_ptr<MonitorProcessor> mp = _current_route->monitor_control();
@@ -1154,6 +1191,7 @@ FaderPort::map_route_state ()
map_recenable ();
map_gain ();
map_cut ();
+ map_auto ();
}
}
diff --git a/libs/surfaces/faderport/faderport.h b/libs/surfaces/faderport/faderport.h
index c92ab38c78..0988637fbe 100644
--- a/libs/surfaces/faderport/faderport.h
+++ b/libs/surfaces/faderport/faderport.h
@@ -295,6 +295,7 @@ class FaderPort : public ARDOUR::ControlProtocol, public AbstractUI<FaderPortReq
void map_recenable ();
void map_gain ();
void map_cut ();
+ void map_auto ();
void parameter_changed (std::string);
/* operations (defined in operations.cc) */