Browse Source

Focus on LADSPA now, let's get it working 100% first

tags/1.9.4
falkTX 11 years ago
parent
commit
14f7d4192d
4 changed files with 66 additions and 89 deletions
  1. +0
    -2
      source/backend/plugin/CarlaPlugin.cpp
  2. +15
    -38
      source/backend/plugin/LadspaPlugin.cpp
  3. +42
    -41
      source/discovery/Makefile
  4. +9
    -8
      source/discovery/carla-discovery.cpp

+ 0
- 2
source/backend/plugin/CarlaPlugin.cpp View File

@@ -103,8 +103,6 @@ void* CarlaPluginProtectedData::uiLibSymbol(const char* const symbol)
// ------------------------------------------------------------------- // -------------------------------------------------------------------
// Settings functions, defined in CarlaPluginInternal.hpp // Settings functions, defined in CarlaPluginInternal.hpp


// FIXME - this doesn't work!!

void CarlaPluginProtectedData::saveSetting(const unsigned int option, const bool yesNo) void CarlaPluginProtectedData::saveSetting(const unsigned int option, const bool yesNo)
{ {
CARLA_SAFE_ASSERT_RETURN(identifier != nullptr && identifier[0] != '\0',); CARLA_SAFE_ASSERT_RETURN(identifier != nullptr && identifier[0] != '\0',);


+ 15
- 38
source/backend/plugin/LadspaPlugin.cpp View File

@@ -490,10 +490,7 @@ public:
pData->param.createNew(params); pData->param.createNew(params);


fParamBuffers = new float[params]; fParamBuffers = new float[params];
#ifdef USE_JUCE
FloatVectorOperations::clear(fParamBuffers, params);
#else
#endif
FLOAT_CLEAR(fParamBuffers, params);
} }


const uint portNameSize(pData->engine->getMaxPortNameSize()); const uint portNameSize(pData->engine->getMaxPortNameSize());
@@ -626,7 +623,7 @@ public:


if (LADSPA_IS_PORT_INPUT(portType)) if (LADSPA_IS_PORT_INPUT(portType))
{ {
//pData->param.data[j].hints |= PARAMETER_IS_INPUT;
pData->param.data[j].type = PARAMETER_INPUT;
pData->param.data[j].hints |= PARAMETER_IS_ENABLED; pData->param.data[j].hints |= PARAMETER_IS_ENABLED;
pData->param.data[j].hints |= PARAMETER_IS_AUTOMABLE; pData->param.data[j].hints |= PARAMETER_IS_AUTOMABLE;
needsCtrlIn = true; needsCtrlIn = true;
@@ -642,8 +639,8 @@ public:
stepSmall = 1.0f; stepSmall = 1.0f;
stepLarge = 1.0f; stepLarge = 1.0f;


//pData->param.data[j].type = PARAMETER_LATENCY;
pData->param.data[j].hints = 0;
pData->param.data[j].type = PARAMETER_SPECIAL;
pData->param.data[j].hints = 0; // TODO PARAMETER_LATENCY
} }
else if (std::strcmp(fDescriptor->PortNames[i], "_sample-rate") == 0) else if (std::strcmp(fDescriptor->PortNames[i], "_sample-rate") == 0)
{ {
@@ -652,11 +649,12 @@ public:
stepSmall = 1.0f; stepSmall = 1.0f;
stepLarge = 1.0f; stepLarge = 1.0f;


//pData->param.data[j].type = PARAMETER_SAMPLE_RATE;
pData->param.data[j].hints = 0;
pData->param.data[j].type = PARAMETER_SPECIAL;
pData->param.data[j].hints = 0; // TODO PARAMETER_SAMPLE_RATE
} }
else else
{ {
pData->param.data[j].type = PARAMETER_OUTPUT;
pData->param.data[j].hints |= PARAMETER_IS_ENABLED; pData->param.data[j].hints |= PARAMETER_IS_ENABLED;
pData->param.data[j].hints |= PARAMETER_IS_AUTOMABLE; pData->param.data[j].hints |= PARAMETER_IS_AUTOMABLE;
needsCtrlOut = true; needsCtrlOut = true;
@@ -664,6 +662,7 @@ public:
} }
else else
{ {
pData->param.data[j].type = PARAMETER_UNKNOWN;
carla_stderr2("WARNING - Got a broken Port (Control, but not input or output)"); carla_stderr2("WARNING - Got a broken Port (Control, but not input or output)");
} }


@@ -765,6 +764,7 @@ public:
{ {
for (uint32_t i=0; i < pData->param.count; ++i) for (uint32_t i=0; i < pData->param.count; ++i)
{ {
// TODO
//if (pData->param.data[i].type != PARAMETER_LATENCY) //if (pData->param.data[i].type != PARAMETER_LATENCY)
// continue; // continue;


@@ -858,12 +858,7 @@ public:
{ {
// disable any output sound // disable any output sound
for (uint32_t i=0; i < pData->audioOut.count; ++i) for (uint32_t i=0; i < pData->audioOut.count; ++i)
{
#ifdef USE_JUCE
FloatVectorOperations::clear(outBuffer[i], frames);
#else
#endif
}
FLOAT_CLEAR(outBuffer[i], frames);


return; return;
} }
@@ -876,12 +871,7 @@ public:
if (pData->latency > 0) if (pData->latency > 0)
{ {
for (uint32_t i=0; i < pData->audioIn.count; ++i) for (uint32_t i=0; i < pData->audioIn.count; ++i)
{
#ifdef USE_JUCE
FloatVectorOperations::clear(pData->latencyBuffers[i], pData->latency);
#else
#endif
}
FLOAT_CLEAR(pData->latencyBuffers[i], pData->latency);
} }


pData->needsReset = false; pData->needsReset = false;
@@ -990,7 +980,7 @@ public:
continue; continue;
if (pData->param.data[k].midiCC != ctrlEvent.param) if (pData->param.data[k].midiCC != ctrlEvent.param)
continue; continue;
if (pData->param.data[k].hints != PARAMETER_INPUT)
if (pData->param.data[k].type != PARAMETER_INPUT)
continue; continue;
if ((pData->param.data[k].hints & PARAMETER_IS_AUTOMABLE) == 0) if ((pData->param.data[k].hints & PARAMETER_IS_AUTOMABLE) == 0)
continue; continue;
@@ -1113,20 +1103,10 @@ public:
// Reset audio buffers // Reset audio buffers


for (uint32_t i=0; i < pData->audioIn.count; ++i) for (uint32_t i=0; i < pData->audioIn.count; ++i)
{
#ifdef USE_JUCE
FloatVectorOperations::copy(fAudioInBuffers[i], inBuffer[i]+timeOffset, frames);
#else
#endif
}
FLOAT_COPY(fAudioInBuffers[i], inBuffer[i]+timeOffset, frames);


for (uint32_t i=0; i < pData->audioOut.count; ++i) for (uint32_t i=0; i < pData->audioOut.count; ++i)
{
#ifdef USE_JUCE
FloatVectorOperations::clear(fAudioOutBuffers[i], frames);
#else
#endif
}
FLOAT_CLEAR(fAudioOutBuffers[i], frames);


// -------------------------------------------------------------------------------------------------------- // --------------------------------------------------------------------------------------------------------
// Run plugin // Run plugin
@@ -1173,10 +1153,7 @@ public:
if (isPair) if (isPair)
{ {
CARLA_ASSERT(i+1 < pData->audioOut.count); CARLA_ASSERT(i+1 < pData->audioOut.count);
#ifdef USE_JUCE
FloatVectorOperations::copy(oldBufLeft, fAudioOutBuffers[i], frames);
#else
#endif
FLOAT_COPY(oldBufLeft, fAudioOutBuffers[i], frames);
} }


float balRangeL = (pData->postProc.balanceLeft + 1.0f)/2.0f; float balRangeL = (pData->postProc.balanceLeft + 1.0f)/2.0f;


+ 42
- 41
source/discovery/Makefile View File

@@ -13,59 +13,60 @@ BUILD_CXX_FLAGS += -I../backend -I../includes -I../modules -I../utils -Wno-multi
BUILD_CXX_FLAGS += $(QTCORE_FLAGS) BUILD_CXX_FLAGS += $(QTCORE_FLAGS)
LINK_FLAGS += $(QTCORE_LIBS) LINK_FLAGS += $(QTCORE_LIBS)


ifeq ($(HAVE_JUCE),true)
BUILD_CXX_FLAGS += $(JUCE_CORE_FLAGS) $(JUCE_AUDIO_BASICS_FLAGS) -DHAVE_JUCE
LINK_FLAGS += $(JUCE_CORE_LIBS) $(JUCE_AUDIO_BASICS_LIBS)
endif
# 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) ifeq ($(CARLA_PLUGIN_SUPPORT),true)
BUILD_CXX_FLAGS += -DWANT_LADSPA -DWANT_DSSI -DWANT_LV2 -DWANT_VST
ifeq ($(CARLA_VESTIGE_HEADER),true)
BUILD_CXX_FLAGS += -DVESTIGE_HEADER
endif
BUILD_CXX_FLAGS += -DWANT_LADSPA
# -DWANT_DSSI -DWANT_LV2 -DWANT_VST
# ifeq ($(CARLA_VESTIGE_HEADER),true)
# BUILD_CXX_FLAGS += -DVESTIGE_HEADER
# endif
endif endif


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


ifeq ($(HAVE_CSOUND),true)
NATIVE_FLAGS += $(shell pkg-config --cflags --libs sndfile) -lcsound64 -DWANT_CSOUND
endif
ifeq ($(HAVE_FLUIDSYNTH),true)
NATIVE_FLAGS += $(shell pkg-config --cflags --libs fluidsynth) -DWANT_FLUIDSYNTH
endif
ifeq ($(HAVE_LINUXSAMPLER),true)
NATIVE_FLAGS += $(shell pkg-config --cflags --libs linuxsampler) -DWANT_LINUXSAMPLER
endif
# ifeq ($(HAVE_CSOUND),true)
# NATIVE_FLAGS += $(shell pkg-config --cflags --libs sndfile) -lcsound64 -DWANT_CSOUND
# endif
#
# ifeq ($(HAVE_FLUIDSYNTH),true)
# NATIVE_FLAGS += $(shell pkg-config --cflags --libs fluidsynth) -DWANT_FLUIDSYNTH
# endif
#
# ifeq ($(HAVE_LINUXSAMPLER),true)
# NATIVE_FLAGS += $(shell pkg-config --cflags --libs linuxsampler) -DWANT_LINUXSAMPLER
# 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
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

# 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


POSIX_BUILD_FLAGS = $(BUILD_CXX_FLAGS) POSIX_BUILD_FLAGS = $(BUILD_CXX_FLAGS)
POSIX_32BIT_FLAGS = $(32BIT_FLAGS) -L/usr/lib32 -L/usr/lib/i386-linux-gnu POSIX_32BIT_FLAGS = $(32BIT_FLAGS) -L/usr/lib32 -L/usr/lib/i386-linux-gnu


+ 9
- 8
source/discovery/carla-discovery.cpp View File

@@ -66,8 +66,9 @@ CARLA_BACKEND_USE_NAMESPACE
// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
// Dummy values to test plugins with // Dummy values to test plugins with


const uint32_t kBufferSize = 512;
const double kSampleRate = 44100.0;
const uint32_t kBufferSize = 512;
const double kSampleRate = 44100.0;
const float kSampleRatef = 44100.0f;


// -------------------------------------------------------------------------- // --------------------------------------------------------------------------
// Don't print ELF/EXE related errors since discovery can find multi-architecture binaries // Don't print ELF/EXE related errors since discovery can find multi-architecture binaries
@@ -579,9 +580,9 @@ void do_ladspa_check(void*& libHandle, const char* const filename, const bool in


if (LADSPA_IS_HINT_SAMPLE_RATE(portRangeHints.HintDescriptor)) if (LADSPA_IS_HINT_SAMPLE_RATE(portRangeHints.HintDescriptor))
{ {
min *= kSampleRate;
max *= kSampleRate;
def *= kSampleRate;
min *= kSampleRatef;
max *= kSampleRatef;
def *= kSampleRatef;
} }


if (LADSPA_IS_PORT_OUTPUT(portDescriptor) && (std::strcmp(portName, "latency") == 0 || std::strcmp(portName, "_latency") == 0)) if (LADSPA_IS_PORT_OUTPUT(portDescriptor) && (std::strcmp(portName, "latency") == 0 || std::strcmp(portName, "_latency") == 0))
@@ -857,9 +858,9 @@ void do_dssi_check(void*& libHandle, const char* const filename, const bool init


if (LADSPA_IS_HINT_SAMPLE_RATE(portRangeHints.HintDescriptor)) if (LADSPA_IS_HINT_SAMPLE_RATE(portRangeHints.HintDescriptor))
{ {
min *= kSampleRate;
max *= kSampleRate;
def *= kSampleRate;
min *= kSampleRatef;
max *= kSampleRatef;
def *= kSampleRatef;
} }


if (LADSPA_IS_PORT_OUTPUT(portDescriptor) && (std::strcmp(portName, "latency") == 0 || std::strcmp(portName, "_latency") == 0)) if (LADSPA_IS_PORT_OUTPUT(portDescriptor) && (std::strcmp(portName, "latency") == 0 || std::strcmp(portName, "_latency") == 0))


Loading…
Cancel
Save