Automation of LV2 plugin properties.
[ardour.git] / libs / ardour / midiport_manager.cc
index 6de043658690187d0af697e02e29c9fdb8f8951b..b1699ca5abc5a548abc6fc2bddf64e0d450af5fe 100644 (file)
@@ -40,8 +40,14 @@ MidiPortManager::~MidiPortManager ()
        if (_midi_in) {
                AudioEngine::instance()->unregister_port (_midi_in);
        }
-       if (_midi_in) {
-               AudioEngine::instance()->unregister_port (_midi_in);
+       if (_midi_out) {
+               AudioEngine::instance()->unregister_port (_midi_out);
+       }
+       if (_scene_in) {
+               AudioEngine::instance()->unregister_port (_scene_in);
+       }
+       if (_scene_out) {
+               AudioEngine::instance()->unregister_port (_scene_out);
        }
        if (_mtc_input_port) {
                AudioEngine::instance()->unregister_port (_mtc_input_port);
@@ -73,7 +79,10 @@ MidiPortManager::create_ports ()
 
        _mmc_in  = AudioEngine::instance()->register_input_port (DataType::MIDI, X_("MMC in"), true);
        _mmc_out = AudioEngine::instance()->register_output_port (DataType::MIDI, X_("MMC out"), true);
-       
+
+       _scene_in  = AudioEngine::instance()->register_input_port (DataType::MIDI, X_("Scene in"), true);
+       _scene_out = AudioEngine::instance()->register_output_port (DataType::MIDI, X_("Scene out"), true);
+
        /* XXX nasty type conversion needed because of the mixed inheritance
         * required to integrate MIDI::IPMidiPort and ARDOUR::AsyncMIDIPort.
         *
@@ -88,6 +97,9 @@ MidiPortManager::create_ports ()
        _mmc_input_port = boost::dynamic_pointer_cast<AsyncMIDIPort>(_mmc_in).get();
        _mmc_output_port = boost::dynamic_pointer_cast<AsyncMIDIPort>(_mmc_out).get();
 
+       _scene_input_port = boost::dynamic_pointer_cast<AsyncMIDIPort>(_scene_in).get();
+       _scene_output_port = boost::dynamic_pointer_cast<AsyncMIDIPort>(_scene_out).get();
+
        /* Now register ports used for sync (MTC and MIDI Clock)
         */
 
@@ -129,6 +141,8 @@ MidiPortManager::set_midi_port_states (const XMLNodeList&nodes)
        ports.insert (make_pair (_midi_output_port->name(), _midi_out));
        ports.insert (make_pair (_mmc_input_port->name(), _mmc_in));
        ports.insert (make_pair (_mmc_output_port->name(), _mmc_out));
+       ports.insert (make_pair (_scene_output_port->name(), _scene_out));
+       ports.insert (make_pair (_scene_input_port->name(), _scene_in));
        
        for (XMLNodeList::const_iterator n = nodes.begin(); n != nodes.end(); ++n) {
                if ((prop = (*n)->property (X_("name"))) == 0) {
@@ -159,6 +173,8 @@ MidiPortManager::get_midi_port_states () const
        ports.insert (make_pair (_midi_output_port->name(), _midi_out));
        ports.insert (make_pair (_mmc_input_port->name(), _mmc_in));
        ports.insert (make_pair (_mmc_output_port->name(), _mmc_out));
+       ports.insert (make_pair (_scene_output_port->name(), _scene_out));
+       ports.insert (make_pair (_scene_input_port->name(), _scene_in));
 
        for (PortMap::const_iterator p = ports.begin(); p != ports.end(); ++p) {
                s.push_back (&p->second->get_state());