summaryrefslogtreecommitdiff
path: root/libs/ardour/midi_track.cc
diff options
context:
space:
mode:
authorPaul Davis <paul@linuxaudiosystems.com>2011-06-28 16:55:41 +0000
committerPaul Davis <paul@linuxaudiosystems.com>2011-06-28 16:55:41 +0000
commit84be4eafc5228eacfed02f78489fa82d401c2947 (patch)
tree4dab87b4691919375ab3a867a011b5caf9ce2e59 /libs/ardour/midi_track.cc
parent4388556923da8b174fdbea445ea20a8eb72189c6 (diff)
basic infrastructure for enabling/disabling MIDI input to a given track
git-svn-id: svn://localhost/ardour2/branches/3.0@9772 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/ardour/midi_track.cc')
-rw-r--r--libs/ardour/midi_track.cc43
1 files changed, 43 insertions, 0 deletions
diff --git a/libs/ardour/midi_track.cc b/libs/ardour/midi_track.cc
index 52a0cac27e..2dcee645a9 100644
--- a/libs/ardour/midi_track.cc
+++ b/libs/ardour/midi_track.cc
@@ -676,3 +676,46 @@ MidiTrack::send_silence () const
{
return false;
}
+
+void
+MidiTrack::set_input_active (bool yn)
+{
+ bool changed = false;
+
+ if (!_input) {
+ return;
+ }
+
+ PortSet& ports (_input->ports());
+
+ for (PortSet::iterator p = ports.begin(DataType::MIDI); p != ports.end(DataType::MIDI); ++p) {
+ MidiPort* mp = dynamic_cast<MidiPort*> (&*p);
+ if (yn != mp->input_active()) {
+ mp->set_input_active (yn);
+ changed = true;
+ }
+ }
+
+ if (changed) {
+ InputActiveChanged (); /* EMIT SIGNAL */
+ }
+}
+
+bool
+MidiTrack::input_active () const
+{
+ if (!_input) {
+ cerr << " no input\n";
+ return false;
+ }
+
+ if (_input->ports().count().n_midi() == 0) {
+ cerr << "no input MIDI ports, " << _input->ports().count() << endl;
+ return false;
+ }
+
+ PortSet::iterator p = _input->ports().begin(DataType::MIDI);
+ MidiPort* mp = dynamic_cast<MidiPort*> (&*p);
+ cerr << "first port is active: " << mp->input_active() << endl;
+ return mp->input_active ();
+}