From ff76ef86b47732396457ea7b2b2db936fe280ff3 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Mon, 14 Dec 2015 14:42:12 -0500 Subject: [PATCH] faderport: long press on fader mode buttons switches fader automation to manual/off; off button is never sent an LED state message to avoid fader disabling --- libs/surfaces/faderport/faderport.cc | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/libs/surfaces/faderport/faderport.cc b/libs/surfaces/faderport/faderport.cc index 27795188d4..135943d34f 100644 --- a/libs/surfaces/faderport/faderport.cc +++ b/libs/surfaces/faderport/faderport.cc @@ -152,8 +152,11 @@ FaderPort::FaderPort (Session& s) get_button (Undo).set_flash (true); get_button (FP_Read).set_action (boost::bind (&FaderPort::read, this), true); + get_button (FP_Read).set_action (boost::bind (&FaderPort::off, this), false, LongPress); get_button (FP_Write).set_action (boost::bind (&FaderPort::write, this), true); + get_button (FP_Write).set_action (boost::bind (&FaderPort::off, this), false, LongPress); get_button (FP_Touch).set_action (boost::bind (&FaderPort::touch, this), true); + get_button (FP_Touch).set_action (boost::bind (&FaderPort::off, this), false, LongPress); get_button (FP_Off).set_action (boost::bind (&FaderPort::off, this), true); get_button (Play).set_action (boost::bind (&BasicUI::transport_play, this, true), true); @@ -1123,11 +1126,9 @@ FaderPort::set_current_route (boost::shared_ptr r) void FaderPort::map_auto () { - /* December 14th 2015: setting the LED states of these buttons - interferes with fader operation. - */ - - return; + /* Under no circumstances send a message to "enable" the LED state of + * the Off button, because this will disable the fader. + */ boost::shared_ptr control = _current_route->gain_control (); const AutoState as = control->automation_state (); @@ -1137,25 +1138,21 @@ FaderPort::map_auto () 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; } -- 2.30.2