X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fsurfaces%2Fmackie%2Fstrip.h;h=9cce3d2b9215dc0232e2c1667a0f7447727e6b15;hb=4c13018656b2c655025c733a4056b53c3a93e941;hp=4f3b0136dd5e9b7e6dc8badbc76955e0f6b3bc46;hpb=8ba8f1c0b08bb1c8ffbb4f419806e0c05619808b;p=ardour.git diff --git a/libs/surfaces/mackie/strip.h b/libs/surfaces/mackie/strip.h index 4f3b0136dd..9cce3d2b92 100644 --- a/libs/surfaces/mackie/strip.h +++ b/libs/surfaces/mackie/strip.h @@ -57,6 +57,7 @@ public: void add (Control & control); int index() const { return _index; } // zero based + Surface* surface() const { return _surface; } void set_route (boost::shared_ptr, bool with_messages = true); @@ -69,14 +70,15 @@ public: void handle_pot (Pot&, float delta); void periodic (ARDOUR::microseconds_t now_usecs); - void redisplay (ARDOUR::microseconds_t now_usecs); + void redisplay (ARDOUR::microseconds_t now_usecs, bool force = true); MidiByteArray display (uint32_t line_number, const std::string&); MidiByteArray blank_display (uint32_t line_number); void zero (); - void potmode_changed (bool notify=false); + void flip_mode_changed (); + void subview_mode_changed (); void lock_controls (); void unlock_controls (); @@ -89,9 +91,12 @@ public: void block_screen_display_for (uint32_t msecs); void block_vpot_mode_display_for (uint32_t msecs); - void use_subview (MackieControlProtocol::SubViewMode, boost::shared_ptr); - private: + enum VPotDisplayMode { + Name, + Value + }; + Button* _solo; Button* _recenable; Button* _mute; @@ -106,23 +111,22 @@ private: bool _controls_locked; bool _transport_is_rolling; bool _metering_active; - uint64_t _block_vpot_mode_redisplay_until; + std::string pending_display[2]; + std::string current_display[2]; uint64_t _block_screen_redisplay_until; + uint64_t return_to_vpot_mode_display_at; boost::shared_ptr _route; - boost::shared_ptr _subview_route; PBD::ScopedConnectionList route_connections; PBD::ScopedConnectionList subview_connections; PBD::ScopedConnectionList send_connections; + int eq_band; ARDOUR::AutomationType _pan_mode; - ARDOUR::AutomationType _trim_mode; - ARDOUR::AutomationType vpot_parameter; float _last_gain_position_written; float _last_pan_azi_position_written; float _last_pan_width_position_written; float _last_trim_position_written; - uint32_t _current_send; void notify_solo_changed (); void notify_mute_changed (); @@ -133,8 +137,6 @@ private: void notify_panner_width_changed (bool force_update = true); void notify_active_changed (); void notify_route_deleted (); - void notify_trim_changed (bool force_update = true); - void notify_phase_changed (bool force_update = true); void notify_processor_changed (bool force_update = true); void update_automation (); void update_meter (); @@ -143,36 +145,33 @@ private: boost::shared_ptr mb_pan_controllable; void return_to_vpot_mode_display (); - - struct RedisplayRequest { - ARDOUR::AutomationType type; - float val; - }; - - RingBuffer redisplay_requests; + void next_pot_mode (); void do_parameter_display (ARDOUR::AutomationType, float val); - void queue_parameter_display (ARDOUR::AutomationType, float val); - void select_event (Button&, ButtonState); void vselect_event (Button&, ButtonState); void fader_touch_event (Button&, ButtonState); - std::vector possible_pot_parameters; - std::vector possible_trim_parameters; - void next_pot_mode (); - void set_vpot_parameter (Evoral::Parameter, boost::shared_ptr target_route = boost::shared_ptr()); + std::vector possible_pot_parameters; + std::vector possible_trim_parameters; + void set_vpot_parameter (ARDOUR::AutomationType); void show_route_name (); void reset_saved_values (); bool is_midi_track () const; - typedef std::map ControlParameterMap; - ControlParameterMap control_by_parameter; + void notify_eq_change (ARDOUR::AutomationType, uint32_t band, bool force); + void setup_eq_vpot (boost::shared_ptr); + + void notify_dyn_change (ARDOUR::AutomationType, bool force, bool propagate_mode_change); + void setup_dyn_vpot (boost::shared_ptr); + + void notify_send_level_change (ARDOUR::AutomationType, uint32_t band, bool force); + void setup_sends_vpot (boost::shared_ptr); - void hookup_eq (ARDOUR::AutomationType, uint32_t); - void notify_eq_change (ARDOUR::AutomationType, uint32_t, bool force); + void notify_trackview_change (ARDOUR::AutomationType, uint32_t band, bool force); + void setup_trackview_vpot (boost::shared_ptr); }; }