From 20facc4d1805ddc0f1f8b46d9083e934cd4649c8 Mon Sep 17 00:00:00 2001 From: Ben Loftis Date: Wed, 2 Dec 2015 20:06:29 -0600 Subject: Faderport: map automation indicator LEDs --- libs/surfaces/faderport/faderport.cc | 38 ++++++++++++++++++++++++++++++++++++ libs/surfaces/faderport/faderport.h | 1 + 2 files changed, 39 insertions(+) (limited to 'libs') 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 r) boost::shared_ptr 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 mp = _current_route->monitor_control(); @@ -1041,6 +1042,42 @@ FaderPort::set_current_route (boost::shared_ptr r) map_route_state (); } +void +FaderPort::map_auto () +{ + boost::shared_ptr 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 () { @@ -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