Browse Source

Make liblo optional

tags/1.9.6
falkTX 9 years ago
parent
commit
4ee6a834c7
23 changed files with 233 additions and 87 deletions
  1. +20
    -7
      Makefile
  2. +8
    -4
      source/Makefile.mk
  3. +19
    -2
      source/backend/CarlaStandalone.cpp
  4. +10
    -4
      source/backend/engine/CarlaEngine.cpp
  5. +13
    -3
      source/backend/engine/CarlaEngineInternal.cpp
  6. +5
    -3
      source/backend/engine/CarlaEngineInternal.hpp
  7. +2
    -0
      source/backend/engine/CarlaEngineNative.cpp
  8. +4
    -0
      source/backend/engine/CarlaEngineOsc.cpp
  9. +4
    -0
      source/backend/engine/CarlaEngineOsc.hpp
  10. +4
    -0
      source/backend/engine/CarlaEngineOscSend.cpp
  11. +6
    -4
      source/backend/engine/CarlaEngineThread.cpp
  12. +73
    -44
      source/backend/plugin/CarlaPlugin.cpp
  13. +37
    -5
      source/backend/plugin/CarlaPluginDSSI.cpp
  14. +2
    -4
      source/backend/plugin/CarlaPluginInternal.cpp
  15. +0
    -1
      source/backend/plugin/CarlaPluginInternal.hpp
  16. +1
    -1
      source/backend/plugin/CarlaPluginLV2.cpp
  17. +1
    -1
      source/backend/plugin/CarlaPluginNative.cpp
  18. +4
    -4
      source/backend/plugin/CarlaPluginVST2.cpp
  19. +4
    -0
      source/native-plugins/distrho-3bandeq.cpp
  20. +4
    -0
      source/native-plugins/distrho-3bandsplitter.cpp
  21. +4
    -0
      source/native-plugins/distrho-mverb.cpp
  22. +4
    -0
      source/native-plugins/distrho-nekobi.cpp
  23. +4
    -0
      source/native-plugins/distrho-pingpongpan.cpp

+ 20
- 7
Makefile View File

@@ -250,6 +250,7 @@ wine64:
# ---------------------------------------------------------------------------------------------------------------------------- # ----------------------------------------------------------------------------------------------------------------------------
# Resources # Resources


ifeq ($(HAVE_PYQT),true)
RES = \ RES = \
bin/resources/carla_app.py \ bin/resources/carla_app.py \
bin/resources/carla_backend.py \ bin/resources/carla_backend.py \
@@ -310,10 +311,14 @@ source/resources_rc.py: resources/resources.qrc resources/*/*.png resources/*/*.


bin/resources/%.py: source/%.py bin/resources/%.py: source/%.py
$(LINK) $(CURDIR)/source/$*.py bin/resources/ $(LINK) $(CURDIR)/source/$*.py bin/resources/
else
RES:
endif


# ---------------------------------------------------------------------------------------------------------------------------- # ----------------------------------------------------------------------------------------------------------------------------
# UI code # UI code


ifeq ($(HAVE_PYQT),true)
UIs = \ UIs = \
source/ui_carla_control.py \ source/ui_carla_control.py \
source/ui_carla_about.py \ source/ui_carla_about.py \
@@ -338,6 +343,9 @@ UI: $(UIs)


source/ui_%.py: resources/ui/%.ui source/ui_%.py: resources/ui/%.ui
$(PYUIC) $< -o $@ $(PYUIC) $< -o $@
else
UI:
endif


# ---------------------------------------------------------------------------------------------------------------------------- # ----------------------------------------------------------------------------------------------------------------------------
# Widgets # Widgets
@@ -785,20 +793,25 @@ endif


@echo "$(tS)---> Internal plugins: $(tE)" @echo "$(tS)---> Internal plugins: $(tE)"
ifneq ($(WIN32),true) ifneq ($(WIN32),true)
@echo "Carla-Patchbay:$(ANS_YES)"
@echo "Carla-Rack: $(ANS_YES)"
@echo "Carla-Patchbay: $(ANS_YES)"
@echo "Carla-Rack: $(ANS_YES)"
else
@echo "Carla-Patchbay: $(ANS_NO) $(mS)Not available for Windows$(mE)"
@echo "Carla-Rack: $(ANS_NO) $(mS)Not available for Windows$(mE)"
endif
ifeq ($(HAVE_DGL),true)
@echo "DISTRHO Plugins:$(ANS_YES) (with UI)"
else else
@echo "Carla-Patchbay:$(ANS_NO) $(mS)Not available for Windows$(mE)"
@echo "Carla-Rack: $(ANS_NO) $(mS)Not available for Windows$(mE)"
@echo "DISTRHO Plugins:$(ANS_YES) (without UI)"
endif endif
ifeq ($(HAVE_ZYN_DEPS),true) ifeq ($(HAVE_ZYN_DEPS),true)
ifeq ($(HAVE_ZYN_UI_DEPS),true) ifeq ($(HAVE_ZYN_UI_DEPS),true)
@echo "ZynAddSubFX: $(ANS_YES) (with UI)"
@echo "ZynAddSubFX: $(ANS_YES) (with UI)"
else else
@echo "ZynAddSubFX: $(ANS_YES) (without UI) $(mS)NTK missing$(mE)"
@echo "ZynAddSubFX: $(ANS_YES) (without UI) $(mS)NTK missing$(mE)"
endif endif
else else
@echo "ZynAddSubFX: $(ANS_NO) $(mS)fftw3, mxml or zlib missing$(mE)"
@echo "ZynAddSubFX: $(ANS_NO) $(mS)fftw3, mxml or zlib missing$(mE)"
endif endif


# ---------------------------------------------------------------------------------------------------------------------------- # ----------------------------------------------------------------------------------------------------------------------------


+ 8
- 4
source/Makefile.mk View File

@@ -145,10 +145,6 @@ endif
# -------------------------------------------------------------- # --------------------------------------------------------------
# Check for required libs # Check for required libs


ifneq ($(shell pkg-config --exists liblo && echo true),true)
$(error liblo missing, cannot continue)
endif

ifeq ($(LINUX),true) ifeq ($(LINUX),true)
ifeq (,$(wildcard /usr/include/magic.h)) ifeq (,$(wildcard /usr/include/magic.h))
$(error libmagic missing, cannot continue) $(error libmagic missing, cannot continue)
@@ -173,6 +169,8 @@ endif


HAVE_QT4 = $(shell pkg-config --exists QtCore QtGui && echo true) HAVE_QT4 = $(shell pkg-config --exists QtCore QtGui && echo true)
HAVE_QT5 = $(shell pkg-config --exists Qt5Core Qt5Gui Qt5Widgets && echo true) HAVE_QT5 = $(shell pkg-config --exists Qt5Core Qt5Gui Qt5Widgets && echo true)

HAVE_LIBLO = $(shell pkg-config --exists liblo && echo true)
HAVE_FLUIDSYNTH = $(shell pkg-config --exists fluidsynth && echo true) HAVE_FLUIDSYNTH = $(shell pkg-config --exists fluidsynth && echo true)
HAVE_LINUXSAMPLER = $(shell pkg-config --atleast-version=1.0.0.svn41 linuxsampler && echo true) HAVE_LINUXSAMPLER = $(shell pkg-config --atleast-version=1.0.0.svn41 linuxsampler && echo true)


@@ -262,6 +260,10 @@ ifeq ($(HAVE_DGL),true)
BASE_FLAGS += -DHAVE_DGL BASE_FLAGS += -DHAVE_DGL
endif endif


ifeq ($(HAVE_LIBLO),true)
BASE_FLAGS += -DHAVE_LIBLO
endif

ifeq ($(HAVE_FLUIDSYNTH),true) ifeq ($(HAVE_FLUIDSYNTH),true)
BASE_FLAGS += -DHAVE_FLUIDSYNTH BASE_FLAGS += -DHAVE_FLUIDSYNTH
endif endif
@@ -281,8 +283,10 @@ endif
# -------------------------------------------------------------- # --------------------------------------------------------------
# Set libs stuff (part 1) # Set libs stuff (part 1)


ifeq ($(HAVE_LIBLO),true)
LIBLO_FLAGS = $(shell pkg-config --cflags liblo) LIBLO_FLAGS = $(shell pkg-config --cflags liblo)
LIBLO_LIBS = $(shell pkg-config --libs liblo) LIBLO_LIBS = $(shell pkg-config --libs liblo)
endif


ifeq ($(HAVE_FLUIDSYNTH),true) ifeq ($(HAVE_FLUIDSYNTH),true)
FLUIDSYNTH_FLAGS = $(shell pkg-config --cflags fluidsynth) FLUIDSYNTH_FLAGS = $(shell pkg-config --cflags fluidsynth)


+ 19
- 2
source/backend/CarlaStandalone.cpp View File

@@ -26,7 +26,10 @@


#include "CarlaBackendUtils.hpp" #include "CarlaBackendUtils.hpp"
#include "CarlaBase64Utils.hpp" #include "CarlaBase64Utils.hpp"
#include "CarlaOscUtils.hpp"

#ifdef HAVE_LIBLO
# include "CarlaOscUtils.hpp"
#endif


#include "juce_audio_formats.h" #include "juce_audio_formats.h"


@@ -79,6 +82,7 @@ struct CarlaBackendStandalone {


static CarlaBackendStandalone gStandalone; static CarlaBackendStandalone gStandalone;


#ifdef HAVE_LIBLO
// ------------------------------------------------------------------------------------------------------------------- // -------------------------------------------------------------------------------------------------------------------
// NSM support // NSM support


@@ -345,6 +349,8 @@ private:


static CarlaNSM gNSM; static CarlaNSM gNSM;


#endif // HAVE_LIBLO

// ------------------------------------------------------------------------------------------------------------------- // -------------------------------------------------------------------------------------------------------------------
// API // API


@@ -679,7 +685,9 @@ void carla_engine_idle()
{ {
CARLA_SAFE_ASSERT_RETURN(gStandalone.engine != nullptr,); CARLA_SAFE_ASSERT_RETURN(gStandalone.engine != nullptr,);


#ifdef HAVE_LIBLO
gNSM.idle(); gNSM.idle();
#endif
gStandalone.engine->idle(); gStandalone.engine->idle();
} }


@@ -788,8 +796,9 @@ void carla_set_engine_option(EngineOption option, int value, const char* valueSt
case CB:: ENGINE_OPTION_NSM_INIT: case CB:: ENGINE_OPTION_NSM_INIT:
CARLA_SAFE_ASSERT_RETURN(value != 0,); CARLA_SAFE_ASSERT_RETURN(value != 0,);
CARLA_SAFE_ASSERT_RETURN(valueStr != nullptr && valueStr[0] != '\0',); CARLA_SAFE_ASSERT_RETURN(valueStr != nullptr && valueStr[0] != '\0',);
#ifdef HAVE_LIBLO
gNSM.announce(value, valueStr); gNSM.announce(value, valueStr);
#endif
break; break;


case CB::ENGINE_OPTION_PLUGIN_PATH: case CB::ENGINE_OPTION_PLUGIN_PATH:
@@ -2153,6 +2162,7 @@ const char* carla_get_host_osc_url_tcp()
{ {
carla_debug("carla_get_host_osc_url_tcp()"); carla_debug("carla_get_host_osc_url_tcp()");


#ifdef HAVE_LIBLO
if (gStandalone.engine == nullptr) if (gStandalone.engine == nullptr)
{ {
carla_stderr2("Engine is not running"); carla_stderr2("Engine is not running");
@@ -2161,12 +2171,16 @@ const char* carla_get_host_osc_url_tcp()
} }


return gStandalone.engine->getOscServerPathTCP(); return gStandalone.engine->getOscServerPathTCP();
#else
return nullptr;
#endif
} }


const char* carla_get_host_osc_url_udp() const char* carla_get_host_osc_url_udp()
{ {
carla_debug("carla_get_host_osc_url_udp()"); carla_debug("carla_get_host_osc_url_udp()");


#ifdef HAVE_LIBLO
if (gStandalone.engine == nullptr) if (gStandalone.engine == nullptr)
{ {
carla_stderr2("Engine is not running"); carla_stderr2("Engine is not running");
@@ -2175,6 +2189,9 @@ const char* carla_get_host_osc_url_udp()
} }


return gStandalone.engine->getOscServerPathUDP(); return gStandalone.engine->getOscServerPathUDP();
#else
return nullptr;
#endif
} }


// ------------------------------------------------------------------------------------------------------------------- // -------------------------------------------------------------------------------------------------------------------


+ 10
- 4
source/backend/engine/CarlaEngine.cpp View File

@@ -270,7 +270,7 @@ bool CarlaEngine::close()
removeAllPlugins(); removeAllPlugins();
} }


#ifndef BUILD_BRIDGE
#if defined(HAVE_LIBLO) && ! defined(BUILD_BRIDGE)
if (pData->osc.isControlRegistered()) if (pData->osc.isControlRegistered())
oscSend_control_exit(); oscSend_control_exit();
#endif #endif
@@ -303,7 +303,9 @@ void CarlaEngine::idle() noexcept
} }
} }


#ifdef HAVE_LIBLO
pData->osc.idle(); pData->osc.idle();
#endif
} }


CarlaEngineClient* CarlaEngine::addClient(CarlaPlugin* const) CarlaEngineClient* CarlaEngine::addClient(CarlaPlugin* const)
@@ -521,7 +523,7 @@ bool CarlaEngine::addPlugin(const BinaryType btype, const PluginType ptype, cons
if (plugin == nullptr) if (plugin == nullptr)
return false; return false;


#ifndef BUILD_BRIDGE
#if defined(HAVE_LIBLO) && ! defined(BUILD_BRIDGE)
plugin->registerToOscClient(); plugin->registerToOscClient();
#endif #endif


@@ -611,8 +613,10 @@ bool CarlaEngine::removePlugin(const uint id)
} }
*/ */


# ifdef HAVE_LIBLO
if (isOscControlRegistered()) if (isOscControlRegistered())
oscSend_control_remove_plugin(id); oscSend_control_remove_plugin(id);
# endif
#else #else
pData->curPluginCount = 0; pData->curPluginCount = 0;
carla_zeroStruct(pData->plugins, 1); carla_zeroStruct(pData->plugins, 1);
@@ -1397,15 +1401,16 @@ void CarlaEngine::setOption(const EngineOption option, const int value, const ch
} }
} }


#ifdef HAVE_LIBLO
// ----------------------------------------------------------------------- // -----------------------------------------------------------------------
// OSC Stuff // OSC Stuff


#ifndef BUILD_BRIDGE
# ifndef BUILD_BRIDGE
bool CarlaEngine::isOscControlRegistered() const noexcept bool CarlaEngine::isOscControlRegistered() const noexcept
{ {
return pData->osc.isControlRegistered(); return pData->osc.isControlRegistered();
} }
#endif
# endif


void CarlaEngine::idleOsc() const noexcept void CarlaEngine::idleOsc() const noexcept
{ {
@@ -1421,6 +1426,7 @@ const char* CarlaEngine::getOscServerPathUDP() const noexcept
{ {
return pData->osc.getServerPathUDP(); return pData->osc.getServerPathUDP();
} }
#endif


// ----------------------------------------------------------------------- // -----------------------------------------------------------------------
// Helper functions // Helper functions


+ 13
- 3
source/backend/engine/CarlaEngineInternal.cpp View File

@@ -94,9 +94,11 @@ void EngineNextAction::clearAndReset() noexcept
// CarlaEngine::ProtectedData // CarlaEngine::ProtectedData


CarlaEngine::ProtectedData::ProtectedData(CarlaEngine* const engine) noexcept CarlaEngine::ProtectedData::ProtectedData(CarlaEngine* const engine) noexcept
: osc(engine),
thread(engine),
: thread(engine),
#ifdef HAVE_LIBLO
osc(engine),
oscData(nullptr), oscData(nullptr),
#endif
callback(nullptr), callback(nullptr),
callbackPtr(nullptr), callbackPtr(nullptr),
fileCallback(nullptr), fileCallback(nullptr),
@@ -145,7 +147,9 @@ CarlaEngine::ProtectedData::~ProtectedData() noexcept
bool CarlaEngine::ProtectedData::init(const char* const clientName) bool CarlaEngine::ProtectedData::init(const char* const clientName)
{ {
CARLA_SAFE_ASSERT_RETURN_INTERNAL_ERR(name.isEmpty(), "Invalid engine internal data (err #1)"); CARLA_SAFE_ASSERT_RETURN_INTERNAL_ERR(name.isEmpty(), "Invalid engine internal data (err #1)");
#ifdef HAVE_LIBLO
CARLA_SAFE_ASSERT_RETURN_INTERNAL_ERR(oscData == nullptr, "Invalid engine internal data (err #2)"); CARLA_SAFE_ASSERT_RETURN_INTERNAL_ERR(oscData == nullptr, "Invalid engine internal data (err #2)");
#endif
CARLA_SAFE_ASSERT_RETURN_INTERNAL_ERR(events.in == nullptr, "Invalid engine internal data (err #4)"); CARLA_SAFE_ASSERT_RETURN_INTERNAL_ERR(events.in == nullptr, "Invalid engine internal data (err #4)");
CARLA_SAFE_ASSERT_RETURN_INTERNAL_ERR(events.out == nullptr, "Invalid engine internal data (err #5)"); CARLA_SAFE_ASSERT_RETURN_INTERNAL_ERR(events.out == nullptr, "Invalid engine internal data (err #5)");
CARLA_SAFE_ASSERT_RETURN_INTERNAL_ERR(clientName != nullptr && clientName[0] != '\0', "Invalid client name"); CARLA_SAFE_ASSERT_RETURN_INTERNAL_ERR(clientName != nullptr && clientName[0] != '\0', "Invalid client name");
@@ -193,10 +197,14 @@ bool CarlaEngine::ProtectedData::init(const char* const clientName)


timeInfo.clear(); timeInfo.clear();


#ifdef HAVE_LIBLO
osc.init(clientName); osc.init(clientName);
# ifndef BUILD_BRIDGE
oscData = osc.getControlData();
# endif
#endif


#ifndef BUILD_BRIDGE #ifndef BUILD_BRIDGE
oscData = osc.getControlData();
plugins = new EnginePluginData[maxPluginNumber]; plugins = new EnginePluginData[maxPluginNumber];
carla_zeroStruct(plugins, maxPluginNumber); carla_zeroStruct(plugins, maxPluginNumber);
#endif #endif
@@ -219,8 +227,10 @@ void CarlaEngine::ProtectedData::close()
thread.stopThread(500); thread.stopThread(500);
nextAction.ready(); nextAction.ready();


#ifdef HAVE_LIBLO
osc.close(); osc.close();
oscData = nullptr; oscData = nullptr;
#endif


aboutToClose = false; aboutToClose = false;
curPluginCount = 0; curPluginCount = 0;


+ 5
- 3
source/backend/engine/CarlaEngineInternal.hpp View File

@@ -150,13 +150,15 @@ struct EnginePluginData {
// CarlaEngineProtectedData // CarlaEngineProtectedData


struct CarlaEngine::ProtectedData { struct CarlaEngine::ProtectedData {
CarlaEngineOsc osc;
CarlaEngineThread thread; CarlaEngineThread thread;


#ifdef BUILD_BRIDGE
#ifdef HAVE_LIBLO
CarlaEngineOsc osc;
# ifdef BUILD_BRIDGE
CarlaOscData* oscData; CarlaOscData* oscData;
#else
# else
const CarlaOscData* oscData; const CarlaOscData* oscData;
# endif
#endif #endif


EngineCallbackFunc callback; EngineCallbackFunc callback;


+ 2
- 0
source/backend/engine/CarlaEngineNative.cpp View File

@@ -1467,7 +1467,9 @@ protected:
} }
} }


#ifdef HAVE_LIBLO
pData->osc.idle(); pData->osc.idle();
#endif


fUiServer.idlePipe(); fUiServer.idlePipe();




+ 4
- 0
source/backend/engine/CarlaEngineOsc.cpp View File

@@ -15,6 +15,8 @@
* For a full copy of the GNU General Public License see the doc/GPL.txt file. * For a full copy of the GNU General Public License see the doc/GPL.txt file.
*/ */


#ifdef HAVE_LIBLO

#include "CarlaEngine.hpp" #include "CarlaEngine.hpp"
#include "CarlaEngineOsc.hpp" #include "CarlaEngineOsc.hpp"
#include "CarlaPlugin.hpp" #include "CarlaPlugin.hpp"
@@ -541,3 +543,5 @@ int CarlaEngineOsc::handleMsgNoteOff(CARLA_ENGINE_OSC_HANDLE_ARGS)
// ----------------------------------------------------------------------- // -----------------------------------------------------------------------


CARLA_BACKEND_END_NAMESPACE CARLA_BACKEND_END_NAMESPACE

#endif // HAVE_LIBLO

+ 4
- 0
source/backend/engine/CarlaEngineOsc.hpp View File

@@ -18,6 +18,8 @@
#ifndef CARLA_ENGINE_OSC_HPP_INCLUDED #ifndef CARLA_ENGINE_OSC_HPP_INCLUDED
#define CARLA_ENGINE_OSC_HPP_INCLUDED #define CARLA_ENGINE_OSC_HPP_INCLUDED


#ifdef HAVE_LIBLO

#include "CarlaBackend.h" #include "CarlaBackend.h"
#include "CarlaOscUtils.hpp" #include "CarlaOscUtils.hpp"
#include "CarlaString.hpp" #include "CarlaString.hpp"
@@ -156,4 +158,6 @@ private:


CARLA_BACKEND_END_NAMESPACE CARLA_BACKEND_END_NAMESPACE


#endif // HAVE_LIBLO

#endif // CARLA_ENGINE_OSC_HPP_INCLUDED #endif // CARLA_ENGINE_OSC_HPP_INCLUDED

+ 4
- 0
source/backend/engine/CarlaEngineOscSend.cpp View File

@@ -15,6 +15,8 @@
* For a full copy of the GNU General Public License see the doc/GPL.txt file. * For a full copy of the GNU General Public License see the doc/GPL.txt file.
*/ */


#ifdef HAVE_LIBLO

#include "CarlaBackendUtils.hpp" #include "CarlaBackendUtils.hpp"
#include "CarlaEngineInternal.hpp" #include "CarlaEngineInternal.hpp"
#include "CarlaMIDI.h" #include "CarlaMIDI.h"
@@ -401,3 +403,5 @@ void CarlaEngine::oscSend_control_exit() const noexcept
// ----------------------------------------------------------------------- // -----------------------------------------------------------------------


CARLA_BACKEND_END_NAMESPACE CARLA_BACKEND_END_NAMESPACE

#endif // HAVE_LIBLO

+ 6
- 4
source/backend/engine/CarlaEngineThread.cpp View File

@@ -51,12 +51,14 @@ void CarlaEngineThread::run() noexcept


#ifdef BUILD_BRIDGE #ifdef BUILD_BRIDGE
for (; /*kEngine->isRunning() &&*/ ! shouldThreadExit();) for (; /*kEngine->isRunning() &&*/ ! shouldThreadExit();)
{
const bool oscRegisted = false;
#else #else
for (; kEngine->isRunning() && ! shouldThreadExit();) for (; kEngine->isRunning() && ! shouldThreadExit();)
#endif
{ {
#if defined(HAVE_LIBLO) && ! defined(BUILD_BRIDGE)
const bool oscRegisted = kEngine->isOscControlRegistered(); const bool oscRegisted = kEngine->isOscControlRegistered();
#else
const bool oscRegisted = false;
#endif #endif


for (uint i=0, count = kEngine->getCurrentPluginCount(); i < count; ++i) for (uint i=0, count = kEngine->getCurrentPluginCount(); i < count; ++i)
@@ -91,7 +93,7 @@ void CarlaEngineThread::run() noexcept


value = plugin->getParameterValue(j); value = plugin->getParameterValue(j);


#ifndef BUILD_BRIDGE
#if defined(HAVE_LIBLO) && ! defined(BUILD_BRIDGE)
// Update OSC engine client // Update OSC engine client
if (oscRegisted) if (oscRegisted)
kEngine->oscSend_control_set_parameter_value(i, static_cast<int32_t>(j), value); kEngine->oscSend_control_set_parameter_value(i, static_cast<int32_t>(j), value);
@@ -109,7 +111,7 @@ void CarlaEngineThread::run() noexcept
} }
} }


#ifndef BUILD_BRIDGE
#if defined(HAVE_LIBLO) && ! defined(BUILD_BRIDGE)
// ----------------------------------------------------------- // -----------------------------------------------------------
// Update OSC control client peaks // Update OSC control client peaks




+ 73
- 44
source/backend/plugin/CarlaPlugin.cpp View File

@@ -966,15 +966,17 @@ void CarlaPlugin::setActive(const bool active, const bool sendOsc, const bool se
#ifndef BUILD_BRIDGE #ifndef BUILD_BRIDGE
const float value(active ? 1.0f : 0.0f); const float value(active ? 1.0f : 0.0f);


# ifdef HAVE_LIBLO
if (sendOsc && pData->engine->isOscControlRegistered()) if (sendOsc && pData->engine->isOscControlRegistered())
pData->engine->oscSend_control_set_parameter_value(pData->id, PARAMETER_ACTIVE, value); pData->engine->oscSend_control_set_parameter_value(pData->id, PARAMETER_ACTIVE, value);
# endif


if (sendCallback) if (sendCallback)
pData->engine->callback(ENGINE_CALLBACK_PARAMETER_VALUE_CHANGED, pData->id, PARAMETER_ACTIVE, 0, value, nullptr); pData->engine->callback(ENGINE_CALLBACK_PARAMETER_VALUE_CHANGED, pData->id, PARAMETER_ACTIVE, 0, value, nullptr);
#else
// unused
return; (void)sendOsc; (void)sendCallback;
#endif #endif

// may be unused
return; (void)sendOsc; (void)sendCallback;
} }


#ifndef BUILD_BRIDGE #ifndef BUILD_BRIDGE
@@ -989,11 +991,16 @@ void CarlaPlugin::setDryWet(const float value, const bool sendOsc, const bool se


pData->postProc.dryWet = fixedValue; pData->postProc.dryWet = fixedValue;


#ifdef HAVE_LIBLO
if (sendOsc && pData->engine->isOscControlRegistered()) if (sendOsc && pData->engine->isOscControlRegistered())
pData->engine->oscSend_control_set_parameter_value(pData->id, PARAMETER_DRYWET, fixedValue); pData->engine->oscSend_control_set_parameter_value(pData->id, PARAMETER_DRYWET, fixedValue);
#endif


if (sendCallback) if (sendCallback)
pData->engine->callback(ENGINE_CALLBACK_PARAMETER_VALUE_CHANGED, pData->id, PARAMETER_DRYWET, 0, fixedValue, nullptr); pData->engine->callback(ENGINE_CALLBACK_PARAMETER_VALUE_CHANGED, pData->id, PARAMETER_DRYWET, 0, fixedValue, nullptr);

// may be unused
return; (void)sendOsc;
} }


void CarlaPlugin::setVolume(const float value, const bool sendOsc, const bool sendCallback) noexcept void CarlaPlugin::setVolume(const float value, const bool sendOsc, const bool sendCallback) noexcept
@@ -1007,11 +1014,16 @@ void CarlaPlugin::setVolume(const float value, const bool sendOsc, const bool se


pData->postProc.volume = fixedValue; pData->postProc.volume = fixedValue;


#ifdef HAVE_LIBLO
if (sendOsc && pData->engine->isOscControlRegistered()) if (sendOsc && pData->engine->isOscControlRegistered())
pData->engine->oscSend_control_set_parameter_value(pData->id, PARAMETER_VOLUME, fixedValue); pData->engine->oscSend_control_set_parameter_value(pData->id, PARAMETER_VOLUME, fixedValue);
#endif


if (sendCallback) if (sendCallback)
pData->engine->callback(ENGINE_CALLBACK_PARAMETER_VALUE_CHANGED, pData->id, PARAMETER_VOLUME, 0, fixedValue, nullptr); pData->engine->callback(ENGINE_CALLBACK_PARAMETER_VALUE_CHANGED, pData->id, PARAMETER_VOLUME, 0, fixedValue, nullptr);

// may be unused
return; (void)sendOsc;
} }


void CarlaPlugin::setBalanceLeft(const float value, const bool sendOsc, const bool sendCallback) noexcept void CarlaPlugin::setBalanceLeft(const float value, const bool sendOsc, const bool sendCallback) noexcept
@@ -1025,11 +1037,16 @@ void CarlaPlugin::setBalanceLeft(const float value, const bool sendOsc, const bo


pData->postProc.balanceLeft = fixedValue; pData->postProc.balanceLeft = fixedValue;


#ifdef HAVE_LIBLO
if (sendOsc && pData->engine->isOscControlRegistered()) if (sendOsc && pData->engine->isOscControlRegistered())
pData->engine->oscSend_control_set_parameter_value(pData->id, PARAMETER_BALANCE_LEFT, fixedValue); pData->engine->oscSend_control_set_parameter_value(pData->id, PARAMETER_BALANCE_LEFT, fixedValue);
#endif


if (sendCallback) if (sendCallback)
pData->engine->callback(ENGINE_CALLBACK_PARAMETER_VALUE_CHANGED, pData->id, PARAMETER_BALANCE_LEFT, 0, fixedValue, nullptr); pData->engine->callback(ENGINE_CALLBACK_PARAMETER_VALUE_CHANGED, pData->id, PARAMETER_BALANCE_LEFT, 0, fixedValue, nullptr);

// may be unused
return; (void)sendOsc;
} }


void CarlaPlugin::setBalanceRight(const float value, const bool sendOsc, const bool sendCallback) noexcept void CarlaPlugin::setBalanceRight(const float value, const bool sendOsc, const bool sendCallback) noexcept
@@ -1043,11 +1060,16 @@ void CarlaPlugin::setBalanceRight(const float value, const bool sendOsc, const b


pData->postProc.balanceRight = fixedValue; pData->postProc.balanceRight = fixedValue;


#ifdef HAVE_LIBLO
if (sendOsc && pData->engine->isOscControlRegistered()) if (sendOsc && pData->engine->isOscControlRegistered())
pData->engine->oscSend_control_set_parameter_value(pData->id, PARAMETER_BALANCE_RIGHT, fixedValue); pData->engine->oscSend_control_set_parameter_value(pData->id, PARAMETER_BALANCE_RIGHT, fixedValue);
#endif


if (sendCallback) if (sendCallback)
pData->engine->callback(ENGINE_CALLBACK_PARAMETER_VALUE_CHANGED, pData->id, PARAMETER_BALANCE_RIGHT, 0, fixedValue, nullptr); pData->engine->callback(ENGINE_CALLBACK_PARAMETER_VALUE_CHANGED, pData->id, PARAMETER_BALANCE_RIGHT, 0, fixedValue, nullptr);

// may be unused
return; (void)sendOsc;
} }


void CarlaPlugin::setPanning(const float value, const bool sendOsc, const bool sendCallback) noexcept void CarlaPlugin::setPanning(const float value, const bool sendOsc, const bool sendCallback) noexcept
@@ -1061,13 +1083,18 @@ void CarlaPlugin::setPanning(const float value, const bool sendOsc, const bool s


pData->postProc.panning = fixedValue; pData->postProc.panning = fixedValue;


#ifdef HAVE_LIBLO
if (sendOsc && pData->engine->isOscControlRegistered()) if (sendOsc && pData->engine->isOscControlRegistered())
pData->engine->oscSend_control_set_parameter_value(pData->id, PARAMETER_PANNING, fixedValue); pData->engine->oscSend_control_set_parameter_value(pData->id, PARAMETER_PANNING, fixedValue);
#endif


if (sendCallback) if (sendCallback)
pData->engine->callback(ENGINE_CALLBACK_PARAMETER_VALUE_CHANGED, pData->id, PARAMETER_PANNING, 0, fixedValue, nullptr); pData->engine->callback(ENGINE_CALLBACK_PARAMETER_VALUE_CHANGED, pData->id, PARAMETER_PANNING, 0, fixedValue, nullptr);

// may be unused
return; (void)sendOsc;
} }
#endif
#endif // ! BUILD_BRIDGE


void CarlaPlugin::setCtrlChannel(const int8_t channel, const bool sendOsc, const bool sendCallback) noexcept void CarlaPlugin::setCtrlChannel(const int8_t channel, const bool sendOsc, const bool sendCallback) noexcept
{ {
@@ -1084,15 +1111,17 @@ void CarlaPlugin::setCtrlChannel(const int8_t channel, const bool sendOsc, const
#ifndef BUILD_BRIDGE #ifndef BUILD_BRIDGE
const float channelf(channel); const float channelf(channel);


# ifdef HAVE_LIBLO
if (sendOsc && pData->engine->isOscControlRegistered()) if (sendOsc && pData->engine->isOscControlRegistered())
pData->engine->oscSend_control_set_parameter_value(pData->id, PARAMETER_CTRL_CHANNEL, channelf); pData->engine->oscSend_control_set_parameter_value(pData->id, PARAMETER_CTRL_CHANNEL, channelf);
# endif


if (sendCallback) if (sendCallback)
pData->engine->callback(ENGINE_CALLBACK_PARAMETER_VALUE_CHANGED, pData->id, PARAMETER_CTRL_CHANNEL, 0, channelf, nullptr); pData->engine->callback(ENGINE_CALLBACK_PARAMETER_VALUE_CHANGED, pData->id, PARAMETER_CTRL_CHANNEL, 0, channelf, nullptr);
#else
// unused
return; (void)sendOsc; (void)sendCallback;
#endif #endif

// may be unused
return; (void)sendOsc; (void)sendCallback;
} }


// ------------------------------------------------------------------- // -------------------------------------------------------------------
@@ -1106,17 +1135,17 @@ void CarlaPlugin::setParameterValue(const uint32_t parameterId, const float valu
uiParameterChange(parameterId, value); uiParameterChange(parameterId, value);


#ifndef BUILD_BRIDGE #ifndef BUILD_BRIDGE
# ifdef HAVE_LIBLO
if (sendOsc && pData->engine->isOscControlRegistered()) if (sendOsc && pData->engine->isOscControlRegistered())
pData->engine->oscSend_control_set_parameter_value(pData->id, static_cast<int32_t>(parameterId), value); pData->engine->oscSend_control_set_parameter_value(pData->id, static_cast<int32_t>(parameterId), value);
#endif
# endif


if (sendCallback) if (sendCallback)
pData->engine->callback(ENGINE_CALLBACK_PARAMETER_VALUE_CHANGED, pData->id, static_cast<int>(parameterId), 0, value, nullptr); pData->engine->callback(ENGINE_CALLBACK_PARAMETER_VALUE_CHANGED, pData->id, static_cast<int>(parameterId), 0, value, nullptr);

#ifdef BUILD_BRIDGE
// unused
return; (void)sendOsc;
#endif #endif

// may be unused
return; (void)sendOsc; (void)sendCallback;
} }


void CarlaPlugin::setParameterValueByRealIndex(const int32_t rindex, const float value, const bool sendGui, const bool sendOsc, const bool sendCallback) noexcept void CarlaPlugin::setParameterValueByRealIndex(const int32_t rindex, const float value, const bool sendGui, const bool sendOsc, const bool sendCallback) noexcept
@@ -1166,15 +1195,17 @@ void CarlaPlugin::setParameterMidiChannel(const uint32_t parameterId, const uint
pData->param.data[parameterId].midiChannel = channel; pData->param.data[parameterId].midiChannel = channel;


#ifndef BUILD_BRIDGE #ifndef BUILD_BRIDGE
# ifdef HAVE_LIBLO
if (sendOsc && pData->engine->isOscControlRegistered()) if (sendOsc && pData->engine->isOscControlRegistered())
pData->engine->oscSend_control_set_parameter_midi_channel(pData->id, parameterId, channel); pData->engine->oscSend_control_set_parameter_midi_channel(pData->id, parameterId, channel);
# endif


if (sendCallback) if (sendCallback)
pData->engine->callback(ENGINE_CALLBACK_PARAMETER_MIDI_CHANNEL_CHANGED, pData->id, static_cast<int>(parameterId), channel, 0.0f, nullptr); pData->engine->callback(ENGINE_CALLBACK_PARAMETER_MIDI_CHANNEL_CHANGED, pData->id, static_cast<int>(parameterId), channel, 0.0f, nullptr);
#else
// unused
return; (void)sendOsc; (void)sendCallback;
#endif #endif

// may be unused
return; (void)sendOsc; (void)sendCallback;
} }


void CarlaPlugin::setParameterMidiCC(const uint32_t parameterId, const int16_t cc, const bool sendOsc, const bool sendCallback) noexcept void CarlaPlugin::setParameterMidiCC(const uint32_t parameterId, const int16_t cc, const bool sendOsc, const bool sendCallback) noexcept
@@ -1188,15 +1219,17 @@ void CarlaPlugin::setParameterMidiCC(const uint32_t parameterId, const int16_t c
pData->param.data[parameterId].midiCC = cc; pData->param.data[parameterId].midiCC = cc;


#ifndef BUILD_BRIDGE #ifndef BUILD_BRIDGE
# ifdef HAVE_LIBLO
if (sendOsc && pData->engine->isOscControlRegistered()) if (sendOsc && pData->engine->isOscControlRegistered())
pData->engine->oscSend_control_set_parameter_midi_cc(pData->id, parameterId, cc); pData->engine->oscSend_control_set_parameter_midi_cc(pData->id, parameterId, cc);
# endif


if (sendCallback) if (sendCallback)
pData->engine->callback(ENGINE_CALLBACK_PARAMETER_MIDI_CC_CHANGED, pData->id, static_cast<int>(parameterId), cc, 0.0f, nullptr); pData->engine->callback(ENGINE_CALLBACK_PARAMETER_MIDI_CC_CHANGED, pData->id, static_cast<int>(parameterId), cc, 0.0f, nullptr);
#else
// unused
return; (void)sendOsc; (void)sendCallback;
#endif #endif

// may be unused
return; (void)sendOsc; (void)sendCallback;
} }


void CarlaPlugin::setCustomData(const char* const type, const char* const key, const char* const value, const bool) void CarlaPlugin::setCustomData(const char* const type, const char* const key, const char* const value, const bool)
@@ -1249,13 +1282,13 @@ void CarlaPlugin::setProgram(const int32_t index, const bool sendGui, const bool


pData->prog.current = index; pData->prog.current = index;


#ifdef BUILD_BRIDGE
const bool reallySendOsc(false);
#else
#if defined(HAVE_LIBLO) && ! defined(BUILD_BRIDGE)
const bool reallySendOsc(sendOsc && pData->engine->isOscControlRegistered()); const bool reallySendOsc(sendOsc && pData->engine->isOscControlRegistered());


if (reallySendOsc) if (reallySendOsc)
pData->engine->oscSend_control_set_current_program(pData->id, index); pData->engine->oscSend_control_set_current_program(pData->id, index);
#else
const bool reallySendOsc(false);
#endif #endif


if (sendCallback) if (sendCallback)
@@ -1273,10 +1306,8 @@ void CarlaPlugin::setProgram(const int32_t index, const bool sendGui, const bool
pData->updateParameterValues(this, reallySendOsc, sendCallback, true); pData->updateParameterValues(this, reallySendOsc, sendCallback, true);
} }


#ifdef BUILD_BRIDGE
// unused
// may be unused
return; (void)sendGui; (void)sendOsc; return; (void)sendGui; (void)sendOsc;
#endif
} }


void CarlaPlugin::setMidiProgram(const int32_t index, const bool sendGui, const bool sendOsc, const bool sendCallback) noexcept void CarlaPlugin::setMidiProgram(const int32_t index, const bool sendGui, const bool sendOsc, const bool sendCallback) noexcept
@@ -1285,13 +1316,13 @@ void CarlaPlugin::setMidiProgram(const int32_t index, const bool sendGui, const


pData->midiprog.current = index; pData->midiprog.current = index;


#ifdef BUILD_BRIDGE
const bool reallySendOsc(false);
#else
#if defined(HAVE_LIBLO) && ! defined(BUILD_BRIDGE)
const bool reallySendOsc(sendOsc && pData->engine->isOscControlRegistered()); const bool reallySendOsc(sendOsc && pData->engine->isOscControlRegistered());


if (reallySendOsc) if (reallySendOsc)
pData->engine->oscSend_control_set_current_midi_program(pData->id, index); pData->engine->oscSend_control_set_current_midi_program(pData->id, index);
#else
const bool reallySendOsc(false);
#endif #endif


if (sendCallback) if (sendCallback)
@@ -1308,10 +1339,8 @@ void CarlaPlugin::setMidiProgram(const int32_t index, const bool sendGui, const
pData->updateParameterValues(this, reallySendOsc, sendCallback, true); pData->updateParameterValues(this, reallySendOsc, sendCallback, true);
} }


#ifdef BUILD_BRIDGE
// unused
// may be unused
return; (void)sendGui; (void)sendOsc; return; (void)sendGui; (void)sendOsc;
#endif
} }


void CarlaPlugin::setMidiProgramById(const uint32_t bank, const uint32_t program, const bool sendGui, const bool sendOsc, const bool sendCallback) noexcept void CarlaPlugin::setMidiProgramById(const uint32_t bank, const uint32_t program, const bool sendGui, const bool sendOsc, const bool sendCallback) noexcept
@@ -1365,7 +1394,7 @@ void CarlaPlugin::idle()


const bool hasUI(pData->hints & PLUGIN_HAS_CUSTOM_UI); const bool hasUI(pData->hints & PLUGIN_HAS_CUSTOM_UI);
const bool needsUiMainThread(pData->hints & PLUGIN_NEEDS_UI_MAIN_THREAD); const bool needsUiMainThread(pData->hints & PLUGIN_NEEDS_UI_MAIN_THREAD);
#ifndef BUILD_BRIDGE
#if defined(HAVE_LIBLO) && ! defined(BUILD_BRIDGE)
const bool sendOsc(pData->engine->isOscControlRegistered()); const bool sendOsc(pData->engine->isOscControlRegistered());
#endif #endif


@@ -1397,7 +1426,7 @@ void CarlaPlugin::idle()


if (event.value2 != 1) if (event.value2 != 1)
{ {
#ifndef BUILD_BRIDGE
#if defined(HAVE_LIBLO) && ! defined(BUILD_BRIDGE)
// Update OSC control client // Update OSC control client
if (sendOsc) if (sendOsc)
pData->engine->oscSend_control_set_parameter_value(pData->id, event.value1, event.value3); pData->engine->oscSend_control_set_parameter_value(pData->id, event.value1, event.value3);
@@ -1423,7 +1452,7 @@ void CarlaPlugin::idle()
const float paramDefault(pData->param.ranges[j].def); const float paramDefault(pData->param.ranges[j].def);
const float paramValue(getParameterValue(j)); const float paramValue(getParameterValue(j));


#ifndef BUILD_BRIDGE
#if defined(HAVE_LIBLO) && ! defined(BUILD_BRIDGE)
if (sendOsc) if (sendOsc)
{ {
pData->engine->oscSend_control_set_parameter_value(pData->id, static_cast<int32_t>(j), paramValue); pData->engine->oscSend_control_set_parameter_value(pData->id, static_cast<int32_t>(j), paramValue);
@@ -1434,7 +1463,7 @@ void CarlaPlugin::idle()
pData->engine->callback(ENGINE_CALLBACK_PARAMETER_DEFAULT_CHANGED, pData->id, static_cast<int>(j), 0, paramDefault, nullptr); pData->engine->callback(ENGINE_CALLBACK_PARAMETER_DEFAULT_CHANGED, pData->id, static_cast<int>(j), 0, paramDefault, nullptr);
} }


#ifndef BUILD_BRIDGE
#if defined(HAVE_LIBLO) && ! defined(BUILD_BRIDGE)
// Update OSC control client // Update OSC control client
if (sendOsc) if (sendOsc)
pData->engine->oscSend_control_set_current_program(pData->id, event.value1); pData->engine->oscSend_control_set_current_program(pData->id, event.value1);
@@ -1460,7 +1489,7 @@ void CarlaPlugin::idle()
const float paramDefault(pData->param.ranges[j].def); const float paramDefault(pData->param.ranges[j].def);
const float paramValue(getParameterValue(j)); const float paramValue(getParameterValue(j));


#ifndef BUILD_BRIDGE
#if defined(HAVE_LIBLO) && ! defined(BUILD_BRIDGE)
if (sendOsc) if (sendOsc)
{ {
pData->engine->oscSend_control_set_parameter_value(pData->id, static_cast<int32_t>(j), paramValue); pData->engine->oscSend_control_set_parameter_value(pData->id, static_cast<int32_t>(j), paramValue);
@@ -1471,7 +1500,7 @@ void CarlaPlugin::idle()
pData->engine->callback(ENGINE_CALLBACK_PARAMETER_DEFAULT_CHANGED, pData->id, static_cast<int>(j), 0, paramDefault, nullptr); pData->engine->callback(ENGINE_CALLBACK_PARAMETER_DEFAULT_CHANGED, pData->id, static_cast<int>(j), 0, paramDefault, nullptr);
} }


#ifndef BUILD_BRIDGE
#if defined(HAVE_LIBLO) && ! defined(BUILD_BRIDGE)
// Update OSC control client // Update OSC control client
if (sendOsc) if (sendOsc)
pData->engine->oscSend_control_set_current_midi_program(pData->id, event.value1); pData->engine->oscSend_control_set_current_midi_program(pData->id, event.value1);
@@ -1499,7 +1528,7 @@ void CarlaPlugin::idle()
uiNoteOn(channel, note, velocity); uiNoteOn(channel, note, velocity);
} }


#ifndef BUILD_BRIDGE
#if defined(HAVE_LIBLO) && ! defined(BUILD_BRIDGE)
// Update OSC control client // Update OSC control client
if (sendOsc) if (sendOsc)
pData->engine->oscSend_control_note_on(pData->id, channel, note, velocity); pData->engine->oscSend_control_note_on(pData->id, channel, note, velocity);
@@ -1525,7 +1554,7 @@ void CarlaPlugin::idle()
uiNoteOff(channel, note); uiNoteOff(channel, note);
} }


#ifndef BUILD_BRIDGE
#if defined(HAVE_LIBLO) && ! defined(BUILD_BRIDGE)
// Update OSC control client // Update OSC control client
if (sendOsc) if (sendOsc)
pData->engine->oscSend_control_note_off(pData->id, channel, note); pData->engine->oscSend_control_note_off(pData->id, channel, note);
@@ -1573,10 +1602,10 @@ void CarlaPlugin::clearBuffers() noexcept
pData->clearBuffers(); pData->clearBuffers();
} }


#if defined(HAVE_LIBLO) && ! defined(BUILD_BRIDGE)
// ------------------------------------------------------------------- // -------------------------------------------------------------------
// OSC stuff // OSC stuff


#ifndef BUILD_BRIDGE
void CarlaPlugin::registerToOscClient() noexcept void CarlaPlugin::registerToOscClient() noexcept
{ {
if (! pData->engine->isOscControlRegistered()) if (! pData->engine->isOscControlRegistered())
@@ -1675,12 +1704,14 @@ void CarlaPlugin::registerToOscClient() noexcept
pData->engine->oscSend_control_set_parameter_value(pData->id, PARAMETER_ACTIVE, pData->active ? 1.0f : 0.0f); pData->engine->oscSend_control_set_parameter_value(pData->id, PARAMETER_ACTIVE, pData->active ? 1.0f : 0.0f);
} }
} }
#endif // BUILD_BRIDGE
#endif


// FIXME
void CarlaPlugin::handleOscMessage(const char* const, const int, const void* const, const char* const, const lo_message) void CarlaPlugin::handleOscMessage(const char* const, const int, const void* const, const char* const, const lo_message)
{ {
// do nothing // do nothing
} }
//#endif // HAVE_LIBLO && ! BUILD_BRIDGE


// ------------------------------------------------------------------- // -------------------------------------------------------------------
// MIDI events // MIDI events
@@ -1709,7 +1740,7 @@ void CarlaPlugin::sendMidiSingleNote(const uint8_t channel, const uint8_t note,
uiNoteOff(channel, note); uiNoteOff(channel, note);
} }


#ifndef BUILD_BRIDGE
#if defined(HAVE_LIBLO) && ! defined(BUILD_BRIDGE)
if (sendOsc && pData->engine->isOscControlRegistered()) if (sendOsc && pData->engine->isOscControlRegistered())
{ {
if (velo > 0) if (velo > 0)
@@ -1722,10 +1753,8 @@ void CarlaPlugin::sendMidiSingleNote(const uint8_t channel, const uint8_t note,
if (sendCallback) if (sendCallback)
pData->engine->callback((velo > 0) ? ENGINE_CALLBACK_NOTE_ON : ENGINE_CALLBACK_NOTE_OFF, pData->id, channel, note, velo, nullptr); pData->engine->callback((velo > 0) ? ENGINE_CALLBACK_NOTE_ON : ENGINE_CALLBACK_NOTE_OFF, pData->id, channel, note, velo, nullptr);


#ifdef BUILD_BRIDGE
// unused
// may be unused
return; (void)sendOsc; return; (void)sendOsc;
#endif
} }


#ifndef BUILD_BRIDGE #ifndef BUILD_BRIDGE


+ 37
- 5
source/backend/plugin/CarlaPluginDSSI.cpp View File

@@ -23,7 +23,11 @@


#include "CarlaDssiUtils.hpp" #include "CarlaDssiUtils.hpp"
#include "CarlaMathUtils.hpp" #include "CarlaMathUtils.hpp"
#include "CarlaThread.hpp"

#ifdef HAVE_LIBLO
# include "CarlaOscUtils.hpp"
# include "CarlaThread.hpp"
#endif


using juce::ChildProcess; using juce::ChildProcess;
using juce::ScopedPointer; using juce::ScopedPointer;
@@ -60,6 +64,7 @@ CARLA_BACKEND_START_NAMESPACE


static const CustomData kCustomDataFallback = { nullptr, nullptr, nullptr }; static const CustomData kCustomDataFallback = { nullptr, nullptr, nullptr };


#ifdef HAVE_LIBLO
// ------------------------------------------------------------------- // -------------------------------------------------------------------


class CarlaThreadDSSIUI : public CarlaThread class CarlaThreadDSSIUI : public CarlaThread
@@ -241,6 +246,7 @@ private:


CARLA_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(CarlaThreadDSSIUI) CARLA_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(CarlaThreadDSSIUI)
}; };
#endif


// ----------------------------------------------------- // -----------------------------------------------------


@@ -254,14 +260,18 @@ public:
fDescriptor(nullptr), fDescriptor(nullptr),
fDssiDescriptor(nullptr), fDssiDescriptor(nullptr),
fUsesCustomData(false), fUsesCustomData(false),
#ifdef HAVE_LIBLO
fUiFilename(nullptr), fUiFilename(nullptr),
#endif
fAudioInBuffers(nullptr), fAudioInBuffers(nullptr),
fAudioOutBuffers(nullptr), fAudioOutBuffers(nullptr),
fParamBuffers(nullptr), fParamBuffers(nullptr),
fLatencyChanged(false), fLatencyChanged(false),
fLatencyIndex(-1), fLatencyIndex(-1),
#ifdef HAVE_LIBLO
fOscData(), fOscData(),
fThreadUI(engine, this, fOscData), fThreadUI(engine, this, fOscData),
#endif
leakDetector_CarlaPluginDSSI() leakDetector_CarlaPluginDSSI()
{ {
carla_debug("CarlaPluginDSSI::CarlaPluginDSSI(%p, %i)", engine, id); carla_debug("CarlaPluginDSSI::CarlaPluginDSSI(%p, %i)", engine, id);
@@ -271,6 +281,7 @@ public:
{ {
carla_debug("CarlaPluginDSSI::~CarlaPluginDSSI()"); carla_debug("CarlaPluginDSSI::~CarlaPluginDSSI()");


#ifdef HAVE_LIBLO
// close UI // close UI
if (pData->hints & PLUGIN_HAS_CUSTOM_UI) if (pData->hints & PLUGIN_HAS_CUSTOM_UI)
{ {
@@ -278,6 +289,7 @@ public:


fThreadUI.stopThread(static_cast<int>(pData->engine->getOptions().uiBridgesTimeout * 2)); fThreadUI.stopThread(static_cast<int>(pData->engine->getOptions().uiBridgesTimeout * 2));
} }
#endif


pData->singleMutex.lock(); pData->singleMutex.lock();
pData->masterMutex.lock(); pData->masterMutex.lock();
@@ -319,11 +331,13 @@ public:
fDssiDescriptor = nullptr; fDssiDescriptor = nullptr;
} }


#ifdef HAVE_LIBLO
if (fUiFilename != nullptr) if (fUiFilename != nullptr)
{ {
delete[] fUiFilename; delete[] fUiFilename;
fUiFilename = nullptr; fUiFilename = nullptr;
} }
#endif


clearBuffers(); clearBuffers();
} }
@@ -557,8 +571,10 @@ public:
} }
} }


#ifdef HAVE_LIBLO
if (sendGui && fOscData.target != nullptr) if (sendGui && fOscData.target != nullptr)
osc_send_configure(fOscData, key, value); osc_send_configure(fOscData, key, value);
#endif


if (std::strcmp(key, "reloadprograms") == 0 || std::strcmp(key, "load") == 0 || std::strncmp(key, "patches", 7) == 0) if (std::strcmp(key, "reloadprograms") == 0 || std::strcmp(key, "load") == 0 || std::strncmp(key, "patches", 7) == 0)
{ {
@@ -588,10 +604,10 @@ public:
} CARLA_SAFE_EXCEPTION("CarlaPluginDSSI::setChunkData"); } CARLA_SAFE_EXCEPTION("CarlaPluginDSSI::setChunkData");
} }


#ifdef BUILD_BRIDGE
const bool sendOsc(false);
#else
#if defined(HAVE_LIBLO) && ! defined(BUILD_BRIDGE)
const bool sendOsc(pData->engine->isOscControlRegistered()); const bool sendOsc(pData->engine->isOscControlRegistered());
#else
const bool sendOsc(false);
#endif #endif
pData->updateParameterValues(this, sendOsc, true, false); pData->updateParameterValues(this, sendOsc, true, false);
} }
@@ -625,6 +641,7 @@ public:
CarlaPlugin::setMidiProgram(index, sendGui, sendOsc, sendCallback); CarlaPlugin::setMidiProgram(index, sendGui, sendOsc, sendCallback);
} }


#ifdef HAVE_LIBLO
// ------------------------------------------------------------------- // -------------------------------------------------------------------
// Set ui stuff // Set ui stuff


@@ -649,6 +666,7 @@ public:
fThreadUI.stopThread(static_cast<int>(pData->engine->getOptions().uiBridgesTimeout * 2)); fThreadUI.stopThread(static_cast<int>(pData->engine->getOptions().uiBridgesTimeout * 2));
} }
} }
#endif


void idle() override void idle() override
{ {
@@ -1069,8 +1087,10 @@ public:
if (LADSPA_IS_HARD_RT_CAPABLE(fDescriptor->Properties)) if (LADSPA_IS_HARD_RT_CAPABLE(fDescriptor->Properties))
pData->hints |= PLUGIN_IS_RTSAFE; pData->hints |= PLUGIN_IS_RTSAFE;


#ifdef HAVE_LIBLO
if (fUiFilename != nullptr) if (fUiFilename != nullptr)
pData->hints |= PLUGIN_HAS_CUSTOM_UI; pData->hints |= PLUGIN_HAS_CUSTOM_UI;
#endif


#ifndef BUILD_BRIDGE #ifndef BUILD_BRIDGE
if (aOuts > 0 && (aIns == aOuts || aIns == 1)) if (aOuts > 0 && (aIns == aOuts || aIns == 1))
@@ -1204,7 +1224,7 @@ public:
} }
} }


#ifndef BUILD_BRIDGE
#if defined(HAVE_LIBLO) && ! defined(BUILD_BRIDGE)
// Update OSC Names // Update OSC Names
if (pData->engine->isOscControlRegistered()) if (pData->engine->isOscControlRegistered())
{ {
@@ -2117,6 +2137,7 @@ public:
carla_debug("CarlaPluginDSSI::clearBuffers() - end"); carla_debug("CarlaPluginDSSI::clearBuffers() - end");
} }


#ifdef HAVE_LIBLO
// ------------------------------------------------------------------- // -------------------------------------------------------------------
// OSC stuff // OSC stuff


@@ -2315,7 +2336,9 @@ public:
// tell frontend // tell frontend
pData->engine->callback(ENGINE_CALLBACK_UI_STATE_CHANGED, pData->id, 0, 0, 0.0f, nullptr); pData->engine->callback(ENGINE_CALLBACK_UI_STATE_CHANGED, pData->id, 0, 0, 0.0f, nullptr);
} }
#endif


#ifdef HAVE_LIBLO
// ------------------------------------------------------------------- // -------------------------------------------------------------------
// Post-poned UI Stuff // Post-poned UI Stuff


@@ -2377,6 +2400,7 @@ public:
osc_send_midi(fOscData, midiData); osc_send_midi(fOscData, midiData);
#endif #endif
} }
#endif


// ------------------------------------------------------------------- // -------------------------------------------------------------------


@@ -2390,6 +2414,7 @@ public:
return fDssiDescriptor; return fDssiDescriptor;
} }


#ifdef HAVE_LIBLO
uintptr_t getUiBridgeProcessId() const noexcept override uintptr_t getUiBridgeProcessId() const noexcept override
{ {
return fThreadUI.getProcessPID(); return fThreadUI.getProcessPID();
@@ -2399,6 +2424,7 @@ public:
{ {
return fUiFilename; return fUiFilename;
} }
#endif


// ------------------------------------------------------------------- // -------------------------------------------------------------------


@@ -2562,6 +2588,7 @@ public:
} }
} }


#ifdef HAVE_LIBLO
// --------------------------------------------------------------- // ---------------------------------------------------------------
// gui stuff // gui stuff


@@ -2570,6 +2597,7 @@ public:
fThreadUI.setData(guiFilename, fDescriptor->Label); fThreadUI.setData(guiFilename, fDescriptor->Label);
fUiFilename = guiFilename; fUiFilename = guiFilename;
} }
#endif


// --------------------------------------------------------------- // ---------------------------------------------------------------
// set default options // set default options
@@ -2617,7 +2645,9 @@ private:
const DSSI_Descriptor* fDssiDescriptor; const DSSI_Descriptor* fDssiDescriptor;


bool fUsesCustomData; bool fUsesCustomData;
#ifdef HAVE_LIBLO
const char* fUiFilename; const char* fUiFilename;
#endif


float** fAudioInBuffers; float** fAudioInBuffers;
float** fAudioOutBuffers; float** fAudioOutBuffers;
@@ -2628,8 +2658,10 @@ private:


snd_seq_event_t fMidiEvents[kPluginMaxMidiEvents]; snd_seq_event_t fMidiEvents[kPluginMaxMidiEvents];


#ifdef HAVE_LIBLO
CarlaOscData fOscData; CarlaOscData fOscData;
CarlaThreadDSSIUI fThreadUI; CarlaThreadDSSIUI fThreadUI;
#endif


// ------------------------------------------------------------------- // -------------------------------------------------------------------




+ 2
- 4
source/backend/plugin/CarlaPluginInternal.cpp View File

@@ -743,7 +743,7 @@ void CarlaPlugin::ProtectedData::updateParameterValues(CarlaPlugin* const plugin
if (useDefault) if (useDefault)
param.ranges[i].def = value; param.ranges[i].def = value;


#ifndef BUILD_BRIDGE
#if defined(HAVE_LIBLO) && ! defined(BUILD_BRIDGE)
if (sendOsc) if (sendOsc)
{ {
if (useDefault) if (useDefault)
@@ -760,10 +760,8 @@ void CarlaPlugin::ProtectedData::updateParameterValues(CarlaPlugin* const plugin
} }
} }


#ifdef BUILD_BRIDGE
// unused
// may be unused
return; (void)sendOsc; return; (void)sendOsc;
#endif
} }


// ----------------------------------------------------------------------- // -----------------------------------------------------------------------


+ 0
- 1
source/backend/plugin/CarlaPluginInternal.hpp View File

@@ -21,7 +21,6 @@
#include "CarlaPlugin.hpp" #include "CarlaPlugin.hpp"


#include "CarlaLibUtils.hpp" #include "CarlaLibUtils.hpp"
#include "CarlaOscUtils.hpp"
#include "CarlaStateUtils.hpp" #include "CarlaStateUtils.hpp"


#include "CarlaMIDI.h" #include "CarlaMIDI.h"


+ 1
- 1
source/backend/plugin/CarlaPluginLV2.cpp View File

@@ -2470,7 +2470,7 @@ public:
} }
} }


#ifndef BUILD_BRIDGE
#if defined(HAVE_LIBLO) && ! defined(BUILD_BRIDGE)
// Update OSC Names // Update OSC Names
if (pData->engine->isOscControlRegistered()) if (pData->engine->isOscControlRegistered())
{ {


+ 1
- 1
source/backend/plugin/CarlaPluginNative.cpp View File

@@ -1197,7 +1197,7 @@ public:
} }
} }


#ifndef BUILD_BRIDGE
#if defined(HAVE_LIBLO) && ! defined(BUILD_BRIDGE)
// Update OSC Names // Update OSC Names
if (pData->engine->isOscControlRegistered()) if (pData->engine->isOscControlRegistered())
{ {


+ 4
- 4
source/backend/plugin/CarlaPluginVST2.cpp View File

@@ -356,10 +356,10 @@ public:
// simulate an updateDisplay callback // simulate an updateDisplay callback
handleAudioMasterCallback(audioMasterUpdateDisplay, 0, 0, nullptr, 0.0f); handleAudioMasterCallback(audioMasterUpdateDisplay, 0, 0, nullptr, 0.0f);


#ifdef BUILD_BRIDGE
const bool sendOsc(false);
#else
#if defined(HAVE_LIBLO) && ! defined(BUILD_BRIDGE)
const bool sendOsc(pData->engine->isOscControlRegistered()); const bool sendOsc(pData->engine->isOscControlRegistered());
#else
const bool sendOsc(false);
#endif #endif
pData->updateParameterValues(this, sendOsc, true, false); pData->updateParameterValues(this, sendOsc, true, false);
} }
@@ -912,7 +912,7 @@ public:
} }
} }


#ifndef BUILD_BRIDGE
#if defined(HAVE_LIBLO) && ! defined(BUILD_BRIDGE)
// Update OSC Names // Update OSC Names
if (pData->engine->isOscControlRegistered()) if (pData->engine->isOscControlRegistered())
{ {


+ 4
- 0
source/native-plugins/distrho-3bandeq.cpp View File

@@ -26,12 +26,16 @@
// Plugin Code // Plugin Code
#include "distrho-3bandeq/DistrhoArtwork3BandEQ.cpp" #include "distrho-3bandeq/DistrhoArtwork3BandEQ.cpp"
#include "distrho-3bandeq/DistrhoPlugin3BandEQ.cpp" #include "distrho-3bandeq/DistrhoPlugin3BandEQ.cpp"
#ifdef HAVE_DGL
#include "distrho-3bandeq/DistrhoUI3BandEQ.cpp" #include "distrho-3bandeq/DistrhoUI3BandEQ.cpp"
#endif


// DISTRHO Code // DISTRHO Code
#define DISTRHO_PLUGIN_TARGET_CARLA #define DISTRHO_PLUGIN_TARGET_CARLA
#include "DistrhoPluginMain.cpp" #include "DistrhoPluginMain.cpp"
#ifdef HAVE_DGL
#include "DistrhoUIMain.cpp" #include "DistrhoUIMain.cpp"
#endif


START_NAMESPACE_DISTRHO START_NAMESPACE_DISTRHO




+ 4
- 0
source/native-plugins/distrho-3bandsplitter.cpp View File

@@ -26,12 +26,16 @@
// Plugin Code // Plugin Code
#include "distrho-3bandsplitter/DistrhoArtwork3BandSplitter.cpp" #include "distrho-3bandsplitter/DistrhoArtwork3BandSplitter.cpp"
#include "distrho-3bandsplitter/DistrhoPlugin3BandSplitter.cpp" #include "distrho-3bandsplitter/DistrhoPlugin3BandSplitter.cpp"
#ifdef HAVE_DGL
#include "distrho-3bandsplitter/DistrhoUI3BandSplitter.cpp" #include "distrho-3bandsplitter/DistrhoUI3BandSplitter.cpp"
#endif


// DISTRHO Code // DISTRHO Code
#define DISTRHO_PLUGIN_TARGET_CARLA #define DISTRHO_PLUGIN_TARGET_CARLA
#include "DistrhoPluginMain.cpp" #include "DistrhoPluginMain.cpp"
#ifdef HAVE_DGL
#include "DistrhoUIMain.cpp" #include "DistrhoUIMain.cpp"
#endif


START_NAMESPACE_DISTRHO START_NAMESPACE_DISTRHO




+ 4
- 0
source/native-plugins/distrho-mverb.cpp View File

@@ -26,13 +26,17 @@
// Plugin Code // Plugin Code
#include "distrho-mverb/DistrhoArtworkMVerb.cpp" #include "distrho-mverb/DistrhoArtworkMVerb.cpp"
#include "distrho-mverb/DistrhoPluginMVerb.cpp" #include "distrho-mverb/DistrhoPluginMVerb.cpp"
#ifdef HAVE_DGL
#include "distrho-mverb/DistrhoUIMVerb.cpp" #include "distrho-mverb/DistrhoUIMVerb.cpp"
#include "distrho-mverb/font/Kh-Kangrey.cpp" #include "distrho-mverb/font/Kh-Kangrey.cpp"
#endif


// DISTRHO Code // DISTRHO Code
#define DISTRHO_PLUGIN_TARGET_CARLA #define DISTRHO_PLUGIN_TARGET_CARLA
#include "DistrhoPluginMain.cpp" #include "DistrhoPluginMain.cpp"
#ifdef HAVE_DGL
#include "DistrhoUIMain.cpp" #include "DistrhoUIMain.cpp"
#endif


START_NAMESPACE_DISTRHO START_NAMESPACE_DISTRHO




+ 4
- 0
source/native-plugins/distrho-nekobi.cpp View File

@@ -26,12 +26,16 @@
// Plugin Code // Plugin Code
#include "distrho-nekobi/DistrhoArtworkNekobi.cpp" #include "distrho-nekobi/DistrhoArtworkNekobi.cpp"
#include "distrho-nekobi/DistrhoPluginNekobi.cpp" #include "distrho-nekobi/DistrhoPluginNekobi.cpp"
#ifdef HAVE_DGL
#include "distrho-nekobi/DistrhoUINekobi.cpp" #include "distrho-nekobi/DistrhoUINekobi.cpp"
#endif


// DISTRHO Code // DISTRHO Code
#define DISTRHO_PLUGIN_TARGET_CARLA #define DISTRHO_PLUGIN_TARGET_CARLA
#include "DistrhoPluginMain.cpp" #include "DistrhoPluginMain.cpp"
#ifdef HAVE_DGL
#include "DistrhoUIMain.cpp" #include "DistrhoUIMain.cpp"
#endif


START_NAMESPACE_DISTRHO START_NAMESPACE_DISTRHO




+ 4
- 0
source/native-plugins/distrho-pingpongpan.cpp View File

@@ -26,12 +26,16 @@
// Plugin Code // Plugin Code
#include "distrho-pingpongpan/DistrhoArtworkPingPongPan.cpp" #include "distrho-pingpongpan/DistrhoArtworkPingPongPan.cpp"
#include "distrho-pingpongpan/DistrhoPluginPingPongPan.cpp" #include "distrho-pingpongpan/DistrhoPluginPingPongPan.cpp"
#ifdef HAVE_DGL
#include "distrho-pingpongpan/DistrhoUIPingPongPan.cpp" #include "distrho-pingpongpan/DistrhoUIPingPongPan.cpp"
#endif


// DISTRHO Code // DISTRHO Code
#define DISTRHO_PLUGIN_TARGET_CARLA #define DISTRHO_PLUGIN_TARGET_CARLA
#include "DistrhoPluginMain.cpp" #include "DistrhoPluginMain.cpp"
#ifdef HAVE_DGL
#include "DistrhoUIMain.cpp" #include "DistrhoUIMain.cpp"
#endif


START_NAMESPACE_DISTRHO START_NAMESPACE_DISTRHO




Loading…
Cancel
Save