From 0b50bec6f4b26849f0b223d67ce53f11bb807d7e Mon Sep 17 00:00:00 2001 From: Todd Naugle Date: Fri, 10 Mar 2023 16:35:29 -0600 Subject: [PATCH] MCU: Update view modes for Cue, Foldback, and VCA This changes the function of the Inputs, Instruments, and Outputs buttons as follows: Inputs = Cue Tracks Instruments = VCA Outputs = Foldback Busses --- .../mackie/mackie_control_protocol.cc | 39 ++++++++++++++----- .../surfaces/mackie/mackie_control_protocol.h | 3 ++ libs/surfaces/mackie/mcp_buttons.cc | 9 +---- libs/surfaces/mackie/surface.cc | 11 ++++-- 4 files changed, 42 insertions(+), 20 deletions(-) diff --git a/libs/surfaces/mackie/mackie_control_protocol.cc b/libs/surfaces/mackie/mackie_control_protocol.cc index b08a1f81f0..e4a25ce87e 100644 --- a/libs/surfaces/mackie/mackie_control_protocol.cc +++ b/libs/surfaces/mackie/mackie_control_protocol.cc @@ -65,6 +65,7 @@ #include "ardour/track.h" #include "ardour/types.h" #include "ardour/audioengine.h" +#include "ardour/vca.h" #include "ardour/vca_manager.h" #include "temporal/tempo.h" @@ -281,7 +282,7 @@ MackieControlProtocol::get_sorted_stripables() // fetch all stripables StripableList stripables; - session->get_stripables (stripables); + session->get_stripables (stripables, PresentationInfo::AllStripables); // sort in presentation order, and exclude master, control and hidden stripables // and any stripables that are already set. @@ -319,7 +320,7 @@ MackieControlProtocol::get_sorted_stripables() } #endif } else { - if (!is_track(s) && !s->presentation_info().hidden()) { + if (!is_track (s) && !is_vca (s) && !is_foldback_bus (s) && !s->presentation_info().hidden()) { sorted.push_back (s); } } @@ -331,17 +332,16 @@ MackieControlProtocol::get_sorted_stripables() break; case Auxes: // in ardour, for now aux and buss are same. for mixbus, "Busses" are mixbuses, "Auxes" are ardour buses #ifdef MIXBUS - if (!s->mixbus() && !is_track(s) && !s->presentation_info().hidden()) + if (!s->mixbus() && !is_track(s) && !is_vca (s) && !is_foldback_bus (s) && !s->presentation_info().hidden()) #else - if (!is_track(s) && !s->presentation_info().hidden()) + if (!is_track (s) && !is_vca (s) && !is_foldback_bus (s) && !s->presentation_info().hidden()) #endif { sorted.push_back (s); } break; - case Outputs: // Show all the tracks we have hidden - if (s->presentation_info().hidden()) { - // maybe separate groups + case Outputs: + if (is_foldback_bus (s) && !s->presentation_info().hidden()) { sorted.push_back (s); } break; @@ -351,12 +351,14 @@ MackieControlProtocol::get_sorted_stripables() } break; case AudioInstr: - if (has_instrument (s)){ + if (is_vca (s)){ sorted.push_back (s); } break; case Inputs: - // nothing to do right now + if (is_trigger_track (s) && !s->presentation_info().hidden()){ + sorted.push_back (s); + } break; } } @@ -2362,6 +2364,25 @@ MackieControlProtocol::is_midi_track (boost::shared_ptr r) const return boost::dynamic_pointer_cast(r) != 0; } +bool +MackieControlProtocol::is_trigger_track (boost::shared_ptr r) const +{ + boost::shared_ptr trk = boost::dynamic_pointer_cast(r); + return (trk && (r)->presentation_info ().trigger_track ()); +} + +bool +MackieControlProtocol::is_foldback_bus (boost::shared_ptr r) const +{ + return ((r)->presentation_info ().flags () & PresentationInfo::FoldbackBus); +} + +bool +MackieControlProtocol::is_vca (boost::shared_ptr r) const +{ + return boost::dynamic_pointer_cast(r) != 0; +} + bool MackieControlProtocol::has_instrument (boost::shared_ptr r) const { diff --git a/libs/surfaces/mackie/mackie_control_protocol.h b/libs/surfaces/mackie/mackie_control_protocol.h index b6397ee6f1..9cfec5c7c2 100644 --- a/libs/surfaces/mackie/mackie_control_protocol.h +++ b/libs/surfaces/mackie/mackie_control_protocol.h @@ -135,6 +135,9 @@ class MackieControlProtocol bool is_track (boost::shared_ptr) const; bool is_audio_track (boost::shared_ptr) const; bool is_midi_track (boost::shared_ptr) const; + bool is_trigger_track (boost::shared_ptr) const; + bool is_foldback_bus (boost::shared_ptr) const; + bool is_vca (boost::shared_ptr) const; bool has_instrument (boost::shared_ptr) const; bool is_mapped (boost::shared_ptr) const; boost::shared_ptr first_selected_stripable () const; diff --git a/libs/surfaces/mackie/mcp_buttons.cc b/libs/surfaces/mackie/mcp_buttons.cc index 54671f229d..485202f0b4 100644 --- a/libs/surfaces/mackie/mcp_buttons.cc +++ b/libs/surfaces/mackie/mcp_buttons.cc @@ -1050,14 +1050,12 @@ MackieControlProtocol::miditracks_release (Mackie::Button&) Mackie::LedState MackieControlProtocol::inputs_press (Mackie::Button&) { -#ifdef MIXBUS - set_view_mode (Mixer); //in Mixbus, this is the same as Global View (avoid dead buttons) -#endif return none; } Mackie::LedState MackieControlProtocol::inputs_release (Mackie::Button&) { + set_view_mode (Inputs); return none; } Mackie::LedState @@ -1074,18 +1072,13 @@ MackieControlProtocol::audiotracks_release (Mackie::Button&) Mackie::LedState MackieControlProtocol::audioinstruments_press (Mackie::Button& b) { -#ifdef MIXBUS - set_view_mode (MidiTracks); //in Mixbus, we do the same thing as MIDI Tracks ( aviod dead buttons ) -#endif return none; } Mackie::LedState MackieControlProtocol::audioinstruments_release (Mackie::Button& b) { -#ifndef MIXBUS set_view_mode (AudioInstr); -#endif return none; } diff --git a/libs/surfaces/mackie/surface.cc b/libs/surfaces/mackie/surface.cc index 7682d8ea2d..f8d51d14da 100644 --- a/libs/surfaces/mackie/surface.cc +++ b/libs/surfaces/mackie/surface.cc @@ -1356,9 +1356,9 @@ Surface::update_view_mode_display (bool with_helpful_text) text = _("Auxes"); break; case MackieControlProtocol::Outputs: - show_two_char_display ("HI"); + show_two_char_display ("Fb"); id = Button::Outputs; - text = _("Hidden Tracks"); + text = _("Foldback Busses"); break; case MackieControlProtocol::Selected: show_two_char_display ("SE"); @@ -1368,7 +1368,12 @@ Surface::update_view_mode_display (bool with_helpful_text) case MackieControlProtocol::AudioInstr: show_two_char_display ("IS"); id = Button::AudioInstruments; - text = _("Instruments"); + text = _("VCAs"); + break; + case MackieControlProtocol::Inputs: + show_two_char_display ("CU"); + id = Button::Inputs; + text = _("Cue Tracks"); break; default: break;