+
+ boost::shared_ptr<AutomationControl> rec_controllable = _strip->rec_enable_control ();
+ if (rec_controllable) {
+ rec_controllable->Changed.connect (strip_connections, MISSING_INVALIDATOR, boost::bind (&OSCSelectObserver::change_message, this, X_("/select/recenable"), _strip->rec_enable_control()), OSC::instance());
+ change_message (X_("/select/recenable"), _strip->rec_enable_control());
+ }
+
+ boost::shared_ptr<AutomationControl> recsafe_controllable = _strip->rec_safe_control ();
+ if (recsafe_controllable) {
+ recsafe_controllable->Changed.connect (strip_connections, MISSING_INVALIDATOR, boost::bind (&OSCSelectObserver::change_message, this, X_("/select/record_safe"), _strip->rec_safe_control()), OSC::instance());
+ change_message (X_("/select/record_safe"), _strip->rec_safe_control());
+ }
+
+ boost::shared_ptr<AutomationControl> phase_controllable = _strip->phase_control ();
+ if (phase_controllable) {
+ phase_controllable->Changed.connect (strip_connections, MISSING_INVALIDATOR, boost::bind (&OSCSelectObserver::change_message, this, X_("/select/polarity"), _strip->phase_control()), OSC::instance());
+ change_message (X_("/select/polarity"), _strip->phase_control());
+ }
+
+ _strip->gain_control()->alist()->automation_state_changed.connect (strip_connections, MISSING_INVALIDATOR, boost::bind (&OSCSelectObserver::gain_automation, this), OSC::instance());
+ _strip->gain_control()->Changed.connect (strip_connections, MISSING_INVALIDATOR, boost::bind (&OSCSelectObserver::gain_message, this), OSC::instance());
+ gain_automation ();
+
+ boost::shared_ptr<Slavable> slv = boost::dynamic_pointer_cast<Slavable> (_strip);
+ slv->AssignmentChange.connect (strip_connections, MISSING_INVALIDATOR, boost::bind (&OSCSelectObserver::slaved_changed, this, _1, _2), OSC::instance());
+ slaved_changed (boost::shared_ptr<VCA>(), false);
+
+ boost::shared_ptr<Controllable> trim_controllable = boost::dynamic_pointer_cast<Controllable>(_strip->trim_control());
+ if (trim_controllable) {
+ trim_controllable->Changed.connect (strip_connections, MISSING_INVALIDATOR, boost::bind (&OSCSelectObserver::trim_message, this, X_("/select/trimdB"), _strip->trim_control()), OSC::instance());
+ trim_message (X_("/select/trimdB"), _strip->trim_control());
+ }
+
+ boost::shared_ptr<Controllable> pan_controllable = boost::dynamic_pointer_cast<Controllable>(_strip->pan_azimuth_control());
+ if (pan_controllable) {
+ pan_controllable->Changed.connect (strip_connections, MISSING_INVALIDATOR, boost::bind (&OSCSelectObserver::change_message, this, X_("/select/pan_stereo_position"), _strip->pan_azimuth_control()), OSC::instance());
+ change_message (X_("/select/pan_stereo_position"), _strip->pan_azimuth_control());
+ }
+
+ boost::shared_ptr<Controllable> width_controllable = boost::dynamic_pointer_cast<Controllable>(_strip->pan_width_control());
+ if (width_controllable) {
+ width_controllable->Changed.connect (strip_connections, MISSING_INVALIDATOR, boost::bind (&OSCSelectObserver::change_message, this, X_("/select/pan_stereo_width"), _strip->pan_width_control()), OSC::instance());
+ change_message (X_("/select/pan_stereo_width"), _strip->pan_width_control());
+ }
+
+ // Rest of possible pan controls... Untested because I can't find a way to get them in the GUI :)
+ if (_strip->pan_elevation_control ()) {
+ _strip->pan_elevation_control()->Changed.connect (strip_connections, MISSING_INVALIDATOR, boost::bind (&OSCSelectObserver::change_message, this, X_("/select/pan_elevation_position"), _strip->pan_elevation_control()), OSC::instance());
+ change_message (X_("/select/pan_elevation_position"), _strip->pan_elevation_control());
+ }
+ if (_strip->pan_frontback_control ()) {
+ _strip->pan_frontback_control()->Changed.connect (strip_connections, MISSING_INVALIDATOR, boost::bind (&OSCSelectObserver::change_message, this, X_("/select/pan_frontback_position"), _strip->pan_frontback_control()), OSC::instance());
+ change_message (X_("/select/pan_frontback_position"), _strip->pan_frontback_control());
+ }
+ if (_strip->pan_lfe_control ()) {
+ _strip->pan_lfe_control()->Changed.connect (strip_connections, MISSING_INVALIDATOR, boost::bind (&OSCSelectObserver::change_message, this, X_("/select/pan_lfe_control"), _strip->pan_lfe_control()), OSC::instance());
+ change_message (X_("/select/pan_lfe_control"), _strip->pan_lfe_control());
+ }
+
+ // sends, plugins and eq
+ // detecting processor changes is now in osc.cc
+
+ // but... MB master send enable is different
+ if (_strip->master_send_enable_controllable ()) {
+ _strip->master_send_enable_controllable ()->Changed.connect (strip_connections, MISSING_INVALIDATOR, boost::bind (&OSCSelectObserver::enable_message, this, X_("/select/master_send_enable"), _strip->master_send_enable_controllable()), OSC::instance());
+ enable_message (X_("/select/master_send_enable"), _strip->master_send_enable_controllable());
+ }
+
+ // Compressor
+ if (_strip->comp_enable_controllable ()) {
+ _strip->comp_enable_controllable ()->Changed.connect (strip_connections, MISSING_INVALIDATOR, boost::bind (&OSCSelectObserver::enable_message, this, X_("/select/comp_enable"), _strip->comp_enable_controllable()), OSC::instance());
+ enable_message (X_("/select/comp_enable"), _strip->comp_enable_controllable());
+ }
+ if (_strip->comp_threshold_controllable ()) {
+ _strip->comp_threshold_controllable ()->Changed.connect (strip_connections, MISSING_INVALIDATOR, boost::bind (&OSCSelectObserver::change_message, this, X_("/select/comp_threshold"), _strip->comp_threshold_controllable()), OSC::instance());
+ change_message (X_("/select/comp_threshold"), _strip->comp_threshold_controllable());
+ }
+ if (_strip->comp_speed_controllable ()) {
+ _strip->comp_speed_controllable ()->Changed.connect (strip_connections, MISSING_INVALIDATOR, boost::bind (&OSCSelectObserver::change_message, this, X_("/select/comp_speed"), _strip->comp_speed_controllable()), OSC::instance());
+ change_message (X_("/select/comp_speed"), _strip->comp_speed_controllable());
+ }
+ if (_strip->comp_mode_controllable ()) {
+ _strip->comp_mode_controllable ()->Changed.connect (strip_connections, MISSING_INVALIDATOR, boost::bind (&OSCSelectObserver::comp_mode, this), OSC::instance());
+ comp_mode ();
+ }
+ if (_strip->comp_makeup_controllable ()) {
+ _strip->comp_makeup_controllable ()->Changed.connect (strip_connections, MISSING_INVALIDATOR, boost::bind (&OSCSelectObserver::change_message, this, X_("/select/comp_makeup"), _strip->comp_makeup_controllable()), OSC::instance());
+ change_message (X_("/select/comp_makeup"), _strip->comp_makeup_controllable());
+ }
+ renew_sends ();
+ renew_plugin ();
+ eq_restart(0);
+ _init = false;
+