From da35f582180066e39b926b214b35bd23e7929644 Mon Sep 17 00:00:00 2001 From: Paul Davis Date: Fri, 29 Jan 2016 16:29:52 -0500 Subject: mackie: initial attempt at making automation-related buttons set fader automation state for selected routes --- libs/surfaces/mackie/mackie_control_protocol.cc | 17 +++++++++++++++++ libs/surfaces/mackie/mackie_control_protocol.h | 2 ++ libs/surfaces/mackie/mcp_buttons.cc | 14 ++++++++------ 3 files changed, 27 insertions(+), 6 deletions(-) diff --git a/libs/surfaces/mackie/mackie_control_protocol.cc b/libs/surfaces/mackie/mackie_control_protocol.cc index 36e812a354..921d12e7b6 100644 --- a/libs/surfaces/mackie/mackie_control_protocol.cc +++ b/libs/surfaces/mackie/mackie_control_protocol.cc @@ -2416,3 +2416,20 @@ MackieControlProtocol::request_factory (uint32_t num_requests) */ return request_buffer_factory (num_requests); } + +void +MackieControlProtocol::set_automation_state (AutoState as) +{ + for (RouteNotificationList::iterator wr = _last_selected_routes.begin(); wr != _last_selected_routes.end(); ++wr) { + boost::shared_ptr r = (*wr).lock(); + if (!r) { + continue; + } + boost::shared_ptr ac = r->gain_control(); + if (!ac) { + continue; + } + + ac->set_automation_state (as); + } +} diff --git a/libs/surfaces/mackie/mackie_control_protocol.h b/libs/surfaces/mackie/mackie_control_protocol.h index 578232184c..4831dc2e79 100644 --- a/libs/surfaces/mackie/mackie_control_protocol.h +++ b/libs/surfaces/mackie/mackie_control_protocol.h @@ -166,6 +166,8 @@ class MackieControlProtocol bool is_mapped (boost::shared_ptr) const; boost::shared_ptr first_selected_route () const; + void set_automation_state (ARDOUR::AutoState); + void set_view_mode (ViewMode); int set_subview_mode (SubViewMode, boost::shared_ptr); void set_flip_mode (FlipMode); diff --git a/libs/surfaces/mackie/mcp_buttons.cc b/libs/surfaces/mackie/mcp_buttons.cc index f82117c139..ba857f9bc4 100644 --- a/libs/surfaces/mackie/mcp_buttons.cc +++ b/libs/surfaces/mackie/mcp_buttons.cc @@ -740,12 +740,13 @@ MackieControlProtocol::name_value_release (Button &) LedState MackieControlProtocol::touch_press (Button &) { - return off; + return none; } LedState MackieControlProtocol::touch_release (Button &) { - return off; + set_automation_state (ARDOUR::Touch); + return none; } LedState MackieControlProtocol::cancel_press (Button &) @@ -810,14 +811,14 @@ MackieControlProtocol::master_fader_touch_release (Mackie::Button &) Mackie::LedState MackieControlProtocol::read_press (Mackie::Button&) { - _metering_active = !_metering_active; - notify_metering_state_changed (); - return _metering_active; + return none; } + Mackie::LedState MackieControlProtocol::read_release (Mackie::Button&) { - return _metering_active; + set_automation_state (ARDOUR::Off); + return none; } Mackie::LedState MackieControlProtocol::write_press (Mackie::Button&) @@ -827,6 +828,7 @@ MackieControlProtocol::write_press (Mackie::Button&) Mackie::LedState MackieControlProtocol::write_release (Mackie::Button&) { + set_automation_state (ARDOUR::Write); return none; } -- cgit v1.2.3