add new Session global MIDI input port for trigger control

This commit is contained in:
Paul Davis 2022-11-19 10:11:26 -07:00
parent 2a9835d475
commit c8e3d95109
4 changed files with 23 additions and 0 deletions

View File

@ -85,6 +85,12 @@ public:
return _midi_clock_output_port;
}
/* Port for arbitrary incoming MIDI that will control triggers */
boost::shared_ptr<MidiPort> trigger_input_port () const
{
return _trigger_input_port;
}
/* Virtual MIDI keyboard output */
boost::shared_ptr<AsyncMIDIPort> vkbd_output_port () const;
@ -104,6 +110,7 @@ protected:
/* synchronously handled ports: ARDOUR::MidiPort */
boost::shared_ptr<MidiPort> _mtc_output_port;
boost::shared_ptr<MidiPort> _midi_clock_output_port;
boost::shared_ptr<MidiPort> _trigger_input_port;
void create_ports ();
};

View File

@ -1317,6 +1317,7 @@ public:
boost::shared_ptr<Port> mmc_output_port () const;
boost::shared_ptr<Port> mmc_input_port () const;
boost::shared_ptr<Port> trigger_input_port () const;
boost::shared_ptr<Port> scene_input_port () const;
boost::shared_ptr<Port> scene_output_port () const;

View File

@ -50,6 +50,9 @@ MidiPortManager::~MidiPortManager ()
if (_midi_clock_output_port) {
AudioEngine::instance()->unregister_port (_midi_clock_output_port);
}
if (_trigger_input_port) {
AudioEngine::instance()->unregister_port (_midi_clock_output_port);
}
}
@ -80,6 +83,9 @@ MidiPortManager::create_ports ()
p = AudioEngine::instance()->register_output_port (DataType::MIDI, X_("MIDI Clock out"), false, TransportGenerator);
_midi_clock_output_port= boost::dynamic_pointer_cast<MidiPort> (p);
p = AudioEngine::instance()->register_input_port (DataType::MIDI, X_("Cue Control in"));
_trigger_input_port= boost::dynamic_pointer_cast<MidiPort> (p);
}
void
@ -92,6 +98,7 @@ MidiPortManager::set_midi_port_states (const XMLNodeList&nodes)
ports.insert (make_pair (_mtc_output_port->name(), _mtc_output_port));
ports.insert (make_pair (_midi_clock_output_port->name(), _midi_clock_output_port));
ports.insert (make_pair (_trigger_input_port->name(), _trigger_input_port));
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));
@ -121,6 +128,7 @@ MidiPortManager::get_midi_port_states () const
ports.insert (make_pair (_mtc_output_port->name(), _mtc_output_port));
ports.insert (make_pair (_midi_clock_output_port->name(), _midi_clock_output_port));
ports.insert (make_pair (_trigger_input_port->name(), _trigger_input_port));
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));
@ -148,6 +156,7 @@ MidiPortManager::set_public_latency (bool playback)
pl.push_back (_mtc_output_port);
pl.push_back (_midi_clock_output_port);
pl.push_back (_trigger_input_port);
pl.push_back (_mmc_in);
pl.push_back (_mmc_out);
pl.push_back (_vkbd_out);

View File

@ -686,6 +686,12 @@ Session::scene_input_port () const
return _midi_ports->scene_input_port ();
}
boost::shared_ptr<ARDOUR::Port>
Session::trigger_input_port () const
{
return _midi_ports->trigger_input_port ();
}
boost::shared_ptr<AsyncMIDIPort>
Session::vkbd_output_port () const
{