summaryrefslogtreecommitdiff
path: root/libs/ardour/midiport_manager.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2014-04-28 19:58:24 -0400
committerPaul Davis <paul@linuxaudiosystems.com>2014-04-28 19:58:24 -0400
commit2cf411e4be0b10e6ecf47d2070963299b6a810e7 (patch)
treec6dfb7e7fcd71d5ee2d4a7c2ba490fb882dde3ca /libs/ardour/midiport_manager.cc
parentb945cda5582d6565ef2ce4fa8cbafee8fd8e5db0 (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.cc22
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());