| @@ -141,14 +141,6 @@ doxygen: | |||
| # -------------------------------------------------------------- | |||
| install-dev: | |||
| install -d $(DESTDIR)$(PREFIX)/include/carla/ | |||
| install -d $(DESTDIR)$(PREFIX)/include/carla/includes/ | |||
| install -m 644 source/backend/CarlaBackend.h $(DESTDIR)$(PREFIX)/include/carla/ | |||
| install -m 644 source/backend/CarlaHost.h $(DESTDIR)$(PREFIX)/include/carla/ | |||
| install -m 644 source/includes/CarlaDefines.h $(DESTDIR)$(PREFIX)/include/carla/includes/ | |||
| install: | |||
| # Create directories | |||
| install -d $(DESTDIR)$(PREFIX)/bin/ | |||
| @@ -157,6 +149,9 @@ install: | |||
| install -d $(DESTDIR)$(PREFIX)/lib/carla/resources/nekofilter/ | |||
| install -d $(DESTDIR)$(PREFIX)/lib/carla/resources/zynaddsubfx/ | |||
| install -d $(DESTDIR)$(PREFIX)/lib/lv2/carla-native.lv2/ | |||
| install -d $(DESTDIR)$(PREFIX)/lib/pkgconfig/ | |||
| install -d $(DESTDIR)$(PREFIX)/include/carla/ | |||
| install -d $(DESTDIR)$(PREFIX)/include/carla/includes/ | |||
| install -d $(DESTDIR)$(PREFIX)/share/applications/ | |||
| install -d $(DESTDIR)$(PREFIX)/share/carla/ | |||
| install -d $(DESTDIR)$(PREFIX)/share/icons/hicolor/16x16/apps/ | |||
| @@ -203,6 +198,9 @@ install: | |||
| # Install mime package | |||
| install -m 644 data/carla.xml $(DESTDIR)$(PREFIX)/share/mime/packages/ | |||
| # Install pkgconfig file | |||
| install -m 644 data/carla-standalone.pc $(DESTDIR)$(PREFIX)/lib/pkgconfig/ | |||
| # Install backend | |||
| install -m 644 \ | |||
| source/backend/*.so \ | |||
| @@ -230,12 +228,20 @@ install: | |||
| source/carla-rack \ | |||
| $(DESTDIR)$(PREFIX)/share/carla/ | |||
| # Install headers | |||
| install -m 644 source/backend/CarlaBackend.h $(DESTDIR)$(PREFIX)/include/carla/ | |||
| install -m 644 source/backend/CarlaHost.h $(DESTDIR)$(PREFIX)/include/carla/ | |||
| install -m 644 source/includes/CarlaDefines.h $(DESTDIR)$(PREFIX)/include/carla/includes/ | |||
| # Install resources | |||
| install -m 644 source/modules/carla_native/resources/*-ui $(DESTDIR)$(PREFIX)/lib/carla/resources/ | |||
| install -m 644 source/modules/carla_native/resources/*.py $(DESTDIR)$(PREFIX)/lib/carla/resources/ | |||
| install -m 644 source/modules/carla_native/resources/nekofilter/*.png $(DESTDIR)$(PREFIX)/lib/carla/resources/nekofilter/ | |||
| install -m 644 source/modules/carla_native/resources/zynaddsubfx/*.png $(DESTDIR)$(PREFIX)/lib/carla/resources/zynaddsubfx/ | |||
| # Install theme | |||
| $(MAKE) STYLES_DIR=$(DESTDIR)$(PREFIX)/lib/carla/styles install-main -C source/modules/theme | |||
| # Adjust PREFIX value in script files | |||
| sed -i "s/X-PREFIX-X/$(SED_PREFIX)/" \ | |||
| $(DESTDIR)$(PREFIX)/bin/carla \ | |||
| @@ -244,7 +250,8 @@ install: | |||
| $(DESTDIR)$(PREFIX)/bin/carla-patchbay \ | |||
| $(DESTDIR)$(PREFIX)/bin/carla-rack \ | |||
| $(DESTDIR)$(PREFIX)/bin/carla-settings \ | |||
| $(DESTDIR)$(PREFIX)/bin/carla-single | |||
| $(DESTDIR)$(PREFIX)/bin/carla-single \ | |||
| $(DESTDIR)$(PREFIX)/lib/pkgconfig/carla-standalone.pc | |||
| # Set plugin resources | |||
| cd $(DESTDIR)$(PREFIX)/lib/lv2/carla-native.lv2/ && \ | |||
| @@ -1,10 +1,10 @@ | |||
| prefix=X-PREFIX-X | |||
| exec_prefix=${prefix} | |||
| libdir=${exec_prefix}/lib | |||
| includedir=${prefix}/include | |||
| libdir=${exec_prefix}/lib/carla | |||
| includedir=${prefix}/include/carla | |||
| Name: carla-standalone | |||
| Version: 1.9.1 | |||
| Description: Carla Host Standalone | |||
| Libs: -L${libdir} | |||
| Cflags: -I${includedir}/carla -I${includedir}/carla/includes | |||
| Libs: -Wl,rpath=${libdir} -L${libdir} -lcarla_standalone2 | |||
| Cflags: -I${includedir} -I${includedir}/includes | |||
| @@ -149,7 +149,43 @@ HAVE_JUCE = true | |||
| endif | |||
| # -------------------------------------------------------------- | |||
| # Set libs stuff | |||
| # Set base stuff | |||
| ifeq ($(HAVE_FFMPEG),true) | |||
| BASE_FLAGS += -DHAVE_FFMPEG | |||
| endif | |||
| ifeq ($(HAVE_JUCE),true) | |||
| BASE_FLAGS += -DHAVE_JUCE | |||
| endif | |||
| ifeq ($(HAVE_OPENGL),true) | |||
| BASE_FLAGS += -DHAVE_OPENGL | |||
| endif | |||
| # -------------------------------------------------------------- | |||
| # Set libs stuff (part 1) | |||
| LIBLO_FLAGS = $(shell pkg-config --cflags liblo) | |||
| LIBLO_LIBS = $(shell pkg-config --libs liblo) | |||
| ifeq ($(HAVE_FLUIDSYNTH),true) | |||
| FLUIDSYNTH_FLAGS = $(shell pkg-config --cflags fluidsynth) | |||
| FLUIDSYNTH_LIBS = $(shell pkg-config --libs fluidsynth) | |||
| endif | |||
| ifeq ($(HAVE_LINUXSAMPLER),true) | |||
| LINUXSAMPLER_FLAGS = $(shell pkg-config --cflags linuxsampler) | |||
| LINUXSAMPLER_LIBS = $(shell pkg-config --libs linuxsampler) | |||
| ifeq ($(WIN32),true) | |||
| LINUXSAMPLER_LIBS += -lrpcrt4 | |||
| endif | |||
| endif | |||
| RTMEMPOOL_LIBS = -lpthread | |||
| # -------------------------------------------------------------- | |||
| # Set libs stuff (part 2) | |||
| RTAUDIO_FLAGS = -DHAVE_GETTIMEOFDAY -D__UNIX_JACK__ | |||
| @@ -158,8 +194,6 @@ RTAUDIO_FLAGS += -D__RTAUDIO_DEBUG__ | |||
| RTMIDI_FLAGS += -D__RTMIDI_DEBUG__ | |||
| endif | |||
| RTMEMPOOL_LIBS = -lpthread | |||
| ifeq ($(HAIKU),true) | |||
| endif | |||
| @@ -9,23 +9,11 @@ include ../../Makefile.mk | |||
| # -------------------------------------------------------------- | |||
| BUILD_CXX_FLAGS += -I. -I.. -I../../includes -I../../utils -isystem ../../modules | |||
| BUILD_CXX_FLAGS += $(shell pkg-config --cflags liblo) | |||
| BUILD_CXX_FLAGS += $(LIBLO_FLAGS) | |||
| BUILD_CXX_FLAGS += $(QTCORE_FLAGS) | |||
| BUILD_CXX_FLAGS += $(QTXML_FLAGS) | |||
| ifeq ($(HAVE_FFMPEG),true) | |||
| BUILD_CXX_FLAGS += -DHAVE_FFMPEG | |||
| endif | |||
| ifeq ($(HAVE_JUCE),true) | |||
| BUILD_CXX_FLAGS += -DHAVE_JUCE | |||
| endif | |||
| ifeq ($(HAVE_OPENGL),true) | |||
| BUILD_CXX_FLAGS += -DHAVE_OPENGL | |||
| endif | |||
| # -------------------------------------------------------------- | |||
| BUILD_CXX_FLAGS += -DWANT_NATIVE | |||
| @@ -8,11 +8,6 @@ include ../Makefile.mk | |||
| # -------------------------------------------------------------- | |||
| BUILD_CXX_FLAGS += $(RTAUDIO_FLAGS) | |||
| BUILD_CXX_FLAGS += $(RTMIDI_FLAGS) | |||
| # -------------------------------------------------------------- | |||
| OBJS = \ | |||
| CarlaEngine.cpp.o \ | |||
| CarlaEngineOsc.cpp.o \ | |||
| @@ -35,8 +30,8 @@ HEADERS = \ | |||
| ../CarlaBackend.h ../CarlaEngine.hpp ../CarlaPlugin.hpp \ | |||
| CarlaEngineInternal.hpp CarlaEngineOsc.hpp CarlaEngineThread.hpp | |||
| TARGETa = ../libcarla_engine.a | |||
| TARGETp = ../libcarla_engine_plugin.a | |||
| TARGETa = ../carla_engine.a | |||
| TARGETp = ../carla_engine_plugin.a | |||
| # -------------------------------------------------------------- | |||
| @@ -50,6 +45,9 @@ all: $(TARGETa) $(TARGETp) | |||
| %.cpp.exp.o: %.cpp $(HEADERS) | |||
| $(CXX) $< $(BUILD_CXX_FLAGS) -DCARLA_PLUGIN_EXPORT -c -o $@ | |||
| CarlaEngineRtAudio.cpp.o: CarlaEngineRtAudio.cpp $(HEADERS) | |||
| $(CXX) $< $(BUILD_CXX_FLAGS) $(RTAUDIO_FLAGS) $(RTMIDI_FLAGS) -c -o $@ | |||
| $(TARGETa): $(OBJSa) | |||
| $(RM) $@ | |||
| $(AR) crs $@ $^ | |||
| @@ -751,7 +751,7 @@ public: | |||
| // disable any output sound | |||
| for (i=0; i < pData->audioOut.count; ++i) | |||
| { | |||
| #ifdef USE_JUCE | |||
| #ifdef HAVE_JUCE | |||
| FloatVectorOperations::clear(outBuffer[i], frames); | |||
| #else | |||
| carla_zeroFloat(outBuffer[i], frames); | |||
| @@ -1061,7 +1061,7 @@ public: | |||
| { | |||
| for (i=0; i < pData->audioOut.count; ++i) | |||
| { | |||
| #ifdef USE_JUCE | |||
| #ifdef HAVE_JUCE | |||
| FloatVectorOperations::clear(outBuffer[i], frames); | |||
| #else | |||
| #endif | |||
| @@ -1075,7 +1075,7 @@ public: | |||
| for (i=0; i < fInfo.aIns; ++i) | |||
| { | |||
| #ifdef USE_JUCE | |||
| #ifdef HAVE_JUCE | |||
| FloatVectorOperations::copy(fShmAudioPool.data + (i * frames), inBuffer[i], frames); | |||
| #else | |||
| #endif | |||
| @@ -1095,7 +1095,7 @@ public: | |||
| for (i=0; i < fInfo.aOuts; ++i) | |||
| { | |||
| #ifdef USE_JUCE | |||
| #ifdef HAVE_JUCE | |||
| FloatVectorOperations::copy(outBuffer[i], fShmAudioPool.data + ((i + fInfo.aIns) * frames), frames); | |||
| #else | |||
| #endif | |||
| @@ -1132,7 +1132,7 @@ public: | |||
| if (isPair) | |||
| { | |||
| CARLA_ASSERT(i+1 < pData->audioOut.count); | |||
| #ifdef USE_JUCE | |||
| #ifdef HAVE_JUCE | |||
| FloatVectorOperations::copy(oldBufLeft, outBuffer[i], frames); | |||
| #else | |||
| #endif | |||
| @@ -812,23 +812,23 @@ bool CarlaPlugin::saveStateToFile(const char* const filename) | |||
| CARLA_SAFE_ASSERT_RETURN(filename != nullptr && filename[0] != '\0', false); | |||
| carla_debug("CarlaPlugin::saveStateToFile(\"%s\")", filename); | |||
| #ifdef USE_JUCE | |||
| File file(filename); | |||
| QFile file(filename); | |||
| String content; | |||
| if (! file.open(QIODevice::WriteOnly | QIODevice::Text)) | |||
| return false; | |||
| QString content; | |||
| fillXmlStringFromSaveState(content, getSaveState()); | |||
| MemoryOutputStream out; | |||
| QTextStream out(&file); | |||
| out << "<?xml version='1.0' encoding='UTF-8'?>\n"; | |||
| out << "<!DOCTYPE CARLA-PRESET>\n"; | |||
| out << "<CARLA-PRESET VERSION='2.0'>\n"; | |||
| out << content; | |||
| out << "</CARLA-PRESET>\n"; | |||
| return file.replaceWithData(out.getData(), out.getDataSize()); | |||
| #else | |||
| return false; | |||
| #endif | |||
| file.close(); | |||
| return true; | |||
| } | |||
| bool CarlaPlugin::loadStateFromFile(const char* const filename) | |||
| @@ -836,38 +836,28 @@ bool CarlaPlugin::loadStateFromFile(const char* const filename) | |||
| CARLA_SAFE_ASSERT_RETURN(filename != nullptr && filename[0] != '\0', false); | |||
| carla_debug("CarlaPlugin::loadStateFromFile(\"%s\")", filename); | |||
| #ifdef USE_JUCE | |||
| File file(filename); | |||
| QFile file(filename); | |||
| XmlDocument xml(file); | |||
| if (! file.open(QIODevice::ReadOnly | QIODevice::Text)) | |||
| return false; | |||
| if (XmlElement* const xmlCheck = xml.getDocumentElement(true)) | |||
| { | |||
| if (xmlCheck->getTagName().equalsIgnoreCase("carla-preset")) | |||
| { | |||
| if (XmlElement* const xmlElem = xml.getDocumentElement(false)) | |||
| { | |||
| pData->saveState.reset(); | |||
| fillSaveStateFromXmlElement(pData->saveState, xmlElem); | |||
| loadSaveState(pData->saveState); | |||
| QDomDocument xml; | |||
| xml.setContent(file.readAll()); | |||
| file.close(); | |||
| delete xmlElem; | |||
| delete xmlCheck; | |||
| return true; | |||
| } | |||
| else | |||
| pData->engine->setLastError("Failed to parse file"); | |||
| } | |||
| else | |||
| pData->engine->setLastError("Invalid Carla preset file"); | |||
| QDomNode xmlNode(xml.documentElement()); | |||
| delete xmlCheck; | |||
| if (xmlNode.toElement().tagName().compare("carla-preset", Qt::CaseInsensitive) == 0) | |||
| { | |||
| pData->engine->setLastError("Not a valid Carla preset file"); | |||
| return false; | |||
| } | |||
| #endif | |||
| pData->engine->setLastError("Not a valid file"); | |||
| return false; | |||
| pData->saveState.reset(); | |||
| fillSaveStateFromXmlNode(pData->saveState, xmlNode); | |||
| loadSaveState(pData->saveState); | |||
| return true; | |||
| } | |||
| // ------------------------------------------------------------------- | |||
| @@ -20,11 +20,7 @@ | |||
| #include "CarlaPlugin.hpp" | |||
| #include "CarlaEngine.hpp" | |||
| #ifdef USE_JUCE | |||
| using juce::ChildProcess; | |||
| using juce::String; | |||
| using juce::StringArray; | |||
| #endif | |||
| #include <QtCore/QProcess> | |||
| CARLA_BACKEND_START_NAMESPACE | |||
| @@ -52,11 +48,21 @@ CarlaPluginThread::CarlaPluginThread(CarlaBackend::CarlaEngine* const engine, Ca | |||
| : CarlaThread("CarlaPluginThread"), | |||
| fEngine(engine), | |||
| fPlugin(plugin), | |||
| fMode(mode) | |||
| fMode(mode), | |||
| fProcess(nullptr) | |||
| { | |||
| carla_debug("CarlaPluginThread::CarlaPluginThread(%p, %p, %s)", engine, plugin, PluginThreadMode2str(mode)); | |||
| } | |||
| CarlaPluginThread::~CarlaPluginThread() | |||
| { | |||
| carla_debug("CarlaPluginThread::~CarlaPluginThread()"); | |||
| //setPriority(5); | |||
| if (fProcess != nullptr) | |||
| { | |||
| delete fProcess; | |||
| fProcess = nullptr; | |||
| } | |||
| } | |||
| void CarlaPluginThread::setMode(const CarlaPluginThread::Mode mode) | |||
| @@ -82,13 +88,35 @@ void CarlaPluginThread::run() | |||
| { | |||
| carla_debug("CarlaPluginThread::run()"); | |||
| #ifdef USE_JUCE | |||
| ChildProcess process; | |||
| if (fProcess == nullptr) | |||
| { | |||
| fProcess = new QProcess(nullptr); | |||
| fProcess->setProcessChannelMode(QProcess::ForwardedChannels); | |||
| } | |||
| else if (fProcess->state() == QProcess::Running) | |||
| { | |||
| carla_stderr("CarlaPluginThread::run() - already running, giving up..."); | |||
| switch (fMode) | |||
| { | |||
| case PLUGIN_THREAD_NULL: | |||
| break; | |||
| case PLUGIN_THREAD_DSSI_GUI: | |||
| case PLUGIN_THREAD_LV2_GUI: | |||
| case PLUGIN_THREAD_VST_GUI: | |||
| fEngine->callback(CarlaBackend::ENGINE_CALLBACK_UI_STATE_CHANGED, fPlugin->getId(), -1, 0, 0.0f, nullptr); | |||
| fProcess->terminate(); | |||
| return; | |||
| case PLUGIN_THREAD_BRIDGE: | |||
| break; | |||
| } | |||
| } | |||
| StringArray arguments; | |||
| arguments.add((const char*)fBinary); | |||
| QString name(fPlugin->getName()); | |||
| QStringList arguments; | |||
| String name(fPlugin->getName()); | |||
| if (name.isEmpty()) | |||
| name = "(none)"; | |||
| @@ -98,37 +126,37 @@ void CarlaPluginThread::run() | |||
| break; | |||
| case PLUGIN_THREAD_DSSI_GUI: | |||
| /* osc-url */ arguments.add(String(fEngine->getOscServerPathUDP()) + "/" + String(fPlugin->getId())); | |||
| /* filename */ arguments.add(fPlugin->getFilename()); | |||
| /* label */ arguments.add((const char*)fLabel); | |||
| /* ui-title */ arguments.add(name + " (GUI)"); | |||
| /* osc-url */ arguments << QString("%1/%2").arg(fEngine->getOscServerPathUDP()).arg(fPlugin->getId()); | |||
| /* filename */ arguments << fPlugin->getFilename(); | |||
| /* label */ arguments << (const char*)fLabel; | |||
| /* ui-title */ arguments << QString("%1 (GUI)").arg(fPlugin->getName()); | |||
| break; | |||
| case PLUGIN_THREAD_LV2_GUI: | |||
| /* osc-url */ arguments.add(String(fEngine->getOscServerPathTCP()) + "/" + String(fPlugin->getId())); | |||
| /* URI */ arguments.add((const char*)fLabel); | |||
| /* ui-URI */ arguments.add((const char*)fExtra1); | |||
| /* ui-title */ arguments.add(name + " (GUI)"); | |||
| /* osc-url */ arguments << QString("%1/%2").arg(fEngine->getOscServerPathTCP()).arg(fPlugin->getId()); | |||
| /* URI */ arguments << (const char*)fLabel; | |||
| /* ui-URI */ arguments << (const char*)fExtra1; | |||
| /* ui-title */ arguments << QString("%1 (GUI)").arg(fPlugin->getName()); | |||
| break; | |||
| case PLUGIN_THREAD_VST_GUI: | |||
| /* osc-url */ arguments.add(String(fEngine->getOscServerPathTCP()) + "/" + String(fPlugin->getId())); | |||
| /* filename */ arguments.add(fPlugin->getFilename()); | |||
| /* ui-title */ arguments.add(name + " (GUI)"); | |||
| /* osc-url */ arguments << QString("%1/%2").arg(fEngine->getOscServerPathTCP()).arg(fPlugin->getId()); | |||
| /* filename */ arguments << fPlugin->getFilename(); | |||
| /* ui-title */ arguments << QString("%1 (GUI)").arg(fPlugin->getName()); | |||
| break; | |||
| case PLUGIN_THREAD_BRIDGE: | |||
| /* osc-url */ arguments.add(String(fEngine->getOscServerPathTCP()) + "/" + String(fPlugin->getId())); | |||
| /* stype */ arguments.add((const char*)fExtra1); | |||
| /* filename */ arguments.add(fPlugin->getFilename()); | |||
| /* name */ arguments.add(name); | |||
| /* label */ arguments.add((const char*)fLabel); | |||
| /* SHM ids */ arguments.add((const char*)fExtra2); | |||
| /* osc-url */ arguments << QString("%1/%2").arg(fEngine->getOscServerPathTCP()).arg(fPlugin->getId()); | |||
| /* stype */ arguments << (const char*)fExtra1; | |||
| /* filename */ arguments << fPlugin->getFilename(); | |||
| /* name */ arguments << name; | |||
| /* label */ arguments << (const char*)fLabel; | |||
| /* SHM ids */ arguments << (const char*)fExtra2; | |||
| break; | |||
| } | |||
| if (! process.start(arguments)) | |||
| return; | |||
| fProcess->start((const char*)fBinary, arguments); | |||
| fProcess->waitForStarted(); | |||
| switch (fMode) | |||
| { | |||
| @@ -140,50 +168,88 @@ void CarlaPluginThread::run() | |||
| case PLUGIN_THREAD_VST_GUI: | |||
| if (fPlugin->waitForOscGuiShow()) | |||
| { | |||
| while (process.isRunning() && ! threadShouldExit()) | |||
| sleep(1000); | |||
| //fProcess->waitForFinished(-1); | |||
| while (fProcess->state() != QProcess::NotRunning && ! shouldExit()) | |||
| carla_sleep(1); | |||
| // we only get here is UI was closed or thread asked to exit | |||
| // we only get here if UI was closed or thread asked to exit | |||
| if (threadShouldExit()) | |||
| if (fProcess->state() != QProcess::NotRunning && shouldExit()) | |||
| { | |||
| if (process.isRunning()) | |||
| process.kill(); | |||
| fProcess->waitForFinished(fEngine->getOptions().uiBridgesTimeout); | |||
| if (fProcess->state() == QProcess::Running) | |||
| { | |||
| carla_stdout("CarlaPluginThread::run() - UI refused to close, force kill now"); | |||
| fProcess->kill(); | |||
| } | |||
| else | |||
| { | |||
| carla_stdout("CarlaPluginThread::run() - UI auto-closed successfully"); | |||
| } | |||
| fEngine->callback(CarlaBackend::ENGINE_CALLBACK_UI_STATE_CHANGED, fPlugin->getId(), 0, 0, 0.0f, nullptr); | |||
| } | |||
| else if (fProcess->exitCode() != 0 || fProcess->exitStatus() == QProcess::CrashExit) | |||
| { | |||
| carla_stderr("CarlaPluginThread::run() - UI crashed while running"); | |||
| fEngine->callback(CarlaBackend::ENGINE_CALLBACK_UI_STATE_CHANGED, fPlugin->getId(), -1, 0, 0.0f, nullptr); | |||
| } | |||
| else | |||
| { | |||
| fEngine->callback(CarlaBackend::CALLBACK_SHOW_GUI, fPlugin->getId(), 0, 0, 0.0f, nullptr); | |||
| carla_stdout("CarlaPluginThread::run() - UI closed cleanly"); | |||
| fEngine->callback(CarlaBackend::ENGINE_CALLBACK_UI_STATE_CHANGED, fPlugin->getId(), 0, 0, 0.0f, nullptr); | |||
| } | |||
| } | |||
| else | |||
| { | |||
| if (process.isRunning() && ! process.waitForProcessToFinish(500)) | |||
| { | |||
| process.kill(); | |||
| fProcess->close(); | |||
| CARLA_ASSERT(fProcess->state() == QProcess::NotRunning); | |||
| fEngine->callback(CarlaBackend::CALLBACK_SHOW_GUI, fPlugin->getId(), -1, 0, 0.0f, nullptr); | |||
| if (fProcess->exitCode() != 0 || fProcess->exitStatus() == QProcess::CrashExit) | |||
| { | |||
| carla_stderr("CarlaPluginThread::run() - GUI crashed while opening"); | |||
| fEngine->callback(CarlaBackend::ENGINE_CALLBACK_UI_STATE_CHANGED, fPlugin->getId(), -1, 0, 0.0f, nullptr); | |||
| } | |||
| else | |||
| { | |||
| fEngine->callback(CarlaBackend::CALLBACK_SHOW_GUI, fPlugin->getId(), 0, 0, 0.0f, nullptr); | |||
| carla_stderr("CarlaPluginThread::run() - GUI timeout"); | |||
| carla_debug("CarlaPluginThread::run() - GUI timeout"); | |||
| fEngine->callback(CarlaBackend::ENGINE_CALLBACK_UI_STATE_CHANGED, fPlugin->getId(), 0, 0, 0.0f, nullptr); | |||
| } | |||
| } | |||
| break; | |||
| case PLUGIN_THREAD_BRIDGE: | |||
| while (process.isRunning() && ! threadShouldExit()) | |||
| sleep(1000); | |||
| //fProcess->waitForFinished(-1); | |||
| if (threadShouldExit()) | |||
| while (fProcess->state() != QProcess::NotRunning && ! shouldExit()) | |||
| carla_sleep(1); | |||
| // we only get here if bridge crashed or thread asked to exit | |||
| if (shouldExit()) | |||
| { | |||
| if (process.isRunning()) | |||
| process.kill(); | |||
| fProcess->waitForFinished(500); | |||
| if (fProcess->state() == QProcess::Running) | |||
| fProcess->close(); | |||
| } | |||
| else | |||
| { | |||
| // forced quit, may have crashed | |||
| if (fProcess->exitCode() != 0 || fProcess->exitStatus() == QProcess::CrashExit) | |||
| { | |||
| carla_stderr("CarlaPluginThread::run() - bridge crashed"); | |||
| CarlaString errorString("Plugin '" + CarlaString(fPlugin->getName()) + "' has crashed!\n" | |||
| "Saving now will lose its current settings.\n" | |||
| "Please remove this plugin, and not rely on it from this point."); | |||
| fEngine->callback(CarlaBackend::ENGINE_CALLBACK_ERROR, fPlugin->getId(), 0, 0, 0.0f, (const char*)errorString); | |||
| } | |||
| } | |||
| break; | |||
| } | |||
| #endif | |||
| } | |||
| CARLA_BACKEND_END_NAMESPACE | |||
| @@ -21,6 +21,8 @@ | |||
| #include "CarlaBackend.h" | |||
| #include "CarlaThread.hpp" | |||
| class QProcess; | |||
| CARLA_BACKEND_START_NAMESPACE | |||
| #if 0 | |||
| @@ -41,6 +43,7 @@ public: | |||
| }; | |||
| CarlaPluginThread(CarlaEngine* const engine, CarlaPlugin* const plugin, const Mode mode = PLUGIN_THREAD_NULL); | |||
| ~CarlaPluginThread() override; | |||
| void setMode(const CarlaPluginThread::Mode mode); | |||
| void setOscData(const char* const binary, const char* const label, const char* const extra1="", const char* const extra2=""); | |||
| @@ -57,6 +60,7 @@ private: | |||
| CarlaString fLabel; | |||
| CarlaString fExtra1; | |||
| CarlaString fExtra2; | |||
| QProcess* fProcess; | |||
| CARLA_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(CarlaPluginThread) | |||
| }; | |||
| @@ -483,7 +483,7 @@ public: | |||
| pData->param.createNew(params); | |||
| fParamBuffers = new float[params]; | |||
| #ifdef USE_JUCE | |||
| #ifdef HAVE_JUCE | |||
| FloatVectorOperations::clear(fParamBuffers, params); | |||
| #else | |||
| #endif | |||
| @@ -955,7 +955,7 @@ public: | |||
| // disable any output sound | |||
| for (uint32_t i=0; i < pData->audioOut.count; ++i) | |||
| { | |||
| #ifdef USE_JUCE | |||
| #ifdef HAVE_JUCE | |||
| FloatVectorOperations::clear(outBuffer[i], frames); | |||
| #else | |||
| #endif | |||
| @@ -1004,7 +1004,7 @@ public: | |||
| { | |||
| for (uint32_t i=0; i < pData->audioIn.count; ++i) | |||
| { | |||
| #ifdef USE_JUCE | |||
| #ifdef HAVE_JUCE | |||
| FloatVectorOperations::clear(pData->latencyBuffers[i], pData->latency); | |||
| #else | |||
| #endif | |||
| @@ -1460,7 +1460,7 @@ public: | |||
| for (uint32_t i=0; i < pData->audioIn.count; ++i) | |||
| { | |||
| #ifdef USE_JUCE | |||
| #ifdef HAVE_JUCE | |||
| FloatVectorOperations::copy(fAudioInBuffers[i], inBuffer[i]+timeOffset, frames); | |||
| #else | |||
| #endif | |||
| @@ -1468,7 +1468,7 @@ public: | |||
| for (uint32_t i=0; i < pData->audioOut.count; ++i) | |||
| { | |||
| #ifdef USE_JUCE | |||
| #ifdef HAVE_JUCE | |||
| FloatVectorOperations::clear(fAudioOutBuffers[i], frames); | |||
| #else | |||
| #endif | |||
| @@ -1537,7 +1537,7 @@ public: | |||
| if (isPair) | |||
| { | |||
| CARLA_ASSERT(i+1 < pData->audioOut.count); | |||
| #ifdef USE_JUCE | |||
| #ifdef HAVE_JUCE | |||
| FloatVectorOperations::copy(oldBufLeft, fAudioOutBuffers[i], frames); | |||
| #else | |||
| #endif | |||
| @@ -46,7 +46,7 @@ public: | |||
| { | |||
| carla_debug("FluidSynthPlugin::FluidSynthPlugin(%p, %i, %s)", engine, id, bool2str(use16Outs)); | |||
| #ifdef USE_JUCE | |||
| #ifdef HAVE_JUCE | |||
| FloatVectorOperations::clear(fParamBuffers, FluidSynthParametersMax); | |||
| #else | |||
| #endif | |||
| @@ -993,7 +993,7 @@ public: | |||
| // disable any output sound | |||
| for (i=0; i < pData->audioOut.count; ++i) | |||
| { | |||
| #ifdef USE_JUCE | |||
| #ifdef HAVE_JUCE | |||
| FloatVectorOperations::clear(outBuffer[i], frames); | |||
| #else | |||
| #endif | |||
| @@ -1371,7 +1371,7 @@ public: | |||
| { | |||
| for (i=0; i < pData->audioOut.count; ++i) | |||
| { | |||
| #ifdef USE_JUCE | |||
| #ifdef HAVE_JUCE | |||
| FloatVectorOperations::clear(fAudio16Buffers[i], frames); | |||
| #else | |||
| #endif | |||
| @@ -1400,7 +1400,7 @@ public: | |||
| { | |||
| if (i % 2 == 0) | |||
| { | |||
| #ifdef USE_JUCE | |||
| #ifdef HAVE_JUCE | |||
| FloatVectorOperations::copy(oldBufLeft, outBuffer[i]+timeOffset, frames); | |||
| #else | |||
| #endif | |||
| @@ -512,7 +512,7 @@ public: | |||
| // disable any output sound | |||
| for (i=0; i < pData->audioOut.count; ++i) | |||
| { | |||
| #ifdef USE_JUCE | |||
| #ifdef HAVE_JUCE | |||
| FloatVectorOperations::clear(outBuffer[i], frames); | |||
| #else | |||
| #endif | |||
| @@ -885,7 +885,7 @@ public: | |||
| { | |||
| if (i % 2 == 0) | |||
| { | |||
| #ifdef USE_JUCE | |||
| #ifdef HAVE_JUCE | |||
| FloatVectorOperations::copy(oldBufLeft, outBuffer[i], frames); | |||
| #else | |||
| #endif | |||
| @@ -1433,7 +1433,7 @@ public: | |||
| pData->param.createNew(params+cvIns+cvOuts); | |||
| fParamBuffers = new float[params+cvIns+cvOuts]; | |||
| #ifdef USE_JUCE | |||
| #ifdef HAVE_JUCE | |||
| FloatVectorOperations::clear(fParamBuffers, params+cvIns+cvOuts); | |||
| #else | |||
| #endif | |||
| @@ -2329,7 +2329,7 @@ public: | |||
| // disable any output sound | |||
| for (i=0; i < pData->audioOut.count; ++i) | |||
| { | |||
| #ifdef USE_JUCE | |||
| #ifdef HAVE_JUCE | |||
| FloatVectorOperations::clear(outBuffer[i], frames); | |||
| #else | |||
| #endif | |||
| @@ -3142,7 +3142,7 @@ public: | |||
| for (i=0; i < pData->audioIn.count; ++i) | |||
| { | |||
| #ifdef USE_JUCE | |||
| #ifdef HAVE_JUCE | |||
| FloatVectorOperations::copy(fAudioInBuffers[i], inBuffer[i]+timeOffset, frames); | |||
| #else | |||
| #endif | |||
| @@ -3150,7 +3150,7 @@ public: | |||
| for (i=0; i < pData->audioOut.count; ++i) | |||
| { | |||
| #ifdef USE_JUCE | |||
| #ifdef HAVE_JUCE | |||
| FloatVectorOperations::clear(fAudioOutBuffers[i], frames); | |||
| #else | |||
| #endif | |||
| @@ -3236,7 +3236,7 @@ public: | |||
| if (isPair) | |||
| { | |||
| CARLA_ASSERT(i+1 < pData->audioOut.count); | |||
| #ifdef USE_JUCE | |||
| #ifdef HAVE_JUCE | |||
| FloatVectorOperations::copy(oldBufLeft, fAudioOutBuffers[i], frames); | |||
| #else | |||
| #endif | |||
| @@ -8,16 +8,6 @@ include ../Makefile.mk | |||
| # -------------------------------------------------------------- | |||
| # ifeq ($(HAVE_FLUIDSYNTH),true) | |||
| # BUILD_CXX_FLAGS += $(shell pkg-config --cflags fluidsynth) | |||
| # endif | |||
| # | |||
| # ifeq ($(HAVE_LINUXSAMPLER),true) | |||
| # BUILD_CXX_FLAGS += $(shell pkg-config --cflags linuxsampler) | |||
| # endif | |||
| # -------------------------------------------------------------- | |||
| OBJS = \ | |||
| CarlaPlugin.cpp.o \ | |||
| CarlaPluginThread.cpp.o \ | |||
| @@ -36,7 +26,7 @@ HEADERS = \ | |||
| ../CarlaBackend.h ../CarlaEngine.hpp ../CarlaPlugin.hpp \ | |||
| CarlaPluginInternal.hpp CarlaPluginThread.hpp | |||
| TARGET = ../libcarla_plugin.a | |||
| TARGET = ../carla_plugin.a | |||
| # -------------------------------------------------------------- | |||
| @@ -47,6 +37,12 @@ all: $(TARGET) | |||
| %.cpp.o: %.cpp $(HEADERS) | |||
| $(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ | |||
| FluidSynthPlugin.cpp.o: FluidSynthPlugin.cpp $(HEADERS) | |||
| $(CXX) $< $(BUILD_CXX_FLAGS) $(FLUIDSYNTH_FLAGS) -c -o $@ | |||
| LinuxSamplerPlugin.cpp.o: LinuxSamplerPlugin.cpp $(HEADERS) | |||
| $(CXX) $< $(BUILD_CXX_FLAGS) $(LINUXSAMPLER_FLAGS) -c -o $@ | |||
| $(TARGET): $(OBJS) | |||
| $(RM) $@ | |||
| $(AR) crs $@ $^ | |||
| @@ -22,6 +22,8 @@ | |||
| #include "CarlaNative.h" | |||
| #include "CarlaHost.h" | |||
| #include <QtCore/QStringList> | |||
| extern const char* carla_file_callback(FileCallbackOpcode action, bool isDir, const char* title, const char* filter); | |||
| CARLA_BACKEND_START_NAMESPACE | |||
| @@ -43,19 +45,16 @@ struct NativePluginMidiData { | |||
| ~NativePluginMidiData() | |||
| { | |||
| CARLA_ASSERT_INT(count == 0, count); | |||
| CARLA_ASSERT(ports == nullptr); | |||
| CARLA_ASSERT(indexes == nullptr); | |||
| CARLA_ASSERT(ports == nullptr); | |||
| } | |||
| void createNew(const uint32_t newCount) | |||
| { | |||
| CARLA_ASSERT_INT(count == 0, count); | |||
| CARLA_ASSERT(ports == nullptr); | |||
| CARLA_ASSERT(indexes == nullptr); | |||
| CARLA_ASSERT_INT(newCount > 0, newCount); | |||
| if (ports != nullptr || indexes != nullptr || newCount == 0) | |||
| return; | |||
| CARLA_SAFE_ASSERT_INT(count == 0, count); | |||
| CARLA_SAFE_ASSERT_RETURN(indexes == nullptr,); | |||
| CARLA_SAFE_ASSERT_RETURN(ports == nullptr,); | |||
| CARLA_SAFE_ASSERT_RETURN(newCount > 0,); | |||
| ports = new CarlaEngineEventPort*[newCount]; | |||
| indexes = new uint32_t[newCount]; | |||
| @@ -127,7 +126,7 @@ public: | |||
| carla_zeroStruct<NativeTimeInfo>(fTimeInfo); | |||
| fHost.handle = this; | |||
| fHost.resourceDir = carla_strdup((const char*)engine->getOptions().resourceDir); | |||
| fHost.resourceDir = carla_strdup(engine->getOptions().resourceDir); | |||
| fHost.uiName = nullptr; | |||
| fHost.get_buffer_size = carla_host_get_buffer_size; | |||
| @@ -251,6 +250,7 @@ public: | |||
| unsigned int getOptionsAvailable() const override | |||
| { | |||
| CARLA_SAFE_ASSERT_RETURN(fDescriptor != nullptr, 0x0); | |||
| CARLA_SAFE_ASSERT_RETURN(fHandle != nullptr, 0); | |||
| const bool hasMidiProgs(fDescriptor->get_midi_program_count != nullptr && fDescriptor->get_midi_program_count(fHandle) > 0); | |||
| @@ -546,12 +546,11 @@ public: | |||
| } | |||
| else if (std::strcmp(key, "midiPrograms") == 0 && fDescriptor->set_midi_program != nullptr) | |||
| { | |||
| #if 0 // TODO | |||
| QStringList midiProgramList(QString(value).split(":", QString::SkipEmptyParts)); | |||
| if (midiProgramList.count() == MAX_MIDI_CHANNELS) | |||
| { | |||
| uint i = 0; | |||
| uint8_t channel = 0; | |||
| foreach (const QString& midiProg, midiProgramList) | |||
| { | |||
| bool ok; | |||
| @@ -562,24 +561,23 @@ public: | |||
| const uint32_t bank = pData->midiprog.data[index].bank; | |||
| const uint32_t program = pData->midiprog.data[index].program; | |||
| fDescriptor->set_midi_program(fHandle, i, bank, program); | |||
| fDescriptor->set_midi_program(fHandle, channel, bank, program); | |||
| if (fHandle2 != nullptr) | |||
| fDescriptor->set_midi_program(fHandle2, i, bank, program); | |||
| fDescriptor->set_midi_program(fHandle2, channel, bank, program); | |||
| fCurMidiProgs[i] = index; | |||
| fCurMidiProgs[channel] = index; | |||
| if (pData->ctrlChannel == static_cast<int32_t>(i)) | |||
| if (pData->ctrlChannel == static_cast<int32_t>(channel)) | |||
| { | |||
| pData->midiprog.current = index; | |||
| pData->engine->callback(ENGINE_CALLBACK_MIDI_PROGRAM_CHANGED, pData->id, index, 0, 0.0f, nullptr); | |||
| } | |||
| } | |||
| ++i; | |||
| ++channel; | |||
| } | |||
| } | |||
| #endif | |||
| } | |||
| else | |||
| { | |||
| @@ -959,11 +957,12 @@ public: | |||
| if (paramInfo->hints & ::PARAMETER_IS_OUTPUT) | |||
| { | |||
| pData->param.data[j].type = PARAMETER_OUTPUT; | |||
| needsCtrlOut = true; | |||
| } | |||
| else | |||
| { | |||
| //pData->param.data[j].hints |= PARAMETER_IS_INPUT; | |||
| pData->param.data[j].type = PARAMETER_INPUT; | |||
| needsCtrlIn = true; | |||
| } | |||
| @@ -1685,7 +1684,7 @@ public: | |||
| for (i=0; i < pData->audioIn.count; ++i) | |||
| { | |||
| #ifdef USE_JUCE | |||
| #ifdef HAVE_JUCE | |||
| FloatVectorOperations::copy(fAudioInBuffers[i], inBuffer[i]+timeOffset, frames); | |||
| #else | |||
| #endif | |||
| @@ -1693,7 +1692,7 @@ public: | |||
| for (i=0; i < pData->audioOut.count; ++i) | |||
| { | |||
| #ifdef USE_JUCE | |||
| #ifdef HAVE_JUCE | |||
| FloatVectorOperations::clear(fAudioOutBuffers[i], frames); | |||
| #else | |||
| #endif | |||
| @@ -1755,7 +1754,7 @@ public: | |||
| if (isPair) | |||
| { | |||
| CARLA_ASSERT(i+1 < pData->audioOut.count); | |||
| #ifdef USE_JUCE | |||
| #ifdef HAVE_JUCE | |||
| FloatVectorOperations::copy(oldBufLeft, fAudioOutBuffers[i], frames); | |||
| #else | |||
| #endif | |||
| @@ -988,7 +988,7 @@ public: | |||
| // disable any output sound | |||
| for (i=0; i < pData->audioOut.count; ++i) | |||
| { | |||
| #ifdef USE_JUCE | |||
| #ifdef HAVE_JUCE | |||
| FloatVectorOperations::clear(outBuffer[i], frames); | |||
| #else | |||
| #endif | |||
| @@ -1039,7 +1039,7 @@ public: | |||
| { | |||
| for (i=0; i < pData->audioIn.count; ++i) | |||
| { | |||
| #ifdef USE_JUCE | |||
| #ifdef HAVE_JUCE | |||
| FloatVectorOperations::clear(pData->latencyBuffers[i], pData->latency); | |||
| #else | |||
| #endif | |||
| @@ -1519,7 +1519,7 @@ public: | |||
| { | |||
| for (i=0; i < pData->audioOut.count; ++i) | |||
| { | |||
| #ifdef USE_JUCE | |||
| #ifdef HAVE_JUCE | |||
| FloatVectorOperations::clear(vstOutBuffer[i], frames); | |||
| #else | |||
| #endif | |||
| @@ -1568,7 +1568,7 @@ public: | |||
| if (isPair) | |||
| { | |||
| CARLA_ASSERT(i+1 < pData->audioOut.count); | |||
| #ifdef USE_JUCE | |||
| #ifdef HAVE_JUCE | |||
| FloatVectorOperations::copy(oldBufLeft, outBuffer[i]+timeOffset, frames); | |||
| #else | |||
| #endif | |||
| @@ -213,7 +213,7 @@ const char* carla_get_complete_license_text() | |||
| #ifdef WANT_NATIVE | |||
| // Internal plugins | |||
| # ifdef WANT_OPENGL | |||
| # ifdef HAVE_OPENGL | |||
| text3 += "<li>DISTRHO Mini-Series plugin code, based on LOSER-dev suite by Michael Gruhn</li>"; | |||
| # endif | |||
| text3 += "<li>NekoFilter plugin code, based on lv2fil by Nedko Arnaudov and Fons Adriaensen</li>"; | |||
| @@ -9,103 +9,85 @@ include ../Makefile.mk | |||
| # -------------------------------------------------------------- | |||
| # Common | |||
| LINK_FLAGS += $(shell pkg-config --libs liblo) | |||
| STATIC_LIBS = ../carla_engine.a | |||
| STATIC_LIBS += ../carla_plugin.a | |||
| STATIC_LIBS += ../../modules/rtmempool.a | |||
| LINK_FLAGS += $(QTCORE_LIBS) | |||
| LINK_FLAGS += $(QTXML_LIBS) | |||
| LINK_FLAGS += $(RTMEMPOOL_LIBS) | |||
| LINK_FLAGS += $(LIBLO_LIBS) | |||
| LINK_FLAGS += $(QTCORE_LIBS) | |||
| LINK_FLAGS += $(QTXML_LIBS) | |||
| LINK_FLAGS += $(RTMEMPOOL_LIBS) | |||
| # -------------------------------------------------------------- | |||
| # Engine | |||
| LINK_FLAGS += $(RTAUDIO_LIBS) | |||
| LINK_FLAGS += $(RTMIDI_LIBS) | |||
| LINK_FLAGS += $(JACKBRIDGE_LIBS) | |||
| STATIC_LIBS += ../../modules/jackbridge.a | |||
| STATIC_LIBS += ../../modules/rtaudio.a | |||
| STATIC_LIBS += ../../modules/rtmidi.a | |||
| # -------------------------------------------------------------- | |||
| # Plugin | |||
| # ifeq ($(CARLA_PLUGIN_SUPPORT),true) | |||
| # LINK_FLAGS += $(LILV_LIBS) | |||
| # endif | |||
| # | |||
| # ifeq ($(HAVE_FLUIDSYNTH),true) | |||
| # LINK_FLAGS += $(shell pkg-config --libs fluidsynth) | |||
| # endif | |||
| # | |||
| # ifeq ($(HAVE_LINUXSAMPLER),true) | |||
| # LINK_FLAGS += $(shell pkg-config --libs linuxsampler) | |||
| # ifeq ($(WIN32),true) | |||
| # LINK_FLAGS += lrpcrt4 | |||
| # endif | |||
| # endif | |||
| LINK_FLAGS += $(JACKBRIDGE_LIBS) | |||
| LINK_FLAGS += $(RTAUDIO_LIBS) | |||
| LINK_FLAGS += $(RTMIDI_LIBS) | |||
| # -------------------------------------------------------------- | |||
| # Coomon | |||
| # Plugin | |||
| ifeq ($(HAVE_FFMPEG),true) | |||
| LINK_FLAGS += $(shell pkg-config --libs libavcodec libavformat libavutil) | |||
| ifeq ($(CARLA_PLUGIN_SUPPORT),true) | |||
| STATIC_LIBS += ../../modules/lilv.a | |||
| LINK_FLAGS += $(LILV_LIBS) | |||
| endif | |||
| ifeq ($(HAVE_JUCE),true) | |||
| LINK_FLAGS += $(JUCE_AUDIO_BASICS_LIBS) | |||
| LINK_FLAGS += $(JUCE_AUDIO_DEVICES_LIBS) | |||
| LINK_FLAGS += $(JUCE_CORE_LIBS) | |||
| # LINK_FLAGS += $(JUCE_DATA_STRUCTURES_LIBS) | |||
| LINK_FLAGS += $(JUCE_EVENTS_LIBS) | |||
| # LINK_FLAGS += $(JUCE_GRAPHICS_LIBS) | |||
| # LINK_FLAGS += $(JUCE_GUI_BASICS_LIBS) | |||
| endif | |||
| ifeq ($(HAVE_OPENGL),true) | |||
| LINK_FLAGS += $(DGL_LIBS) | |||
| ifeq ($(CARLA_SAMPLERS_SUPPORT),true) | |||
| LINK_FLAGS += $(FLUIDSYNTH_LIBS) | |||
| LINK_FLAGS += $(LINUXSAMPLER_LIBS) | |||
| endif | |||
| # -------------------------------------------------------------- | |||
| # Native | |||
| STATIC_LIBS += ../../modules/carla_native.a | |||
| ifeq ($(HAVE_AF_DEPS),true) | |||
| LINK_FLAGS += $(shell pkg-config --libs sndfile) | |||
| LINK_FLAGS += $(shell pkg-config --libs sndfile) | |||
| ifeq ($(HAVE_FFMPEG),true) | |||
| LINK_FLAGS += $(shell pkg-config --libs libavcodec libavformat libavutil) | |||
| endif | |||
| endif | |||
| ifeq ($(HAVE_MF_DEPS),true) | |||
| LINK_FLAGS += $(shell pkg-config --libs smf) | |||
| LINK_FLAGS += $(shell pkg-config --libs smf) | |||
| endif | |||
| ifeq ($(HAVE_ZYN_DEPS),true) | |||
| LINK_FLAGS += $(shell pkg-config --libs fftw3 mxml zlib) | |||
| LINK_FLAGS += $(shell pkg-config --libs fftw3 mxml zlib) | |||
| ifeq ($(HAVE_ZYN_UI_DEPS),true) | |||
| LINK_FLAGS += $(shell pkg-config --libs ntk_images ntk) | |||
| LINK_FLAGS += $(shell pkg-config --libs ntk_images ntk) | |||
| endif | |||
| endif | |||
| # -------------------------------------------------------------- | |||
| LIBS += ../libcarla_engine.a | |||
| LIBS += ../libcarla_plugin.a | |||
| LIBS += ../../modules/carla_native.a | |||
| LIBS += ../../modules/jackbridge.a | |||
| LIBS += ../../modules/rtaudio.a | |||
| LIBS += ../../modules/rtmidi.a | |||
| LIBS += ../../modules/rtmempool.a | |||
| # ifeq ($(CARLA_PLUGIN_SUPPORT),true) | |||
| # LIBS += ../../modules/lilv.a | |||
| # endif | |||
| # Final | |||
| ifeq ($(HAVE_JUCE),true) | |||
| LIBS += ../../modules/juce_audio_basics.a | |||
| LIBS += ../../modules/juce_audio_devices.a | |||
| LIBS += ../../modules/juce_core.a | |||
| # LIBS += ../../modules/juce_data_structures.a | |||
| LIBS += ../../modules/juce_events.a | |||
| # LIBS += ../../modules/juce_graphics.a | |||
| # LIBS += ../../modules/juce_gui_basics.a | |||
| STATIC_LIBS += ../../modules/juce_audio_basics.a | |||
| STATIC_LIBS += ../../modules/juce_audio_devices.a | |||
| STATIC_LIBS += ../../modules/juce_core.a | |||
| STATIC_LIBS += ../../modules/juce_data_structures.a | |||
| STATIC_LIBS += ../../modules/juce_events.a | |||
| STATIC_LIBS += ../../modules/juce_graphics.a | |||
| STATIC_LIBS += ../../modules/juce_gui_basics.a | |||
| LINK_FLAGS += $(JUCE_AUDIO_BASICS_LIBS) | |||
| LINK_FLAGS += $(JUCE_AUDIO_DEVICES_LIBS) | |||
| LINK_FLAGS += $(JUCE_CORE_LIBS) | |||
| LINK_FLAGS += $(JUCE_DATA_STRUCTURES_LIBS) | |||
| LINK_FLAGS += $(JUCE_EVENTS_LIBS) | |||
| LINK_FLAGS += $(JUCE_GRAPHICS_LIBS) | |||
| LINK_FLAGS += $(JUCE_GUI_BASICS_LIBS) | |||
| endif | |||
| ifeq ($(HAVE_OPENGL),true) | |||
| LIBS += ../../modules/dgl.a | |||
| STATIC_LIBS += ../../modules/dgl.a | |||
| LINK_FLAGS += $(DGL_LIBS) | |||
| endif | |||
| # -------------------------------------------------------------- | |||
| @@ -138,14 +120,14 @@ debug: | |||
| %.cpp.o: %.cpp $(HEADERS) | |||
| $(CXX) $< $(BUILD_CXX_FLAGS) -c -o $@ | |||
| ../libcarla_standalone2.dll: CarlaStandalone.cpp.o $(LIBS) | |||
| $(CXX) $< -Wl,--start-group $(LIBS) -Wl,--end-group $(LINK_FLAGS) -shared -Wl,--output-def,$@.def -o $@ | |||
| ../libcarla_standalone2.dll: CarlaStandalone.cpp.o $(STATIC_LIBS) | |||
| $(CXX) $< -Wl,--start-group $(STATIC_LIBS) -Wl,--end-group $(LINK_FLAGS) -shared -Wl,--output-def,$@.def -o $@ | |||
| ../libcarla_standalone2.dylib: CarlaStandalone.cpp.o $(LIBS) | |||
| $(CXX) $< -Wl,--start-group $(LIBS) -Wl,--end-group $(LINK_FLAGS) -dynamiclib -o $@ | |||
| ../libcarla_standalone2.dylib: CarlaStandalone.cpp.o $(STATIC_LIBS) | |||
| $(CXX) $< -Wl,--start-group $(STATIC_LIBS) -Wl,--end-group $(LINK_FLAGS) -dynamiclib -o $@ | |||
| ../libcarla_standalone2.so: CarlaStandalone.cpp.o $(LIBS) | |||
| $(CXX) $< -Wl,--start-group $(LIBS) -Wl,--end-group $(LINK_FLAGS) -shared -o $@ | |||
| ../libcarla_standalone2.so: CarlaStandalone.cpp.o $(STATIC_LIBS) | |||
| $(CXX) $< -Wl,--start-group $(STATIC_LIBS) -Wl,--end-group $(LINK_FLAGS) -shared -o $@ | |||
| # -------------------------------------------------------------- | |||
| @@ -34,12 +34,12 @@ BUILD_PLUGIN_FLAGS += -DWANT_LADSPA | |||
| # endif | |||
| endif | |||
| # LINK_PLUGIN_FLAGS += $(JUCE_AUDIO_BASICS_LIBS) | |||
| # LINK_PLUGIN_FLAGS += $(JUCE_CORE_LIBS) | |||
| # LINK_PLUGIN_FLAGS += $(JUCE_DATA_STRUCTURES_LIBS) | |||
| # LINK_PLUGIN_FLAGS += $(JUCE_EVENTS_LIBS) | |||
| # LINK_PLUGIN_FLAGS += $(JUCE_GRAPHICS_LIBS) | |||
| # LINK_PLUGIN_FLAGS += $(JUCE_GUI_BASICS_LIBS) | |||
| LINK_PLUGIN_FLAGS += $(JUCE_AUDIO_BASICS_LIBS) | |||
| LINK_PLUGIN_FLAGS += $(JUCE_CORE_LIBS) | |||
| LINK_PLUGIN_FLAGS += $(JUCE_DATA_STRUCTURES_LIBS) | |||
| LINK_PLUGIN_FLAGS += $(JUCE_EVENTS_LIBS) | |||
| LINK_PLUGIN_FLAGS += $(JUCE_GRAPHICS_LIBS) | |||
| LINK_PLUGIN_FLAGS += $(JUCE_GUI_BASICS_LIBS) | |||
| # -------------------------------------------------------------- | |||
| # Plugin bridges (POSIX) | |||
| @@ -393,13 +393,13 @@ OBJS_NATIVE += \ | |||
| # libs | |||
| OBJS_NATIVE += \ | |||
| ../modules/jackbridge.a \ | |||
| ../modules/juce_audio_basics.a \ | |||
| ../modules/juce_core.a \ | |||
| ../modules/juce_events.a \ | |||
| ../modules/rtmempool.a | |||
| # ../modules/carla_native.a \ | |||
| # ../modules/juce_audio_basics.a \ | |||
| # ../modules/juce_core.a \ | |||
| # ../modules/juce_data_structures.a \ | |||
| # ../modules/juce_events.a \ | |||
| # ../modules/juce_graphics.a \ | |||
| # ../modules/juce_gui_basics.a \ | |||
| @@ -281,6 +281,9 @@ if __name__ == '__main__': | |||
| elif os.path.exists(argument): | |||
| projectFilename = argument | |||
| if libPrefix is not None: | |||
| app.addLibraryPath(os.path.join(libPrefix, "lib", "carla")) | |||
| # ------------------------------------------------------------- | |||
| # Init host backend | |||
| @@ -69,6 +69,9 @@ if __name__ == '__main__': | |||
| elif os.path.exists(argument): | |||
| projectFilename = argument | |||
| if libPrefix is not None: | |||
| app.addLibraryPath(os.path.join(libPrefix, "lib", "carla")) | |||
| # ------------------------------------------------------------- | |||
| # Init host backend | |||
| @@ -69,6 +69,9 @@ if __name__ == '__main__': | |||
| elif os.path.exists(argument): | |||
| projectFilename = argument | |||
| if libPrefix is not None: | |||
| app.addLibraryPath(os.path.join(libPrefix, "lib", "carla")) | |||
| # ------------------------------------------------------------- | |||
| # Init host backend | |||
| @@ -19,11 +19,6 @@ | |||
| # ------------------------------------------------------------------------------------------------------------ | |||
| # Imports (Global) | |||
| #try: | |||
| #from PyQt5.QtCore import QSettings | |||
| #from PyQt5.QtGui import QColor, QPalette | |||
| #from PyQt5.QtWidgets import QApplication | |||
| #except: | |||
| from PyQt4.QtCore import QSettings | |||
| from PyQt4.QtGui import QApplication, QColor, QPalette | |||
| @@ -40,10 +35,8 @@ class CarlaApplication(object): | |||
| libdir = os.path.join(CWD, "modules", "theme") | |||
| if not os.path.exists(libdir): | |||
| libdir = CWD | |||
| QApplication.addLibraryPath(libdir) | |||
| if os.path.exists(libdir): | |||
| QApplication.addLibraryPath(libdir) | |||
| self.fApp = QApplication(sys.argv) | |||
| self.fApp.setApplicationName(appName) | |||
| @@ -175,7 +168,8 @@ class CarlaApplication(object): | |||
| self.fPalBlue.setColor(QPalette.Active, QPalette.LinkVisited, QColor(64, 128, 255)) | |||
| self.fPalBlue.setColor(QPalette.Inactive, QPalette.LinkVisited, QColor(64, 128, 255)) | |||
| self.loadSettings() | |||
| if os.path.exists(libdir): | |||
| self.loadSettings() | |||
| def loadSettings(self): | |||
| settings = QSettings() | |||
| @@ -195,6 +189,13 @@ class CarlaApplication(object): | |||
| print("Using \"%s\" theme" % self.fApp.style().objectName()) | |||
| def addLibraryPath(self, libdir): | |||
| if not os.path.exists(libdir): | |||
| return | |||
| QApplication.addLibraryPath(libdir) | |||
| self.loadSettings() | |||
| def arguments(self): | |||
| return self.fApp.arguments() | |||
| @@ -8,18 +8,14 @@ include ../Makefile.mk | |||
| # -------------------------------------------------------------- | |||
| BUILD_CXX_FLAGS += -I../backend -I../includes -I../modules -I../utils -Wno-multichar | |||
| BUILD_CXX_FLAGS += -I../backend -I../includes -I../utils -isystem ../modules -Wno-multichar | |||
| BUILD_CXX_FLAGS += $(QTCORE_FLAGS) | |||
| LINK_FLAGS += $(QTCORE_LIBS) | |||
| # ifeq ($(HAVE_JUCE),true) | |||
| # BUILD_CXX_FLAGS += -DHAVE_JUCE | |||
| # endif | |||
| # -------------------------------------------------------------- | |||
| # BUILD_CXX_FLAGS += -DWANT_NATIVE | |||
| BUILD_CXX_FLAGS += -DWANT_NATIVE | |||
| ifeq ($(CARLA_PLUGIN_SUPPORT),true) | |||
| BUILD_CXX_FLAGS += -DWANT_LADSPA | |||
| @@ -45,28 +41,28 @@ endif | |||
| # -------------------------------------------------------------- | |||
| # ifeq ($(HAVE_JUCE),true) | |||
| # LIBS += ../modules/juce_audio_basics.a | |||
| # LIBS_posix32 += ../modules/juce_audio_basics.posix32.a | |||
| # LIBS_posix64 += ../modules/juce_audio_basics.posix64.a | |||
| # LIBS_win32 += ../modules/juce_audio_basics.win32.a | |||
| # LIBS_win64 += ../modules/juce_audio_basics.win64.a | |||
| # LIBS += ../modules/juce_core.a | |||
| # LIBS_posix32 += ../modules/juce_core.posix32.a | |||
| # LIBS_posix64 += ../modules/juce_core.posix64.a | |||
| # LIBS_win32 += ../modules/juce_core.win32.a | |||
| # LIBS_win64 += ../modules/juce_core.win64.a | |||
| # LINK_FLAGS += $(JUCE_CORE_LIBS) $(JUCE_AUDIO_BASICS_LIBS) | |||
| # endif | |||
| ifeq ($(CARLA_PLUGIN_SUPPORT),true) | |||
| LIBS += ../modules/lilv.a | |||
| LIBS_posix32 += ../modules/lilv.posix32.a | |||
| LIBS_posix64 += ../modules/lilv.posix64.a | |||
| LIBS_win32 += ../modules/lilv.win32.a | |||
| LIBS_win64 += ../modules/lilv.win64.a | |||
| LINK_FLAGS += $(LILV_LIBS) | |||
| endif | |||
| # ifeq ($(CARLA_PLUGIN_SUPPORT),true) | |||
| # LIBS += ../modules/lilv.a | |||
| # LIBS_posix32 += ../modules/lilv.posix32.a | |||
| # LIBS_posix64 += ../modules/lilv.posix64.a | |||
| # LIBS_win32 += ../modules/lilv.win32.a | |||
| # LIBS_win64 += ../modules/lilv.win64.a | |||
| # LINK_FLAGS += $(LILV_LIBS) | |||
| # endif | |||
| ifeq ($(HAVE_JUCE),true) | |||
| LIBS += ../modules/juce_audio_basics.a | |||
| LIBS_posix32 += ../modules/juce_audio_basics.posix32.a | |||
| LIBS_posix64 += ../modules/juce_audio_basics.posix64.a | |||
| LIBS_win32 += ../modules/juce_audio_basics.win32.a | |||
| LIBS_win64 += ../modules/juce_audio_basics.win64.a | |||
| LIBS += ../modules/juce_core.a | |||
| LIBS_posix32 += ../modules/juce_core.posix32.a | |||
| LIBS_posix64 += ../modules/juce_core.posix64.a | |||
| LIBS_win32 += ../modules/juce_core.win32.a | |||
| LIBS_win64 += ../modules/juce_core.win64.a | |||
| LINK_FLAGS += $(JUCE_CORE_LIBS) $(JUCE_AUDIO_BASICS_LIBS) | |||
| endif | |||
| POSIX_BUILD_FLAGS = $(BUILD_CXX_FLAGS) | |||
| POSIX_32BIT_FLAGS = $(32BIT_FLAGS) -L/usr/lib32 -L/usr/lib/i386-linux-gnu | |||
| @@ -8,47 +8,64 @@ include ../../Makefile.mk | |||
| # -------------------------------------------------------------- | |||
| BUILD_C_FLAGS += -I. -I.. -I../../includes | |||
| BUILD_CXX_FLAGS += -I. -I.. -I../../includes -I../../utils -I../distrho | |||
| BUILD_C_FLAGS += -I. -I../../includes -isystem .. | |||
| BUILD_CXX_FLAGS += -I. -I../../includes -I../../utils -I../distrho -isystem .. | |||
| # -------------------------------------------------------------- | |||
| LINK_FLAGS += -L.. | |||
| ifeq ($(HAVE_OPENGL),true) | |||
| LINK_FLAGS += -ldgl $(DGL_LIBS) | |||
| endif | |||
| ifeq ($(HAVE_JUCE),true) | |||
| LINK_FLAGS += -ljuce_audio_basics $(JUCE_AUDIO_BASICS_LIBS) | |||
| LINK_FLAGS += -ljuce_core $(JUCE_CORE_LIBS) | |||
| LINK_FLAGS += -ljuce_data_structures $(JUCE_DATA_STRUCTURES_LIBS) | |||
| LINK_FLAGS += -ljuce_events $(JUCE_EVENTS_LIBS) | |||
| LINK_FLAGS += -ljuce_graphics $(JUCE_GRAPHICS_LIBS) | |||
| LINK_FLAGS += -ljuce_gui_basics $(JUCE_GUI_BASICS_LIBS) | |||
| endif | |||
| # -------------------------------------------------------------- | |||
| ALL_C_FLAGS = $(BUILD_C_FLAGS) | |||
| ALL_C_FLAGS = $(BUILD_C_FLAGS) | |||
| ifeq ($(HAVE_OPENGL),true) | |||
| ALL_C_FLAGS += -DWANT_OPENGL | |||
| # AudioFile | |||
| ifeq ($(HAVE_AF_DEPS),true) | |||
| ALL_C_FLAGS += -DWANT_AUDIOFILE | |||
| endif | |||
| # MidiFile | |||
| ifeq ($(HAVE_MF_DEPS),true) | |||
| ALL_C_FLAGS += -DWANT_MIDIFILE | |||
| endif | |||
| # ZynAddSubFX | |||
| ifeq ($(HAVE_ZYN_DEPS),true) | |||
| ALL_C_FLAGS += -DWANT_ZYNADDSUBFX | |||
| endif | |||
| # -------------------------------------------------------------- | |||
| # AudioFile | |||
| ifeq ($(HAVE_AF_DEPS),true) | |||
| AF_C_FLAGS = $(BUILD_C_FLAGS) | |||
| AF_C_FLAGS += $(shell pkg-config --cflags sndfile) | |||
| LINK_FLAGS += $(shell pkg-config --libs sndfile) | |||
| ALL_C_FLAGS += -DWANT_AUDIOFILE | |||
| ifeq ($(HAVE_FFMPEG),true) | |||
| AF_C_FLAGS += -DHAVE_FFMPEG | |||
| AF_C_FLAGS += $(shell pkg-config --cflags libavcodec libavformat libavutil) | |||
| LINK_FLAGS += $(shell pkg-config --libs libavcodec libavformat libavutil) | |||
| endif | |||
| endif | |||
| # MidiFile | |||
| ifeq ($(HAVE_MF_DEPS),true) | |||
| MF_CXX_FLAGS = $(BUILD_CXX_FLAGS) | |||
| MF_CXX_FLAGS += $(shell pkg-config --cflags smf) | |||
| LINK_FLAGS += $(shell pkg-config --libs smf) | |||
| ALL_C_FLAGS += -DWANT_MIDIFILE | |||
| endif | |||
| # ZynAddSubFX | |||
| ifeq ($(HAVE_ZYN_DEPS),true) | |||
| ZYN_CXX_FLAGS = $(BUILD_CXX_FLAGS) -w | |||
| ZYN_CXX_FLAGS += $(shell pkg-config --cflags fftw3 mxml zlib) | |||
| @@ -58,9 +75,10 @@ ZYN_CXX_FLAGS += -DNTK_GUI -DWANT_ZYNADDSUBFX_UI | |||
| ZYN_CXX_FLAGS += $(shell pkg-config --cflags ntk_images ntk) | |||
| LINK_FLAGS += $(shell pkg-config --libs ntk_images ntk) | |||
| endif | |||
| ALL_C_FLAGS += -DWANT_ZYNADDSUBFX | |||
| endif | |||
| # -------------------------------------------------------------- | |||
| # Implement carla_register_native_plugin | |||
| LINK_FLAGS += -I.. _link.c | |||
| @@ -78,6 +96,8 @@ OBJS += \ | |||
| midi-transpose.c.o \ | |||
| nekofilter.c.o | |||
| # -------------------------------------------------------------- | |||
| ifeq ($(HAVE_JUCE),true) | |||
| OBJS += \ | |||
| vex-fx.cpp.o \ | |||
| @@ -85,6 +105,8 @@ OBJS += \ | |||
| vex-src.cpp.o | |||
| endif | |||
| # -------------------------------------------------------------- | |||
| ifeq ($(HAVE_OPENGL),true) | |||
| OBJS += \ | |||
| distrho-3bandeq.cpp.o \ | |||
| @@ -94,6 +116,8 @@ OBJS += \ | |||
| # distrho-stereoenhancer.cpp.o | |||
| endif | |||
| # -------------------------------------------------------------- | |||
| # AudioFile | |||
| ifeq ($(HAVE_AF_DEPS),true) | |||
| OBJS += \ | |||
| @@ -103,12 +127,16 @@ OBJS += \ | |||
| audio_decoder/ad_soundfile.c.o | |||
| endif | |||
| # -------------------------------------------------------------- | |||
| # MidiFile | |||
| ifeq ($(HAVE_MF_DEPS),true) | |||
| OBJS += \ | |||
| midi-file.cpp.o | |||
| endif | |||
| # -------------------------------------------------------------- | |||
| # ZynAddSubFX | |||
| ifeq ($(HAVE_ZYN_DEPS),true) | |||
| OBJS += \ | |||
| @@ -47,7 +47,7 @@ extern void carla_register_native_plugin_audiofile(); | |||
| extern void carla_register_native_plugin_midifile(); | |||
| #endif | |||
| #ifdef WANT_OPENGL | |||
| #ifdef HAVE_OPENGL | |||
| // DISTRHO plugins (OpenGL) | |||
| extern void carla_register_native_plugin_3BandEQ(); | |||
| extern void carla_register_native_plugin_3BandSplitter(); | |||
| @@ -98,7 +98,7 @@ void carla_register_all_plugins() | |||
| carla_register_native_plugin_midifile(); | |||
| #endif | |||
| #ifdef WANT_OPENGL | |||
| #ifdef HAVE_OPENGL | |||
| // DISTRHO plugins (OpenGL) | |||
| carla_register_native_plugin_3BandEQ(); | |||
| carla_register_native_plugin_3BandSplitter(); | |||
| @@ -20,7 +20,7 @@ | |||
| #include "CarlaThread.hpp" | |||
| #ifdef USE_JUCE | |||
| #ifdef HAVE_JUCE | |||
| # include "juce_audio_basics.h" | |||
| using juce::FloatVectorOperations; | |||
| #endif | |||
| @@ -94,7 +94,7 @@ struct AudioFilePool { | |||
| startFrame = 0; | |||
| #ifdef USE_JUCE | |||
| #ifdef HAVE_JUCE | |||
| FloatVectorOperations::clear(buffer[0], size); | |||
| FloatVectorOperations::clear(buffer[1], size); | |||
| #else | |||
| @@ -226,7 +226,7 @@ public: | |||
| { | |||
| pool.startFrame = fPool.startFrame; | |||
| #ifdef USE_JUCE | |||
| #ifdef HAVE_JUCE | |||
| FloatVectorOperations::copy(pool.buffer[0], fPool.buffer[0], fPool.size); | |||
| FloatVectorOperations::copy(pool.buffer[1], fPool.buffer[1], fPool.size); | |||
| #else | |||
| @@ -283,8 +283,8 @@ public: | |||
| float tmpData[tmpSize]; | |||
| #ifdef USE_JUCE | |||
| FloatVectorOperations::clear(tmpData, tmpSize); | |||
| #ifdef HAVE_JUCE | |||
| FloatVectorOperations::clear(tmpData, int(tmpSize)); | |||
| #else | |||
| carla_zeroFloat(tmpData, tmpSize); | |||
| #endif | |||
| @@ -128,7 +128,7 @@ protected: | |||
| //carla_stderr("P: no process"); | |||
| fLastFrame = timePos->frame; | |||
| #ifdef USE_JUCE | |||
| #ifdef HAVE_JUCE | |||
| FloatVectorOperations::clear(out1, frames); | |||
| FloatVectorOperations::clear(out2, frames); | |||
| #else | |||
| @@ -147,7 +147,7 @@ protected: | |||
| if (timePos->frame == 0 && fLastFrame > 0) | |||
| fThread.setNeedsRead(); | |||
| #ifdef USE_JUCE | |||
| #ifdef HAVE_JUCE | |||
| FloatVectorOperations::clear(out1, frames); | |||
| FloatVectorOperations::clear(out2, frames); | |||
| #else | |||
| @@ -168,7 +168,7 @@ protected: | |||
| if (timePos->frame + frames < fPool.startFrame) | |||
| fThread.setNeedsRead(); | |||
| #ifdef USE_JUCE | |||
| #ifdef HAVE_JUCE | |||
| FloatVectorOperations::clear(out1, frames); | |||
| FloatVectorOperations::clear(out2, frames); | |||
| #else | |||
| @@ -25,8 +25,8 @@ | |||
| #include "zynaddsubfx/Effects/Phaser.h" | |||
| #include "zynaddsubfx/Effects/Reverb.h" | |||
| #ifdef USE_JUCE | |||
| #include "juce_audio_basics.h" | |||
| #ifdef HAVE_JUCE | |||
| # include "juce_audio_basics.h" | |||
| using juce::FloatVectorOperations; | |||
| #endif | |||
| @@ -47,7 +47,7 @@ protected: | |||
| const uint32_t bufferSize(getBufferSize()); | |||
| efxoutl = new float[bufferSize]; | |||
| efxoutr = new float[bufferSize]; | |||
| #ifdef USE_JUCE | |||
| #ifdef HAVE_JUCE | |||
| FloatVectorOperations::clear(efxoutl, bufferSize); | |||
| FloatVectorOperations::clear(efxoutr, bufferSize); | |||
| #else | |||
| @@ -139,7 +139,7 @@ protected: | |||
| { | |||
| fEffect->out(Stereo<float*>(inBuffer[0], inBuffer[1])); | |||
| #ifdef USE_JUCE | |||
| #ifdef HAVE_JUCE | |||
| FloatVectorOperations::copy(outBuffer[0], efxoutl, frames); | |||
| FloatVectorOperations::copy(outBuffer[1], efxoutr, frames); | |||
| #else | |||
| @@ -155,7 +155,7 @@ protected: | |||
| delete[] efxoutr; | |||
| efxoutl = new float[bufferSize]; | |||
| efxoutr = new float[bufferSize]; | |||
| #ifdef USE_JUCE | |||
| #ifdef HAVE_JUCE | |||
| FloatVectorOperations::clear(efxoutl, bufferSize); | |||
| FloatVectorOperations::clear(efxoutr, bufferSize); | |||
| #else | |||
| @@ -51,8 +51,8 @@ | |||
| #include <set> | |||
| #include <string> | |||
| #ifdef USE_JUCE | |||
| #include "juce_audio_basics.h" | |||
| #ifdef HAVE_JUCE | |||
| # include "juce_audio_basics.h" | |||
| using juce::FloatVectorOperations; | |||
| #endif | |||
| @@ -625,7 +625,7 @@ protected: | |||
| { | |||
| if (pthread_mutex_trylock(&fMaster->mutex) != 0) | |||
| { | |||
| #ifdef USE_JUCE | |||
| #ifdef HAVE_JUCE | |||
| FloatVectorOperations::clear(outBuffer[0], frames); | |||
| FloatVectorOperations::clear(outBuffer[1], frames); | |||
| #else | |||
| @@ -151,7 +151,11 @@ debug: | |||
| $(MAKE) DEBUG=true | |||
| install: $(CARLASTYLE) styles/carlastyle.json | |||
| install -d $(QT_STYLES_DIR) | |||
| install -m 644 $^ $(QT_STYLES_DIR) | |||
| install -d $(QT4_STYLES_DIR) | |||
| install -m 644 $^ $(QT4_STYLES_DIR) | |||
| install-main: $(CARLASTYLE) styles/carlastyle.json | |||
| install -d $(STYLES_DIR) | |||
| install -m 644 $^ $(STYLES_DIR) | |||
| # -------------------------------------------------------------- | |||
| @@ -10,10 +10,6 @@ BUILD_CXX_FLAGS += -I../backend -I../includes -I../utils -isystem ../modules | |||
| # -------------------------------------------------------------- | |||
| ifeq ($(HAVE_OPENGL),true) | |||
| BUILD_CXX_FLAGS += -DWANT_OPENGL | |||
| endif | |||
| ifeq ($(HAVE_AF_DEPS),true) | |||
| BUILD_CXX_FLAGS += -DWANT_AUDIOFILE | |||
| endif | |||
| @@ -29,8 +25,7 @@ endif | |||
| # -------------------------------------------------------------- | |||
| # Common | |||
| LINK_FLAGS += $(shell pkg-config --libs liblo) | |||
| LINK_FLAGS += $(LIBLO_LIBS) | |||
| LINK_FLAGS += $(QTCORE_LIBS) | |||
| LINK_FLAGS += $(QTXML_LIBS) | |||
| LINK_FLAGS += $(RTMEMPOOL_LIBS) | |||
| @@ -43,9 +38,9 @@ LINK_FLAGS += $(JACKBRIDGE_LIBS) | |||
| # -------------------------------------------------------------- | |||
| # Plugin | |||
| # ifeq ($(CARLA_PLUGIN_SUPPORT),true) | |||
| # LINK_FLAGS += $(LILV_LIBS) | |||
| # endif | |||
| ifeq ($(CARLA_PLUGIN_SUPPORT),true) | |||
| LINK_FLAGS += $(LILV_LIBS) | |||
| endif | |||
| # ifeq ($(HAVE_FLUIDSYNTH),true) | |||
| # LINK_FLAGS += $(shell pkg-config --libs fluidsynth) | |||
| @@ -61,17 +56,13 @@ LINK_FLAGS += $(JACKBRIDGE_LIBS) | |||
| # -------------------------------------------------------------- | |||
| # Coomon | |||
| ifeq ($(HAVE_FFMPEG),true) | |||
| LINK_FLAGS += $(shell pkg-config --libs libavcodec libavformat libavutil) | |||
| endif | |||
| ifeq ($(HAVE_JUCE),true) | |||
| LINK_FLAGS += $(JUCE_AUDIO_BASICS_LIBS) | |||
| LINK_FLAGS += $(JUCE_CORE_LIBS) | |||
| # LINK_FLAGS += $(JUCE_DATA_STRUCTURES_LIBS) | |||
| LINK_FLAGS += $(JUCE_DATA_STRUCTURES_LIBS) | |||
| LINK_FLAGS += $(JUCE_EVENTS_LIBS) | |||
| # LINK_FLAGS += $(JUCE_GRAPHICS_LIBS) | |||
| # LINK_FLAGS += $(JUCE_GUI_BASICS_LIBS) | |||
| LINK_FLAGS += $(JUCE_GRAPHICS_LIBS) | |||
| LINK_FLAGS += $(JUCE_GUI_BASICS_LIBS) | |||
| endif | |||
| ifeq ($(HAVE_OPENGL),true) | |||
| @@ -83,6 +74,9 @@ endif | |||
| ifeq ($(HAVE_AF_DEPS),true) | |||
| LINK_FLAGS += $(shell pkg-config --libs sndfile) | |||
| ifeq ($(HAVE_FFMPEG),true) | |||
| LINK_FLAGS += $(shell pkg-config --libs libavcodec libavformat libavutil) | |||
| endif | |||
| endif | |||
| ifeq ($(HAVE_MF_DEPS),true) | |||
| @@ -99,25 +93,25 @@ endif | |||
| # -------------------------------------------------------------- | |||
| # Libs | |||
| LIBS += ../backend/libcarla_engine_plugin.a | |||
| LIBS += ../backend/libcarla_plugin.a | |||
| LIBS += ../backend/carla_engine_plugin.a | |||
| LIBS += ../backend/carla_plugin.a | |||
| LIBS += ../modules/carla_native.a | |||
| LIBS += ../modules/jackbridge.a | |||
| LIBS += ../modules/rtmempool.a | |||
| # ifeq ($(CARLA_PLUGIN_SUPPORT),true) | |||
| # LIBS += ../modules/lilv.a | |||
| # endif | |||
| ifeq ($(CARLA_PLUGIN_SUPPORT),true) | |||
| LIBS += ../modules/lilv.a | |||
| endif | |||
| ifeq ($(HAVE_JUCE),true) | |||
| LIBS += ../modules/juce_audio_basics.a | |||
| # LIBS += ../modules/juce_audio_devices.a | |||
| LIBS += ../modules/juce_core.a | |||
| # LIBS += ../modules/juce_data_structures.a | |||
| LIBS += ../modules/juce_data_structures.a | |||
| LIBS += ../modules/juce_events.a | |||
| # LIBS += ../modules/juce_graphics.a | |||
| # LIBS += ../modules/juce_gui_basics.a | |||
| LIBS += ../modules/juce_graphics.a | |||
| LIBS += ../modules/juce_gui_basics.a | |||
| endif | |||
| ifeq ($(HAVE_OPENGL),true) | |||