| @@ -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 | 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 = $(BASE_FLAGS) -std=c++0x $(CXXFLAGS) | ||||
| CARLA_CXX_FLAGS += $(shell pkg-config --cflags liblo QtCore QtGui) | 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 += -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_CXX_FLAGS += -DVESTIGE_HEADER # Comment this line to not use vestige header | ||||
| CARLA_LD_FLAGS = -shared -ldl -lm -fPIC $(LDFLAGS) | 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: | .cpp.o: | ||||
| $(CXX) -c $< $(CARLA_CXX_FLAGS) -o $@ | $(CXX) -c $< $(CARLA_CXX_FLAGS) -o $@ | ||||
| @@ -21,6 +21,8 @@ CARLA_C_FLAGS = $(BASE_FLAGS) -std=c99 $(CFLAGS) | |||||
| CARLA_CXX_FLAGS = $(BASE_FLAGS) -std=c++0x $(CXXFLAGS) | CARLA_CXX_FLAGS = $(BASE_FLAGS) -std=c++0x $(CXXFLAGS) | ||||
| CARLA_CXX_FLAGS += $(shell pkg-config --cflags liblo QtCore QtGui) | CARLA_CXX_FLAGS += $(shell pkg-config --cflags liblo QtCore QtGui) | ||||
| CARLA_CXX_FLAGS += -DDEBUG | 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_CXX_FLAGS += -DVESTIGE_HEADER # Comment this line to not use vestige header | ||||
| CARLA_LD_FLAGS = -shared -ldl -lm -fPIC $(LDFLAGS) | 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: | .cpp.o: | ||||
| $(CXX) -c $< $(CARLA_CXX_FLAGS) -o $@ | $(CXX) -c $< $(CARLA_CXX_FLAGS) -o $@ | ||||
| @@ -1424,7 +1424,7 @@ void run_tests_standalone(short idMax) | |||||
| qDebug("------------------- TEST @%i: set extra data --------------------", id); | qDebug("------------------- TEST @%i: set extra data --------------------", id); | ||||
| set_custom_data(id, CarlaBackend::CUSTOM_DATA_STRING, "", ""); | set_custom_data(id, CarlaBackend::CUSTOM_DATA_STRING, "", ""); | ||||
| set_chunk_data(id, nullptr); | 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); | qDebug("------------------- TEST @%i: gui stuff --------------------", id); | ||||
| show_gui(id, false); | show_gui(id, false); | ||||
| @@ -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); | return handle_note_off(plugin, argc, argv, types); | ||||
| // Plugin-specific methods | // Plugin-specific methods | ||||
| #ifdef WANT_LV2 | |||||
| if (strcmp(method, "/lv2_atom_transfer") == 0) | if (strcmp(method, "/lv2_atom_transfer") == 0) | ||||
| return handle_lv2_atom_transfer(plugin, argc, argv, types); | return handle_lv2_atom_transfer(plugin, argc, argv, types); | ||||
| if (strcmp(method, "/lv2_event_transfer") == 0) | if (strcmp(method, "/lv2_event_transfer") == 0) | ||||
| return handle_lv2_event_transfer(plugin, argc, argv, types); | return handle_lv2_event_transfer(plugin, argc, argv, types); | ||||
| #endif | |||||
| // Plugin Bridges | // Plugin Bridges | ||||
| if (plugin->hints() & PLUGIN_IS_BRIDGE) | if (plugin->hints() & PLUGIN_IS_BRIDGE) | ||||
| @@ -118,8 +118,10 @@ private: | |||||
| int handle_note_on(CARLA_OSC_HANDLE_ARGS2); | int handle_note_on(CARLA_OSC_HANDLE_ARGS2); | ||||
| int handle_note_off(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_atom_transfer(CARLA_OSC_HANDLE_ARGS2); | ||||
| int handle_lv2_event_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_input_peak_value(CARLA_OSC_HANDLE_ARGS2); | ||||
| int handle_bridge_set_output_peak_value(CARLA_OSC_HANDLE_ARGS2); | int handle_bridge_set_output_peak_value(CARLA_OSC_HANDLE_ARGS2); | ||||
| @@ -16,6 +16,9 @@ | |||||
| */ | */ | ||||
| #include "carla_plugin.h" | #include "carla_plugin.h" | ||||
| #ifdef WANT_DSSI | |||||
| #include "carla_dssi.h" | #include "carla_dssi.h" | ||||
| CARLA_BACKEND_START_NAMESPACE | CARLA_BACKEND_START_NAMESPACE | ||||
| @@ -1511,10 +1514,21 @@ private: | |||||
| float* paramBuffers; | 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) | 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); | 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(); | short id = init.engine->getNewPluginId(); | ||||
| if (id < 0 || id > CarlaEngine::maxPluginNumber()) | if (id < 0 || id > CarlaEngine::maxPluginNumber()) | ||||
| @@ -1551,8 +1565,10 @@ CarlaPlugin* CarlaPlugin::newDSSI(const initializer& init, const void* const ext | |||||
| plugin->registerToOsc(); | plugin->registerToOsc(); | ||||
| return plugin; | return plugin; | ||||
| #else | |||||
| setLastError("DSSI support not available"); | |||||
| return nullptr; | |||||
| #endif | |||||
| } | } | ||||
| /**@}*/ | |||||
| CARLA_BACKEND_END_NAMESPACE | CARLA_BACKEND_END_NAMESPACE | ||||
| @@ -16,20 +16,17 @@ | |||||
| */ | */ | ||||
| #ifdef BUILD_BRIDGE | #ifdef BUILD_BRIDGE | ||||
| #error Should not use fluidsynth for bridges! | |||||
| # error Should not use fluidsynth for bridges! | |||||
| #endif | #endif | ||||
| #include "carla_plugin.h" | #include "carla_plugin.h" | ||||
| #ifdef WANT_FLUIDSYNTH | #ifdef WANT_FLUIDSYNTH | ||||
| #include "carla_fluidsynth.h" | #include "carla_fluidsynth.h" | ||||
| #else | |||||
| #warning fluidsynth not available (no SF2 support) | |||||
| #endif | |||||
| CARLA_BACKEND_START_NAMESPACE | CARLA_BACKEND_START_NAMESPACE | ||||
| #ifdef WANT_FLUIDSYNTH | |||||
| /*! | /*! | ||||
| * @defgroup CarlaBackendFluidSynthPlugin Carla Backend FluidSynth Plugin | * @defgroup CarlaBackendFluidSynthPlugin Carla Backend FluidSynth Plugin | ||||
| @@ -1315,7 +1312,16 @@ private: | |||||
| const char* m_label; | 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) | CarlaPlugin* CarlaPlugin::newSF2(const initializer& init) | ||||
| { | { | ||||
| @@ -1354,6 +1360,4 @@ CarlaPlugin* CarlaPlugin::newSF2(const initializer& init) | |||||
| #endif | #endif | ||||
| } | } | ||||
| /**@}*/ | |||||
| CARLA_BACKEND_END_NAMESPACE | CARLA_BACKEND_END_NAMESPACE | ||||
| @@ -16,6 +16,9 @@ | |||||
| */ | */ | ||||
| #include "carla_plugin.h" | #include "carla_plugin.h" | ||||
| #ifdef WANT_LADSPA | |||||
| #include "carla_ladspa.h" | #include "carla_ladspa.h" | ||||
| CARLA_BACKEND_START_NAMESPACE | CARLA_BACKEND_START_NAMESPACE | ||||
| @@ -1119,10 +1122,21 @@ private: | |||||
| float* paramBuffers; | 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) | 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); | 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(); | short id = init.engine->getNewPluginId(); | ||||
| if (id < 0 || id > CarlaEngine::maxPluginNumber()) | if (id < 0 || id > CarlaEngine::maxPluginNumber()) | ||||
| @@ -1159,8 +1173,10 @@ CarlaPlugin* CarlaPlugin::newLADSPA(const initializer& init, const void* const e | |||||
| plugin->registerToOsc(); | plugin->registerToOsc(); | ||||
| return plugin; | return plugin; | ||||
| #else | |||||
| setLastError("LADSPA support not available"); | |||||
| return nullptr; | |||||
| #endif | |||||
| } | } | ||||
| /**@}*/ | |||||
| CARLA_BACKEND_END_NAMESPACE | CARLA_BACKEND_END_NAMESPACE | ||||
| @@ -15,30 +15,22 @@ | |||||
| * For a full copy of the GNU General Public License see the COPYING file | * For a full copy of the GNU General Public License see the COPYING file | ||||
| */ | */ | ||||
| // TODO - setMidiProgram() | |||||
| #ifdef BUILD_BRIDGE | #ifdef BUILD_BRIDGE | ||||
| #error Should not use linuxsampler for bridges! | |||||
| # error Should not use linuxsampler for bridges! | |||||
| #endif | #endif | ||||
| // TODO - setMidiProgram() | |||||
| #include "carla_plugin.h" | #include "carla_plugin.h" | ||||
| #ifdef WANT_LINUXSAMPLER | #ifdef WANT_LINUXSAMPLER | ||||
| #include "carla_linuxsampler.h" | #include "carla_linuxsampler.h" | ||||
| #else | |||||
| #warning linuxsampler not available (no GIG and SFZ support) | |||||
| #endif | |||||
| #include <QtCore/QFileInfo> | #include <QtCore/QFileInfo> | ||||
| CARLA_BACKEND_START_NAMESPACE | CARLA_BACKEND_START_NAMESPACE | ||||
| #if 0 | |||||
| } /* adjust editor indent */ | |||||
| #endif | |||||
| #ifdef WANT_LINUXSAMPLER | |||||
| /*! | /*! | ||||
| * @defgroup CarlaBackendLinuxSamplerPlugin Carla Backend LinuxSampler Plugin | * @defgroup CarlaBackendLinuxSamplerPlugin Carla Backend LinuxSampler Plugin | ||||
| * | * | ||||
| @@ -618,7 +610,16 @@ CarlaPlugin* LinuxSamplerPlugin::newLinuxSampler(const initializer& init, bool i | |||||
| return plugin; | 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) | CarlaPlugin* CarlaPlugin::newGIG(const initializer& init) | ||||
| { | { | ||||
| @@ -642,6 +643,4 @@ CarlaPlugin* CarlaPlugin::newSFZ(const initializer& init) | |||||
| #endif | #endif | ||||
| } | } | ||||
| /**@}*/ | |||||
| CARLA_BACKEND_END_NAMESPACE | CARLA_BACKEND_END_NAMESPACE | ||||
| @@ -16,6 +16,9 @@ | |||||
| */ | */ | ||||
| #include "carla_plugin.h" | #include "carla_plugin.h" | ||||
| #ifdef WANT_LV2 | |||||
| #include "carla_lv2.h" | #include "carla_lv2.h" | ||||
| #include "lv2_atom_queue.h" | #include "lv2_atom_queue.h" | ||||
| @@ -4410,49 +4413,6 @@ private: | |||||
| uint32_t lastTimePosFrame; | 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 | 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 | |||||
| @@ -16,10 +16,13 @@ | |||||
| */ | */ | ||||
| #include "carla_plugin.h" | #include "carla_plugin.h" | ||||
| #ifdef WANT_VST | |||||
| #include "carla_vst.h" | #include "carla_vst.h" | ||||
| #ifdef Q_WS_X11 | #ifdef Q_WS_X11 | ||||
| #include <QtGui/QX11Info> | |||||
| # include <QtGui/QX11Info> | |||||
| #endif | #endif | ||||
| CARLA_BACKEND_START_NAMESPACE | CARLA_BACKEND_START_NAMESPACE | ||||
| @@ -2225,10 +2228,21 @@ private: | |||||
| int unique2; | 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) | CarlaPlugin* CarlaPlugin::newVST(const initializer& init) | ||||
| { | { | ||||
| qDebug("CarlaPlugin::newVST(%p, \"%s\", \"%s\", \"%s\")", init.engine, init.filename, init.name, init.label); | qDebug("CarlaPlugin::newVST(%p, \"%s\", \"%s\", \"%s\")", init.engine, init.filename, init.name, init.label); | ||||
| #ifdef WANT_VST | |||||
| short id = init.engine->getNewPluginId(); | short id = init.engine->getNewPluginId(); | ||||
| if (id < 0 || id > CarlaEngine::maxPluginNumber()) | if (id < 0 || id > CarlaEngine::maxPluginNumber()) | ||||
| @@ -2268,8 +2282,10 @@ CarlaPlugin* CarlaPlugin::newVST(const initializer& init) | |||||
| plugin->registerToOsc(); | plugin->registerToOsc(); | ||||
| return plugin; | return plugin; | ||||
| #else | |||||
| setLastError("VST support not available"); | |||||
| return nullptr; | |||||
| #endif | |||||
| } | } | ||||
| /**@}*/ | |||||
| CARLA_BACKEND_END_NAMESPACE | CARLA_BACKEND_END_NAMESPACE | ||||