13
0

Fixes OSC panner issues: 8338 and 8246

8338 - crash with midi and no audio strip
		detect no panner
	8246 - send feedback of panner type
This commit is contained in:
Len Ovens 2020-08-12 08:08:39 -07:00
parent 68f1ec348d
commit 7ab67c42dc
2 changed files with 22 additions and 0 deletions

View File

@ -447,6 +447,16 @@ OSCRouteObserver::panner_changed (boost::shared_ptr<ARDOUR::PannerShell> pan_sh)
pan_connections.drop_connections ();
if (feedback[1]) {
string pt = pan_sh->current_panner_uri();
if (pt.size()){
string ptype = pt.substr(pt.find_last_of ('/') + 1);
_osc.text_message_with_id (X_("/strip/pan_type"), ssid, ptype, in_line, addr);
} else {
_osc.text_message_with_id (X_("/strip/pan_type"), ssid, "none", in_line, addr);
_osc.float_message_with_id (X_("/strip/pan_stereo_position"), ssid, 0.5, in_line, addr);
_osc.float_message_with_id (X_("/strip/pan_stereo_width"), ssid, 1.0, in_line, addr);
return;
}
boost::shared_ptr<Controllable> pan_controllable = boost::dynamic_pointer_cast<Controllable>(pan_sh->panner()->pannable()->pan_azimuth_control);
if (pan_controllable) {
pan_controllable->Changed.connect (pan_connections, MISSING_INVALIDATOR, boost::bind (&OSCRouteObserver::send_change_message, this, X_("/strip/pan_stereo_position"), current_pan_shell->panner()->pannable()->pan_azimuth_control), OSC::instance());

View File

@ -664,6 +664,18 @@ OSCSelectObserver::panner_changed ()
if (feedback[1]) {
boost::shared_ptr<Route> rt = boost::dynamic_pointer_cast<Route> (_strip);
boost::shared_ptr<PannerShell> pan_sh = rt->panner_shell();
string pt = pan_sh->current_panner_uri();
if (pt.size()){
string ptype = pt.substr(pt.find_last_of ('/') + 1);
_osc.text_message (X_("/strip/pan_type"), ptype, addr);
} else {
_osc.text_message (X_("/select/pan_type"), "none", addr);
_osc.float_message (X_("/strip/pan_stereo_position"), 0.5, addr);
_osc.float_message (X_("/strip/pan_stereo_width"), 1.0, addr);
return;
}
boost::shared_ptr<Controllable> pan_controllable = boost::dynamic_pointer_cast<Controllable>(_strip->pan_azimuth_control());
if (pan_controllable) {
pan_controllable->Changed.connect (pan_connections, MISSING_INVALIDATOR, boost::bind (&OSCSelectObserver::change_message, this, X_("/select/pan_stereo_position"), _strip->pan_azimuth_control()), OSC::instance());