+ /* Ardour's control surfaces */
+
+ ControlProtocolManager& m = ControlProtocolManager::instance ();
+ for (list<ControlProtocolInfo*>::iterator i = m.control_protocol_info.begin(); i != m.control_protocol_info.end(); ++i) {
+ if ((*i)->protocol) {
+ list<boost::shared_ptr<Bundle> > b = (*i)->protocol->bundles ();
+ for (list<boost::shared_ptr<Bundle> >::iterator j = b.begin(); j != b.end(); ++j) {
+ if ((*j)->ports_are_inputs() == inputs) {
+ ardour->add_bundle (*j);
+ }
+ }
+ }
+ }
+
+ /* Ardour's sync ports */
+
+ if ((type == DataType::MIDI || type == DataType::NIL)) {
+ boost::shared_ptr<Bundle> sync (new Bundle (_("Sync"), inputs));
+ AudioEngine* ae = AudioEngine::instance();
+
+ if (inputs) {
+ sync->add_channel (
+ _("MTC in"), DataType::MIDI, ae->make_port_name_non_relative (session->mtc_input_port()->name())
+ );
+ sync->add_channel (
+ _("MIDI control in"), DataType::MIDI, ae->make_port_name_non_relative (session->midi_input_port()->name())
+ );
+ sync->add_channel (
+ _("MIDI clock in"), DataType::MIDI, ae->make_port_name_non_relative (session->midi_clock_input_port()->name())
+ );
+ sync->add_channel (
+ _("MMC in"), DataType::MIDI, ae->make_port_name_non_relative (session->mmc_input_port()->name())
+ );
+ } else {
+ sync->add_channel (
+ _("MTC out"), DataType::MIDI, ae->make_port_name_non_relative (session->mtc_output_port()->name())
+ );
+ sync->add_channel (
+ _("MIDI control out"), DataType::MIDI, ae->make_port_name_non_relative (session->midi_output_port()->name())
+ );
+ sync->add_channel (
+ _("MIDI clock out"), DataType::MIDI, ae->make_port_name_non_relative (session->midi_clock_output_port()->name())
+ );
+ sync->add_channel (
+ _("MMC out"), DataType::MIDI, ae->make_port_name_non_relative (session->mmc_output_port()->name())
+ );
+ }
+
+ ardour->add_bundle (sync);
+ }