OSC: Add group name feedback to strips
[ardour.git] / libs / surfaces / osc / osc_select_observer.h
index d751ec2b3e29cfbb9d87bff911c886326a52261b..34de6be319ec8fa258b6d9bfbd5eab2977998658 100644 (file)
 #include "pbd/controllable.h"
 #include "pbd/stateful.h"
 #include "ardour/types.h"
+#include "ardour/processor.h"
+
+#include "osc.h"
 
 class OSCSelectObserver
 {
 
   public:
-       OSCSelectObserver (boost::shared_ptr<ARDOUR::Stripable>, lo_address addr, uint32_t gainmode, std::bitset<32> feedback);
+       OSCSelectObserver (ArdourSurface::OSC& o, ArdourSurface::OSC::OSCSurface* sur);
        ~OSCSelectObserver ();
 
        boost::shared_ptr<ARDOUR::Stripable> strip () const { return _strip; }
        lo_address address() const { return addr; };
        void tick (void);
+       void renew_sends (void);
+       void renew_plugin (void);
+       void eq_restart (int);
+       void clear_observer (void);
+       void refresh_strip (boost::shared_ptr<ARDOUR::Stripable> new_strip, uint32_t nsends, uint32_t g_mode, bool force);
+       void set_expand (uint32_t expand);
+       void set_send_page (uint32_t page);
+       void set_send_size (uint32_t size);
+       void set_plugin_id (int id, uint32_t page);
+       void set_plugin_page (uint32_t page);
+       void set_plugin_size (uint32_t size);
 
   private:
        boost::shared_ptr<ARDOUR::Stripable> _strip;
-
+       ArdourSurface::OSC& _osc;
+       
        PBD::ScopedConnectionList strip_connections;
-       // sends and eq need their own
+       // sends, plugins and eq need their own
        PBD::ScopedConnectionList send_connections;
+       PBD::ScopedConnectionList plugin_connections;
        PBD::ScopedConnectionList eq_connections;
 
        lo_address addr;
        std::string path;
        uint32_t gainmode;
        std::bitset<32> feedback;
+       bool in_line;
+       ArdourSurface::OSC::OSCSurface* sur;
+       std::vector<int> send_timeout;
+       uint32_t gain_timeout;
        float _last_meter;
        uint32_t nsends;
-
+       float _last_gain;
+       float _last_trim;
+       std::vector<float> _last_send;
+       bool _init;
+       float _comp_redux;
+       ARDOUR::AutoState as;
+       uint32_t send_page_size;
+       uint32_t send_size;
+       uint32_t send_page;
+
+       uint32_t nplug_params;
+       uint32_t plug_page_size;
+       uint32_t plug_page;
+       int plug_id;
+       uint32_t plug_size;
+       std::vector<int> plug_params;
+       int eq_bands;
+       bool _tick_busy;
+       uint32_t _expand;
 
        void name_changed (const PBD::PropertyChange& what_changed);
+       void group_name ();
+       void pi_changed (PBD::PropertyChange const&);
        void change_message (std::string path, boost::shared_ptr<PBD::Controllable> controllable);
+       void enable_message (std::string path, boost::shared_ptr<PBD::Controllable> controllable);
        void comp_mode (void);
        void change_message_with_id (std::string path, uint32_t id, boost::shared_ptr<PBD::Controllable> controllable);
-       void text_message (std::string path, std::string text);
-       void text_with_id (std::string path, uint32_t id, std::string name);
+       void enable_message_with_id (std::string path, uint32_t id, boost::shared_ptr<PBD::Controllable> controllable);
        void monitor_status (boost::shared_ptr<PBD::Controllable> controllable);
-       void gain_message (std::string path, boost::shared_ptr<PBD::Controllable> controllable);
+       void gain_message ();
+       void gain_automation ();
        void trim_message (std::string path, boost::shared_ptr<PBD::Controllable> controllable);
        // sends stuff
        void send_init (void);
        void send_end (void);
-       void send_restart (int);
+       void plugin_init (void);
+       void plugin_end (void);
+       void plugin_parameter_changed (int pid, bool swtch, boost::shared_ptr<PBD::Controllable> controllable);
        void send_gain (uint32_t id, boost::shared_ptr<PBD::Controllable> controllable);
+       void send_enable (std::string path, uint32_t id, boost::shared_ptr<ARDOUR::Processor> proc);
+       void plug_enable (std::string path, boost::shared_ptr<ARDOUR::Processor> proc);
        void eq_init (void);
        void eq_end (void);
-       void eq_restart (int);
-       std::string set_path (std::string path, uint32_t id);
-       void clear_strip (std::string path, float val);
-       void clear_strip_with_id (std::string path, uint32_t id, float val);
+       void no_strip ();
 };
 
 #endif /* __osc_oscselectobserver_h__ */