diff options
Diffstat (limited to 'libs/ardour/midiport_manager.cc')
-rw-r--r-- | libs/ardour/midiport_manager.cc | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/libs/ardour/midiport_manager.cc b/libs/ardour/midiport_manager.cc new file mode 100644 index 0000000000..fb27800762 --- /dev/null +++ b/libs/ardour/midiport_manager.cc @@ -0,0 +1,89 @@ +/* + Copyright (C) 1998-99 Paul Barton-Davis + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + + $Id$ +*/ + +#include "ardour/audioengine.h" +#include "ardour/async_midi_port.h" +#include "ardour/midiport_manager.h" + +#include "i18n.h" + +using namespace ARDOUR; +using namespace std; +using namespace MIDI; +using namespace PBD; + + +MidiPortManager::MidiPortManager () +{ +} + +MidiPortManager::~MidiPortManager () +{ + if (_midi_in) { + AudioEngine::instance()->unregister_port (_midi_in); + } + if (_midi_in) { + AudioEngine::instance()->unregister_port (_midi_in); + } + if (_mtc_input_port) { + AudioEngine::instance()->unregister_port (_mtc_input_port); + } + if (_mtc_output_port) { + AudioEngine::instance()->unregister_port (_mtc_output_port); + } + if (_midi_clock_input_port) { + AudioEngine::instance()->unregister_port (_midi_clock_input_port); + } + if (_midi_clock_output_port) { + AudioEngine::instance()->unregister_port (_midi_clock_output_port); + } + +} + +MidiPort* +MidiPortManager::port (string const & n) +{ + boost::shared_ptr<MidiPort> mp = boost::dynamic_pointer_cast<MidiPort> (AudioEngine::instance()->get_port_by_name (n)); + return mp.get(); +} + +void +MidiPortManager::create_ports () +{ + _midi_in = AudioEngine::instance()->register_input_port (DataType::MIDI, _("MIDI control in"), true); + _midi_out = AudioEngine::instance()->register_output_port (DataType::MIDI, _("MIDI control out"), true); + + _midi_input_port = boost::dynamic_pointer_cast<AsyncMIDIPort>(_midi_in).get(); + _midi_output_port = boost::dynamic_pointer_cast<AsyncMIDIPort>(_midi_out).get(); +} + +void +MidiPortManager::set_port_states (list<XMLNode*> s) +{ + PortManager::PortList pl; + + AudioEngine::instance()->get_ports (DataType::MIDI, pl); + + for (list<XMLNode*>::iterator i = s.begin(); i != s.end(); ++i) { + for (PortManager::PortList::const_iterator j = pl.begin(); j != pl.end(); ++j) { + // (*j)->set_state (**i); + } + } +} + |