summaryrefslogtreecommitdiff
path: root/gtk2_ardour/port_group.cc
diff options
context:
space:
mode:
authorCarl Hetherington <carl@carlh.net>2010-08-01 10:26:19 +0000
committerCarl Hetherington <carl@carlh.net>2010-08-01 10:26:19 +0000
commit5d8933893c1bb889eb4ff95971b5a579bd7ea5da (patch)
tree87f8cfa7d8ad68c026fd0279bf5a57727f5a8061 /gtk2_ardour/port_group.cc
parent90c6ca876a4200a53fe4cf7131571fd0315cfe47 (diff)
Put MIDI sync ports in the Ardour tab of the port matrix.
git-svn-id: svn://localhost/ardour2/branches/3.0@7527 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'gtk2_ardour/port_group.cc')
-rw-r--r--gtk2_ardour/port_group.cc41
1 files changed, 41 insertions, 0 deletions
diff --git a/gtk2_ardour/port_group.cc b/gtk2_ardour/port_group.cc
index 104bb558c9..1598c5933c 100644
--- a/gtk2_ardour/port_group.cc
+++ b/gtk2_ardour/port_group.cc
@@ -20,6 +20,9 @@
#include <cstring>
#include <boost/shared_ptr.hpp>
+#include "midi++/manager.h"
+#include "midi++/mmc.h"
+
#include "ardour/audio_track.h"
#include "ardour/audioengine.h"
#include "ardour/bundle.h"
@@ -438,6 +441,44 @@ PortGroupList::gather (ARDOUR::Session* session, ARDOUR::DataType type, bool inp
}
}
+ /* Ardour's sync ports */
+
+ MIDI::Manager* midi_manager = MIDI::Manager::instance ();
+ if (midi_manager && (type == DataType::MIDI || type == DataType::NIL)) {
+ boost::shared_ptr<Bundle> sync (new Bundle (_("Sync"), inputs));
+ MIDI::MachineControl* mmc = midi_manager->mmc ();
+ AudioEngine& ae = session->engine ();
+ if (inputs) {
+ sync->add_channel (
+ _("MTC in"), DataType::MIDI, ae.make_port_name_non_relative (midi_manager->mtc_input_port()->name())
+ );
+ sync->add_channel (
+ _("MIDI control in"), DataType::MIDI, ae.make_port_name_non_relative (midi_manager->midi_input_port()->name())
+ );
+ sync->add_channel (
+ _("MIDI clock in"), DataType::MIDI, ae.make_port_name_non_relative (midi_manager->midi_clock_input_port()->name())
+ );
+ sync->add_channel (
+ _("MMC in"), DataType::MIDI, ae.make_port_name_non_relative (mmc->input_port()->name())
+ );
+ } else {
+ sync->add_channel (
+ _("MTC out"), DataType::MIDI, ae.make_port_name_non_relative (midi_manager->mtc_output_port()->name())
+ );
+ sync->add_channel (
+ _("MIDI control out"), DataType::MIDI, ae.make_port_name_non_relative (midi_manager->midi_output_port()->name())
+ );
+ sync->add_channel (
+ _("MIDI clock out"), DataType::MIDI, ae.make_port_name_non_relative (midi_manager->midi_clock_output_port()->name())
+ );
+ sync->add_channel (
+ _("MMC out"), DataType::MIDI, ae.make_port_name_non_relative (mmc->output_port()->name())
+ );
+ }
+
+ ardour->add_bundle (sync);
+ }
+
/* Now find all other ports that we haven't thought of yet */
std::vector<std::string> extra_system[DataType::num_types];