add MIDI bundles to Generic MIDI support so that the ports show up nicely in the...
authorPaul Davis <paul@linuxaudiosystems.com>
Fri, 8 Jul 2016 21:09:44 +0000 (17:09 -0400)
committerPaul Davis <paul@linuxaudiosystems.com>
Tue, 27 Sep 2016 19:59:30 +0000 (14:59 -0500)
libs/surfaces/generic_midi/generic_midi_control_protocol.cc
libs/surfaces/generic_midi/generic_midi_control_protocol.h

index d14a9ca24cac00bfae61d4c743dce1b4b7904d58..10b52027e831106d68ad364f6125d9437ee5cb8b 100644 (file)
@@ -67,6 +67,23 @@ GenericMidiControlProtocol::GenericMidiControlProtocol (Session& s)
        _input_port = boost::dynamic_pointer_cast<AsyncMIDIPort> (s.midi_input_port ());
        _output_port = boost::dynamic_pointer_cast<AsyncMIDIPort> (s.midi_output_port ());
 
+       _input_bundle.reset (new ARDOUR::Bundle (_("Generic MIDI Control In"), true));
+       _output_bundle.reset (new ARDOUR::Bundle (_("Generic MIDI Control Out"), false));
+
+       _input_bundle->add_channel (
+               boost::static_pointer_cast<MidiPort>(_input_port)->name(),
+               ARDOUR::DataType::MIDI,
+               session->engine().make_port_name_non_relative (boost::static_pointer_cast<MidiPort>(_input_port)->name())
+               );
+
+       _output_bundle->add_channel (
+               boost::static_pointer_cast<MidiPort>(_output_port)->name(),
+               ARDOUR::DataType::MIDI,
+               session->engine().make_port_name_non_relative (boost::static_pointer_cast<MidiPort>(_output_port)->name())
+               );
+
+       session->BundleAddedOrRemoved ();
+
        do_feedback = false;
        _feedback_interval = 10000; // microseconds
        last_feedback_time = 0;
@@ -110,6 +127,20 @@ GenericMidiControlProtocol::~GenericMidiControlProtocol ()
        tear_down_gui ();
 }
 
+list<boost::shared_ptr<ARDOUR::Bundle> >
+GenericMidiControlProtocol::bundles ()
+{
+       list<boost::shared_ptr<ARDOUR::Bundle> > b;
+
+       if (_input_bundle) {
+               b.push_back (_input_bundle);
+               b.push_back (_output_bundle);
+       }
+
+       return b;
+}
+
+
 static const char * const midimap_env_variable_name = "ARDOUR_MIDIMAPS_PATH";
 static const char* const midi_map_dir_name = "midi_maps";
 static const char* const midi_map_suffix = ".map";
index d3709c5374d8a1af12525e871da5c27ddbcc72f8..ac5b8bdb8f6faf2a8eb310645fdcac38f5fa3ef1 100644 (file)
@@ -55,6 +55,8 @@ class GenericMidiControlProtocol : public ARDOUR::ControlProtocol {
        int set_active (bool yn);
        static bool probe() { return true; }
 
+       std::list<boost::shared_ptr<ARDOUR::Bundle> > bundles ();
+
        boost::shared_ptr<ARDOUR::Port> input_port () const;
        boost::shared_ptr<ARDOUR::Port> output_port () const;
 
@@ -106,6 +108,8 @@ class GenericMidiControlProtocol : public ARDOUR::ControlProtocol {
        PBD::Signal0<void> ConnectionChange;
 
   private:
+       boost::shared_ptr<ARDOUR::Bundle> _input_bundle;
+       boost::shared_ptr<ARDOUR::Bundle> _output_bundle;
        boost::shared_ptr<ARDOUR::AsyncMIDIPort> _input_port;
        boost::shared_ptr<ARDOUR::AsyncMIDIPort> _output_port;