summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2016-01-29 16:29:52 -0500
committerPaul Davis <paul@linuxaudiosystems.com>2016-01-29 16:29:52 -0500
commitda35f582180066e39b926b214b35bd23e7929644 (patch)
treed5331870b4e75a9e7b56d263e6df74cbfd3d58ed
parent22a14a56f3ab415fea1a1cc1c9d3ece7b2792ee6 (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.cc17
-rw-r--r--libs/surfaces/mackie/mackie_control_protocol.h2
-rw-r--r--libs/surfaces/mackie/mcp_buttons.cc14
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;
}