+ string left = Config->get_auditioner_output_left();
+ string right = Config->get_auditioner_output_right();
+
+ vector<string> outputs;
+ _session.engine().get_physical_outputs (DataType::AUDIO, outputs);
+
+ via_monitor = false;
+
+ if (left.empty() || left == "default") {
+ if (_session.monitor_out() && _session.monitor_out()->input()->audio (0)) {
+ left = _session.monitor_out()->input()->audio (0)->name();
+ } else {
+ if (outputs.size() > 0) {
+ left = outputs[0];
+ }
+ }
+ }
+
+ if (right.empty() || right == "default") {
+ if (_session.monitor_out() && _session.monitor_out()->input()->audio (1)) {
+ right = _session.monitor_out()->input()->audio (1)->name();
+ } else {
+ if (outputs.size() > 1) {
+ right = outputs[1];
+ }
+ }
+ }
+
+ _output->disconnect (this);
+
+ if (left.empty() && right.empty()) {
+ if (_output->n_ports().n_audio() == 0) {
+ /* ports not set up, so must be during startup */
+ warning << _("no outputs available for auditioner - manual connection required") << endmsg;
+ }
+ } else {
+
+ if (_output->n_ports().n_audio() == 0) {
+
+ /* create (and connect) new ports */
+
+ _main_outs->defer_pan_reset ();
+
+ if (left.length()) {
+ _output->add_port (left, this, DataType::AUDIO);
+ }
+
+ if (right.length()) {
+ _output->add_port (right, this, DataType::AUDIO);
+ }
+
+ _main_outs->allow_pan_reset ();
+ _main_outs->reset_panner ();