diff --git a/c++/carla-backend/Makefile b/c++/carla-backend/Makefile index f29e153..24d39ec 100644 --- a/c++/carla-backend/Makefile +++ b/c++/carla-backend/Makefile @@ -16,11 +16,13 @@ HAVE_SUIL = $(shell pkg-config --exists suil-0 && echo true) BASE_FLAGS = -O2 -ffast-math -fomit-frame-pointer -fPIC -mtune=generic -msse -mfpmath=sse -Wall -I. -I../carla-includes -I../carla-jackbridge -# CARLA_C_FLAGS = $(BASE_FLAGS) -std=c99 $(CFLAGS) +CARLA_C_FLAGS = $(BASE_FLAGS) -std=c99 $(CFLAGS) CARLA_CXX_FLAGS = $(BASE_FLAGS) -std=c++0x $(CXXFLAGS) CARLA_CXX_FLAGS += $(shell pkg-config --cflags liblo QtCore QtGui) CARLA_CXX_FLAGS += -DQT_NO_DEBUG -DQT_NO_DEBUG_STREAM -DQT_NO_DEBUG_OUTPUT -DNDEBUG + +CARLA_CXX_FLAGS += WANT_LADSPA WANT_DSSI WANT_LV2 WANT_VST CARLA_CXX_FLAGS += -DVESTIGE_HEADER # Comment this line to not use vestige header CARLA_LD_FLAGS = -shared -ldl -lm -fPIC $(LDFLAGS) @@ -90,8 +92,8 @@ carla_backend.so: $(OBJS) # -------------------------------------------------------------- -# .c.o: -# $(CC) -c $< $(CARLA_C_FLAGS) -o $@ +.c.o: + $(CC) -c $< $(CARLA_C_FLAGS) -o $@ .cpp.o: $(CXX) -c $< $(CARLA_CXX_FLAGS) -o $@ diff --git a/c++/carla-backend/Makefile.dbg b/c++/carla-backend/Makefile.dbg index a668c29..30e557e 100644 --- a/c++/carla-backend/Makefile.dbg +++ b/c++/carla-backend/Makefile.dbg @@ -21,6 +21,8 @@ CARLA_C_FLAGS = $(BASE_FLAGS) -std=c99 $(CFLAGS) CARLA_CXX_FLAGS = $(BASE_FLAGS) -std=c++0x $(CXXFLAGS) CARLA_CXX_FLAGS += $(shell pkg-config --cflags liblo QtCore QtGui) CARLA_CXX_FLAGS += -DDEBUG + +CARLA_CXX_FLAGS += WANT_LADSPA WANT_DSSI WANT_LV2 WANT_VST CARLA_CXX_FLAGS += -DVESTIGE_HEADER # Comment this line to not use vestige header CARLA_LD_FLAGS = -shared -ldl -lm -fPIC $(LDFLAGS) @@ -90,8 +92,8 @@ carla_backend.so: $(OBJS) # -------------------------------------------------------------- -# .c.o: -# $(CC) -c $< $(CARLA_C_FLAGS) -o $@ +.c.o: + $(CC) -c $< $(CARLA_C_FLAGS) -o $@ .cpp.o: $(CXX) -c $< $(CARLA_CXX_FLAGS) -o $@ diff --git a/c++/carla-backend/carla_backend_standalone.cpp b/c++/carla-backend/carla_backend_standalone.cpp index 699db40..5717212 100644 --- a/c++/carla-backend/carla_backend_standalone.cpp +++ b/c++/carla-backend/carla_backend_standalone.cpp @@ -1424,7 +1424,7 @@ void run_tests_standalone(short idMax) qDebug("------------------- TEST @%i: set extra data --------------------", id); set_custom_data(id, CarlaBackend::CUSTOM_DATA_STRING, "", ""); set_chunk_data(id, nullptr); - set_gui_data(id, (uintptr_t)1); + set_gui_container(id, (uintptr_t)1); qDebug("------------------- TEST @%i: gui stuff --------------------", id); show_gui(id, false); diff --git a/c++/carla-backend/carla_osc.cpp b/c++/carla-backend/carla_osc.cpp index 2afe7ed..783bf0c 100644 --- a/c++/carla-backend/carla_osc.cpp +++ b/c++/carla-backend/carla_osc.cpp @@ -190,10 +190,12 @@ int CarlaOsc::handleMessage(const char* const path, const int argc, const lo_arg return handle_note_off(plugin, argc, argv, types); // Plugin-specific methods +#ifdef WANT_LV2 if (strcmp(method, "/lv2_atom_transfer") == 0) return handle_lv2_atom_transfer(plugin, argc, argv, types); if (strcmp(method, "/lv2_event_transfer") == 0) return handle_lv2_event_transfer(plugin, argc, argv, types); +#endif // Plugin Bridges if (plugin->hints() & PLUGIN_IS_BRIDGE) diff --git a/c++/carla-backend/carla_osc.h b/c++/carla-backend/carla_osc.h index 7bc52cb..0c2b6d5 100644 --- a/c++/carla-backend/carla_osc.h +++ b/c++/carla-backend/carla_osc.h @@ -118,8 +118,10 @@ private: int handle_note_on(CARLA_OSC_HANDLE_ARGS2); int handle_note_off(CARLA_OSC_HANDLE_ARGS2); +#ifdef WANT_LV2 int handle_lv2_atom_transfer(CARLA_OSC_HANDLE_ARGS2); int handle_lv2_event_transfer(CARLA_OSC_HANDLE_ARGS2); +#endif int handle_bridge_set_input_peak_value(CARLA_OSC_HANDLE_ARGS2); int handle_bridge_set_output_peak_value(CARLA_OSC_HANDLE_ARGS2); diff --git a/c++/carla-backend/dssi.cpp b/c++/carla-backend/dssi.cpp index 4b99bb2..607aecd 100644 --- a/c++/carla-backend/dssi.cpp +++ b/c++/carla-backend/dssi.cpp @@ -16,6 +16,9 @@ */ #include "carla_plugin.h" + +#ifdef WANT_DSSI + #include "carla_dssi.h" CARLA_BACKEND_START_NAMESPACE @@ -1511,10 +1514,21 @@ private: float* paramBuffers; }; +/**@}*/ + +CARLA_BACKEND_END_NAMESPACE + +#else // WANT_DSSI +# warning Building without DSSI support +#endif + +CARLA_BACKEND_START_NAMESPACE + CarlaPlugin* CarlaPlugin::newDSSI(const initializer& init, const void* const extra) { qDebug("CarlaPlugin::newDSSI(%p, \"%s\", \"%s\", \"%s\", %p)", init.engine, init.filename, init.name, init.label, extra); +#ifdef WANT_DSSI short id = init.engine->getNewPluginId(); if (id < 0 || id > CarlaEngine::maxPluginNumber()) @@ -1551,8 +1565,10 @@ CarlaPlugin* CarlaPlugin::newDSSI(const initializer& init, const void* const ext plugin->registerToOsc(); return plugin; +#else + setLastError("DSSI support not available"); + return nullptr; +#endif } -/**@}*/ - CARLA_BACKEND_END_NAMESPACE diff --git a/c++/carla-backend/fluidsynth.cpp b/c++/carla-backend/fluidsynth.cpp index d85e6e2..22011e6 100644 --- a/c++/carla-backend/fluidsynth.cpp +++ b/c++/carla-backend/fluidsynth.cpp @@ -16,20 +16,17 @@ */ #ifdef BUILD_BRIDGE -#error Should not use fluidsynth for bridges! +# error Should not use fluidsynth for bridges! #endif #include "carla_plugin.h" #ifdef WANT_FLUIDSYNTH + #include "carla_fluidsynth.h" -#else -#warning fluidsynth not available (no SF2 support) -#endif CARLA_BACKEND_START_NAMESPACE -#ifdef WANT_FLUIDSYNTH /*! * @defgroup CarlaBackendFluidSynthPlugin Carla Backend FluidSynth Plugin @@ -1315,7 +1312,16 @@ private: const char* m_label; }; -#endif // WANT_FLUIDSYNTH + +/**@}*/ + +CARLA_BACKEND_END_NAMESPACE + +#else // WANT_FLUIDSYNTH +# warning fluidsynth not available (no SF2 support) +#endif + +CARLA_BACKEND_START_NAMESPACE CarlaPlugin* CarlaPlugin::newSF2(const initializer& init) { @@ -1354,6 +1360,4 @@ CarlaPlugin* CarlaPlugin::newSF2(const initializer& init) #endif } -/**@}*/ - CARLA_BACKEND_END_NAMESPACE diff --git a/c++/carla-backend/ladspa.cpp b/c++/carla-backend/ladspa.cpp index 2e97f47..182601d 100644 --- a/c++/carla-backend/ladspa.cpp +++ b/c++/carla-backend/ladspa.cpp @@ -16,6 +16,9 @@ */ #include "carla_plugin.h" + +#ifdef WANT_LADSPA + #include "carla_ladspa.h" CARLA_BACKEND_START_NAMESPACE @@ -1119,10 +1122,21 @@ private: float* paramBuffers; }; +/**@}*/ + +CARLA_BACKEND_END_NAMESPACE + +#else // WANT_LADSPA +# warning Building without LADSPA support +#endif + +CARLA_BACKEND_START_NAMESPACE + CarlaPlugin* CarlaPlugin::newLADSPA(const initializer& init, const void* const extra) { qDebug("CarlaPlugin::newLADSPA(%p, \"%s\", \"%s\", \"%s\", %p)", init.engine, init.filename, init.name, init.label, extra); +#ifdef WANT_LADSPA short id = init.engine->getNewPluginId(); if (id < 0 || id > CarlaEngine::maxPluginNumber()) @@ -1159,8 +1173,10 @@ CarlaPlugin* CarlaPlugin::newLADSPA(const initializer& init, const void* const e plugin->registerToOsc(); return plugin; +#else + setLastError("LADSPA support not available"); + return nullptr; +#endif } -/**@}*/ - CARLA_BACKEND_END_NAMESPACE diff --git a/c++/carla-backend/linuxsampler.cpp b/c++/carla-backend/linuxsampler.cpp index 77b2e0d..faf263b 100644 --- a/c++/carla-backend/linuxsampler.cpp +++ b/c++/carla-backend/linuxsampler.cpp @@ -15,30 +15,22 @@ * For a full copy of the GNU General Public License see the COPYING file */ +// TODO - setMidiProgram() + #ifdef BUILD_BRIDGE -#error Should not use linuxsampler for bridges! +# error Should not use linuxsampler for bridges! #endif -// TODO - setMidiProgram() - #include "carla_plugin.h" #ifdef WANT_LINUXSAMPLER + #include "carla_linuxsampler.h" -#else -#warning linuxsampler not available (no GIG and SFZ support) -#endif #include CARLA_BACKEND_START_NAMESPACE -#if 0 -} /* adjust editor indent */ -#endif - -#ifdef WANT_LINUXSAMPLER - /*! * @defgroup CarlaBackendLinuxSamplerPlugin Carla Backend LinuxSampler Plugin * @@ -618,7 +610,16 @@ CarlaPlugin* LinuxSamplerPlugin::newLinuxSampler(const initializer& init, bool i return plugin; } -#endif // WANT_LINUXSAMPLER + +/**@}*/ + +CARLA_BACKEND_END_NAMESPACE + +#else // WANT_LINUXSAMPLER +# warning linuxsampler not available (no GIG and SFZ support) +#endif + +CARLA_BACKEND_START_NAMESPACE CarlaPlugin* CarlaPlugin::newGIG(const initializer& init) { @@ -642,6 +643,4 @@ CarlaPlugin* CarlaPlugin::newSFZ(const initializer& init) #endif } -/**@}*/ - CARLA_BACKEND_END_NAMESPACE diff --git a/c++/carla-backend/lv2.cpp b/c++/carla-backend/lv2.cpp index 9f1e87a..89a2954 100644 --- a/c++/carla-backend/lv2.cpp +++ b/c++/carla-backend/lv2.cpp @@ -16,6 +16,9 @@ */ #include "carla_plugin.h" + +#ifdef WANT_LV2 + #include "carla_lv2.h" #include "lv2_atom_queue.h" @@ -4410,49 +4413,6 @@ private: uint32_t lastTimePosFrame; }; -CarlaPlugin* CarlaPlugin::newLV2(const initializer& init) -{ - qDebug("CarlaPlugin::newLV2(%p, \"%s\", \"%s\", \"%s\")", init.engine, init.filename, init.name, init.label); - - short id = init.engine->getNewPluginId(); - - if (id < 0 || id > CarlaEngine::maxPluginNumber()) - { - setLastError("Maximum number of plugins reached"); - return nullptr; - } - - Lv2Plugin* const plugin = new Lv2Plugin(init.engine, id); - - if (! plugin->init(init.filename, init.name, init.label)) - { - delete plugin; - return nullptr; - } - - plugin->reload(); - -#ifndef BUILD_BRIDGE - if (carlaOptions.processMode == PROCESS_MODE_CONTINUOUS_RACK) - { - const uint32_t ins = plugin->audioInCount(); - const uint32_t outs = plugin->audioOutCount(); - - if (ins > 2 || outs > 2 || (ins != outs && ins != 0 && outs != 0)) - { - setLastError("Carla's rack mode can only work with Mono or Stereo LV2 plugins, sorry!"); - delete plugin; - return nullptr; - } - } -#endif - - plugin->registerToOsc(); - plugin->updateUi(); - - return plugin; -} - /**@}*/ // ------------------------------------------------------------------------------------------------------------------- @@ -4500,3 +4460,59 @@ int CarlaOsc::handle_lv2_event_transfer(CARLA_OSC_HANDLE_ARGS2) } CARLA_BACKEND_END_NAMESPACE + +#else // WANT_LV2 +# warning Building without LV2 support +#endif + +CARLA_BACKEND_START_NAMESPACE + +CarlaPlugin* CarlaPlugin::newLV2(const initializer& init) +{ + qDebug("CarlaPlugin::newLV2(%p, \"%s\", \"%s\", \"%s\")", init.engine, init.filename, init.name, init.label); + +#ifdef WANT_LV2 + short id = init.engine->getNewPluginId(); + + if (id < 0 || id > CarlaEngine::maxPluginNumber()) + { + setLastError("Maximum number of plugins reached"); + return nullptr; + } + + Lv2Plugin* const plugin = new Lv2Plugin(init.engine, id); + + if (! plugin->init(init.filename, init.name, init.label)) + { + delete plugin; + return nullptr; + } + + plugin->reload(); + +#ifndef BUILD_BRIDGE + if (carlaOptions.processMode == PROCESS_MODE_CONTINUOUS_RACK) + { + const uint32_t ins = plugin->audioInCount(); + const uint32_t outs = plugin->audioOutCount(); + + if (ins > 2 || outs > 2 || (ins != outs && ins != 0 && outs != 0)) + { + setLastError("Carla's rack mode can only work with Mono or Stereo LV2 plugins, sorry!"); + delete plugin; + return nullptr; + } + } +#endif + + plugin->registerToOsc(); + plugin->updateUi(); + + return plugin; +#else + setLastError("LV2 support not available"); + return nullptr; +#endif +} + +CARLA_BACKEND_END_NAMESPACE diff --git a/c++/carla-backend/vst.cpp b/c++/carla-backend/vst.cpp index e35c178..5e33b20 100644 --- a/c++/carla-backend/vst.cpp +++ b/c++/carla-backend/vst.cpp @@ -16,10 +16,13 @@ */ #include "carla_plugin.h" + +#ifdef WANT_VST + #include "carla_vst.h" #ifdef Q_WS_X11 -#include +# include #endif CARLA_BACKEND_START_NAMESPACE @@ -2225,10 +2228,21 @@ private: int unique2; }; +/**@}*/ + +CARLA_BACKEND_END_NAMESPACE + +#else // WANT_VST +# warning Building without VST support +#endif + +CARLA_BACKEND_START_NAMESPACE + CarlaPlugin* CarlaPlugin::newVST(const initializer& init) { qDebug("CarlaPlugin::newVST(%p, \"%s\", \"%s\", \"%s\")", init.engine, init.filename, init.name, init.label); +#ifdef WANT_VST short id = init.engine->getNewPluginId(); if (id < 0 || id > CarlaEngine::maxPluginNumber()) @@ -2268,8 +2282,10 @@ CarlaPlugin* CarlaPlugin::newVST(const initializer& init) plugin->registerToOsc(); return plugin; +#else + setLastError("VST support not available"); + return nullptr; +#endif } -/**@}*/ - CARLA_BACKEND_END_NAMESPACE