X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fsurfaces%2Fmackie%2Fmackie_control_protocol.h;h=eb3cc22b8cfe38cc519516f46744ca1578315a02;hb=ba5e71b50f53c97c1ce806d9582c4c32970bdcf6;hp=ad01c2d1de9a86f104b6b00a8df69bdec0879302;hpb=ac1b2a664711ce6e66c1bd37565c8066103a722a;p=ardour.git diff --git a/libs/surfaces/mackie/mackie_control_protocol.h b/libs/surfaces/mackie/mackie_control_protocol.h index ad01c2d1de..eb3cc22b8c 100644 --- a/libs/surfaces/mackie/mackie_control_protocol.h +++ b/libs/surfaces/mackie/mackie_control_protocol.h @@ -122,12 +122,13 @@ class MackieControlProtocol Mackie::DeviceProfile& device_profile() { return _device_profile; } int set_active (bool yn); - void set_device (const std::string&); + void set_device (const std::string&, bool allow_activation = true); void set_profile (const std::string&); bool flip_mode () const { return _flip_mode; } ViewMode view_mode () const { return _view_mode; } bool zoom_mode () const { return _zoom_mode; } + bool metering_active () const { return _metering_active; } void set_view_mode (ViewMode); void set_flip_mode (bool); @@ -145,7 +146,7 @@ class MackieControlProtocol void set_master_on_surface_strip (uint32_t surface, uint32_t strip); void set_monitor_on_surface_strip (uint32_t surface, uint32_t strip); - uint32_t n_strips () const; + uint32_t n_strips (bool with_locked_strips = true) const; bool has_editor () const { return true; } void* get_gui () const; @@ -164,6 +165,7 @@ class MackieControlProtocol void notify_record_state_changed(); void notify_transport_state_changed(); void notify_loop_state_changed(); + void notify_metering_state_changed(); // mainly to pick up punch-in and punch-out void notify_parameter_changed(std::string const &); void notify_solo_active_changed(bool); @@ -171,7 +173,7 @@ class MackieControlProtocol /// Turn timecode on and beats off, or vice versa, depending /// on state of _timecode_type void update_timecode_beats_led(); - + /// this is called to generate the midi to send in response to a button press. void update_led(Mackie::Surface&, Mackie::Button & button, Mackie::LedState); @@ -192,6 +194,11 @@ class MackieControlProtocol void add_down_select_button (int surface, int strip); void remove_down_select_button (int surface, int strip); void select_range (); + + int16_t ipmidi_base() const { return _ipmidi_base; } + void set_ipmidi_base (int16_t); + + void midi_connectivity_established (); protected: // shut down the surface @@ -230,7 +237,8 @@ class MackieControlProtocol int stop (); void thread_init (); - void midi_connectivity_established (); + + bool route_is_locked_to_strip (boost::shared_ptr) const; private: @@ -278,6 +286,11 @@ class MackieControlProtocol int _modifier_state; PortSources port_sources; ButtonMap button_map; + int16_t _ipmidi_base; + bool needs_ipmidi_restart; + bool _metering_active; + + ARDOUR::RouteNotificationList _last_selected_routes; void create_surfaces (); bool periodic(); @@ -286,10 +299,10 @@ class MackieControlProtocol void clear_ports (); void force_special_route_to_strip (boost::shared_ptr r, uint32_t surface, uint32_t strip_number); void build_button_map (); - - void gui_track_selection_changed (ARDOUR::RouteNotificationListPtr); - - + void gui_track_selection_changed (ARDOUR::RouteNotificationListPtr, bool save_list); + void _gui_track_selection_changed (ARDOUR::RouteNotificationList*, bool save_list); + void ipmidi_restart (); + /* BUTTON HANDLING */ typedef std::set DownButtonList;