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;
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;
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 */
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")
_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;
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));
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));
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
{