provide limited momentary note on/off MIDI binding option; remove some debugging...
[ardour.git] / libs / surfaces / generic_midi / interface.cc
index 8283b92e6ff89e1d1c1dabf25259c2dd1c43616e..a62ca2a34baf61ef4bfc21c3421de4fd759f4658 100644 (file)
@@ -1,25 +1,49 @@
-#include <ardour/control_protocol.h>
+#include <pbd/failed_constructor.h>
 
+#include "control_protocol/control_protocol.h"
 #include "generic_midi_control_protocol.h"
 
 using namespace ARDOUR;
 
 ControlProtocol*
-new_generic_midi_protocol (ControlProtocolDescriptor* descriptor, Session* s)
+new_generic_midi_protocol (ControlProtocolDescriptor* /*descriptor*/, Session* s)
 {
-       return new GenericMidiControlProtocol (*s);
+       GenericMidiControlProtocol* gmcp;
+               
+       try {
+               gmcp =  new GenericMidiControlProtocol (*s);
+       } catch (failed_constructor& err) {
+               return 0;
+       }
+       
+       if (gmcp->set_active (true)) {
+               delete gmcp;
+               return 0;
+       }
+
+       return gmcp;
 }
 
 void
-delete_generic_midi_protocol (ControlProtocolDescriptor* descriptor, ControlProtocol* cp)
+delete_generic_midi_protocol (ControlProtocolDescriptor* /*descriptor*/, ControlProtocol* cp)
 {
        delete cp;
 }
 
+bool
+probe_generic_midi_protocol (ControlProtocolDescriptor* /*descriptor*/)
+{
+       return GenericMidiControlProtocol::probe ();
+}
+
 static ControlProtocolDescriptor generic_midi_descriptor = {
        name : "Generic MIDI",
+       id : "uri://ardour.org/surfaces/generic_midi:0",
        ptr : 0,
        module : 0,
+       mandatory : 0,
+       supports_feedback : true,
+       probe : probe_generic_midi_protocol,
        initialize : new_generic_midi_protocol,
        destroy : delete_generic_midi_protocol
 };