summaryrefslogtreecommitdiff
path: root/libs/surfaces/faderport
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2015-12-14 14:42:12 -0500
committerPaul Davis <paul@linuxaudiosystems.com>2015-12-14 14:42:12 -0500
commitff76ef86b47732396457ea7b2b2db936fe280ff3 (patch)
tree7e8c7d883dad480cff487d419f7922d5a747ec7a /libs/surfaces/faderport
parente928edca32c70dfc313d7754594cf5c53a72ad92 (diff)
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
Diffstat (limited to 'libs/surfaces/faderport')
-rw-r--r--libs/surfaces/faderport/faderport.cc15
1 files 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<Route> 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<AutomationControl> 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;
}