class OSCControllable;
class OSCRouteObserver;
class OSCGlobalObserver;
+class OSCSelectObserver;
namespace ARDOUR {
class Session;
// keep a surface's global setup by remote server url
struct OSCSurface {
public:
- std::string remote_url; // the url these setting belong to
- uint32_t bank; // current bank
- uint32_t bank_size; // size of banks for this surface
- std::bitset<32> strip_types; // what strip types are a part of this bank
- std::bitset<32> feedback; // What is fed back? strips/meters/timecode/bar_beat/global
- int gainmode; // what kind of faders do we have Gain db or position 0 to 1023?
- uint32_t surface_sel; // which strip within the bank is locally selected
+ std::string remote_url; // the url these setting belong to
+ uint32_t bank; // current bank
+ uint32_t bank_size; // size of banks for this surface
+ std::bitset<32> strip_types;// what strip types are a part of this bank
+ uint32_t nstrips; // how many strips are there for strip_types
+ std::bitset<32> feedback; // What is fed back? strips/meters/timecode/bar_beat/global
+ int gainmode; // what kind of faders do we have Gain db or position 0 to 1023?
+ uint32_t surface_sel; // which strip within the bank is locally selected
+ OSCSelectObserver* sel_obs; // So we can sync select feedback with selected channel
//StripableList strips; //list of stripables for the current bank
};
/*
* Reminder of what strip_types there are
+ * XXX these have changed!!!
AudioTrack = 0x1,
MidiTrack = 0x2,
AudioBus = 0x4,
* [7] - Send metering as dB or positional depending on gainmode
* [8] - Send metering as 16 bits (led strip)
* [9] - Send signal present (signal greater than -20dB)
+ * [10] - Selection is local
*/
PATH_CALLBACK1_MSG(set_surface_strip_types,i);
PATH_CALLBACK1_MSG(set_surface_feedback,i);
PATH_CALLBACK1_MSG(set_surface_gainmode,i);
+ PATH_CALLBACK1_MSG(sel_recenable,i);
+ PATH_CALLBACK1_MSG(sel_recsafe,i);
+ PATH_CALLBACK1_MSG(sel_mute,i);
+ PATH_CALLBACK1_MSG(sel_solo,i);
+ PATH_CALLBACK1_MSG(sel_monitor_input,i);
+ PATH_CALLBACK1_MSG(sel_monitor_disk,i);
+ PATH_CALLBACK1_MSG(sel_phase,i);
+ PATH_CALLBACK1_MSG(sel_gain,f);
+ PATH_CALLBACK1_MSG(sel_fader,f);
+ PATH_CALLBACK1_MSG(sel_trim,f);
+ PATH_CALLBACK1_MSG(sel_pan_position,f);
+ PATH_CALLBACK1_MSG(sel_pan_width,f);
#define PATH_CALLBACK2(name,arg1type,arg2type) \
static int _ ## name (const char *path, const char *types, lo_arg **argv, int argc, void *data, void *user_data) { \
return 0; \
}
+ PATH_CALLBACK2_MSG(sel_sendgain,i,f);
+ PATH_CALLBACK2_MSG(sel_sendfader,i,f);
+
PATH_CALLBACK4(set_surface,i,i,i,i);
PATH_CALLBACK2(locate,i,i);
PATH_CALLBACK2(loop_location,i,i);
PATH_CALLBACK2_MSG(route_recsafe,i,i);
PATH_CALLBACK2_MSG(route_monitor_input,i,i);
PATH_CALLBACK2_MSG(route_monitor_disk,i,i);
+ PATH_CALLBACK2_MSG(strip_phase,i,i);
+ PATH_CALLBACK2_MSG(strip_select,i,i);
+ PATH_CALLBACK2_MSG(strip_gui_select,i,i);
PATH_CALLBACK2_MSG(route_set_gain_abs,i,f);
PATH_CALLBACK2_MSG(route_set_gain_dB,i,f);
PATH_CALLBACK2_MSG(route_set_gain_fader,i,f);
PATH_CALLBACK2_MSG(route_set_pan_stereo_width,i,f);
PATH_CALLBACK3(route_set_send_gain_abs,i,i,f);
PATH_CALLBACK3(route_set_send_gain_dB,i,i,f);
+ PATH_CALLBACK3(route_set_send_fader,i,i,f);
PATH_CALLBACK4(route_plugin_parameter,i,i,i,f);
PATH_CALLBACK3(route_plugin_parameter_print,i,i,i);
int route_recsafe (int ssid, int yn, lo_message msg);
int route_monitor_input (int rid, int yn, lo_message msg);
int route_monitor_disk (int rid, int yn, lo_message msg);
+ int strip_phase (int rid, int yn, lo_message msg);
+ int strip_select (int rid, int yn, lo_message msg);
+ int _strip_select (int rid, lo_address addr);
+ int strip_gui_select (int rid, int yn, lo_message msg);
int route_set_gain_abs (int rid, float level, lo_message msg);
int route_set_gain_dB (int rid, float dB, lo_message msg);
int route_set_gain_fader (int rid, float pos, lo_message msg);
int route_set_pan_stereo_width (int rid, float percent, lo_message msg);
int route_set_send_gain_abs (int rid, int sid, float val, lo_message msg);
int route_set_send_gain_dB (int rid, int sid, float val, lo_message msg);
+ int route_set_send_fader (int rid, int sid, float val, lo_message msg);
int route_plugin_parameter (int rid, int piid,int par, float val, lo_message msg);
int route_plugin_parameter_print (int rid, int piid,int par, lo_message msg);
int master_set_mute (uint32_t state);
int monitor_set_gain (float dB);
int monitor_set_fader (uint32_t position);
+ int sel_recenable (uint32_t state, lo_message msg);
+ int sel_recsafe (uint32_t state, lo_message msg);
+ int sel_mute (uint32_t state, lo_message msg);
+ int sel_solo (uint32_t state, lo_message msg);
+ int sel_monitor_input (uint32_t state, lo_message msg);
+ int sel_monitor_disk (uint32_t state, lo_message msg);
+ int sel_phase (uint32_t state, lo_message msg);
+ int sel_gain (float state, lo_message msg);
+ int sel_fader (float state, lo_message msg);
+ int sel_trim (float val, lo_message msg);
+ int sel_pan_position (float val, lo_message msg);
+ int sel_pan_width (float val, lo_message msg);
+ int sel_sendgain (int id, float dB, lo_message msg);
+ int sel_sendfader (int id, float pos, lo_message msg);
void listen_to_route (boost::shared_ptr<ARDOUR::Stripable>, lo_address);
void end_listen (boost::shared_ptr<ARDOUR::Stripable>, lo_address);
void drop_route (boost::weak_ptr<ARDOUR::Stripable>);
+ void gui_selection_changed (ARDOUR::StripableNotificationListPtr stripables);
void route_name_changed (const PBD::PropertyChange&, boost::weak_ptr<ARDOUR::Route> r, lo_address addr);
void update_clock ();
bool periodic (void);
sigc::connection periodic_connection;
+ PBD::ScopedConnectionList session_connections;
- int route_send_fail (std::string path, uint32_t ssid, lo_message msg);
+ int route_send_fail (std::string path, uint32_t ssid, float val, lo_address addr);
typedef std::list<OSCRouteObserver*> RouteObservers;