diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2014-04-28 19:58:24 -0400 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2014-04-28 19:58:24 -0400 |
commit | 2cf411e4be0b10e6ecf47d2070963299b6a810e7 (patch) | |
tree | c6dfb7e7fcd71d5ee2d4a7c2ba490fb882dde3ca /libs/ardour/midiport_manager.cc | |
parent | b945cda5582d6565ef2ce4fa8cbafee8fd8e5db0 (diff) |
merge (squash) with scenechange topic branch to provide MIDI-driven scene change markers
Diffstat (limited to 'libs/ardour/midiport_manager.cc')
-rw-r--r-- | libs/ardour/midiport_manager.cc | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/libs/ardour/midiport_manager.cc b/libs/ardour/midiport_manager.cc index 6de0436586..b1699ca5ab 100644 --- a/libs/ardour/midiport_manager.cc +++ b/libs/ardour/midiport_manager.cc @@ -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()); |