diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2016-01-29 16:29:52 -0500 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2016-01-29 16:29:52 -0500 |
commit | da35f582180066e39b926b214b35bd23e7929644 (patch) | |
tree | d5331870b4e75a9e7b56d263e6df74cbfd3d58ed | |
parent | 22a14a56f3ab415fea1a1cc1c9d3ece7b2792ee6 (diff) |
mackie: initial attempt at making automation-related buttons set fader automation state for selected routes
-rw-r--r-- | libs/surfaces/mackie/mackie_control_protocol.cc | 17 | ||||
-rw-r--r-- | libs/surfaces/mackie/mackie_control_protocol.h | 2 | ||||
-rw-r--r-- | 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<Route> r = (*wr).lock(); + if (!r) { + continue; + } + boost::shared_ptr<AutomationControl> 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<ARDOUR::Route>) const; boost::shared_ptr<ARDOUR::Route> first_selected_route () const; + void set_automation_state (ARDOUR::AutoState); + void set_view_mode (ViewMode); int set_subview_mode (SubViewMode, boost::shared_ptr<ARDOUR::Route>); 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; } |