X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;f=libs%2Fsurfaces%2Fosc%2Fosc.h;h=199987367790f3f8e7e9b204182e06b5cab35d17;hb=9d99cc8b017b732dd3cbe5fafdae737d73b98024;hp=f7284063f5916e01664c50121a304e8e27f0448c;hpb=c177434669dc88a65e707f4b2eac23238e005281;p=ardour.git diff --git a/libs/surfaces/osc/osc.h b/libs/surfaces/osc/osc.h index f7284063f5..1999873677 100644 --- a/libs/surfaces/osc/osc.h +++ b/libs/surfaces/osc/osc.h @@ -88,7 +88,7 @@ class OSC : public ARDOUR::ControlProtocol, public AbstractUI bool get_active () const; // generic osc send - + Glib::Threads::Mutex _lo_lock; int float_message (std::string, float value, lo_address addr); int int_message (std::string, int value, lo_address addr); int text_message (std::string path, std::string val, lo_address addr); @@ -109,15 +109,11 @@ class OSC : public ARDOUR::ControlProtocol, public AbstractUI All }; - enum OSCCustomMode { - CusOff = 0, - CusRawOrder = 1, - CusSort =2, - CusFilterRaw = 5, - CusFilter = 6, - GroupOnly = 7, - VCAOnly = 8, - BusOnly = 9 + enum OSCTempMode { + TempOff = 0, + GroupOnly = 1, + VCAOnly = 2, + BusOnly = 3 }; typedef std::vector > Sorted; @@ -138,8 +134,10 @@ class OSC : public ARDOUR::ControlProtocol, public AbstractUI int gainmode; // what kind of faders do we have Gain db or position 0 to 1? PBD::Controllable::GroupControlDisposition usegroup; // current group disposition Sorted custom_strips; // a sorted list of user selected strips - OSCCustomMode custom_mode; // use custom strip list + uint32_t custom_mode; // use custom strip list + OSCTempMode temp_mode; // use temp strip list Sorted temp_strips; // temp strip list for grouponly, vcaonly, auxonly + boost::shared_ptr temp_master; // stripable this surface uses as temp master Sorted strips; // list of stripables for this surface // strips uint32_t bank; // current bank @@ -150,7 +148,8 @@ class OSC : public ARDOUR::ControlProtocol, public AbstractUI OSCSelectObserver* sel_obs; // So we can sync select feedback with selected channel uint32_t expand; // Used by /select/select bool expand_enable; // use expand instead of select - boost::shared_ptr select; // stripable this surface uses (maybe expand strip) + boost::shared_ptr expand_strip; // stripable this surface uses for expand + boost::shared_ptr select; // stripable this surface uses as selected int plug_page; // current plugin page uint32_t plug_page_size; // plugin page size (number of controls) int plugin_id; // id of current plugin @@ -185,9 +184,22 @@ class OSC : public ARDOUR::ControlProtocol, public AbstractUI * [12] - Send Playhead position like primary/secondary GUI clocks * [13] - Send well known feedback (for /select/command * [14] - use OSC 1.0 only (#reply -> /reply) + * + * Strip_type bits: + * [0] - Audio Tracks + * [1] - Midi Tracks + * [2] - Audio Bus + * [3] - Midi Bus + * [4] - VCAs + * [5] - master + * [6] - Monitor + * [7] - Aux Bus + * [8] - Selected + * [9] - Hidden + * [10] - Use Groups + * [11] - Global Expand */ - // storage for each surface's settings mutable Glib::Threads::Mutex surfaces_lock; typedef std::vector Surface; @@ -202,8 +214,9 @@ class OSC : public ARDOUR::ControlProtocol, public AbstractUI bool autobank; // banksize is derived from total uint32_t not_ready; // number of 1st device, 0 = ready Sorted custom_strips; // a sorted list of user selected strips - OSCCustomMode custom_mode; // use custom strip list - Sorted temp_strips; // temp strip list for grouponly, vcaonly, auxonly + uint32_t custom_mode; // use custom strip list + OSCTempMode temp_mode; // use custom strip list + Sorted temp_strips; // temp strip list for grouponly, vcaonly, auxonly std::bitset<32> strip_types; // strip_types for this linkset Sorted strips; // list of valid strips in order for this set }; @@ -313,6 +326,8 @@ class OSC : public ARDOUR::ControlProtocol, public AbstractUI int touch_detect (const char *path, const char* types, lo_arg **argv, int argc, lo_message msg); int fake_touch (boost::shared_ptr ctrl); + int collect (const char *path, const char* types, lo_arg **argv, int argc, lo_message msg); + int route_get_sends (lo_message msg); int route_get_receives(lo_message msg); void routes_list (lo_message msg); @@ -365,7 +380,8 @@ class OSC : public ARDOUR::ControlProtocol, public AbstractUI PATH_CALLBACK_MSG(route_get_receives); PATH_CALLBACK_MSG(routes_list); PATH_CALLBACK_MSG(group_list); - PATH_CALLBACK_MSG(sel_bus_only); + PATH_CALLBACK_MSG(sel_previous); + PATH_CALLBACK_MSG(sel_next); PATH_CALLBACK_MSG(surface_list); PATH_CALLBACK_MSG(transport_sample); PATH_CALLBACK_MSG(transport_speed); @@ -703,7 +719,7 @@ class OSC : public ARDOUR::ControlProtocol, public AbstractUI int refresh_surface (lo_message msg); int custom_clear (lo_message msg); int custom_mode (float state, lo_message msg); - int _custom_mode (OSCCustomMode state, lo_address addr); + int _custom_mode (uint32_t state, lo_address addr); int name_session (char *n, lo_message msg); // select int sel_send_pagesize (uint32_t size, lo_message msg); @@ -751,7 +767,9 @@ class OSC : public ARDOUR::ControlProtocol, public AbstractUI int sel_dB_delta (float delta, lo_message msg); int sel_trim (float val, lo_message msg); int sel_hide (uint32_t state, lo_message msg); - int sel_bus_only (lo_message msg); + int sel_previous (lo_message msg); + int sel_next (lo_message msg); + int sel_delta (int delta, lo_message msg); boost::shared_ptr get_send (boost::shared_ptr st, lo_address addr); int sel_pan_position (float val, lo_message msg); int sel_pan_width (float val, lo_message msg); @@ -779,6 +797,7 @@ class OSC : public ARDOUR::ControlProtocol, public AbstractUI int sel_eq_freq (int id, float val, lo_message msg); int sel_eq_q (int id, float val, lo_message msg); int sel_eq_shape (int id, float val, lo_message msg); + int set_temp_mode (lo_address addr); int parse_sel_group (const char *path, const char* types, lo_arg **argv, int argc, lo_message msg); int parse_sel_vca (const char *path, const char* types, lo_arg **argv, int argc, lo_message msg); boost::shared_ptr get_vca_by_name (std::string vname);