diff options
author | Robin Gareus <robin@gareus.org> | 2017-12-12 14:10:07 +0100 |
---|---|---|
committer | Robin Gareus <robin@gareus.org> | 2017-12-12 14:10:07 +0100 |
commit | bac627d0be8aecd38ea6dbbae4ea2c22cc46b77f (patch) | |
tree | 8b24f7d56fca329e96a08e2b7668c71c93537db4 /libs/surfaces/faderport8 | |
parent | 7671a0f6753a69737a0f27268d7a8b8570b8c991 (diff) |
Add FP16 control-surface
Diffstat (limited to 'libs/surfaces/faderport8')
-rw-r--r-- | libs/surfaces/faderport8/faderport16_interface.cc | 81 | ||||
-rw-r--r-- | libs/surfaces/faderport8/wscript | 36 |
2 files changed, 106 insertions, 11 deletions
diff --git a/libs/surfaces/faderport8/faderport16_interface.cc b/libs/surfaces/faderport8/faderport16_interface.cc new file mode 100644 index 0000000000..a73ad21c6e --- /dev/null +++ b/libs/surfaces/faderport8/faderport16_interface.cc @@ -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; +} diff --git a/libs/surfaces/faderport8/wscript b/libs/surfaces/faderport8/wscript index da2fb8e300..61e2299442 100644 --- a/libs/surfaces/faderport8/wscript +++ b/libs/surfaces/faderport8/wscript @@ -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() |