diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2015-10-13 15:34:53 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2015-10-13 15:34:53 -0400 |
commit | 53a28c230adc1182f5b22ea6975aef9e12859511 (patch) | |
tree | eb57c8f770b114ebed257553d8ed92a870330edd /libs/surfaces/mackie/surface.cc | |
parent | 2d270094100dd3ec18a552cc9f40057706c3d519 (diff) |
mackie support omnibus patch
Fixes all kinds of miscellaneous issues with MCP. Also removes several theoretical pan modes, replace "Tracks"
pan mode with "Trim", and takes a tiny step towards view modes
Diffstat (limited to 'libs/surfaces/mackie/surface.cc')
-rw-r--r-- | libs/surfaces/mackie/surface.cc | 53 |
1 files changed, 39 insertions, 14 deletions
diff --git a/libs/surfaces/mackie/surface.cc b/libs/surfaces/mackie/surface.cc index 1ef37672c6..8c4c10a336 100644 --- a/libs/surfaces/mackie/surface.cc +++ b/libs/surfaces/mackie/surface.cc @@ -1032,40 +1032,65 @@ Surface::update_view_mode_display () switch (_mcp.view_mode()) { case MackieControlProtocol::Mixer: show_two_char_display ("Mx"); - //id = Button::Pan; - break; - case MackieControlProtocol::Loop: - show_two_char_display ("LP"); - id = Button::Loop; + id = Button::Track; + text = _("Mixer View"); break; case MackieControlProtocol::AudioTracks: show_two_char_display ("AT"); + id = Button::AudioTracks; + text = _("Audio Tracks"); break; case MackieControlProtocol::MidiTracks: show_two_char_display ("MT"); + id = Button::MidiTracks; + text = _("MIDI Tracks"); + break; + case MackieControlProtocol::Plugins: + show_two_char_display ("PL"); + id = Button::Plugin; + text = _("Plugins"); + break; + case MackieControlProtocol::Busses: + show_two_char_display ("BS"); + id = Button::Busses; + text = _("Busses"); + break; + case MackieControlProtocol::Auxes: + show_two_char_display ("AB"); + id = Button::Aux; + text = _("Auxes"); break; default: break; } + vector<int> view_mode_buttons; + view_mode_buttons.push_back (Button::Track); + view_mode_buttons.push_back (Button::Busses); + view_mode_buttons.push_back (Button::Plugin); + view_mode_buttons.push_back (Button::AudioTracks); + view_mode_buttons.push_back (Button::MidiTracks); + view_mode_buttons.push_back (Button::Aux); + if (id >= 0) { - /* we are attempting to turn a global button/LED on */ + for (vector<int>::iterator i = view_mode_buttons.begin(); i != view_mode_buttons.end(); ++i) { + map<int,Control*>::iterator x = controls_by_device_independent_id.find (id); - map<int,Control*>::iterator x = controls_by_device_independent_id.find (id); + if (x != controls_by_device_independent_id.end()) { + Button* button = dynamic_cast<Button*> (x->second); + if (button) { + bool onoff; + onoff = (*i) == id; - if (x != controls_by_device_independent_id.end()) { - Button* button = dynamic_cast<Button*> (x->second); - if (button) { - _port->write (button->set_state (on)); + _port->write (button->set_state (onoff)); + } } } } if (!text.empty()) { - for (Strips::iterator s = strips.begin(); s != strips.end(); ++s) { - _port->write ((*s)->display (1, text)); - } + display_message_for (text, 1000); } } |