Browse Source

Overall fixing

tags/1.9.4
falkTX 12 years ago
parent
commit
67bf1d4a56
33 changed files with 363 additions and 343 deletions
  1. +3
    -9
      source/Makefile.mk
  2. +2
    -3
      source/backend/CarlaBackend.doxygen
  3. +2
    -2
      source/backend/CarlaEngine.hpp
  4. +2
    -2
      source/backend/Makefile
  5. +0
    -4
      source/backend/Makefile.mk
  6. +44
    -43
      source/backend/engine/CarlaEngine.cpp
  7. +0
    -1
      source/backend/engine/CarlaEngine.pro
  8. +2
    -2
      source/backend/engine/CarlaEngineInternal.hpp
  9. +7
    -3
      source/backend/engine/CarlaEngineJack.cpp
  10. +24
    -22
      source/backend/engine/CarlaEngineJuce.cpp
  11. +6
    -10
      source/backend/engine/CarlaEngineRtAudio.cpp
  12. +4
    -15
      source/backend/engine/Makefile
  13. +0
    -1
      source/backend/plugin/CarlaPlugin.pro
  14. +4
    -4
      source/backend/plugin/DssiPlugin.cpp
  15. +27
    -38
      source/backend/standalone/CarlaStandalone.cpp
  16. +1
    -1
      source/backend/standalone/Makefile
  17. +1
    -1
      source/bridges/CarlaBridgeClient.cpp
  18. +13
    -14
      source/bridges/CarlaBridgePlugin.cpp
  19. +8
    -8
      source/bridges/CarlaBridgeToolkitQt.cpp
  20. +5
    -5
      source/bridges/CarlaBridgeUI-LV2.cpp
  21. +50
    -48
      source/bridges/Makefile
  22. +20
    -14
      source/bridges/qtcreator/carla-bridge-plugin.pro
  23. +103
    -44
      source/carla_database.py
  24. +15
    -21
      source/carla_settings.py
  25. +6
    -6
      source/carla_shared.py
  26. +1
    -0
      source/carla_widgets.py
  27. +2
    -0
      source/discovery/Makefile
  28. +0
    -1
      source/modules/carla_native/CarlaNative.pro
  29. +2
    -2
      source/modules/carla_native/distrho/DistrhoPluginCarla.cpp
  30. +1
    -1
      source/modules/carla_native/nekofilter/ui.c
  31. +0
    -1
      source/modules/juce_audio_basics/juce_audio_basics.cpp
  32. +0
    -1
      source/modules/juce_audio_basics/juce_audio_basics.h
  33. +8
    -16
      source/utils/CarlaLogThread.hpp

+ 3
- 9
source/Makefile.mk View File

@@ -7,7 +7,7 @@
# --------------------------------------------------------------
# Modify to enable/disable specific features

# Support for LADSPA, DSSI, LV2 and VST plugins
# Support for LADSPA, DSSI, LV2, VST and AU plugins
CARLA_PLUGIN_SUPPORT = true

# Support for csound files (version 6)
@@ -16,9 +16,6 @@ CARLA_CSOUND_SUPPORT = true
# Support for GIG, SF2 and SFZ sample banks (through fluidsynth and linuxsampler)
CARLA_SAMPLERS_SUPPORT = true

# Support for Native Audio (ALSA and/or PulseAudio in Linux)
CARLA_RTAUDIO_SUPPORT = true

# Use the free vestige header instead of the official VST SDK
CARLA_VESTIGE_HEADER = true

@@ -66,10 +63,12 @@ endif

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

HAVE_ALSA = $(shell pkg-config --exists alsa && echo true)
HAVE_FFMPEG = $(shell pkg-config --exists libavcodec libavformat libavutil && pkg-config --max-version=1.9 libavcodec && echo true)
HAVE_OPENGL = $(shell pkg-config --exists gl && echo true)
HAVE_GTK2 = $(shell pkg-config --exists gtk+-2.0 && echo true)
HAVE_GTK3 = $(shell pkg-config --exists gtk+-3.0 && echo true)
HAVE_PULSEAUDIO = $(shell pkg-config --exists libpulse-simple && echo true)
HAVE_QT4 = $(shell pkg-config --exists QtCore && echo true)
HAVE_QT5 = $(shell pkg-config --exists Qt5Core && echo true)

@@ -83,11 +82,6 @@ HAVE_FLUIDSYNTH = $(shell pkg-config --exists fluidsynth && echo true)
HAVE_LINUXSAMPLER = $(shell pkg-config --exists linuxsampler && echo true)
endif

ifeq ($(CARLA_RTAUDIO_SUPPORT),true)
HAVE_ALSA = $(shell pkg-config --exists alsa && echo true)
HAVE_PULSEAUDIO = $(shell pkg-config --exists libpulse-simple && echo true)
endif

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

# TODO - move this to theme


+ 2
- 3
source/backend/CarlaBackend.doxygen View File

@@ -242,10 +242,9 @@ SEARCH_INCLUDES = YES
INCLUDE_PATH =
INCLUDE_FILE_PATTERNS =
PREDEFINED = DOXYGEN \
WANT_NATIVE WANT_LADSPA WANT_DSSI WANT_LV2 WANT_VST WANT_FLUIDSYNTH WANT_LINUXSAMPLER \
WANT_JACK WANT_JACK_LATENCY WANT_JACK_PORT_RENAME WANT_RTAUDIO \
WANT_NATIVE WANT_LADSPA WANT_DSSI WANT_LV2 WANT_VST WANT_AU WANT_CSDOUND WANT_FLUIDSYNTH WANT_LINUXSAMPLER \
WANT_OPENGL WANT_AUDIOFILE WANT_MIDIFILE WANT_ZYNADDSUBFX WANT_ZYNADDSUBFX_UI \
CARLA_EXPORT=
CARLA_EXPORT
EXPAND_AS_DEFINED =
SKIP_FUNCTION_MACROS = YES
#---------------------------------------------------------------------------


+ 2
- 2
source/backend/CarlaEngine.hpp View File

@@ -106,7 +106,7 @@ enum EnginePortType {
* OSC port type.
** \see CarlaEngineOscPort
*/
kEnginePortTypeOSC = 3
kEnginePortTypeOSC = 4
};

/*!
@@ -1163,12 +1163,12 @@ public:
private:
static CarlaEngine* newJack();

#ifndef BUILD_BRIDGE
static CarlaEngine* newJuce();
static size_t getJuceApiCount();
static const char* getJuceApiName(const unsigned int index);
static const char** getJuceApiDeviceNames(const unsigned int index);

#ifdef WANT_RTAUDIO
enum RtAudioApi {
RTAUDIO_DUMMY = 0,
RTAUDIO_LINUX_ALSA = 1,


+ 2
- 2
source/backend/Makefile View File

@@ -9,7 +9,7 @@ include ../Makefile.mk
# --------------------------------------------------------------

all:
$(MAKE) -C control
# $(MAKE) -C control
$(MAKE) -C engine
$(MAKE) -C plugin
$(MAKE) -C standalone
@@ -17,7 +17,7 @@ all:
# --------------------------------------------------------------

clean:
$(MAKE) clean -C control
# $(MAKE) clean -C control
$(MAKE) clean -C engine
$(MAKE) clean -C plugin
$(MAKE) clean -C standalone


+ 0
- 4
source/backend/Makefile.mk View File

@@ -22,10 +22,6 @@ ifeq ($(CARLA_CSOUND_SUPPORT),true)
BUILD_CXX_FLAGS += -DWANT_CSOUND
endif

ifeq ($(CARLA_RTAUDIO_SUPPORT),true)
BUILD_CXX_FLAGS += -DWANT_RTAUDIO
endif

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

ifeq ($(HAVE_FLUIDSYNTH),true)


+ 44
- 43
source/backend/engine/CarlaEngine.cpp View File

@@ -340,8 +340,9 @@ unsigned int CarlaEngine::getDriverCount()

unsigned int count = 1; // JACK

#ifdef WANT_RTAUDIO
#ifndef BUILD_BRIDGE
count += getRtAudioApiCount();
count += getJuceApiCount();
#endif

return count;
@@ -354,11 +355,16 @@ const char* CarlaEngine::getDriverName(const unsigned int index)
if (index == 0)
return "JACK";

#ifdef WANT_RTAUDIO
const unsigned int rtIndex(index-1);
#ifndef BUILD_BRIDGE
const unsigned int rtAudioIndex(index-1);

if (rtAudioIndex < getRtAudioApiCount())
return getRtAudioApiName(rtAudioIndex);

const unsigned int juceIndex(index-rtAudioIndex-1);

if (rtIndex < getRtAudioApiCount())
return getRtAudioApiName(rtIndex);
if (juceIndex < getJuceApiCount())
return getJuceApiName(juceIndex);
#endif

carla_stderr("CarlaEngine::getDriverName(%i) - invalid index", index);
@@ -372,11 +378,16 @@ const char** CarlaEngine::getDriverDeviceNames(const unsigned int index)
if (index == 0)
return nullptr;

#ifdef WANT_RTAUDIO
const unsigned int rtIndex(index-1);
#ifndef BUILD_BRIDGE
const unsigned int rtAudioIndex(index-1);

if (rtAudioIndex < getRtAudioApiCount())
return getRtAudioApiDeviceNames(rtAudioIndex);

const unsigned int juceIndex(index-rtAudioIndex-1);

if (rtIndex < getRtAudioApiCount())
return getRtAudioApiDeviceNames(rtIndex);
if (juceIndex < getJuceApiCount())
return getJuceApiDeviceNames(juceIndex);
#endif

carla_stderr("CarlaEngine::getDriverDeviceNames(%i) - invalid index", index);
@@ -390,35 +401,33 @@ CarlaEngine* CarlaEngine::newDriverByName(const char* const driverName)
if (std::strcmp(driverName, "JACK") == 0)
return newJack();

#ifdef WANT_RTAUDIO
# ifdef __LINUX_ALSA__
#ifdef __LINUX_ALSA__
if (std::strcmp(driverName, "ALSA") == 0)
return newRtAudio(RTAUDIO_LINUX_ALSA);
# endif
# ifdef __LINUX_PULSE__
#endif
#ifdef __LINUX_PULSE__
if (std::strcmp(driverName, "PulseAudio") == 0)
return newRtAudio(RTAUDIO_LINUX_PULSE);
# endif
# ifdef __LINUX_OSS__
#endif
#ifdef __LINUX_OSS__
if (std::strcmp(driverName, "OSS") == 0)
return newRtAudio(RTAUDIO_LINUX_OSS);
# endif
# ifdef __UNIX_JACK__
#endif
#ifdef __UNIX_JACK__
if (std::strncmp(driverName, "JACK ", 5) == 0)
return newRtAudio(RTAUDIO_UNIX_JACK);
# endif
# ifdef __MACOSX_CORE__
#endif
#ifdef __MACOSX_CORE__
if (std::strcmp(driverName, "CoreAudio") == 0)
return newRtAudio(RTAUDIO_MACOSX_CORE);
# endif
# ifdef __WINDOWS_ASIO__
#endif
#ifdef __WINDOWS_ASIO__
if (std::strcmp(driverName, "ASIO") == 0)
return newRtAudio(RTAUDIO_WINDOWS_ASIO);
# endif
# ifdef __WINDOWS_DS__
#endif
#ifdef __WINDOWS_DS__
if (std::strcmp(driverName, "DirectSound") == 0)
return newRtAudio(RTAUDIO_WINDOWS_DS);
# endif
#endif

carla_stderr("CarlaEngine::newDriverByName(\"%s\") - invalid driver name", driverName);
@@ -1444,12 +1453,6 @@ void CarlaEngine::setOption(const OptionsType option, const int value, const cha
fOptions.uisAlwaysOnTop = (value != 0);
break;

#ifdef WANT_DSSI
case OPTION_USE_DSSI_VST_CHUNKS:
fOptions.useDssiVstChunks = (value != 0);
break;
#endif

case OPTION_MAX_PARAMETERS:
if (value < 1)
return carla_stderr2("carla_set_engine_option(OPTION_MAX_PARAMETERS, %i, \"%s\") - invalid value", value, valueStr);
@@ -1464,32 +1467,30 @@ void CarlaEngine::setOption(const OptionsType option, const int value, const cha
fOptions.uiBridgesTimeout = static_cast<uint>(value);
break;

#ifdef WANT_RTAUDIO
case OPTION_RTAUDIO_NUMBER_PERIODS:
case OPTION_AUDIO_NUM_PERIODS:
if (value < 2 || value > 3)
return carla_stderr2("carla_set_engine_option(OPTION_MAX_PARAMETERS, %i, \"%s\") - invalid value", value, valueStr);
return carla_stderr2("carla_set_engine_option(OPTION_AUDIO_NUM_PERIODS, %i, \"%s\") - invalid value", value, valueStr);

fOptions.rtaudioNumPeriods = static_cast<uint>(value);
fOptions.audioNumPeriods = static_cast<uint>(value);
break;

case OPTION_RTAUDIO_BUFFER_SIZE:
case OPTION_AUDIO_BUFFER_SIZE:
if (value < 8)
return carla_stderr2("carla_set_engine_option(OPTION_MAX_PARAMETERS, %i, \"%s\") - invalid value", value, valueStr);
return carla_stderr2("carla_set_engine_option(OPTION_AUDIO_BUFFER_SIZE, %i, \"%s\") - invalid value", value, valueStr);

fOptions.rtaudioBufferSize = static_cast<uint>(value);
fOptions.audioBufferSize = static_cast<uint>(value);
break;

case OPTION_RTAUDIO_SAMPLE_RATE:
case OPTION_AUDIO_SAMPLE_RATE:
if (value < 22050)
return carla_stderr2("carla_set_engine_option(OPTION_MAX_PARAMETERS, %i, \"%s\") - invalid value", value, valueStr);
return carla_stderr2("carla_set_engine_option(OPTION_AUDIO_SAMPLE_RATE, %i, \"%s\") - invalid value", value, valueStr);

fOptions.rtaudioSampleRate = static_cast<uint>(value);
fOptions.audioSampleRate = static_cast<uint>(value);
break;

case OPTION_RTAUDIO_DEVICE:
fOptions.rtaudioDevice = valueStr;
case OPTION_AUDIO_DEVICE:
fOptions.audioDevice = valueStr;
break;
#endif

case OPTION_PATH_RESOURCES:
fOptions.resourceDir = valueStr;


+ 0
- 1
source/backend/engine/CarlaEngine.pro View File

@@ -22,7 +22,6 @@ DEFINES += WANT_DSSI
DEFINES += WANT_LV2
DEFINES += WANT_VST
DEFINES += WANT_PLUGIN
DEFINES += WANT_RTAUDIO
DEFINES += WANT_FLUIDSYNTH
DEFINES += WANT_LINUXSAMPLER
DEFINES += WANT_OPENGL


+ 2
- 2
source/backend/engine/CarlaEngineInternal.hpp View File

@@ -137,8 +137,8 @@ struct EnginePluginData {
EnginePluginData()
: plugin(nullptr)
{
insPeak[0] = insPeak[1] = nullptr;
outsPeak[0] = outsPeak[1] = nullptr;
insPeak[0] = insPeak[1] = 0.0f;
outsPeak[0] = outsPeak[1] = 0.0f;
}
};



+ 7
- 3
source/backend/engine/CarlaEngineJack.cpp View File

@@ -505,6 +505,8 @@ public:
case kEnginePortTypeEvent:
port = jackbridge_port_register(fClient, name, JACK_DEFAULT_MIDI_TYPE, isInput ? JackPortIsInput : JackPortIsOutput, 0);
break;
case kEnginePortTypeOSC:
break;
}
}

@@ -519,6 +521,8 @@ public:
return new CarlaEngineJackCVPort(fEngine, isInput, fClient, port);
case kEnginePortTypeEvent:
return new CarlaEngineJackEventPort(fEngine, isInput, fClient, port);
case kEnginePortTypeOSC:
break;
}

carla_stderr("CarlaEngineJackClient::addPort(%s, \"%s\", %s) - invalid type", EnginePortType2Str(portType), name, bool2str(isInput));
@@ -1212,7 +1216,7 @@ protected:
float* outBuf[2] = { audioOut1, audioOut2 };

// initialize input events
carla_zeroStruct<EngineEvent>(pData->bufEvents.in, INTERNAL_EVENT_COUNT);
carla_zeroStruct<EngineEvent>(pData->bufEvents.in, kEngineMaxInternalEventCount);
{
uint32_t engineEventIndex = 0;

@@ -1293,7 +1297,7 @@ protected:
carla_copy<uint8_t>(engineEvent->midi.data+1, jackEvent.buffer+1, jackEvent.size-1);
}

if (engineEventIndex >= INTERNAL_EVENT_COUNT)
if (engineEventIndex >= kEngineMaxInternalEventCount)
break;
}
}
@@ -1305,7 +1309,7 @@ protected:
{
jackbridge_midi_clear_buffer(eventOut);

for (unsigned short i=0; i < INTERNAL_EVENT_COUNT; ++i)
for (unsigned short i=0; i < kEngineMaxInternalEventCount; ++i)
{
EngineEvent* const engineEvent = &pData->bufEvents.out[i];



+ 24
- 22
source/backend/engine/CarlaEngineJuce.cpp View File

@@ -33,8 +33,8 @@ CARLA_BACKEND_START_NAMESPACE

static const char** gRetNames = nullptr;

class CarlaEngineJuce : public CarlaEngine,
public juce::AudioIODeviceCallback
class CarlaEngineJuce : public CarlaEngine/*,
public juce::AudioIODeviceCallback*/
{
public:
CarlaEngineJuce()
@@ -87,30 +87,30 @@ public:
// -------------------------------------------------------------------

protected:
void audioDeviceIOCallback (const float** inputChannelData,
int numInputChannels,
float** outputChannelData,
int numOutputChannels,
int numSamples)
{
}
void audioDeviceAboutToStart (juce::AudioIODevice* device)
{
}
void audioDeviceStopped()
{
}
void audioDeviceError (const juce::String& errorMessage)
{
}
// void audioDeviceIOCallback (const float** inputChannelData,
// int numInputChannels,
// float** outputChannelData,
// int numOutputChannels,
// int numSamples)
// {
// }
//
// void audioDeviceAboutToStart (juce::AudioIODevice* device)
// {
// }
//
// void audioDeviceStopped()
// {
// }
//
// void audioDeviceError (const juce::String& errorMessage)
// {
// }

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

private:
juce::AudioIODeviceType* fDeviceType;
//juce::AudioIODeviceType* fDeviceType;

JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(CarlaEngineJuce)
};
@@ -134,6 +134,7 @@ const char* CarlaEngine::getJuceApiName(const unsigned int index)

const char** CarlaEngine::getJuceApiDeviceNames(const unsigned int index)
{
#if 0
juce::ScopedPointer<juce::AudioIODeviceType> deviceType;

switch(index)
@@ -166,6 +167,7 @@ const char** CarlaEngine::getJuceApiDeviceNames(const unsigned int index)
gRetNames[i] = carla_strdup(devNames[i].toRawUTF8());

gRetNames[devNameCount] = nullptr;
#endif

return gRetNames;
}


+ 6
- 10
source/backend/engine/CarlaEngineRtAudio.cpp View File

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

#ifdef WANT_RTAUDIO

#include "CarlaEngineInternal.hpp"
#include "CarlaBackendUtils.hpp"
#include "CarlaMIDI.h"
@@ -158,13 +156,13 @@ public:
return false;
}

if (fOptions.rtaudioDevice.isNotEmpty())
if (fOptions.audioDevice.isNotEmpty())
{
for (unsigned int i=0; i < devCount; ++i)
{
RtAudio::DeviceInfo devInfo(fAudio.getDeviceInfo(i));

if (devInfo.probed && devInfo.outputChannels > 0 && devInfo.name == (const char*)fOptions.rtaudioDevice)
if (devInfo.probed && devInfo.outputChannels > 0 && devInfo.name == (const char*)fOptions.audioDevice)
{
deviceSet = true;
fConnectName = devInfo.name.c_str();
@@ -201,10 +199,10 @@ public:
else
fAudioIsInterleaved = true;

fBufferSize = fOptions.rtaudioBufferSize;
fBufferSize = fOptions.audioBufferSize;

try {
fAudio.openStream(&oParams, &iParams, RTAUDIO_FLOAT32, fOptions.rtaudioSampleRate, &fBufferSize, carla_rtaudio_process_callback, this, &rtOptions);
fAudio.openStream(&oParams, &iParams, RTAUDIO_FLOAT32, fOptions.audioSampleRate, &fBufferSize, carla_rtaudio_process_callback, this, &rtOptions);
}
catch (RtError& e)
{
@@ -835,7 +833,7 @@ protected:
carla_zeroFloat(fAudioBufRackOut[1], nframes);

// initialize input events
carla_zeroMem(pData->bufEvents.in, sizeof(EngineEvent)*INTERNAL_EVENT_COUNT);
carla_zeroMem(pData->bufEvents.in, sizeof(EngineEvent)*kEngineMaxInternalEventCount);

if (fMidiInEvents.mutex.tryLock())
{
@@ -920,7 +918,7 @@ protected:
engineEvent.midi.size = midiEvent.size;
}

if (engineEventIndex >= INTERNAL_EVENT_COUNT)
if (engineEventIndex >= kEngineMaxInternalEventCount)
break;
}

@@ -1463,5 +1461,3 @@ const char** CarlaEngine::getRtAudioApiDeviceNames(const unsigned int index)
// -----------------------------------------

CARLA_BACKEND_END_NAMESPACE

#endif // CARLA_ENGINE_RTAUDIO

+ 4
- 15
source/backend/engine/Makefile View File

@@ -8,24 +8,13 @@ include ../Makefile.mk

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

BUILD_CXX_FLAGS += -D__UNIX_JACK__
BUILD_CXX_FLAGS += -DHAVE_GETTIMEOFDAY -D__UNIX_JACK__
BUILD_CXX_FLAGS += -Irtaudio-4.0.12 -Irtaudio-4.0.12/include -Irtmidi-2.0.1
BUILD_CXX_FLAGS += $(shell pkg-config --cflags liblo)

# ifeq ($(HAVE_QT4),true)
# BUILD_CXX_FLAGS += $(shell pkg-config --cflags QtCore QtXml)
# else
# BUILD_CXX_FLAGS += $(shell pkg-config --cflags Qt5Core Qt5Xml)
# endif

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

ifeq ($(CARLA_RTAUDIO_SUPPORT),true)
BUILD_CXX_FLAGS += -DHAVE_GETTIMEOFDAY
BUILD_CXX_FLAGS += -Irtaudio-4.0.12 -Irtaudio-4.0.12/include -Irtmidi-2.0.1
ifeq ($(DEBUG),true)
BUILD_CXX_FLAGS += -D__RTAUDIO_DEBUG__ -D__RTMIDI_DEBUG__
endif
endif

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

@@ -56,9 +45,9 @@ OBJSp = \
OBJS = $(OBJSp) \
CarlaEngineBridge.cpp.o \
CarlaEngineJack.cpp.o \
CarlaEngineJuce.cpp.o \
CarlaEngineRtAudio.cpp.o

ifeq ($(CARLA_RTAUDIO_SUPPORT),true)
OBJS += \
rtaudio-4.0.12/RtAudio.cpp.o \
rtmidi-2.0.1/RtMidi.cpp.o
@@ -70,7 +59,7 @@ OBJS += \
rtaudio-4.0.12/include/asiolist.cpp.o \
rtaudio-4.0.12/include/iasiothiscallresolver.cpp.o
endif
endif

TARGET = ../libcarla_engine.a
TARGETp = ../libcarla_engine_plugin.a


+ 0
- 1
source/backend/plugin/CarlaPlugin.pro View File

@@ -22,7 +22,6 @@ DEFINES += WANT_DSSI
DEFINES += WANT_LV2
DEFINES += WANT_VST
DEFINES += WANT_PLUGIN
DEFINES += WANT_RTAUDIO
DEFINES += WANT_FLUIDSYNTH
#DEFINES += WANT_LINUXSAMPLER
DEFINES += WANT_OPENGL


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

@@ -167,8 +167,8 @@ public:

if (isDssiVst)
{
if (pData->engine->getOptions().useDssiVstChunks && fDssiDescriptor->get_custom_data != nullptr && fDssiDescriptor->set_custom_data != nullptr)
options |= PLUGIN_OPTION_USE_CHUNKS;
// if (pData->engine->getOptions().useDssiVstChunks && fDssiDescriptor->get_custom_data != nullptr && fDssiDescriptor->set_custom_data != nullptr)
// options |= PLUGIN_OPTION_USE_CHUNKS;
}
else
{
@@ -1935,8 +1935,8 @@ public:
{
fOptions |= PLUGIN_OPTION_FIXED_BUFFERS;

if (pData->engine->getOptions().useDssiVstChunks && fDssiDescriptor->get_custom_data != nullptr && fDssiDescriptor->set_custom_data != nullptr)
fOptions |= PLUGIN_OPTION_USE_CHUNKS;
// if (pData->engine->getOptions().useDssiVstChunks && fDssiDescriptor->get_custom_data != nullptr && fDssiDescriptor->set_custom_data != nullptr)
// fOptions |= PLUGIN_OPTION_USE_CHUNKS;
}

if (fDssiDescriptor->run_synth != nullptr || fDssiDescriptor->run_multiple_synths != nullptr)


+ 27
- 38
source/backend/standalone/CarlaStandalone.cpp View File

@@ -142,9 +142,9 @@ const char* carla_get_extended_license_text()
#ifdef WANT_LV2
text4 += "<li>serd, sord, sratom and lilv libraries for LV2 discovery, http://drobilla.net/software/lilv/</li>";
#endif
#ifdef WANT_RTAUDIO
text4 += "<li>RtAudio+RtMidi libraries for extra Audio and MIDI support, http://www.music.mcgill.ca/~gary/rtaudio/</li>";
#endif

// end
text4 += "</ul>";

// code snippets
@@ -337,24 +337,18 @@ bool carla_engine_init(const char* driverName, const char* clientName)
gStandalone.engine->setCallback(gStandalone.callback, nullptr);

#ifndef BUILD_BRIDGE
gStandalone.engine->setOption(CB::OPTION_PROCESS_MODE, static_cast<int>(gStandalone.options.processMode), nullptr);
gStandalone.engine->setOption(CB::OPTION_TRANSPORT_MODE, static_cast<int>(gStandalone.options.transportMode), nullptr);
#endif
gStandalone.engine->setOption(CB::OPTION_FORCE_STEREO, gStandalone.options.forceStereo ? 1 : 0, nullptr);
gStandalone.engine->setOption(CB::OPTION_PREFER_PLUGIN_BRIDGES, gStandalone.options.preferPluginBridges ? 1 : 0, nullptr);
gStandalone.engine->setOption(CB::OPTION_PREFER_UI_BRIDGES, gStandalone.options.preferUiBridges ? 1 : 0, nullptr);
gStandalone.engine->setOption(CB::OPTION_UIS_ALWAYS_ON_TOP, gStandalone.options.uisAlwaysOnTop ? 1 : 0, nullptr);
#ifdef WANT_DSSI
gStandalone.engine->setOption(CB::OPTION_USE_DSSI_VST_CHUNKS, gStandalone.options.useDssiVstChunks ? 1 : 0, nullptr);
#endif
gStandalone.engine->setOption(CB::OPTION_MAX_PARAMETERS, static_cast<int>(gStandalone.options.maxParameters), nullptr);
gStandalone.engine->setOption(CB::OPTION_UI_BRIDGES_TIMEOUT, static_cast<int>(gStandalone.options.uiBridgesTimeout), nullptr);
#ifdef WANT_RTAUDIO
gStandalone.engine->setOption(CB::OPTION_RTAUDIO_NUMBER_PERIODS, static_cast<int>(gStandalone.options.rtaudioNumPeriods), nullptr);
gStandalone.engine->setOption(CB::OPTION_RTAUDIO_BUFFER_SIZE, static_cast<int>(gStandalone.options.rtaudioBufferSize), nullptr);
gStandalone.engine->setOption(CB::OPTION_RTAUDIO_SAMPLE_RATE, static_cast<int>(gStandalone.options.rtaudioSampleRate), nullptr);
gStandalone.engine->setOption(CB::OPTION_RTAUDIO_DEVICE, 0, (const char*)gStandalone.options.rtaudioDevice);
gStandalone.engine->setOption(CB::OPTION_TRANSPORT_MODE, static_cast<int>(gStandalone.options.transportMode), nullptr);
#endif
gStandalone.engine->setOption(CB::OPTION_FORCE_STEREO, gStandalone.options.forceStereo ? 1 : 0, nullptr);
gStandalone.engine->setOption(CB::OPTION_PREFER_PLUGIN_BRIDGES, gStandalone.options.preferPluginBridges ? 1 : 0, nullptr);
gStandalone.engine->setOption(CB::OPTION_PREFER_UI_BRIDGES, gStandalone.options.preferUiBridges ? 1 : 0, nullptr);
gStandalone.engine->setOption(CB::OPTION_UIS_ALWAYS_ON_TOP, gStandalone.options.uisAlwaysOnTop ? 1 : 0, nullptr);
gStandalone.engine->setOption(CB::OPTION_MAX_PARAMETERS, static_cast<int>(gStandalone.options.maxParameters), nullptr);
gStandalone.engine->setOption(CB::OPTION_UI_BRIDGES_TIMEOUT, static_cast<int>(gStandalone.options.uiBridgesTimeout), nullptr);
gStandalone.engine->setOption(CB::OPTION_AUDIO_NUM_PERIODS, static_cast<int>(gStandalone.options.audioNumPeriods), nullptr);
gStandalone.engine->setOption(CB::OPTION_AUDIO_BUFFER_SIZE, static_cast<int>(gStandalone.options.audioBufferSize), nullptr);
gStandalone.engine->setOption(CB::OPTION_AUDIO_SAMPLE_RATE, static_cast<int>(gStandalone.options.audioSampleRate), nullptr);
gStandalone.engine->setOption(CB::OPTION_AUDIO_DEVICE, 0, (const char*)gStandalone.options.audioDevice);
gStandalone.engine->setOption(CB::OPTION_PATH_RESOURCES, 0, (const char*)gStandalone.options.resourceDir);
#ifndef BUILD_BRIDGE
gStandalone.engine->setOption(CB::OPTION_PATH_BRIDGE_NATIVE, 0, (const char*)gStandalone.options.bridge_native);
@@ -502,12 +496,6 @@ void carla_set_engine_option(CarlaOptionsType option, int value, const char* val
gStandalone.options.uisAlwaysOnTop = (value != 0);
break;

#ifdef WANT_DSSI
case CB::OPTION_USE_DSSI_VST_CHUNKS:
gStandalone.options.useDssiVstChunks = (value != 0);
break;
#endif

case CB::OPTION_MAX_PARAMETERS:
if (value < 1)
return carla_stderr2("carla_set_engine_option(OPTION_MAX_PARAMETERS, %i, \"%s\") - invalid value", value, valueStr);
@@ -522,32 +510,30 @@ void carla_set_engine_option(CarlaOptionsType option, int value, const char* val
gStandalone.options.uiBridgesTimeout = static_cast<unsigned int>(value);
break;

#ifdef WANT_RTAUDIO
case CB::OPTION_RTAUDIO_NUMBER_PERIODS:
case CB::OPTION_AUDIO_NUM_PERIODS:
if (value < 2 || value > 3)
return carla_stderr2("carla_set_engine_option(OPTION_RTAUDIO_NUMBER_PERIODS, %i, \"%s\") - invalid value", value, valueStr);
return carla_stderr2("carla_set_engine_option(OPTION_AUDIO_NUM_PERIODS, %i, \"%s\") - invalid value", value, valueStr);

gStandalone.options.rtaudioNumPeriods = static_cast<unsigned int>(value);
gStandalone.options.audioNumPeriods = static_cast<unsigned int>(value);
break;

case CB::OPTION_RTAUDIO_BUFFER_SIZE:
case CB::OPTION_AUDIO_BUFFER_SIZE:
if (value < 8)
return carla_stderr2("carla_set_engine_option(OPTION_RTAUDIO_BUFFER_SIZE, %i, \"%s\") - invalid value", value, valueStr);
return carla_stderr2("carla_set_engine_option(OPTION_AUDIO_BUFFER_SIZE, %i, \"%s\") - invalid value", value, valueStr);

gStandalone.options.rtaudioBufferSize = static_cast<unsigned int>(value);
gStandalone.options.audioBufferSize = static_cast<unsigned int>(value);
break;

case CB::OPTION_RTAUDIO_SAMPLE_RATE:
case CB::OPTION_AUDIO_SAMPLE_RATE:
if (value < 22050)
return carla_stderr2("carla_set_engine_option(OPTION_RTAUDIO_SAMPLE_RATE, %i, \"%s\") - invalid value", value, valueStr);
return carla_stderr2("carla_set_engine_option(OPTION_AUDIO_SAMPLE_RATE, %i, \"%s\") - invalid value", value, valueStr);

gStandalone.options.rtaudioSampleRate = static_cast<unsigned int>(value);
gStandalone.options.audioSampleRate = static_cast<unsigned int>(value);
break;

case CB::OPTION_RTAUDIO_DEVICE:
gStandalone.options.rtaudioDevice = valueStr;
case CB::OPTION_AUDIO_DEVICE:
gStandalone.options.audioDevice = valueStr;
break;
#endif

case CB::OPTION_PATH_RESOURCES:
gStandalone.options.resourceDir = valueStr;
@@ -1277,6 +1263,8 @@ const char* carla_get_chunk_data(unsigned int pluginId)
void* data = nullptr;
const int32_t dataSize = plugin->getChunkData(&data);

// TODO
#if 0
if (data != nullptr && dataSize > 0)
{
QByteArray chunk(QByteArray((char*)data, dataSize).toBase64());
@@ -1284,6 +1272,7 @@ const char* carla_get_chunk_data(unsigned int pluginId)
return (const char*)chunkData;
}
else
#endif
carla_stderr2("carla_get_chunk_data(%i) - got invalid chunk data", pluginId);
}
else


+ 1
- 1
source/backend/standalone/Makefile View File

@@ -136,7 +136,7 @@ debug:
$(CXX) $^ -dynamiclib $(LINK_FLAGS) -framework CoreAudio -framework CoreMIDI -framework CoreFoundation -o $@

../libcarla_standalone.so: $(OBJS) $(LIBS)
$(CXX) $^ $(LINK_FLAGS) -o $@ # -shared
$(CXX) $^ $(LINK_FLAGS) -shared -o $@

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



+ 1
- 1
source/bridges/CarlaBridgeClient.cpp View File

@@ -33,7 +33,7 @@ CarlaBridgeClient::CarlaBridgeClient(const char* const uiTitle)
: fOsc(this),
fOscData(fOsc.getControlData())
#ifdef BUILD_BRIDGE_UI
, fUI(CarlaBridgeToolkit::createNew(this, uiTitle)),
, fUI(CarlaBridgeToolkit::createNew(this, uiTitle))
#endif
{
#ifdef BUILD_BRIDGE_UI


+ 13
- 14
source/bridges/CarlaBridgePlugin.cpp View File

@@ -20,7 +20,7 @@

#include "CarlaBackendUtils.hpp"
#include "CarlaBridgeUtils.hpp"
#include "CarlaStandalone.hpp"
#include "CarlaHost.hpp"
#include "CarlaEngine.hpp"
#include "CarlaPlugin.hpp"

@@ -38,6 +38,10 @@
# include <signal.h>
#endif

#include "juce_core.h"

using juce::File;

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

static bool gCloseNow = false;
@@ -99,10 +103,6 @@ void initSignalHandler()

extern CarlaBackend::CarlaEngine* carla_get_standalone_engine();

CARLA_BACKEND_START_NAMESPACE
extern const char* findDSSIGUI(const char* const filename, const char* const label);
CARLA_BACKEND_END_NAMESPACE

CARLA_BRIDGE_START_NAMESPACE

#if 0
@@ -131,6 +131,13 @@ public:
carla_engine_init("JACK", driverName);

carla_set_engine_callback(callback, this);

File curDir(File::getSpecialLocation(File::currentApplicationFile).getParentDirectory());

if (curDir.getChildFile("resources").exists())
carla_set_engine_option(CarlaBackend::OPTION_PATH_RESOURCES, 0, curDir.getChildFile("resources").getFullPathName().toRawUTF8());
else
carla_set_engine_option(CarlaBackend::OPTION_PATH_RESOURCES, 0, curDir.getChildFile("../modules/carla_native/resources").getFullPathName().toRawUTF8());
}

~CarlaPluginClient()
@@ -536,15 +543,10 @@ int main(int argc, char* argv[])
// Listen for ctrl+c or sigint/sigterm events
initSignalHandler();

const void* extraStuff = nullptr;

if (itype == CarlaBackend::PLUGIN_DSSI)
extraStuff = CarlaBackend::findDSSIGUI(filename, label);

// Init plugin
int ret;

if (carla_add_plugin(CarlaBackend::BINARY_NATIVE, itype, filename, name, label, extraStuff))
if (carla_add_plugin(CarlaBackend::BINARY_NATIVE, itype, filename, name, label, nullptr))
{
if (useOsc)
{
@@ -579,9 +581,6 @@ int main(int argc, char* argv[])
ret = 1;
}

if (extraStuff != nullptr && itype == CarlaBackend::PLUGIN_DSSI)
delete[] (const char*)extraStuff;

// Close OSC
if (useOsc)
client.oscClose();


+ 8
- 8
source/bridges/CarlaBridgeToolkitQt.cpp View File

@@ -119,14 +119,14 @@ public:
{
CarlaStyle* const style(new CarlaStyle());
fApp->setStyle(style);
style->ready(fApp);
QString color(settings.value("Main/ProThemeColor", "Black").toString());
if (color == "System")
pass(); //style->setColorScheme(CarlaStyle::COLOR_SYSTEM);
else
style->setColorScheme(CarlaStyle::COLOR_BLACK);
//style->ready(fApp);
// QString color(settings.value("Main/ProThemeColor", "Black").toString());
//
// if (color == "System")
// pass(); //style->setColorScheme(CarlaStyle::COLOR_SYSTEM);
// else
// style->setColorScheme(CarlaStyle::COLOR_BLACK);
}
}



+ 5
- 5
source/bridges/CarlaBridgeUI-LV2.cpp View File

@@ -169,7 +169,7 @@ struct Lv2PluginOptions {
opts[4] = &optNull;
}

CARLA_DECLARE_NON_COPY_STRUCT_WITH_LEAK_DETECTOR(Lv2PluginOptions)
CARLA_DECLARE_NON_COPY_STRUCT(Lv2PluginOptions)
};

// -------------------------------------------------------------------------
@@ -358,7 +358,7 @@ public:
// get plugin from lv2_rdf (lilv)

gLv2World.init();
fRdfDescriptor = lv2_rdf_new(pluginURI);
fRdfDescriptor = lv2_rdf_new(pluginURI, false);

if (fRdfDescriptor == nullptr)
return false;
@@ -1095,14 +1095,14 @@ private:
CARLA_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(CarlaLv2Client)
};

#define lv2ClientPtr ((CarlaLv2Client*)kClient)
#define lv2ClientPtr ((CarlaLv2Client*)fClient)

int CarlaBridgeOsc::handleMsgLv2AtomTransfer(CARLA_BRIDGE_OSC_HANDLE_ARGS)
{
CARLA_BRIDGE_OSC_CHECK_OSC_TYPES(2, "is");
carla_debug("CarlaBridgeOsc::handleMsgLv2AtomTransfer()");

if (kClient == nullptr)
if (fClient == nullptr)
return 1;

const int32_t portIndex = argv[0]->i;
@@ -1125,7 +1125,7 @@ int CarlaBridgeOsc::handleMsgLv2UridMap(CARLA_BRIDGE_OSC_HANDLE_ARGS)
CARLA_BRIDGE_OSC_CHECK_OSC_TYPES(2, "is");
carla_debug("CarlaBridgeOsc::handleMsgLv2UridMap()");

if (kClient == nullptr)
if (fClient == nullptr)
return 1;

const int32_t urid = argv[0]->i;


+ 50
- 48
source/bridges/Makefile View File

@@ -71,7 +71,7 @@ endif
WIN_BUILD_FLAGS = $(BUILD_PLUGIN_FLAGS) -DJACKBRIDGE_EXPORT
WIN_32BIT_FLAGS = $(32BIT_FLAGS)
WIN_64BIT_FLAGS = $(64BIT_FLAGS)
WIN_LINK_FLAGS = $(LINK_PLUGIN_FLAGS) $(EXTRA_LIBS) -mwindows -lwinspool -lole32 -luuid -limm32 -lshell32 -lws2_32 -L../libs
WIN_LINK_FLAGS = $(LINK_PLUGIN_FLAGS) $(EXTRA_LIBS) -mwindows -lwinspool -lole32 -luuid -limm32 -lshell32 -lws2_32 -L../modules

# --------------------------------------------------------------
# Plugin bridges (Native)
@@ -159,8 +159,8 @@ LINK_UI_LV2_WIN32_FLAGS = $(LINK_FLAGS) $(QT_UI_LIBS) $(EXTRA_LIBS) -mwindows -
BUILD_UI_LV2_X11_FLAGS = $(BUILD_UI_LV2_FLAGS) -DBRIDGE_X11 -DBRIDGE_LV2_X11 $(QT_UI_FLAGS)
LINK_UI_LV2_X11_FLAGS = $(LINK_UI_FLAGS) $(QT_UI_LIBS)

BUILD_UI_VST_COCOA_FLAGS = $(BUILD_UI_VST_FLAGS) -DBRIDGE_COCOA -DBRIDGE_VST_COCOA $(QT_UI_FLAGS)
LINK_UI_VST_COCOA_FLAGS = $(LINK_UI_FLAGS) $(QT_UI_LIBS)
BUILD_UI_VST_MAC_FLAGS = $(BUILD_UI_VST_FLAGS) -DBRIDGE_MAC -DBRIDGE_VST_MAC $(QT_UI_FLAGS)
LINK_UI_VST_MAC_FLAGS = $(LINK_UI_FLAGS) $(QT_UI_LIBS)

BUILD_UI_VST_HWND_FLAGS = $(BUILD_UI_VST_FLAGS) -DBRIDGE_HWND -DBRIDGE_VST_HWND $(QT_UI_FLAGS)
LINK_UI_VST_HWND_FLAGS = $(LINK_FLAGS) $(QT_UI_LIBS) $(EXTRA_LIBS) -mwindows -lwinspool -lole32 -luuid -limm32 -lshell32 -lws2_32 -static
@@ -210,9 +210,9 @@ ui_lv2-cocoa: carla-bridge-lv2-cocoa
ui_lv2-win32: carla-bridge-lv2-windows.exe
ui_lv2-x11: carla-bridge-lv2-x11

ui_vst-cocoa: carla-bridge-vst-cocoa
ui_vst-hwnd: carla-bridge-vst-hwnd.exe
ui_vst-x11: carla-bridge-vst-x11
ui_vst-mac: carla-bridge-vst-mac
ui_vst-hwnd: carla-bridge-vst-hwnd.exe
ui_vst-x11: carla-bridge-vst-x11

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

@@ -235,7 +235,11 @@ CarlaBridgeToolkitQt.moc: CarlaBridgeToolkitQt.cpp
$(MOC) $< -DMOC_PARSING -o $@

OBJS_UI_LV2_LIBS = \
../libs/lilv.a
../modules/lilv.a \
../modules/juce_core.a

OBJS_UI_VST_LIBS = \
../modules/juce_core.a

# --------------------------------------------------------------
# ui_lv2-gtk2
@@ -270,7 +274,7 @@ OBJS_UI_LV2_QT4 = CarlaBridgeUI-LV2__lv2-qt4.o \
CarlaBridgeClient__lv2.o CarlaBridgeOsc__lv2.o \
CarlaBridgeToolkit__lv2.o CarlaBridgeToolkitQt__lv2-qt4.o

carla-bridge-lv2-qt4: $(OBJS_UI_LV2_QT4) $(OBJS_UI_LV2_LIBS) ../libs/theme.a
carla-bridge-lv2-qt4: $(OBJS_UI_LV2_QT4) $(OBJS_UI_LV2_LIBS) ../modules/theme.a
$(CXX) $^ $(LINK_UI_LV2_QT4_FLAGS) -o $@

%__lv2-qt4.o: %.cpp CarlaBridgeToolkitQt.moc
@@ -283,7 +287,7 @@ OBJS_UI_LV2_QT5 = CarlaBridgeUI-LV2__lv2-qt5.o \
CarlaBridgeClient__lv2.o CarlaBridgeOsc__lv2.o \
CarlaBridgeToolkit__lv2.o CarlaBridgeToolkitQt__lv2-qt5.o

carla-bridge-lv2-qt5: $(OBJS_UI_LV2_QT5) $(OBJS_UI_LV2_LIBS) ../libs/theme.a
carla-bridge-lv2-qt5: $(OBJS_UI_LV2_QT5) $(OBJS_UI_LV2_LIBS) ../modules/theme.a
$(CXX) $^ $(LINK_UI_LV2_QT5_FLAGS) -o $@

%__lv2-qt5.o: %.cpp CarlaBridgeToolkitQt.moc
@@ -296,7 +300,7 @@ OBJS_UI_LV2_COCOA = CarlaBridgeUI-LV2__lv2-cocoa.o \
CarlaBridgeClient__lv2.o CarlaBridgeOsc__lv2.o \
CarlaBridgeToolkit__lv2.o CarlaBridgeToolkitQt__lv2-cocoa.o

carla-bridge-lv2-cocoa: $(OBJS_UI_LV2_COCOA) $(OBJS_UI_LV2_LIBS) ../libs/theme.a
carla-bridge-lv2-cocoa: $(OBJS_UI_LV2_COCOA) $(OBJS_UI_LV2_LIBS) ../modules/theme.a
$(CXX) $^ $(LINK_UI_LV2_COCOA_FLAGS) -o $@

%__lv2-cocoa.o: %.cpp CarlaBridgeToolkitQt.moc
@@ -309,7 +313,7 @@ OBJS_UI_LV2_WIN32 = CarlaBridgeUI-LV2__lv2-windows.o \
CarlaBridgeClient__lv2.o CarlaBridgeOsc__lv2.o \
CarlaBridgeToolkit__lv2.o CarlaBridgeToolkitQt__lv2-windows.o

carla-bridge-lv2-windows.exe: $(OBJS_UI_LV2_WIN32) $(OBJS_UI_LV2_LIBS) ../libs/theme.a
carla-bridge-lv2-windows.exe: $(OBJS_UI_LV2_WIN32) $(OBJS_UI_LV2_LIBS) ../modules/theme.a
$(CXX) $^ $(LINK_UI_LV2_WIN32_FLAGS) -o $@

%__lv2-windows.o: %.cpp CarlaBridgeToolkitQt.moc
@@ -322,24 +326,24 @@ OBJS_UI_LV2_X11 = CarlaBridgeUI-LV2__lv2-x11.o \
CarlaBridgeClient__lv2.o CarlaBridgeOsc__lv2.o \
CarlaBridgeToolkit__lv2.o CarlaBridgeToolkitQt__lv2-x11.o

carla-bridge-lv2-x11: $(OBJS_UI_LV2_X11) $(OBJS_UI_LV2_LIBS) ../libs/theme.a
carla-bridge-lv2-x11: $(OBJS_UI_LV2_X11) $(OBJS_UI_LV2_LIBS) ../modules/theme.a
$(CXX) $^ $(LINK_UI_LV2_X11_FLAGS) -o $@

%__lv2-x11.o: %.cpp CarlaBridgeToolkitQt.moc
$(CXX) $< $(BUILD_UI_LV2_X11_FLAGS) -c -o $@

# --------------------------------------------------------------
# ui_vst-cocoa
# ui_vst-mac

OBJS_UI_VST_COCOA = CarlaBridgeUI-VST__vst-cocoa.o \
OBJS_UI_VST_MAC = CarlaBridgeUI-VST__vst-mac.o \
CarlaBridgeClient__vst.o CarlaBridgeOsc__vst.o \
CarlaBridgeToolkit__vst.o CarlaBridgeToolkitQt__vst-cocoa.o
CarlaBridgeToolkit__vst.o CarlaBridgeToolkitQt__vst-mac.o

carla-bridge-vst-cocoa: $(OBJS_UI_VST_COCOA) ../libs/theme.a
$(CXX) $^ $(LINK_UI_VST_COCOA_FLAGS) -o $@
carla-bridge-vst-mac: $(OBJS_UI_VST_MAC) $(OBJS_UI_VST_LIBS) ../modules/theme.a
$(CXX) $^ $(LINK_UI_VST_MAC_FLAGS) -o $@

%__vst-cocoa.o: %.cpp CarlaBridgeToolkitQt.moc
$(CXX) $< $(BUILD_UI_VST_COCOA_FLAGS) -c -o $@
%__vst-mac.o: %.cpp CarlaBridgeToolkitQt.moc
$(CXX) $< $(BUILD_UI_VST_MAC_FLAGS) -c -o $@

# --------------------------------------------------------------
# ui_vst-hwnd
@@ -348,7 +352,7 @@ OBJS_UI_VST_HWND = CarlaBridgeUI-VST__vst-hwnd.o \
CarlaBridgeClient__vst.o CarlaBridgeOsc__vst.o \
CarlaBridgeToolkit__vst.o CarlaBridgeToolkitQt__vst-hwnd.o

carla-bridge-vst-hwnd.exe: $(OBJS_UI_VST_HWND) ../libs/theme.a
carla-bridge-vst-hwnd.exe: $(OBJS_UI_VST_HWND) $(OBJS_UI_VST_LIBS) ../modules/theme.a
$(CXX) $^ $(LINK_UI_VST_HWND_FLAGS) -o $@

%__vst-hwnd.o: %.cpp CarlaBridgeToolkitQt.moc
@@ -361,7 +365,7 @@ OBJS_UI_VST_X11 = CarlaBridgeUI-VST__vst-x11.o \
CarlaBridgeClient__vst.o CarlaBridgeOsc__vst.o \
CarlaBridgeToolkit__vst.o CarlaBridgeToolkitQt__vst-x11.o

carla-bridge-vst-x11: $(OBJS_UI_VST_X11) ../libs/theme.a
carla-bridge-vst-x11: $(OBJS_UI_VST_X11) $(OBJS_UI_VST_LIBS) ../modules/theme.a
$(CXX) $^ $(LINK_UI_VST_X11_FLAGS) -o $@

%__vst-x11.o: %.cpp CarlaBridgeToolkitQt.moc
@@ -407,14 +411,15 @@ OBJS_NATIVE += \

# libs
OBJS_NATIVE += \
../backend/libcarla_native.a \
../libs/dgl.a \
../libs/rtmempool.a \
../libs/widgets.a
../modules/carla_native.a \
../modules/dgl.a \
../modules/juce_audio_basics.a \
../modules/juce_core.a \
../modules/rtmempool.a

ifeq ($(CARLA_PLUGIN_SUPPORT),true)
OBJS_NATIVE += \
../libs/lilv.a
../modules/lilv.a
endif

carla-bridge-native: $(FILES) $(OBJS_NATIVE)
@@ -457,8 +462,8 @@ OBJS_POSIX32 += \

# libs
OBJS_POSIX32 += \
../libs/lilv.posix32.a \
../libs/rtmempool.posix32.a
../modules/lilv.posix32.a \
../modules/rtmempool.posix32.a

carla-bridge-posix32: $(FILES) $(OBJS_POSIX32)
$(CXX) $(OBJS_POSIX32) $(POSIX_LINK_FLAGS) $(POSIX_32BIT_FLAGS) -o $@
@@ -500,8 +505,8 @@ OBJS_POSIX64 += \

# libs
OBJS_POSIX64 += \
../libs/lilv.posix64.a \
../libs/rtmempool.posix64.a
../modules/lilv.posix64.a \
../modules/rtmempool.posix64.a

carla-bridge-posix64: $(FILES) $(OBJS_POSIX64)
$(CXX) $(OBJS_POSIX64) $(POSIX_LINK_FLAGS) $(POSIX_64BIT_FLAGS) -o $@
@@ -543,10 +548,10 @@ OBJS_WIN32 += \

# libs
OBJS_WIN32 += \
../libs/lilv.win32.a \
../libs/rtmempool.win32.a
../modules/lilv.win32.a \
../modules/rtmempool.win32.a

carla-bridge-win32.exe: $(FILES) $(OBJS_WIN32) ../libs/jackbridge-win32.dll
carla-bridge-win32.exe: $(FILES) $(OBJS_WIN32) ../modules/jackbridge-win32.dll
$(CXX) $(OBJS_WIN32) $(WIN_32BIT_FLAGS) $(WIN_LINK_FLAGS) -ljackbridge-win32 -o $@

%__win32.o: %.cpp
@@ -586,10 +591,10 @@ OBJS_WIN64 += \

# libs
OBJS_WIN64 += \
../libs/lilv.win64.a \
../libs/rtmempool.win64.a
../modules/lilv.win64.a \
../modules/rtmempool.win64.a

carla-bridge-win64.exe: $(FILES) $(OBJS_WIN64) ../libs/jackbridge-win64.dll
carla-bridge-win64.exe: $(FILES) $(OBJS_WIN64) ../modules/jackbridge-win64.dll
$(CXX) $(OBJS_WIN64) $(WIN_64BIT_FLAGS) $(WIN_LINK_FLAGS) -ljackbridge-win64 -o $@

%__win64.o: %.cpp
@@ -605,20 +610,17 @@ carla-bridge-win64.exe: $(FILES) $(OBJS_WIN64) ../libs/jackbridge-win64.dll
.FORCE:
.PHONY: .FORCE

../backend/libcarla_native.a: .FORCE
$(MAKE) -C ../backend/native

../libs/lilv.%.a: .FORCE
$(MAKE) -C ../libs lilv_$*
../modules/lilv.%.a: .FORCE
$(MAKE) -C ../modules lilv_$*

../libs/rtmempool.%.a: .FORCE
$(MAKE) -C ../libs rtmempool_$*
../modules/rtmempool.%.a: .FORCE
$(MAKE) -C ../modules rtmempool_$*

../libs/%.a: .FORCE
$(MAKE) -C ../libs $*
../modules/%.a: .FORCE
$(MAKE) -C ../modules $*

../libs/%.dll:
$(MAKE) -C ../libs $*
../modules/%.dll:
$(MAKE) -C ../modules $*

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

@@ -635,7 +637,7 @@ clean:
rm -f $(OBJS_WIN32)
rm -f $(OBJS_WIN64)
rm -f carla-bridge-lv2-gtk2 carla-bridge-lv2-gtk3 carla-bridge-lv2-qt4 carla-bridge-lv2-qt5 carla-bridge-lv2-cocoa carla-bridge-lv2-x11
rm -f carla-bridge-vst-cocoa carla-bridge-vst-x11
rm -f carla-bridge-vst-mac carla-bridge-vst-x11
rm -f carla-bridge-native carla-bridge-posix32 carla-bridge-posix64

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


+ 20
- 14
source/bridges/qtcreator/carla-bridge-plugin.pro View File

@@ -1,14 +1,12 @@
# QtCreator project file

QT = core gui xml

TARGET = carla-bridge-qtcreator
TEMPLATE = app

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

CONFIG = debug
CONFIG += link_pkgconfig qt warn_on
CONFIG += link_pkgconfig warn_on

DEFINES = DEBUG
DEFINES += HAVE_CPP11_SUPPORT
@@ -23,13 +21,14 @@ DEFINES += WANT_LADSPA
DEFINES += WANT_DSSI
DEFINES += WANT_LV2
DEFINES += WANT_VST
DEFINES += WANT_AU
DEFINES += WANT_FLUIDSYNTH
#DEFINES += WANT_LINUXSAMPLER
DEFINES += WANT_LINUXSAMPLER
DEFINES += WANT_OPENGL
DEFINES += WANT_AUDIOFILE
DEFINES += WANT_MIDIFILE
DEFINES += WANT_ZYNADDSUBFX
#DEFINES += WANT_ZYNADDSUBFX_UI
# DEFINES += WANT_ZYNADDSUBFX_UI

# Engine
PKGCONFIG = liblo
@@ -38,7 +37,7 @@ PKGCONFIG = liblo
PKGCONFIG += fluidsynth

# LinuxSampler
#PKGCONFIG += linuxsampler
PKGCONFIG += linuxsampler

# AudioFile
DEFINES += HAVE_FFMPEG
@@ -74,7 +73,9 @@ SOURCES += \
../../backend/engine/CarlaEngineOsc.cpp \
../../backend/engine/CarlaEngineThread.cpp \
../../backend/engine/CarlaEngineBridge.cpp \
../../backend/engine/CarlaEngineJack.cpp
../../backend/engine/CarlaEngineJack.cpp \
../../backend/engine/CarlaEngineJuce.cpp \
../../backend/engine/CarlaEngineRtAudio.cpp

# Plugin
SOURCES += \
@@ -87,7 +88,7 @@ SOURCES += \
../../backend/plugin/DssiPlugin.cpp \
../../backend/plugin/Lv2Plugin.cpp \
../../backend/plugin/VstPlugin.cpp \
../../backend/plugin/Vst3Plugin.cpp \
../../backend/plugin/CsoundPlugin.cpp \
../../backend/plugin/FluidSynthPlugin.cpp \
../../backend/plugin/LinuxSamplerPlugin.cpp

@@ -104,7 +105,7 @@ HEADERS += \
../../backend/CarlaNative.h \
../../backend/CarlaNative.hpp \
../../backend/CarlaPlugin.hpp \
../../backend/CarlaStandalone.hpp
../../backend/CarlaHost.hpp

# engine
HEADERS += \
@@ -121,9 +122,14 @@ HEADERS += \
# includes
HEADERS += \
../../includes/CarlaDefines.hpp \
../../includes/CarlaMIDI.h \
../../includes/ladspa_rdf.hpp \
../../includes/lv2_rdf.hpp
../../includes/CarlaMIDI.h

# modules
HEADERS += \
../../modules/CarlaNative.h \
../../modules/CarlaNative.hpp \
../../modules/ladspa_rdf.hpp \
../../modules/lv2_rdf.hpp

# utils
HEADERS += \
@@ -156,11 +162,11 @@ INCLUDEPATH = .. \
# -----------------------------------------------------------

LIBS = -ldl
LIBS += ../../backend/libcarla_native.a
LIBS += ../../modules/carla_native.a
LIBS += ../../modules/juce_audio_basics.a
LIBS += ../../modules/juce_core.a
LIBS += ../../modules/rtmempool.a
LIBS += ../../modules/theme.a
LIBS += ../../modules/widgets.a

LIBS += ../../modules/dgl.a
LIBS += ../../modules/lilv.a


+ 103
- 44
source/carla_database.py View File

@@ -34,6 +34,7 @@ except:

import ui_carla_database
import ui_carla_refresh

from carla_shared import *

# ------------------------------------------------------------------------------------------------------------
@@ -116,12 +117,13 @@ def findFilenames(filePath, stype):
# ------------------------------------------------------------------------------------------------------------
# Plugin Query

PLUGIN_QUERY_API_VERSION = 1
PLUGIN_QUERY_API_VERSION = 2

PyPluginInfo = {
'API': PLUGIN_QUERY_API_VERSION,
'build': BINARY_NONE,
'type': PLUGIN_NONE,
'category': PLUGIN_CATEGORY_NONE,
'hints': 0x0,
'binary': "",
'name': "",
@@ -182,7 +184,7 @@ def runCarlaDiscovery(itype, stype, filename, tool, isWine=False):
pinfo['binary'] = filename

elif line == "carla-discovery::end::------------":
if pinfo != None:
if pinfo is not None:
plugins.append(pinfo)
del pinfo
pinfo = None
@@ -193,6 +195,9 @@ def runCarlaDiscovery(itype, stype, filename, tool, isWine=False):
elif line.startswith("err:module:import_dll Library"):
print(line)

elif line.startswith("carla-discovery::info::"):
print("%s - %s" % (line, filename))

elif line.startswith("carla-discovery::error::"):
print("%s - %s" % (line, filename))

@@ -217,6 +222,8 @@ def runCarlaDiscovery(itype, stype, filename, tool, isWine=False):
if value.isdigit(): pinfo['uniqueId'] = int(value)
elif prop == "hints":
if value.isdigit(): pinfo['hints'] = int(value)
elif prop == "category":
if value.isdigit(): pinfo['category'] = int(value)
elif prop == "audio.ins":
if value.isdigit(): pinfo['audio.ins'] = int(value)
elif prop == "audio.outs":
@@ -247,12 +254,6 @@ def runCarlaDiscovery(itype, stype, filename, tool, isWine=False):
pinfo = None
continue

# FIXME - put this into c++ discovery
for pinfo in plugins:
if itype == PLUGIN_DSSI:
if findDSSIGUI(pinfo['binary'], pinfo['name'], pinfo['label']):
pinfo['hints'] |= PLUGIN_HAS_GUI

# FIXME?
tmp = discoveryProcess
discoveryProcess = None
@@ -270,12 +271,13 @@ def checkPluginInternal(desc):
plugins = []

pinfo = deepcopy(PyPluginInfo)
pinfo['build'] = BINARY_NATIVE
pinfo['type'] = PLUGIN_INTERNAL
pinfo['hints'] = int(desc['hints'])
pinfo['name'] = cString(desc['name'])
pinfo['label'] = cString(desc['label'])
pinfo['maker'] = cString(desc['maker'])
pinfo['build'] = BINARY_NATIVE
pinfo['type'] = PLUGIN_INTERNAL
pinfo['category'] = int(desc['category'])
pinfo['hints'] = int(desc['hints'])
pinfo['name'] = cString(desc['name'])
pinfo['label'] = cString(desc['label'])
pinfo['maker'] = cString(desc['maker'])
pinfo['copyright'] = cString(desc['copyright'])

pinfo['audio.ins'] = int(desc['audioIns'])
@@ -500,7 +502,7 @@ class SearchPluginsThread(QThread):
json.dump(ladspaRdfInfo, fdLadspa)
fdLadspa.close()

if not self.fContinueChecking: return
if not self.fContinueChecking: return

if self.fCheckDSSI:
if self.fCheckNative:
@@ -533,7 +535,7 @@ class SearchPluginsThread(QThread):

settingsDB.sync()

if not self.fContinueChecking: return
if not self.fContinueChecking: return

if self.fCheckLV2:
if self.fCheckNative:
@@ -566,7 +568,7 @@ class SearchPluginsThread(QThread):

settingsDB.sync()

if not self.fContinueChecking: return
if not self.fContinueChecking: return

if self.fCheckVST:
if self.fCheckNative:
@@ -599,7 +601,7 @@ class SearchPluginsThread(QThread):

settingsDB.sync()

if not self.fContinueChecking: return
if not self.fContinueChecking: return

if self.fCheckAU:
if self.fCheckNative:
@@ -620,28 +622,40 @@ class SearchPluginsThread(QThread):

settingsDB.sync()

if not self.fContinueChecking: return
if not self.fContinueChecking: return

if self.fCheckCSOUND:
self._checkCSOUND()
settingsDB.setValue("Plugins/CSOUND", self.fCsoundPlugins)

if not self.fContinueChecking: return
if not self.fContinueChecking: return

if self.fCheckGIG:
self._checkKIT(Carla.GIG_PATH, "gig")
settings = QSettings()
GIG_PATH = toList(settings.value("Paths/GIG", Carla.DEFAULT_GIG_PATH))
del settings

self._checkKIT(GIG_PATH, "gig")
settingsDB.setValue("Plugins/GIG", self.fKitPlugins)

if not self.fContinueChecking: return
if not self.fContinueChecking: return

if self.fCheckSF2:
self._checkKIT(Carla.SF2_PATH, "sf2")
settings = QSettings()
SF2_PATH = toList(settings.value("Paths/SF2", Carla.DEFAULT_SF2_PATH))
del settings

self._checkKIT(SF2_PATH, "sf2")
settingsDB.setValue("Plugins/SF2", self.fKitPlugins)

if not self.fContinueChecking: return
if not self.fContinueChecking: return

if self.fCheckSFZ:
self._checkKIT(Carla.SFZ_PATH, "sfz")
settings = QSettings()
SFZ_PATH = toList(settings.value("Paths/SFZ", Carla.DEFAULT_SFZ_PATH))
del settings

self._checkKIT(SFZ_PATH, "sfz")
settingsDB.setValue("Plugins/SFZ", self.fKitPlugins)

settingsDB.sync()
@@ -652,7 +666,10 @@ class SearchPluginsThread(QThread):

self._pluginLook(self.fLastCheckValue, "LADSPA plugins...")

for iPATH in Carla.LADSPA_PATH:
settings = QSettings()
LADSPA_PATH = toList(settings.value("Paths/LADSPA", Carla.DEFAULT_LADSPA_PATH))

for iPATH in LADSPA_PATH:
binaries = findBinaries(iPATH, OS)
for binary in binaries:
if binary not in ladspaBinaries:
@@ -682,7 +699,10 @@ class SearchPluginsThread(QThread):

self._pluginLook(self.fLastCheckValue, "DSSI plugins...")

for iPATH in Carla.DSSI_PATH:
settings = QSettings()
DSSI_PATH = toList(settings.value("Paths/DSSI", Carla.DEFAULT_DSSI_PATH))

for iPATH in DSSI_PATH:
binaries = findBinaries(iPATH, OS)
for binary in binaries:
if binary not in dssiBinaries:
@@ -712,7 +732,10 @@ class SearchPluginsThread(QThread):

self._pluginLook(self.fLastCheckValue, "LV2 bundles...")

for iPATH in Carla.LV2_PATH:
settings = QSettings()
LV2_PATH = toList(settings.value("Paths/LV2", Carla.DEFAULT_LV2_PATH))

for iPATH in LV2_PATH:
bundles = findLV2Bundles(iPATH)
for bundle in bundles:
if bundle not in lv2Bundles:
@@ -745,7 +768,10 @@ class SearchPluginsThread(QThread):
else:
self._pluginLook(self.fLastCheckValue, "VST plugins...")

for iPATH in Carla.VST_PATH:
settings = QSettings()
VST_PATH = toList(settings.value("Paths/VST", Carla.DEFAULT_VST_PATH))

for iPATH in VST_PATH:
if MACOS and not isWine:
binaries = findMacVSTBundles(iPATH)
else:
@@ -779,7 +805,10 @@ class SearchPluginsThread(QThread):
# FIXME - this probably uses bundles
self._pluginLook(self.fLastCheckValue, "AU plugins...")

for iPATH in Carla.AU_PATH:
settings = QSettings()
AU_PATH = toList(settings.value("Paths/AU", Carla.DEFAULT_AU_PATH))

for iPATH in AU_PATH:
binaries = findBinaries(iPATH, "MACOS")
for binary in binaries:
if binary not in auBinaries:
@@ -807,7 +836,10 @@ class SearchPluginsThread(QThread):
csoundFiles = []
self.fCsoundPlugins = []

for iPATH in Carla.CSOUND_PATH:
settings = QSettings()
CSOUND_PATH = toList(settings.value("Paths/CSOUND", Carla.DEFAULT_CSOUND_PATH))

for iPATH in CSOUND_PATH:
files = findFilenames(iPATH, "csd")
for file_ in files:
if file_ not in csoundFiles:
@@ -1270,7 +1302,8 @@ class PluginDatabaseW(QDialog):
mIns = plugin['midi.ins']
mOuts = plugin['midi.outs']
ptype = self.ui.tableWidget.item(i, 12).text()
isSynth = bool(plugin['hints'] & PLUGIN_IS_SYNTH)
#isSynth = bool(plugin['hints'] & PLUGIN_IS_SYNTH)
isSynth = bool(plugin['category'] == PLUGIN_CATEGORY_SYNTH)
isEffect = bool(aIns > 0 < aOuts and not isSynth)
isMidi = bool(aIns == 0 and aOuts == 0 and mIns > 0 < mOuts)
isKit = bool(ptype in ("GIG", "SF2", "SFZ"))
@@ -1332,6 +1365,9 @@ class PluginDatabaseW(QDialog):
self.ui.frame.setVisible(yesNo)

def _addPluginToTable(self, plugin, ptype):
if plugin['API'] != PLUGIN_QUERY_API_VERSION:
return

index = self.fLastTableIndex

if plugin['build'] == BINARY_NATIVE:
@@ -1370,7 +1406,7 @@ class PluginDatabaseW(QDialog):
self.ui.tableWidget.setItem(index, 7, QTableWidgetItem(str(plugin['parameters.outs'])))
self.ui.tableWidget.setItem(index, 8, QTableWidgetItem(str(plugin['programs.total'])))
self.ui.tableWidget.setItem(index, 9, QTableWidgetItem(self.tr("Yes") if (plugin['hints'] & PLUGIN_HAS_GUI) else self.tr("No")))
self.ui.tableWidget.setItem(index, 10, QTableWidgetItem(self.tr("Yes") if (plugin['hints'] & PLUGIN_IS_SYNTH) else self.tr("No")))
self.ui.tableWidget.setItem(index, 10, QTableWidgetItem(self.tr("Yes") if (plugin['category'] == PLUGIN_CATEGORY_SYNTH) else self.tr("No")))
self.ui.tableWidget.setItem(index, 11, QTableWidgetItem(bridgeText))
self.ui.tableWidget.setItem(index, 12, QTableWidgetItem(ptype))
self.ui.tableWidget.setItem(index, 13, QTableWidgetItem(str(plugin['binary'])))
@@ -1402,8 +1438,7 @@ class PluginDatabaseW(QDialog):
internalPlugins = toList(settingsDB.value("Plugins/Internal", []))

for plugins in internalPlugins:
for plugin in plugins:
internalCount += 1
internalCount += len(plugins)

if Carla.host is not None and internalCount != Carla.host.get_internal_plugin_count():
internalCount = Carla.host.get_internal_plugin_count()
@@ -1422,6 +1457,8 @@ class PluginDatabaseW(QDialog):
for plugin in plugins:
self._addPluginToTable(plugin, self.tr("Internal"))

del internalPlugins

# ---------------------------------------------------------------------------
# LADSPA

@@ -1437,6 +1474,8 @@ class PluginDatabaseW(QDialog):
self._addPluginToTable(plugin, "LADSPA")
ladspaCount += 1

del ladspaPlugins

# ---------------------------------------------------------------------------
# DSSI

@@ -1452,6 +1491,8 @@ class PluginDatabaseW(QDialog):
self._addPluginToTable(plugin, "DSSI")
dssiCount += 1

del dssiPlugins

# ---------------------------------------------------------------------------
# LV2

@@ -1467,6 +1508,8 @@ class PluginDatabaseW(QDialog):
self._addPluginToTable(plugin, "LV2")
lv2Count += 1

del lv2Plugins

# ---------------------------------------------------------------------------
# VST

@@ -1482,6 +1525,8 @@ class PluginDatabaseW(QDialog):
self._addPluginToTable(plugin, "VST")
vstCount += 1

del vstPlugins

# ---------------------------------------------------------------------------
# AU

@@ -1496,6 +1541,8 @@ class PluginDatabaseW(QDialog):
self._addPluginToTable(plugin, "AU")
auCount += 1

del auPlugins

# ---------------------------------------------------------------------------
# Csound

@@ -1506,28 +1553,42 @@ class PluginDatabaseW(QDialog):
self._addPluginToTable(csd_i, "CSOUND")
csoundCount += 1

del csds

# ---------------------------------------------------------------------------
# Kits

gigs = toList(settingsDB.value("Plugins/GIG", []))
sf2s = toList(settingsDB.value("Plugins/SF2", []))
sfzs = toList(settingsDB.value("Plugins/SFZ", []))

for gig in gigs:
for gig_i in gig:
self._addPluginToTable(gig_i, "GIG")
kitCount += 1

del gigs

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

sf2s = toList(settingsDB.value("Plugins/SF2", []))

for sf2 in sf2s:
for sf2_i in sf2:
self._addPluginToTable(sf2_i, "SF2")
kitCount += 1

del sf2s

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

sfzs = toList(settingsDB.value("Plugins/SFZ", []))

for sfz in sfzs:
for sfz_i in sfz:
self._addPluginToTable(sfz_i, "SFZ")
kitCount += 1

del sfzs

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

self.ui.tableWidget.setSortingEnabled(True)
@@ -1603,10 +1664,8 @@ class PluginDatabaseW(QDialog):
# ------------------------------------------------------------------------------------------------------------
# TESTING

#Carla.isControl = True

#from PyQt5.QtWidgets import QApplication
#app = QApplication(sys.argv)
#gui = PluginDatabaseW(None)
#gui.show()
#app.exec_()
from PyQt5.QtWidgets import QApplication
app = QApplication(sys.argv)
gui = PluginDatabaseW(None)
gui.show()
app.exec_()

+ 15
- 21
source/carla_settings.py View File

@@ -31,8 +31,10 @@ except:
# ------------------------------------------------------------------------------------------------------------
# Imports (Custom)

#import patchcanvas
import ui_carla_settings
import ui_carla_settings_driver

from carla_shared import *

# ------------------------------------------------------------------------------------------------------------
@@ -43,16 +45,15 @@ CARLA_DEFAULT_CANVAS_WIDTH = 3100
CARLA_DEFAULT_CANVAS_HEIGHT = 2400

# Engine settings
CARLA_DEFAULT_DISABLE_CHECKS = False
CARLA_DEFAULT_RUN_DISCOVERY_CHECKS = True
CARLA_DEFAULT_FORCE_STEREO = False
CARLA_DEFAULT_PREFER_PLUGIN_BRIDGES = False
CARLA_DEFAULT_PREFER_UI_BRIDGES = True
CARLA_DEFAULT_UIS_ALWAYS_ON_TOP = True
CARLA_DEFAULT_USE_DSSI_VST_CHUNKS = False
CARLA_DEFAULT_MAX_PARAMETERS = MAX_DEFAULT_PARAMETERS
CARLA_DEFAULT_UI_BRIDGES_TIMEOUT = 4000
CARLA_DEFAULT_AUDIO_NUM_PERIODS = 2
CARLA_DEFAULT_AUDIO_BUFFER_SIZE = 1024
CARLA_DEFAULT_AUDIO_BUFFER_SIZE = 512
CARLA_DEFAULT_AUDIO_SAMPLE_RATE = 44100

if WINDOWS:
@@ -132,7 +133,7 @@ class DriverSettingsW(QDialog):
else:
self.ui.cb_device.setCurrentIndex(-1)

if audioNumPeriods and 2 < audioNumPeriods < 3:
if 2 < audioNumPeriods < 3:
self.ui.sb_numperiods.setValue(audioNumPeriods)
else:
self.ui.sb_numperiods.setValue(CARLA_DEFAULT_AUDIO_NUM_PERIODS)
@@ -177,7 +178,7 @@ class CarlaSettingsW(QDialog):
PROCESS_MODE_NON_JACK_PADDING = 2

def __init__(self, parent):
QDialog.__init__(self, parent)
QDialog.__init__(self, parent, hasGL)
self.ui = ui_carla_settings.Ui_CarlaSettingsW()
self.ui.setupUi(self)

@@ -202,8 +203,6 @@ class CarlaSettingsW(QDialog):
if WINDOWS:
self.ui.group_theme.setEnabled(False)
self.ui.ch_theme_pro.setChecked(False)
self.ui.ch_engine_dssi_chunks.setChecked(False)
self.ui.ch_engine_dssi_chunks.setEnabled(False)

# -------------------------------------------------------------
# Set-up connections
@@ -227,6 +226,8 @@ class CarlaSettingsW(QDialog):
# -------------------------------------------------------------
# Post-connect setup

# TODO - add AU and csound, hide AU on non-mac

self.ui.lw_ladspa.setCurrentRow(0)
self.ui.lw_dssi.setCurrentRow(0)
self.ui.lw_lv2.setCurrentRow(0)
@@ -424,13 +425,13 @@ class CarlaSettingsW(QDialog):

@pyqtSlot()
def slot_resetSettings(self):
if self.ui.lw_page.currentRow() == TAB_INDEX_MAIN:
if self.ui.lw_page.currentRow() == self.TAB_INDEX_MAIN:
self.ui.le_main_def_folder.setText(HOME)
self.ui.ch_theme_pro.setChecked(True)
self.ui.cb_theme_color.setCurrentIndex(0)
self.ui.sb_gui_refresh.setValue(50)

elif self.ui.lw_page.currentRow() == TAB_INDEX_CANVAS:
elif self.ui.lw_page.currentRow() == self.TAB_INDEX_CANVAS:
self.ui.cb_canvas_theme.setCurrentIndex(0)
self.ui.cb_canvas_hide_groups.setChecked(False)
self.ui.cb_canvas_bezier_lines.setChecked(True)
@@ -439,14 +440,13 @@ class CarlaSettingsW(QDialog):
self.ui.cb_canvas_render_aa.setCheckState(Qt.PartiallyChecked)
self.ui.cb_canvas_render_hq_aa.setChecked(False)

elif self.ui.lw_page.currentRow() == TAB_INDEX_CARLA_ENGINE:
elif self.ui.lw_page.currentRow() == self.TAB_INDEX_CARLA_ENGINE:
self.ui.cb_engine_audio_driver.setCurrentIndex(0)
self.ui.sb_engine_max_params.setValue(CARLA_DEFAULT_MAX_PARAMETERS)
self.ui.ch_engine_uis_always_on_top.setChecked(CARLA_DEFAULT_UIS_ALWAYS_ON_TOP)
self.ui.ch_engine_prefer_ui_bridges.setChecked(CARLA_DEFAULT_PREFER_UI_BRIDGES)
#self.ui.sb_engine_oscgui_timeout.setValue(CARLA_DEFAULT_OSC_UI_TIMEOUT)
self.ui.ch_engine_disable_checks.setChecked(CARLA_DEFAULT_DISABLE_CHECKS)
self.ui.ch_engine_dssi_chunks.setChecked(CARLA_DEFAULT_USE_DSSI_VST_CHUNKS)
#self.ui.ch_engine_disable_checks.setChecked(CARLA_DEFAULT_DISABLE_CHECKS)
self.ui.ch_engine_prefer_plugin_bridges.setChecked(CARLA_DEFAULT_PREFER_PLUGIN_BRIDGES)
self.ui.ch_engine_force_stereo.setChecked(CARLA_DEFAULT_FORCE_STEREO)

@@ -454,10 +454,10 @@ class CarlaSettingsW(QDialog):
self.ui.cb_engine_process_mode_jack.setCurrentIndex(PROCESS_MODE_MULTIPLE_CLIENTS)
self.ui.sw_engine_process_mode.setCurrentIndex(0)
else:
self.ui.cb_engine_process_mode_other.setCurrentIndex(PROCESS_MODE_CONTINUOUS_RACK-PROCESS_MODE_NON_JACK_PADDING)
self.ui.cb_engine_process_mode_other.setCurrentIndex(PROCESS_MODE_CONTINUOUS_RACK-self.PROCESS_MODE_NON_JACK_PADDING)
self.ui.sw_engine_process_mode.setCurrentIndex(1)

elif self.ui.lw_page.currentRow() == TAB_INDEX_CARLA_PATHS:
elif self.ui.lw_page.currentRow() == self.TAB_INDEX_CARLA_PATHS:
if self.ui.tw_paths.currentIndex() == 0:
paths = DEFAULT_LADSPA_PATH.split(splitter)
paths.sort()
@@ -640,14 +640,8 @@ class CarlaSettingsW(QDialog):
# ------------------------------------------------------------------------------------------------------------
# TESTING

hasGL = True

from PyQt5.QtWidgets import QApplication
app = QApplication(sys.argv)
#gui = PluginParameter(None, pInfo, 0, 0)
#gui = PluginEdit(None, 0)
#gui = PluginWidget(None, 0)
#gui = DriverSettingsW(None, 1, "beh")
gui = CarlaSettingsW(None)
gui = CarlaSettingsW(None, True)
gui.show()
app.exec_()

+ 6
- 6
source/carla_shared.py View File

@@ -256,8 +256,8 @@ elif MACOS:
DEFAULT_VST_PATH = ":".join((os.path.join(HOME, "Library", "Audio", "Plug-Ins", "VST"),
os.path.join("/", "Library", "Audio", "Plug-Ins", "VST")))

DEFAULT_AU_PATH = ":".join((os.path.join(HOME, "Library", "Audio", "Plug-Ins", "AudioUnits"),
os.path.join("/", "Library", "Audio", "Plug-Ins", "AudioUnits")))
DEFAULT_AU_PATH = ":".join((os.path.join(HOME, "Library", "Audio", "Plug-Ins", "Components"),
os.path.join("/", "Library", "Audio", "Plug-Ins", "Components")))

# TODO
DEFAULT_CSOUND_PATH = ""
@@ -291,13 +291,13 @@ else:
# TODO
DEFAULT_CSOUND_PATH = ""

DEFAULT_GIG_PATH = ":".join((os.path.join(HOME, ".sounds"),
DEFAULT_GIG_PATH = ":".join((os.path.join(HOME, ".sounds", "gig"),
os.path.join("/", "usr", "share", "sounds", "gig")))

DEFAULT_SF2_PATH = ":".join((os.path.join(HOME, ".sounds"),
DEFAULT_SF2_PATH = ":".join((os.path.join(HOME, ".sounds", "sf2"),
os.path.join("/", "usr", "share", "sounds", "sf2")))

DEFAULT_SFZ_PATH = ":".join((os.path.join(HOME, ".sounds"),
DEFAULT_SFZ_PATH = ":".join((os.path.join(HOME, ".sounds", "sfz"),
os.path.join("/", "usr", "share", "sounds", "sfz")))

# ------------------------------------------------------------------------------------------------------------
@@ -538,7 +538,7 @@ def setUpSignals():
signal(SIGINT, signalHandler)
signal(SIGTERM, signalHandler)

if haveSIGUSR1:
if not haveSIGUSR1:
return

signal(SIGUSR1, signalHandler)


+ 1
- 0
source/carla_widgets.py View File

@@ -35,6 +35,7 @@ import ui_carla_about
import ui_carla_edit
import ui_carla_parameter
import ui_carla_plugin

from carla_shared import *

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


+ 2
- 0
source/discovery/Makefile View File

@@ -39,6 +39,8 @@ POSIX_LINK_FLAGS = $(LINK_FLAGS) $(EXTRA_LIBS) -ldl -lpthread

ifeq ($(MACOS),true)
POSIX_LINK_FLAGS += -framework Cocoa -framework IOKit
else
POSIX_LINK_FLAGS += -lrt
endif

WIN_BUILD_FLAGS = $(BUILD_CXX_FLAGS)


+ 0
- 1
source/modules/carla_native/CarlaNative.pro View File

@@ -22,7 +22,6 @@ DEFINES += WANT_DSSI
DEFINES += WANT_LV2
DEFINES += WANT_VST
DEFINES += WANT_PLUGIN
DEFINES += WANT_RTAUDIO
DEFINES += WANT_FLUIDSYNTH
DEFINES += WANT_LINUXSAMPLER
DEFINES += WANT_OPENGL


+ 2
- 2
source/modules/carla_native/distrho/DistrhoPluginCarla.cpp View File

@@ -65,9 +65,9 @@ public:
CarlaString filename;
filename += fHost->resourceDir;
#ifdef CARLA_OS_WIN
filename += "\\resources\\";
filename += "\\";
#else
filename += "/resources/";
filename += "/";
#endif
filename += fUi.getExternalFilename();



+ 1
- 1
source/modules/carla_native/nekofilter/ui.c View File

@@ -23,7 +23,7 @@
*
*****************************************************************************/

#define UI_EXECUTABLE "/resources/nekofilter-ui"
#define UI_EXECUTABLE "/nekofilter-ui"

#define WAIT_START_TIMEOUT 3000 /* ms */
#define WAIT_ZOMBIE_TIMEOUT 3000 /* ms */


+ 0
- 1
source/modules/juce_audio_basics/juce_audio_basics.cpp View File

@@ -65,7 +65,6 @@ namespace juce
#include "buffers/juce_AudioSampleBuffer.cpp"
#include "buffers/juce_FloatVectorOperations.cpp"
#include "effects/juce_IIRFilter.cpp"
#include "effects/juce_IIRFilterOld.cpp"
#include "effects/juce_LagrangeInterpolator.cpp"
#include "midi/juce_MidiBuffer.cpp"
#include "midi/juce_MidiFile.cpp"


+ 0
- 1
source/modules/juce_audio_basics/juce_audio_basics.h View File

@@ -36,7 +36,6 @@ namespace juce
#include "buffers/juce_FloatVectorOperations.h"
#include "effects/juce_Decibels.h"
#include "effects/juce_IIRFilter.h"
#include "effects/juce_IIRFilterOld.h"
#include "effects/juce_LagrangeInterpolator.h"
#include "effects/juce_Reverb.h"
#include "midi/juce_MidiMessage.h"


+ 8
- 16
source/utils/CarlaLogThread.hpp View File

@@ -21,20 +21,21 @@
#include "CarlaBackend.hpp"
#include "CarlaString.hpp"

#include "juce_core.h"

#include <fcntl.h>
#include <QtCore/QThread>

using CarlaBackend::CallbackFunc;
using juce::Thread;

// -----------------------------------------------------------------------
// Log thread

class CarlaLogThread : public QThread
class CarlaLogThread : public Thread
{
public:
CarlaLogThread()
: QThread(nullptr),
fStop(false),
: Thread("CarlaLogThread"),
fCallback(nullptr),
fCallbackPtr(nullptr)
{
@@ -50,7 +51,7 @@ public:

fcntl(fPipe[0], F_SETFL, O_NONBLOCK);

QThread::start(LowPriority);
startThread(2);
}

~CarlaLogThread()
@@ -58,7 +59,7 @@ public:
fCallback = nullptr;
fCallbackPtr = nullptr;

stop();
stopThread(5000);

fflush(stdout);
fflush(stderr);
@@ -75,18 +76,10 @@ public:
fCallbackPtr = callbackPtr;
}

void stop()
{
fStop = true;

if (isRunning())
wait();
}

protected:
void run()
{
while (! fStop)
while (! threadShouldExit())
{
size_t r, lastRead;
ssize_t r2; // to avoid sign/unsign conversions
@@ -145,7 +138,6 @@ protected:

private:
int fPipe[2];
bool fStop;

CallbackFunc fCallback;
void* fCallbackPtr;


Loading…
Cancel
Save