mackie: initial attempt at making automation-related buttons set fader automation state for selected routes

This commit is contained in:
Paul Davis
2016-01-29 16:29:52 -05:00
parent 22a14a56f3
commit da35f58218
3 changed files with 27 additions and 6 deletions

View File

@@ -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);
}
}

View File

@@ -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);

View File

@@ -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;
}