13
0

Add Virtual-Keyboard MIDI port

This commit is contained in:
Robin Gareus 2019-10-18 03:42:41 +02:00
parent f4ebb5995d
commit f961fd4687
Signed by: rgareus
GPG Key ID: A090BCE02CF57F04
5 changed files with 20 additions and 1 deletions

View File

@ -93,6 +93,12 @@ public:
return _midi_clock_output_port;
}
/* Virtual MIDI keyboard output */
boost::shared_ptr<ARDOUR::Port> vkbd_output_port () const
{
return boost::dynamic_pointer_cast<MidiPort> (_vkbd_out);
}
void set_midi_port_states (const XMLNodeList&);
std::list<XMLNode*> get_midi_port_states () const;
@ -106,6 +112,7 @@ protected:
boost::shared_ptr<Port> _mmc_out;
boost::shared_ptr<Port> _scene_in;
boost::shared_ptr<Port> _scene_out;
boost::shared_ptr<Port> _vkbd_out;
/* synchronously handled ports: ARDOUR::MidiPort */
boost::shared_ptr<MidiPort> _mtc_output_port;

View File

@ -1200,6 +1200,7 @@ public:
boost::shared_ptr<Port> mmc_input_port () const;
boost::shared_ptr<Port> scene_input_port () const;
boost::shared_ptr<Port> scene_output_port () const;
boost::shared_ptr<Port> vkbd_output_port () const;
/* synchronous MIDI ports used for synchronization */

View File

@ -593,6 +593,7 @@ ARDOUR::init (bool use_windows_vst, bool try_optimization, const char* localedir
reserved_io_names[_("Monitor")] = true;
reserved_io_names[_("Master")] = true;
reserved_io_names["auditioner"] = true; // auditioner.cc Track (s, "auditioner",...)
reserved_io_names[_("Virtual Keyboard")] = false;
/* pure I/O */
reserved_io_names[X_("Click")] = false; // session.cc ClickIO (*this, X_("Click")

View File

@ -77,6 +77,9 @@ MidiPortManager::create_ports ()
_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);
_vkbd_out = AudioEngine::instance()->register_output_port (DataType::MIDI, X_("Virtual Keyboard"), true);
boost::dynamic_pointer_cast<AsyncMIDIPort>(_vkbd_out)->set_flush_at_cycle_start (true);
/* Now register ports used to send positional sync data (MTC and MIDI Clock) */
boost::shared_ptr<ARDOUR::Port> p;
@ -102,6 +105,7 @@ MidiPortManager::set_midi_port_states (const XMLNodeList&nodes)
ports.insert (make_pair (_midi_out->name(), _midi_out));
ports.insert (make_pair (_mmc_in->name(), _mmc_in));
ports.insert (make_pair (_mmc_out->name(), _mmc_out));
ports.insert (make_pair (_vkbd_out->name(), _vkbd_out));
ports.insert (make_pair (_scene_out->name(), _scene_out));
ports.insert (make_pair (_scene_in->name(), _scene_in));
@ -132,6 +136,7 @@ MidiPortManager::get_midi_port_states () const
ports.insert (make_pair (_midi_out->name(), _midi_out));
ports.insert (make_pair (_mmc_in->name(), _mmc_in));
ports.insert (make_pair (_mmc_out->name(), _mmc_out));
ports.insert (make_pair (_vkbd_out->name(), _vkbd_out));
ports.insert (make_pair (_scene_out->name(), _scene_out));
ports.insert (make_pair (_scene_in->name(), _scene_in));

View File

@ -692,13 +692,18 @@ Session::scene_input_port () const
return _midi_ports->scene_input_port ();
}
boost::shared_ptr<ARDOUR::Port>
Session::vkbd_output_port () const
{
return _midi_ports->vkbd_output_port ();
}
boost::shared_ptr<MidiPort>
Session::midi_clock_output_port () const
{
return _midi_ports->midi_clock_output_port ();
}
boost::shared_ptr<MidiPort>
Session::mtc_output_port () const
{