Add FP16 control-surface
authorRobin Gareus <robin@gareus.org>
Tue, 12 Dec 2017 13:10:07 +0000 (14:10 +0100)
committerRobin Gareus <robin@gareus.org>
Tue, 12 Dec 2017 13:10:07 +0000 (14:10 +0100)
libs/surfaces/faderport8/faderport16_interface.cc [new file with mode: 0644]
libs/surfaces/faderport8/wscript

diff --git a/libs/surfaces/faderport8/faderport16_interface.cc b/libs/surfaces/faderport8/faderport16_interface.cc
new file mode 100644 (file)
index 0000000..a73ad21
--- /dev/null
@@ -0,0 +1,81 @@
+/*
+ * Copyright (C) 2017 Robin Gareus <robin@gareus.org>
+ * Copyright (C) 2015 Paul Davis
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA.
+ */
+
+#include <pbd/failed_constructor.h>
+
+#include "control_protocol/control_protocol.h"
+#include "faderport8.h"
+
+using namespace ARDOUR;
+using namespace ArdourSurface::FP_NAMESPACE;
+
+static ControlProtocol*
+new_faderport16_midi_protocol (ControlProtocolDescriptor* /*descriptor*/, Session* s)
+{
+       FaderPort8* fp;
+
+       try {
+               fp =  new FaderPort8 (*s);
+       } catch (failed_constructor& err) {
+               return 0;
+       }
+
+       if (fp->set_active (true)) {
+               delete fp;
+               return 0;
+       }
+
+       return fp;
+}
+
+static void
+delete_faderport16_midi_protocol (ControlProtocolDescriptor* /*descriptor*/, ControlProtocol* cp)
+{
+       delete cp;
+}
+
+static bool
+probe_faderport16_midi_protocol (ControlProtocolDescriptor* /*descriptor*/)
+{
+       return FaderPort8::probe ();
+}
+
+static void*
+faderport16_request_buffer_factory (uint32_t num_requests)
+{
+       return FaderPort8::request_factory (num_requests);
+}
+
+static ControlProtocolDescriptor faderport16_midi_descriptor = {
+       /*name :              */    "PreSonus FaderPort16",
+       /*id :                */    "uri://ardour.org/surfaces/faderport16:0",
+       /*ptr :               */    0,
+       /*module :            */    0,
+       /*mandatory :         */    0,
+       /*supports_feedback : */    true,
+       /*probe :             */    probe_faderport16_midi_protocol,
+       /*initialize :        */    new_faderport16_midi_protocol,
+       /*destroy :           */    delete_faderport16_midi_protocol,
+       /*request_buffer_factory */ faderport16_request_buffer_factory
+};
+
+extern "C" ARDOURSURFACE_API
+ControlProtocolDescriptor* protocol_descriptor () {
+       return &faderport16_midi_descriptor;
+}
index da2fb8e300779ee8e5a209360fab8aebe1518491..61e22994428709a19c9086985869193a1cc5ab5a 100644 (file)
@@ -6,6 +6,15 @@ import os
 top = '.'
 out = 'build'
 
+fp8_16_sources = [
+        'faderport8.cc',
+        'fp8_controls.cc',
+        'fp8_strip.cc',
+        'callbacks.cc',
+        'actions.cc',
+        'gui.cc'
+]
+
 def options(opt):
     autowaf.set_options(opt)
 
@@ -14,24 +23,29 @@ def configure(conf):
 
 def build(bld):
     obj = bld(features = 'cxx cxxshlib')
-    obj.source = [
-            'faderport8.cc',
-            'faderport8_interface.cc',
-            'fp8_controls.cc',
-            'fp8_strip.cc',
-            'callbacks.cc',
-            'actions.cc',
-            'gui.cc'
-    ]
-    obj.export_includes = ['.']
+    obj.source       = list(fp8_16_sources)
+    obj.source      += [ 'faderport8_interface.cc' ]
     obj.defines      = [ 'PACKAGE="ardour_faderport8"' ]
     obj.defines     += [ 'ARDOURSURFACE_DLL_EXPORTS' ]
-    obj.includes     = [ '.', './faderport8']
+    obj.includes     = [ '.' ]
     obj.name         = 'libardour_faderport8'
     obj.target       = 'ardour_faderport8'
     obj.uselib       = 'GTKMM GTK GDK XML'
     obj.use          = 'libardour libardour_cp libgtkmm2ext libpbd'
     obj.install_path = os.path.join(bld.env['LIBDIR'], 'surfaces')
 
+    obj = bld(features = 'cxx cxxshlib')
+    obj.source       = list(fp8_16_sources)
+    obj.source      += [ 'faderport16_interface.cc' ]
+    obj.defines      = [ 'PACKAGE="ardour_faderport8"' ]
+    obj.defines     += [ 'ARDOURSURFACE_DLL_EXPORTS' ]
+    obj.defines     += [ 'FADERPORT16' ]
+    obj.includes     = [ '.' ]
+    obj.name         = 'libardour_faderport16'
+    obj.target       = 'ardour_faderport16'
+    obj.uselib       = 'GTKMM GTK GDK XML'
+    obj.use          = 'libardour libardour_cp libgtkmm2ext libpbd'
+    obj.install_path = os.path.join(bld.env['LIBDIR'], 'surfaces')
+
 def shutdown():
     autowaf.shutdown()