| @@ -7,7 +7,7 @@ | |||||
| # -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
| # Modify to enable/disable specific features | # 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 | CARLA_PLUGIN_SUPPORT = true | ||||
| # Support for csound files (version 6) | # 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) | # Support for GIG, SF2 and SFZ sample banks (through fluidsynth and linuxsampler) | ||||
| CARLA_SAMPLERS_SUPPORT = true | 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 | # Use the free vestige header instead of the official VST SDK | ||||
| CARLA_VESTIGE_HEADER = true | 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_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_OPENGL = $(shell pkg-config --exists gl && echo true) | ||||
| HAVE_GTK2 = $(shell pkg-config --exists gtk+-2.0 && 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_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_QT4 = $(shell pkg-config --exists QtCore && echo true) | ||||
| HAVE_QT5 = $(shell pkg-config --exists Qt5Core && 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) | HAVE_LINUXSAMPLER = $(shell pkg-config --exists linuxsampler && echo true) | ||||
| endif | 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 | # TODO - move this to theme | ||||
| @@ -242,10 +242,9 @@ SEARCH_INCLUDES = YES | |||||
| INCLUDE_PATH = | INCLUDE_PATH = | ||||
| INCLUDE_FILE_PATTERNS = | INCLUDE_FILE_PATTERNS = | ||||
| PREDEFINED = DOXYGEN \ | 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 \ | WANT_OPENGL WANT_AUDIOFILE WANT_MIDIFILE WANT_ZYNADDSUBFX WANT_ZYNADDSUBFX_UI \ | ||||
| CARLA_EXPORT= | |||||
| CARLA_EXPORT | |||||
| EXPAND_AS_DEFINED = | EXPAND_AS_DEFINED = | ||||
| SKIP_FUNCTION_MACROS = YES | SKIP_FUNCTION_MACROS = YES | ||||
| #--------------------------------------------------------------------------- | #--------------------------------------------------------------------------- | ||||
| @@ -106,7 +106,7 @@ enum EnginePortType { | |||||
| * OSC port type. | * OSC port type. | ||||
| ** \see CarlaEngineOscPort | ** \see CarlaEngineOscPort | ||||
| */ | */ | ||||
| kEnginePortTypeOSC = 3 | |||||
| kEnginePortTypeOSC = 4 | |||||
| }; | }; | ||||
| /*! | /*! | ||||
| @@ -1163,12 +1163,12 @@ public: | |||||
| private: | private: | ||||
| static CarlaEngine* newJack(); | static CarlaEngine* newJack(); | ||||
| #ifndef BUILD_BRIDGE | |||||
| static CarlaEngine* newJuce(); | static CarlaEngine* newJuce(); | ||||
| static size_t getJuceApiCount(); | static size_t getJuceApiCount(); | ||||
| static const char* getJuceApiName(const unsigned int index); | static const char* getJuceApiName(const unsigned int index); | ||||
| static const char** getJuceApiDeviceNames(const unsigned int index); | static const char** getJuceApiDeviceNames(const unsigned int index); | ||||
| #ifdef WANT_RTAUDIO | |||||
| enum RtAudioApi { | enum RtAudioApi { | ||||
| RTAUDIO_DUMMY = 0, | RTAUDIO_DUMMY = 0, | ||||
| RTAUDIO_LINUX_ALSA = 1, | RTAUDIO_LINUX_ALSA = 1, | ||||
| @@ -9,7 +9,7 @@ include ../Makefile.mk | |||||
| # -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
| all: | all: | ||||
| $(MAKE) -C control | |||||
| # $(MAKE) -C control | |||||
| $(MAKE) -C engine | $(MAKE) -C engine | ||||
| $(MAKE) -C plugin | $(MAKE) -C plugin | ||||
| $(MAKE) -C standalone | $(MAKE) -C standalone | ||||
| @@ -17,7 +17,7 @@ all: | |||||
| # -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
| clean: | clean: | ||||
| $(MAKE) clean -C control | |||||
| # $(MAKE) clean -C control | |||||
| $(MAKE) clean -C engine | $(MAKE) clean -C engine | ||||
| $(MAKE) clean -C plugin | $(MAKE) clean -C plugin | ||||
| $(MAKE) clean -C standalone | $(MAKE) clean -C standalone | ||||
| @@ -22,10 +22,6 @@ ifeq ($(CARLA_CSOUND_SUPPORT),true) | |||||
| BUILD_CXX_FLAGS += -DWANT_CSOUND | BUILD_CXX_FLAGS += -DWANT_CSOUND | ||||
| endif | endif | ||||
| ifeq ($(CARLA_RTAUDIO_SUPPORT),true) | |||||
| BUILD_CXX_FLAGS += -DWANT_RTAUDIO | |||||
| endif | |||||
| # -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
| ifeq ($(HAVE_FLUIDSYNTH),true) | ifeq ($(HAVE_FLUIDSYNTH),true) | ||||
| @@ -340,8 +340,9 @@ unsigned int CarlaEngine::getDriverCount() | |||||
| unsigned int count = 1; // JACK | unsigned int count = 1; // JACK | ||||
| #ifdef WANT_RTAUDIO | |||||
| #ifndef BUILD_BRIDGE | |||||
| count += getRtAudioApiCount(); | count += getRtAudioApiCount(); | ||||
| count += getJuceApiCount(); | |||||
| #endif | #endif | ||||
| return count; | return count; | ||||
| @@ -354,11 +355,16 @@ const char* CarlaEngine::getDriverName(const unsigned int index) | |||||
| if (index == 0) | if (index == 0) | ||||
| return "JACK"; | 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 | #endif | ||||
| carla_stderr("CarlaEngine::getDriverName(%i) - invalid index", index); | carla_stderr("CarlaEngine::getDriverName(%i) - invalid index", index); | ||||
| @@ -372,11 +378,16 @@ const char** CarlaEngine::getDriverDeviceNames(const unsigned int index) | |||||
| if (index == 0) | if (index == 0) | ||||
| return nullptr; | 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 | #endif | ||||
| carla_stderr("CarlaEngine::getDriverDeviceNames(%i) - invalid index", index); | 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) | if (std::strcmp(driverName, "JACK") == 0) | ||||
| return newJack(); | return newJack(); | ||||
| #ifdef WANT_RTAUDIO | |||||
| # ifdef __LINUX_ALSA__ | |||||
| #ifdef __LINUX_ALSA__ | |||||
| if (std::strcmp(driverName, "ALSA") == 0) | if (std::strcmp(driverName, "ALSA") == 0) | ||||
| return newRtAudio(RTAUDIO_LINUX_ALSA); | return newRtAudio(RTAUDIO_LINUX_ALSA); | ||||
| # endif | |||||
| # ifdef __LINUX_PULSE__ | |||||
| #endif | |||||
| #ifdef __LINUX_PULSE__ | |||||
| if (std::strcmp(driverName, "PulseAudio") == 0) | if (std::strcmp(driverName, "PulseAudio") == 0) | ||||
| return newRtAudio(RTAUDIO_LINUX_PULSE); | return newRtAudio(RTAUDIO_LINUX_PULSE); | ||||
| # endif | |||||
| # ifdef __LINUX_OSS__ | |||||
| #endif | |||||
| #ifdef __LINUX_OSS__ | |||||
| if (std::strcmp(driverName, "OSS") == 0) | if (std::strcmp(driverName, "OSS") == 0) | ||||
| return newRtAudio(RTAUDIO_LINUX_OSS); | return newRtAudio(RTAUDIO_LINUX_OSS); | ||||
| # endif | |||||
| # ifdef __UNIX_JACK__ | |||||
| #endif | |||||
| #ifdef __UNIX_JACK__ | |||||
| if (std::strncmp(driverName, "JACK ", 5) == 0) | if (std::strncmp(driverName, "JACK ", 5) == 0) | ||||
| return newRtAudio(RTAUDIO_UNIX_JACK); | return newRtAudio(RTAUDIO_UNIX_JACK); | ||||
| # endif | |||||
| # ifdef __MACOSX_CORE__ | |||||
| #endif | |||||
| #ifdef __MACOSX_CORE__ | |||||
| if (std::strcmp(driverName, "CoreAudio") == 0) | if (std::strcmp(driverName, "CoreAudio") == 0) | ||||
| return newRtAudio(RTAUDIO_MACOSX_CORE); | return newRtAudio(RTAUDIO_MACOSX_CORE); | ||||
| # endif | |||||
| # ifdef __WINDOWS_ASIO__ | |||||
| #endif | |||||
| #ifdef __WINDOWS_ASIO__ | |||||
| if (std::strcmp(driverName, "ASIO") == 0) | if (std::strcmp(driverName, "ASIO") == 0) | ||||
| return newRtAudio(RTAUDIO_WINDOWS_ASIO); | return newRtAudio(RTAUDIO_WINDOWS_ASIO); | ||||
| # endif | |||||
| # ifdef __WINDOWS_DS__ | |||||
| #endif | |||||
| #ifdef __WINDOWS_DS__ | |||||
| if (std::strcmp(driverName, "DirectSound") == 0) | if (std::strcmp(driverName, "DirectSound") == 0) | ||||
| return newRtAudio(RTAUDIO_WINDOWS_DS); | return newRtAudio(RTAUDIO_WINDOWS_DS); | ||||
| # endif | |||||
| #endif | #endif | ||||
| carla_stderr("CarlaEngine::newDriverByName(\"%s\") - invalid driver name", driverName); | 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); | fOptions.uisAlwaysOnTop = (value != 0); | ||||
| break; | break; | ||||
| #ifdef WANT_DSSI | |||||
| case OPTION_USE_DSSI_VST_CHUNKS: | |||||
| fOptions.useDssiVstChunks = (value != 0); | |||||
| break; | |||||
| #endif | |||||
| case OPTION_MAX_PARAMETERS: | case OPTION_MAX_PARAMETERS: | ||||
| if (value < 1) | if (value < 1) | ||||
| return carla_stderr2("carla_set_engine_option(OPTION_MAX_PARAMETERS, %i, \"%s\") - invalid value", value, valueStr); | 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); | fOptions.uiBridgesTimeout = static_cast<uint>(value); | ||||
| break; | break; | ||||
| #ifdef WANT_RTAUDIO | |||||
| case OPTION_RTAUDIO_NUMBER_PERIODS: | |||||
| case OPTION_AUDIO_NUM_PERIODS: | |||||
| if (value < 2 || value > 3) | 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; | break; | ||||
| case OPTION_RTAUDIO_BUFFER_SIZE: | |||||
| case OPTION_AUDIO_BUFFER_SIZE: | |||||
| if (value < 8) | 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; | break; | ||||
| case OPTION_RTAUDIO_SAMPLE_RATE: | |||||
| case OPTION_AUDIO_SAMPLE_RATE: | |||||
| if (value < 22050) | 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; | break; | ||||
| case OPTION_RTAUDIO_DEVICE: | |||||
| fOptions.rtaudioDevice = valueStr; | |||||
| case OPTION_AUDIO_DEVICE: | |||||
| fOptions.audioDevice = valueStr; | |||||
| break; | break; | ||||
| #endif | |||||
| case OPTION_PATH_RESOURCES: | case OPTION_PATH_RESOURCES: | ||||
| fOptions.resourceDir = valueStr; | fOptions.resourceDir = valueStr; | ||||
| @@ -22,7 +22,6 @@ DEFINES += WANT_DSSI | |||||
| DEFINES += WANT_LV2 | DEFINES += WANT_LV2 | ||||
| DEFINES += WANT_VST | DEFINES += WANT_VST | ||||
| DEFINES += WANT_PLUGIN | DEFINES += WANT_PLUGIN | ||||
| DEFINES += WANT_RTAUDIO | |||||
| DEFINES += WANT_FLUIDSYNTH | DEFINES += WANT_FLUIDSYNTH | ||||
| DEFINES += WANT_LINUXSAMPLER | DEFINES += WANT_LINUXSAMPLER | ||||
| DEFINES += WANT_OPENGL | DEFINES += WANT_OPENGL | ||||
| @@ -137,8 +137,8 @@ struct EnginePluginData { | |||||
| EnginePluginData() | EnginePluginData() | ||||
| : plugin(nullptr) | : plugin(nullptr) | ||||
| { | { | ||||
| insPeak[0] = insPeak[1] = nullptr; | |||||
| outsPeak[0] = outsPeak[1] = nullptr; | |||||
| insPeak[0] = insPeak[1] = 0.0f; | |||||
| outsPeak[0] = outsPeak[1] = 0.0f; | |||||
| } | } | ||||
| }; | }; | ||||
| @@ -505,6 +505,8 @@ public: | |||||
| case kEnginePortTypeEvent: | case kEnginePortTypeEvent: | ||||
| port = jackbridge_port_register(fClient, name, JACK_DEFAULT_MIDI_TYPE, isInput ? JackPortIsInput : JackPortIsOutput, 0); | port = jackbridge_port_register(fClient, name, JACK_DEFAULT_MIDI_TYPE, isInput ? JackPortIsInput : JackPortIsOutput, 0); | ||||
| break; | break; | ||||
| case kEnginePortTypeOSC: | |||||
| break; | |||||
| } | } | ||||
| } | } | ||||
| @@ -519,6 +521,8 @@ public: | |||||
| return new CarlaEngineJackCVPort(fEngine, isInput, fClient, port); | return new CarlaEngineJackCVPort(fEngine, isInput, fClient, port); | ||||
| case kEnginePortTypeEvent: | case kEnginePortTypeEvent: | ||||
| return new CarlaEngineJackEventPort(fEngine, isInput, fClient, port); | return new CarlaEngineJackEventPort(fEngine, isInput, fClient, port); | ||||
| case kEnginePortTypeOSC: | |||||
| break; | |||||
| } | } | ||||
| carla_stderr("CarlaEngineJackClient::addPort(%s, \"%s\", %s) - invalid type", EnginePortType2Str(portType), name, bool2str(isInput)); | carla_stderr("CarlaEngineJackClient::addPort(%s, \"%s\", %s) - invalid type", EnginePortType2Str(portType), name, bool2str(isInput)); | ||||
| @@ -1212,7 +1216,7 @@ protected: | |||||
| float* outBuf[2] = { audioOut1, audioOut2 }; | float* outBuf[2] = { audioOut1, audioOut2 }; | ||||
| // initialize input events | // initialize input events | ||||
| carla_zeroStruct<EngineEvent>(pData->bufEvents.in, INTERNAL_EVENT_COUNT); | |||||
| carla_zeroStruct<EngineEvent>(pData->bufEvents.in, kEngineMaxInternalEventCount); | |||||
| { | { | ||||
| uint32_t engineEventIndex = 0; | uint32_t engineEventIndex = 0; | ||||
| @@ -1293,7 +1297,7 @@ protected: | |||||
| carla_copy<uint8_t>(engineEvent->midi.data+1, jackEvent.buffer+1, jackEvent.size-1); | carla_copy<uint8_t>(engineEvent->midi.data+1, jackEvent.buffer+1, jackEvent.size-1); | ||||
| } | } | ||||
| if (engineEventIndex >= INTERNAL_EVENT_COUNT) | |||||
| if (engineEventIndex >= kEngineMaxInternalEventCount) | |||||
| break; | break; | ||||
| } | } | ||||
| } | } | ||||
| @@ -1305,7 +1309,7 @@ protected: | |||||
| { | { | ||||
| jackbridge_midi_clear_buffer(eventOut); | 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]; | EngineEvent* const engineEvent = &pData->bufEvents.out[i]; | ||||
| @@ -33,8 +33,8 @@ CARLA_BACKEND_START_NAMESPACE | |||||
| static const char** gRetNames = nullptr; | static const char** gRetNames = nullptr; | ||||
| class CarlaEngineJuce : public CarlaEngine, | |||||
| public juce::AudioIODeviceCallback | |||||
| class CarlaEngineJuce : public CarlaEngine/*, | |||||
| public juce::AudioIODeviceCallback*/ | |||||
| { | { | ||||
| public: | public: | ||||
| CarlaEngineJuce() | CarlaEngineJuce() | ||||
| @@ -87,30 +87,30 @@ public: | |||||
| // ------------------------------------------------------------------- | // ------------------------------------------------------------------- | ||||
| protected: | 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: | private: | ||||
| juce::AudioIODeviceType* fDeviceType; | |||||
| //juce::AudioIODeviceType* fDeviceType; | |||||
| JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(CarlaEngineJuce) | 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) | const char** CarlaEngine::getJuceApiDeviceNames(const unsigned int index) | ||||
| { | { | ||||
| #if 0 | |||||
| juce::ScopedPointer<juce::AudioIODeviceType> deviceType; | juce::ScopedPointer<juce::AudioIODeviceType> deviceType; | ||||
| switch(index) | switch(index) | ||||
| @@ -166,6 +167,7 @@ const char** CarlaEngine::getJuceApiDeviceNames(const unsigned int index) | |||||
| gRetNames[i] = carla_strdup(devNames[i].toRawUTF8()); | gRetNames[i] = carla_strdup(devNames[i].toRawUTF8()); | ||||
| gRetNames[devNameCount] = nullptr; | gRetNames[devNameCount] = nullptr; | ||||
| #endif | |||||
| return gRetNames; | return gRetNames; | ||||
| } | } | ||||
| @@ -15,8 +15,6 @@ | |||||
| * 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 WANT_RTAUDIO | |||||
| #include "CarlaEngineInternal.hpp" | #include "CarlaEngineInternal.hpp" | ||||
| #include "CarlaBackendUtils.hpp" | #include "CarlaBackendUtils.hpp" | ||||
| #include "CarlaMIDI.h" | #include "CarlaMIDI.h" | ||||
| @@ -158,13 +156,13 @@ public: | |||||
| return false; | return false; | ||||
| } | } | ||||
| if (fOptions.rtaudioDevice.isNotEmpty()) | |||||
| if (fOptions.audioDevice.isNotEmpty()) | |||||
| { | { | ||||
| for (unsigned int i=0; i < devCount; ++i) | for (unsigned int i=0; i < devCount; ++i) | ||||
| { | { | ||||
| RtAudio::DeviceInfo devInfo(fAudio.getDeviceInfo(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; | deviceSet = true; | ||||
| fConnectName = devInfo.name.c_str(); | fConnectName = devInfo.name.c_str(); | ||||
| @@ -201,10 +199,10 @@ public: | |||||
| else | else | ||||
| fAudioIsInterleaved = true; | fAudioIsInterleaved = true; | ||||
| fBufferSize = fOptions.rtaudioBufferSize; | |||||
| fBufferSize = fOptions.audioBufferSize; | |||||
| try { | 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) | catch (RtError& e) | ||||
| { | { | ||||
| @@ -835,7 +833,7 @@ protected: | |||||
| carla_zeroFloat(fAudioBufRackOut[1], nframes); | carla_zeroFloat(fAudioBufRackOut[1], nframes); | ||||
| // initialize input events | // 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()) | if (fMidiInEvents.mutex.tryLock()) | ||||
| { | { | ||||
| @@ -920,7 +918,7 @@ protected: | |||||
| engineEvent.midi.size = midiEvent.size; | engineEvent.midi.size = midiEvent.size; | ||||
| } | } | ||||
| if (engineEventIndex >= INTERNAL_EVENT_COUNT) | |||||
| if (engineEventIndex >= kEngineMaxInternalEventCount) | |||||
| break; | break; | ||||
| } | } | ||||
| @@ -1463,5 +1461,3 @@ const char** CarlaEngine::getRtAudioApiDeviceNames(const unsigned int index) | |||||
| // ----------------------------------------- | // ----------------------------------------- | ||||
| CARLA_BACKEND_END_NAMESPACE | CARLA_BACKEND_END_NAMESPACE | ||||
| #endif // CARLA_ENGINE_RTAUDIO | |||||
| @@ -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) | 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) | ifeq ($(DEBUG),true) | ||||
| BUILD_CXX_FLAGS += -D__RTAUDIO_DEBUG__ -D__RTMIDI_DEBUG__ | BUILD_CXX_FLAGS += -D__RTAUDIO_DEBUG__ -D__RTMIDI_DEBUG__ | ||||
| endif | endif | ||||
| endif | |||||
| # -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
| @@ -56,9 +45,9 @@ OBJSp = \ | |||||
| OBJS = $(OBJSp) \ | OBJS = $(OBJSp) \ | ||||
| CarlaEngineBridge.cpp.o \ | CarlaEngineBridge.cpp.o \ | ||||
| CarlaEngineJack.cpp.o \ | CarlaEngineJack.cpp.o \ | ||||
| CarlaEngineJuce.cpp.o \ | |||||
| CarlaEngineRtAudio.cpp.o | CarlaEngineRtAudio.cpp.o | ||||
| ifeq ($(CARLA_RTAUDIO_SUPPORT),true) | |||||
| OBJS += \ | OBJS += \ | ||||
| rtaudio-4.0.12/RtAudio.cpp.o \ | rtaudio-4.0.12/RtAudio.cpp.o \ | ||||
| rtmidi-2.0.1/RtMidi.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/asiolist.cpp.o \ | ||||
| rtaudio-4.0.12/include/iasiothiscallresolver.cpp.o | rtaudio-4.0.12/include/iasiothiscallresolver.cpp.o | ||||
| endif | endif | ||||
| endif | |||||
| TARGET = ../libcarla_engine.a | TARGET = ../libcarla_engine.a | ||||
| TARGETp = ../libcarla_engine_plugin.a | TARGETp = ../libcarla_engine_plugin.a | ||||
| @@ -22,7 +22,6 @@ DEFINES += WANT_DSSI | |||||
| DEFINES += WANT_LV2 | DEFINES += WANT_LV2 | ||||
| DEFINES += WANT_VST | DEFINES += WANT_VST | ||||
| DEFINES += WANT_PLUGIN | DEFINES += WANT_PLUGIN | ||||
| DEFINES += WANT_RTAUDIO | |||||
| DEFINES += WANT_FLUIDSYNTH | DEFINES += WANT_FLUIDSYNTH | ||||
| #DEFINES += WANT_LINUXSAMPLER | #DEFINES += WANT_LINUXSAMPLER | ||||
| DEFINES += WANT_OPENGL | DEFINES += WANT_OPENGL | ||||
| @@ -167,8 +167,8 @@ public: | |||||
| if (isDssiVst) | 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 | else | ||||
| { | { | ||||
| @@ -1935,8 +1935,8 @@ public: | |||||
| { | { | ||||
| fOptions |= PLUGIN_OPTION_FIXED_BUFFERS; | 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) | if (fDssiDescriptor->run_synth != nullptr || fDssiDescriptor->run_multiple_synths != nullptr) | ||||
| @@ -142,9 +142,9 @@ const char* carla_get_extended_license_text() | |||||
| #ifdef WANT_LV2 | #ifdef WANT_LV2 | ||||
| text4 += "<li>serd, sord, sratom and lilv libraries for LV2 discovery, http://drobilla.net/software/lilv/</li>"; | text4 += "<li>serd, sord, sratom and lilv libraries for LV2 discovery, http://drobilla.net/software/lilv/</li>"; | ||||
| #endif | #endif | ||||
| #ifdef WANT_RTAUDIO | |||||
| text4 += "<li>RtAudio+RtMidi libraries for extra Audio and MIDI support, http://www.music.mcgill.ca/~gary/rtaudio/</li>"; | text4 += "<li>RtAudio+RtMidi libraries for extra Audio and MIDI support, http://www.music.mcgill.ca/~gary/rtaudio/</li>"; | ||||
| #endif | |||||
| // end | |||||
| text4 += "</ul>"; | text4 += "</ul>"; | ||||
| // code snippets | // code snippets | ||||
| @@ -337,24 +337,18 @@ bool carla_engine_init(const char* driverName, const char* clientName) | |||||
| gStandalone.engine->setCallback(gStandalone.callback, nullptr); | gStandalone.engine->setCallback(gStandalone.callback, nullptr); | ||||
| #ifndef BUILD_BRIDGE | #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 | #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); | gStandalone.engine->setOption(CB::OPTION_PATH_RESOURCES, 0, (const char*)gStandalone.options.resourceDir); | ||||
| #ifndef BUILD_BRIDGE | #ifndef BUILD_BRIDGE | ||||
| gStandalone.engine->setOption(CB::OPTION_PATH_BRIDGE_NATIVE, 0, (const char*)gStandalone.options.bridge_native); | 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); | gStandalone.options.uisAlwaysOnTop = (value != 0); | ||||
| break; | break; | ||||
| #ifdef WANT_DSSI | |||||
| case CB::OPTION_USE_DSSI_VST_CHUNKS: | |||||
| gStandalone.options.useDssiVstChunks = (value != 0); | |||||
| break; | |||||
| #endif | |||||
| case CB::OPTION_MAX_PARAMETERS: | case CB::OPTION_MAX_PARAMETERS: | ||||
| if (value < 1) | if (value < 1) | ||||
| return carla_stderr2("carla_set_engine_option(OPTION_MAX_PARAMETERS, %i, \"%s\") - invalid value", value, valueStr); | 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); | gStandalone.options.uiBridgesTimeout = static_cast<unsigned int>(value); | ||||
| break; | break; | ||||
| #ifdef WANT_RTAUDIO | |||||
| case CB::OPTION_RTAUDIO_NUMBER_PERIODS: | |||||
| case CB::OPTION_AUDIO_NUM_PERIODS: | |||||
| if (value < 2 || value > 3) | 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; | break; | ||||
| case CB::OPTION_RTAUDIO_BUFFER_SIZE: | |||||
| case CB::OPTION_AUDIO_BUFFER_SIZE: | |||||
| if (value < 8) | 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; | break; | ||||
| case CB::OPTION_RTAUDIO_SAMPLE_RATE: | |||||
| case CB::OPTION_AUDIO_SAMPLE_RATE: | |||||
| if (value < 22050) | 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; | break; | ||||
| case CB::OPTION_RTAUDIO_DEVICE: | |||||
| gStandalone.options.rtaudioDevice = valueStr; | |||||
| case CB::OPTION_AUDIO_DEVICE: | |||||
| gStandalone.options.audioDevice = valueStr; | |||||
| break; | break; | ||||
| #endif | |||||
| case CB::OPTION_PATH_RESOURCES: | case CB::OPTION_PATH_RESOURCES: | ||||
| gStandalone.options.resourceDir = valueStr; | gStandalone.options.resourceDir = valueStr; | ||||
| @@ -1277,6 +1263,8 @@ const char* carla_get_chunk_data(unsigned int pluginId) | |||||
| void* data = nullptr; | void* data = nullptr; | ||||
| const int32_t dataSize = plugin->getChunkData(&data); | const int32_t dataSize = plugin->getChunkData(&data); | ||||
| // TODO | |||||
| #if 0 | |||||
| if (data != nullptr && dataSize > 0) | if (data != nullptr && dataSize > 0) | ||||
| { | { | ||||
| QByteArray chunk(QByteArray((char*)data, dataSize).toBase64()); | QByteArray chunk(QByteArray((char*)data, dataSize).toBase64()); | ||||
| @@ -1284,6 +1272,7 @@ const char* carla_get_chunk_data(unsigned int pluginId) | |||||
| return (const char*)chunkData; | return (const char*)chunkData; | ||||
| } | } | ||||
| else | else | ||||
| #endif | |||||
| carla_stderr2("carla_get_chunk_data(%i) - got invalid chunk data", pluginId); | carla_stderr2("carla_get_chunk_data(%i) - got invalid chunk data", pluginId); | ||||
| } | } | ||||
| else | else | ||||
| @@ -136,7 +136,7 @@ debug: | |||||
| $(CXX) $^ -dynamiclib $(LINK_FLAGS) -framework CoreAudio -framework CoreMIDI -framework CoreFoundation -o $@ | $(CXX) $^ -dynamiclib $(LINK_FLAGS) -framework CoreAudio -framework CoreMIDI -framework CoreFoundation -o $@ | ||||
| ../libcarla_standalone.so: $(OBJS) $(LIBS) | ../libcarla_standalone.so: $(OBJS) $(LIBS) | ||||
| $(CXX) $^ $(LINK_FLAGS) -o $@ # -shared | |||||
| $(CXX) $^ $(LINK_FLAGS) -shared -o $@ | |||||
| # -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
| @@ -33,7 +33,7 @@ CarlaBridgeClient::CarlaBridgeClient(const char* const uiTitle) | |||||
| : fOsc(this), | : fOsc(this), | ||||
| fOscData(fOsc.getControlData()) | fOscData(fOsc.getControlData()) | ||||
| #ifdef BUILD_BRIDGE_UI | #ifdef BUILD_BRIDGE_UI | ||||
| , fUI(CarlaBridgeToolkit::createNew(this, uiTitle)), | |||||
| , fUI(CarlaBridgeToolkit::createNew(this, uiTitle)) | |||||
| #endif | #endif | ||||
| { | { | ||||
| #ifdef BUILD_BRIDGE_UI | #ifdef BUILD_BRIDGE_UI | ||||
| @@ -20,7 +20,7 @@ | |||||
| #include "CarlaBackendUtils.hpp" | #include "CarlaBackendUtils.hpp" | ||||
| #include "CarlaBridgeUtils.hpp" | #include "CarlaBridgeUtils.hpp" | ||||
| #include "CarlaStandalone.hpp" | |||||
| #include "CarlaHost.hpp" | |||||
| #include "CarlaEngine.hpp" | #include "CarlaEngine.hpp" | ||||
| #include "CarlaPlugin.hpp" | #include "CarlaPlugin.hpp" | ||||
| @@ -38,6 +38,10 @@ | |||||
| # include <signal.h> | # include <signal.h> | ||||
| #endif | #endif | ||||
| #include "juce_core.h" | |||||
| using juce::File; | |||||
| // ------------------------------------------------------------------------- | // ------------------------------------------------------------------------- | ||||
| static bool gCloseNow = false; | static bool gCloseNow = false; | ||||
| @@ -99,10 +103,6 @@ void initSignalHandler() | |||||
| extern CarlaBackend::CarlaEngine* carla_get_standalone_engine(); | 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 | CARLA_BRIDGE_START_NAMESPACE | ||||
| #if 0 | #if 0 | ||||
| @@ -131,6 +131,13 @@ public: | |||||
| carla_engine_init("JACK", driverName); | carla_engine_init("JACK", driverName); | ||||
| carla_set_engine_callback(callback, this); | 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() | ~CarlaPluginClient() | ||||
| @@ -536,15 +543,10 @@ int main(int argc, char* argv[]) | |||||
| // Listen for ctrl+c or sigint/sigterm events | // Listen for ctrl+c or sigint/sigterm events | ||||
| initSignalHandler(); | initSignalHandler(); | ||||
| const void* extraStuff = nullptr; | |||||
| if (itype == CarlaBackend::PLUGIN_DSSI) | |||||
| extraStuff = CarlaBackend::findDSSIGUI(filename, label); | |||||
| // Init plugin | // Init plugin | ||||
| int ret; | 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) | if (useOsc) | ||||
| { | { | ||||
| @@ -579,9 +581,6 @@ int main(int argc, char* argv[]) | |||||
| ret = 1; | ret = 1; | ||||
| } | } | ||||
| if (extraStuff != nullptr && itype == CarlaBackend::PLUGIN_DSSI) | |||||
| delete[] (const char*)extraStuff; | |||||
| // Close OSC | // Close OSC | ||||
| if (useOsc) | if (useOsc) | ||||
| client.oscClose(); | client.oscClose(); | ||||
| @@ -119,14 +119,14 @@ public: | |||||
| { | { | ||||
| CarlaStyle* const style(new CarlaStyle()); | CarlaStyle* const style(new CarlaStyle()); | ||||
| fApp->setStyle(style); | 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); | |||||
| } | } | ||||
| } | } | ||||
| @@ -169,7 +169,7 @@ struct Lv2PluginOptions { | |||||
| opts[4] = &optNull; | 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) | // get plugin from lv2_rdf (lilv) | ||||
| gLv2World.init(); | gLv2World.init(); | ||||
| fRdfDescriptor = lv2_rdf_new(pluginURI); | |||||
| fRdfDescriptor = lv2_rdf_new(pluginURI, false); | |||||
| if (fRdfDescriptor == nullptr) | if (fRdfDescriptor == nullptr) | ||||
| return false; | return false; | ||||
| @@ -1095,14 +1095,14 @@ private: | |||||
| CARLA_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(CarlaLv2Client) | CARLA_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(CarlaLv2Client) | ||||
| }; | }; | ||||
| #define lv2ClientPtr ((CarlaLv2Client*)kClient) | |||||
| #define lv2ClientPtr ((CarlaLv2Client*)fClient) | |||||
| int CarlaBridgeOsc::handleMsgLv2AtomTransfer(CARLA_BRIDGE_OSC_HANDLE_ARGS) | int CarlaBridgeOsc::handleMsgLv2AtomTransfer(CARLA_BRIDGE_OSC_HANDLE_ARGS) | ||||
| { | { | ||||
| CARLA_BRIDGE_OSC_CHECK_OSC_TYPES(2, "is"); | CARLA_BRIDGE_OSC_CHECK_OSC_TYPES(2, "is"); | ||||
| carla_debug("CarlaBridgeOsc::handleMsgLv2AtomTransfer()"); | carla_debug("CarlaBridgeOsc::handleMsgLv2AtomTransfer()"); | ||||
| if (kClient == nullptr) | |||||
| if (fClient == nullptr) | |||||
| return 1; | return 1; | ||||
| const int32_t portIndex = argv[0]->i; | 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_BRIDGE_OSC_CHECK_OSC_TYPES(2, "is"); | ||||
| carla_debug("CarlaBridgeOsc::handleMsgLv2UridMap()"); | carla_debug("CarlaBridgeOsc::handleMsgLv2UridMap()"); | ||||
| if (kClient == nullptr) | |||||
| if (fClient == nullptr) | |||||
| return 1; | return 1; | ||||
| const int32_t urid = argv[0]->i; | const int32_t urid = argv[0]->i; | ||||
| @@ -71,7 +71,7 @@ endif | |||||
| WIN_BUILD_FLAGS = $(BUILD_PLUGIN_FLAGS) -DJACKBRIDGE_EXPORT | WIN_BUILD_FLAGS = $(BUILD_PLUGIN_FLAGS) -DJACKBRIDGE_EXPORT | ||||
| WIN_32BIT_FLAGS = $(32BIT_FLAGS) | WIN_32BIT_FLAGS = $(32BIT_FLAGS) | ||||
| WIN_64BIT_FLAGS = $(64BIT_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) | # 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) | 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) | 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) | 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 | 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-win32: carla-bridge-lv2-windows.exe | ||||
| ui_lv2-x11: carla-bridge-lv2-x11 | 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 $@ | $(MOC) $< -DMOC_PARSING -o $@ | ||||
| OBJS_UI_LV2_LIBS = \ | 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 | # ui_lv2-gtk2 | ||||
| @@ -270,7 +274,7 @@ OBJS_UI_LV2_QT4 = CarlaBridgeUI-LV2__lv2-qt4.o \ | |||||
| CarlaBridgeClient__lv2.o CarlaBridgeOsc__lv2.o \ | CarlaBridgeClient__lv2.o CarlaBridgeOsc__lv2.o \ | ||||
| CarlaBridgeToolkit__lv2.o CarlaBridgeToolkitQt__lv2-qt4.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 $@ | $(CXX) $^ $(LINK_UI_LV2_QT4_FLAGS) -o $@ | ||||
| %__lv2-qt4.o: %.cpp CarlaBridgeToolkitQt.moc | %__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 \ | CarlaBridgeClient__lv2.o CarlaBridgeOsc__lv2.o \ | ||||
| CarlaBridgeToolkit__lv2.o CarlaBridgeToolkitQt__lv2-qt5.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 $@ | $(CXX) $^ $(LINK_UI_LV2_QT5_FLAGS) -o $@ | ||||
| %__lv2-qt5.o: %.cpp CarlaBridgeToolkitQt.moc | %__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 \ | CarlaBridgeClient__lv2.o CarlaBridgeOsc__lv2.o \ | ||||
| CarlaBridgeToolkit__lv2.o CarlaBridgeToolkitQt__lv2-cocoa.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 $@ | $(CXX) $^ $(LINK_UI_LV2_COCOA_FLAGS) -o $@ | ||||
| %__lv2-cocoa.o: %.cpp CarlaBridgeToolkitQt.moc | %__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 \ | CarlaBridgeClient__lv2.o CarlaBridgeOsc__lv2.o \ | ||||
| CarlaBridgeToolkit__lv2.o CarlaBridgeToolkitQt__lv2-windows.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 $@ | $(CXX) $^ $(LINK_UI_LV2_WIN32_FLAGS) -o $@ | ||||
| %__lv2-windows.o: %.cpp CarlaBridgeToolkitQt.moc | %__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 \ | CarlaBridgeClient__lv2.o CarlaBridgeOsc__lv2.o \ | ||||
| CarlaBridgeToolkit__lv2.o CarlaBridgeToolkitQt__lv2-x11.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 $@ | $(CXX) $^ $(LINK_UI_LV2_X11_FLAGS) -o $@ | ||||
| %__lv2-x11.o: %.cpp CarlaBridgeToolkitQt.moc | %__lv2-x11.o: %.cpp CarlaBridgeToolkitQt.moc | ||||
| $(CXX) $< $(BUILD_UI_LV2_X11_FLAGS) -c -o $@ | $(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 \ | 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 | # ui_vst-hwnd | ||||
| @@ -348,7 +352,7 @@ OBJS_UI_VST_HWND = CarlaBridgeUI-VST__vst-hwnd.o \ | |||||
| CarlaBridgeClient__vst.o CarlaBridgeOsc__vst.o \ | CarlaBridgeClient__vst.o CarlaBridgeOsc__vst.o \ | ||||
| CarlaBridgeToolkit__vst.o CarlaBridgeToolkitQt__vst-hwnd.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 $@ | $(CXX) $^ $(LINK_UI_VST_HWND_FLAGS) -o $@ | ||||
| %__vst-hwnd.o: %.cpp CarlaBridgeToolkitQt.moc | %__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 \ | CarlaBridgeClient__vst.o CarlaBridgeOsc__vst.o \ | ||||
| CarlaBridgeToolkit__vst.o CarlaBridgeToolkitQt__vst-x11.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 $@ | $(CXX) $^ $(LINK_UI_VST_X11_FLAGS) -o $@ | ||||
| %__vst-x11.o: %.cpp CarlaBridgeToolkitQt.moc | %__vst-x11.o: %.cpp CarlaBridgeToolkitQt.moc | ||||
| @@ -407,14 +411,15 @@ OBJS_NATIVE += \ | |||||
| # libs | # libs | ||||
| OBJS_NATIVE += \ | 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) | ifeq ($(CARLA_PLUGIN_SUPPORT),true) | ||||
| OBJS_NATIVE += \ | OBJS_NATIVE += \ | ||||
| ../libs/lilv.a | |||||
| ../modules/lilv.a | |||||
| endif | endif | ||||
| carla-bridge-native: $(FILES) $(OBJS_NATIVE) | carla-bridge-native: $(FILES) $(OBJS_NATIVE) | ||||
| @@ -457,8 +462,8 @@ OBJS_POSIX32 += \ | |||||
| # libs | # libs | ||||
| OBJS_POSIX32 += \ | OBJS_POSIX32 += \ | ||||
| ../libs/lilv.posix32.a \ | |||||
| ../libs/rtmempool.posix32.a | |||||
| ../modules/lilv.posix32.a \ | |||||
| ../modules/rtmempool.posix32.a | |||||
| carla-bridge-posix32: $(FILES) $(OBJS_POSIX32) | carla-bridge-posix32: $(FILES) $(OBJS_POSIX32) | ||||
| $(CXX) $(OBJS_POSIX32) $(POSIX_LINK_FLAGS) $(POSIX_32BIT_FLAGS) -o $@ | $(CXX) $(OBJS_POSIX32) $(POSIX_LINK_FLAGS) $(POSIX_32BIT_FLAGS) -o $@ | ||||
| @@ -500,8 +505,8 @@ OBJS_POSIX64 += \ | |||||
| # libs | # libs | ||||
| OBJS_POSIX64 += \ | OBJS_POSIX64 += \ | ||||
| ../libs/lilv.posix64.a \ | |||||
| ../libs/rtmempool.posix64.a | |||||
| ../modules/lilv.posix64.a \ | |||||
| ../modules/rtmempool.posix64.a | |||||
| carla-bridge-posix64: $(FILES) $(OBJS_POSIX64) | carla-bridge-posix64: $(FILES) $(OBJS_POSIX64) | ||||
| $(CXX) $(OBJS_POSIX64) $(POSIX_LINK_FLAGS) $(POSIX_64BIT_FLAGS) -o $@ | $(CXX) $(OBJS_POSIX64) $(POSIX_LINK_FLAGS) $(POSIX_64BIT_FLAGS) -o $@ | ||||
| @@ -543,10 +548,10 @@ OBJS_WIN32 += \ | |||||
| # libs | # libs | ||||
| OBJS_WIN32 += \ | 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 $@ | $(CXX) $(OBJS_WIN32) $(WIN_32BIT_FLAGS) $(WIN_LINK_FLAGS) -ljackbridge-win32 -o $@ | ||||
| %__win32.o: %.cpp | %__win32.o: %.cpp | ||||
| @@ -586,10 +591,10 @@ OBJS_WIN64 += \ | |||||
| # libs | # libs | ||||
| OBJS_WIN64 += \ | 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 $@ | $(CXX) $(OBJS_WIN64) $(WIN_64BIT_FLAGS) $(WIN_LINK_FLAGS) -ljackbridge-win64 -o $@ | ||||
| %__win64.o: %.cpp | %__win64.o: %.cpp | ||||
| @@ -605,20 +610,17 @@ carla-bridge-win64.exe: $(FILES) $(OBJS_WIN64) ../libs/jackbridge-win64.dll | |||||
| .FORCE: | .FORCE: | ||||
| .PHONY: .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_WIN32) | ||||
| rm -f $(OBJS_WIN64) | 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-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 | rm -f carla-bridge-native carla-bridge-posix32 carla-bridge-posix64 | ||||
| # -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
| @@ -1,14 +1,12 @@ | |||||
| # QtCreator project file | # QtCreator project file | ||||
| QT = core gui xml | |||||
| TARGET = carla-bridge-qtcreator | TARGET = carla-bridge-qtcreator | ||||
| TEMPLATE = app | TEMPLATE = app | ||||
| # ------------------------------------------------------- | # ------------------------------------------------------- | ||||
| CONFIG = debug | CONFIG = debug | ||||
| CONFIG += link_pkgconfig qt warn_on | |||||
| CONFIG += link_pkgconfig warn_on | |||||
| DEFINES = DEBUG | DEFINES = DEBUG | ||||
| DEFINES += HAVE_CPP11_SUPPORT | DEFINES += HAVE_CPP11_SUPPORT | ||||
| @@ -23,13 +21,14 @@ DEFINES += WANT_LADSPA | |||||
| DEFINES += WANT_DSSI | DEFINES += WANT_DSSI | ||||
| DEFINES += WANT_LV2 | DEFINES += WANT_LV2 | ||||
| DEFINES += WANT_VST | DEFINES += WANT_VST | ||||
| DEFINES += WANT_AU | |||||
| DEFINES += WANT_FLUIDSYNTH | DEFINES += WANT_FLUIDSYNTH | ||||
| #DEFINES += WANT_LINUXSAMPLER | |||||
| DEFINES += WANT_LINUXSAMPLER | |||||
| DEFINES += WANT_OPENGL | DEFINES += WANT_OPENGL | ||||
| DEFINES += WANT_AUDIOFILE | DEFINES += WANT_AUDIOFILE | ||||
| DEFINES += WANT_MIDIFILE | DEFINES += WANT_MIDIFILE | ||||
| DEFINES += WANT_ZYNADDSUBFX | DEFINES += WANT_ZYNADDSUBFX | ||||
| #DEFINES += WANT_ZYNADDSUBFX_UI | |||||
| # DEFINES += WANT_ZYNADDSUBFX_UI | |||||
| # Engine | # Engine | ||||
| PKGCONFIG = liblo | PKGCONFIG = liblo | ||||
| @@ -38,7 +37,7 @@ PKGCONFIG = liblo | |||||
| PKGCONFIG += fluidsynth | PKGCONFIG += fluidsynth | ||||
| # LinuxSampler | # LinuxSampler | ||||
| #PKGCONFIG += linuxsampler | |||||
| PKGCONFIG += linuxsampler | |||||
| # AudioFile | # AudioFile | ||||
| DEFINES += HAVE_FFMPEG | DEFINES += HAVE_FFMPEG | ||||
| @@ -74,7 +73,9 @@ SOURCES += \ | |||||
| ../../backend/engine/CarlaEngineOsc.cpp \ | ../../backend/engine/CarlaEngineOsc.cpp \ | ||||
| ../../backend/engine/CarlaEngineThread.cpp \ | ../../backend/engine/CarlaEngineThread.cpp \ | ||||
| ../../backend/engine/CarlaEngineBridge.cpp \ | ../../backend/engine/CarlaEngineBridge.cpp \ | ||||
| ../../backend/engine/CarlaEngineJack.cpp | |||||
| ../../backend/engine/CarlaEngineJack.cpp \ | |||||
| ../../backend/engine/CarlaEngineJuce.cpp \ | |||||
| ../../backend/engine/CarlaEngineRtAudio.cpp | |||||
| # Plugin | # Plugin | ||||
| SOURCES += \ | SOURCES += \ | ||||
| @@ -87,7 +88,7 @@ SOURCES += \ | |||||
| ../../backend/plugin/DssiPlugin.cpp \ | ../../backend/plugin/DssiPlugin.cpp \ | ||||
| ../../backend/plugin/Lv2Plugin.cpp \ | ../../backend/plugin/Lv2Plugin.cpp \ | ||||
| ../../backend/plugin/VstPlugin.cpp \ | ../../backend/plugin/VstPlugin.cpp \ | ||||
| ../../backend/plugin/Vst3Plugin.cpp \ | |||||
| ../../backend/plugin/CsoundPlugin.cpp \ | |||||
| ../../backend/plugin/FluidSynthPlugin.cpp \ | ../../backend/plugin/FluidSynthPlugin.cpp \ | ||||
| ../../backend/plugin/LinuxSamplerPlugin.cpp | ../../backend/plugin/LinuxSamplerPlugin.cpp | ||||
| @@ -104,7 +105,7 @@ HEADERS += \ | |||||
| ../../backend/CarlaNative.h \ | ../../backend/CarlaNative.h \ | ||||
| ../../backend/CarlaNative.hpp \ | ../../backend/CarlaNative.hpp \ | ||||
| ../../backend/CarlaPlugin.hpp \ | ../../backend/CarlaPlugin.hpp \ | ||||
| ../../backend/CarlaStandalone.hpp | |||||
| ../../backend/CarlaHost.hpp | |||||
| # engine | # engine | ||||
| HEADERS += \ | HEADERS += \ | ||||
| @@ -121,9 +122,14 @@ HEADERS += \ | |||||
| # includes | # includes | ||||
| HEADERS += \ | HEADERS += \ | ||||
| ../../includes/CarlaDefines.hpp \ | ../../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 | # utils | ||||
| HEADERS += \ | HEADERS += \ | ||||
| @@ -156,11 +162,11 @@ INCLUDEPATH = .. \ | |||||
| # ----------------------------------------------------------- | # ----------------------------------------------------------- | ||||
| LIBS = -ldl | 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/juce_core.a | ||||
| LIBS += ../../modules/rtmempool.a | LIBS += ../../modules/rtmempool.a | ||||
| LIBS += ../../modules/theme.a | LIBS += ../../modules/theme.a | ||||
| LIBS += ../../modules/widgets.a | |||||
| LIBS += ../../modules/dgl.a | LIBS += ../../modules/dgl.a | ||||
| LIBS += ../../modules/lilv.a | LIBS += ../../modules/lilv.a | ||||
| @@ -34,6 +34,7 @@ except: | |||||
| import ui_carla_database | import ui_carla_database | ||||
| import ui_carla_refresh | import ui_carla_refresh | ||||
| from carla_shared import * | from carla_shared import * | ||||
| # ------------------------------------------------------------------------------------------------------------ | # ------------------------------------------------------------------------------------------------------------ | ||||
| @@ -116,12 +117,13 @@ def findFilenames(filePath, stype): | |||||
| # ------------------------------------------------------------------------------------------------------------ | # ------------------------------------------------------------------------------------------------------------ | ||||
| # Plugin Query | # Plugin Query | ||||
| PLUGIN_QUERY_API_VERSION = 1 | |||||
| PLUGIN_QUERY_API_VERSION = 2 | |||||
| PyPluginInfo = { | PyPluginInfo = { | ||||
| 'API': PLUGIN_QUERY_API_VERSION, | 'API': PLUGIN_QUERY_API_VERSION, | ||||
| 'build': BINARY_NONE, | 'build': BINARY_NONE, | ||||
| 'type': PLUGIN_NONE, | 'type': PLUGIN_NONE, | ||||
| 'category': PLUGIN_CATEGORY_NONE, | |||||
| 'hints': 0x0, | 'hints': 0x0, | ||||
| 'binary': "", | 'binary': "", | ||||
| 'name': "", | 'name': "", | ||||
| @@ -182,7 +184,7 @@ def runCarlaDiscovery(itype, stype, filename, tool, isWine=False): | |||||
| pinfo['binary'] = filename | pinfo['binary'] = filename | ||||
| elif line == "carla-discovery::end::------------": | elif line == "carla-discovery::end::------------": | ||||
| if pinfo != None: | |||||
| if pinfo is not None: | |||||
| plugins.append(pinfo) | plugins.append(pinfo) | ||||
| del pinfo | del pinfo | ||||
| pinfo = None | pinfo = None | ||||
| @@ -193,6 +195,9 @@ def runCarlaDiscovery(itype, stype, filename, tool, isWine=False): | |||||
| elif line.startswith("err:module:import_dll Library"): | elif line.startswith("err:module:import_dll Library"): | ||||
| print(line) | print(line) | ||||
| elif line.startswith("carla-discovery::info::"): | |||||
| print("%s - %s" % (line, filename)) | |||||
| elif line.startswith("carla-discovery::error::"): | elif line.startswith("carla-discovery::error::"): | ||||
| print("%s - %s" % (line, filename)) | print("%s - %s" % (line, filename)) | ||||
| @@ -217,6 +222,8 @@ def runCarlaDiscovery(itype, stype, filename, tool, isWine=False): | |||||
| if value.isdigit(): pinfo['uniqueId'] = int(value) | if value.isdigit(): pinfo['uniqueId'] = int(value) | ||||
| elif prop == "hints": | elif prop == "hints": | ||||
| if value.isdigit(): pinfo['hints'] = int(value) | if value.isdigit(): pinfo['hints'] = int(value) | ||||
| elif prop == "category": | |||||
| if value.isdigit(): pinfo['category'] = int(value) | |||||
| elif prop == "audio.ins": | elif prop == "audio.ins": | ||||
| if value.isdigit(): pinfo['audio.ins'] = int(value) | if value.isdigit(): pinfo['audio.ins'] = int(value) | ||||
| elif prop == "audio.outs": | elif prop == "audio.outs": | ||||
| @@ -247,12 +254,6 @@ def runCarlaDiscovery(itype, stype, filename, tool, isWine=False): | |||||
| pinfo = None | pinfo = None | ||||
| continue | 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? | # FIXME? | ||||
| tmp = discoveryProcess | tmp = discoveryProcess | ||||
| discoveryProcess = None | discoveryProcess = None | ||||
| @@ -270,12 +271,13 @@ def checkPluginInternal(desc): | |||||
| plugins = [] | plugins = [] | ||||
| pinfo = deepcopy(PyPluginInfo) | 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['copyright'] = cString(desc['copyright']) | ||||
| pinfo['audio.ins'] = int(desc['audioIns']) | pinfo['audio.ins'] = int(desc['audioIns']) | ||||
| @@ -500,7 +502,7 @@ class SearchPluginsThread(QThread): | |||||
| json.dump(ladspaRdfInfo, fdLadspa) | json.dump(ladspaRdfInfo, fdLadspa) | ||||
| fdLadspa.close() | fdLadspa.close() | ||||
| if not self.fContinueChecking: return | |||||
| if not self.fContinueChecking: return | |||||
| if self.fCheckDSSI: | if self.fCheckDSSI: | ||||
| if self.fCheckNative: | if self.fCheckNative: | ||||
| @@ -533,7 +535,7 @@ class SearchPluginsThread(QThread): | |||||
| settingsDB.sync() | settingsDB.sync() | ||||
| if not self.fContinueChecking: return | |||||
| if not self.fContinueChecking: return | |||||
| if self.fCheckLV2: | if self.fCheckLV2: | ||||
| if self.fCheckNative: | if self.fCheckNative: | ||||
| @@ -566,7 +568,7 @@ class SearchPluginsThread(QThread): | |||||
| settingsDB.sync() | settingsDB.sync() | ||||
| if not self.fContinueChecking: return | |||||
| if not self.fContinueChecking: return | |||||
| if self.fCheckVST: | if self.fCheckVST: | ||||
| if self.fCheckNative: | if self.fCheckNative: | ||||
| @@ -599,7 +601,7 @@ class SearchPluginsThread(QThread): | |||||
| settingsDB.sync() | settingsDB.sync() | ||||
| if not self.fContinueChecking: return | |||||
| if not self.fContinueChecking: return | |||||
| if self.fCheckAU: | if self.fCheckAU: | ||||
| if self.fCheckNative: | if self.fCheckNative: | ||||
| @@ -620,28 +622,40 @@ class SearchPluginsThread(QThread): | |||||
| settingsDB.sync() | settingsDB.sync() | ||||
| if not self.fContinueChecking: return | |||||
| if not self.fContinueChecking: return | |||||
| if self.fCheckCSOUND: | if self.fCheckCSOUND: | ||||
| self._checkCSOUND() | self._checkCSOUND() | ||||
| settingsDB.setValue("Plugins/CSOUND", self.fCsoundPlugins) | settingsDB.setValue("Plugins/CSOUND", self.fCsoundPlugins) | ||||
| if not self.fContinueChecking: return | |||||
| if not self.fContinueChecking: return | |||||
| if self.fCheckGIG: | 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) | settingsDB.setValue("Plugins/GIG", self.fKitPlugins) | ||||
| if not self.fContinueChecking: return | |||||
| if not self.fContinueChecking: return | |||||
| if self.fCheckSF2: | 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) | settingsDB.setValue("Plugins/SF2", self.fKitPlugins) | ||||
| if not self.fContinueChecking: return | |||||
| if not self.fContinueChecking: return | |||||
| if self.fCheckSFZ: | 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.setValue("Plugins/SFZ", self.fKitPlugins) | ||||
| settingsDB.sync() | settingsDB.sync() | ||||
| @@ -652,7 +666,10 @@ class SearchPluginsThread(QThread): | |||||
| self._pluginLook(self.fLastCheckValue, "LADSPA plugins...") | 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) | binaries = findBinaries(iPATH, OS) | ||||
| for binary in binaries: | for binary in binaries: | ||||
| if binary not in ladspaBinaries: | if binary not in ladspaBinaries: | ||||
| @@ -682,7 +699,10 @@ class SearchPluginsThread(QThread): | |||||
| self._pluginLook(self.fLastCheckValue, "DSSI plugins...") | 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) | binaries = findBinaries(iPATH, OS) | ||||
| for binary in binaries: | for binary in binaries: | ||||
| if binary not in dssiBinaries: | if binary not in dssiBinaries: | ||||
| @@ -712,7 +732,10 @@ class SearchPluginsThread(QThread): | |||||
| self._pluginLook(self.fLastCheckValue, "LV2 bundles...") | 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) | bundles = findLV2Bundles(iPATH) | ||||
| for bundle in bundles: | for bundle in bundles: | ||||
| if bundle not in lv2Bundles: | if bundle not in lv2Bundles: | ||||
| @@ -745,7 +768,10 @@ class SearchPluginsThread(QThread): | |||||
| else: | else: | ||||
| self._pluginLook(self.fLastCheckValue, "VST plugins...") | 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: | if MACOS and not isWine: | ||||
| binaries = findMacVSTBundles(iPATH) | binaries = findMacVSTBundles(iPATH) | ||||
| else: | else: | ||||
| @@ -779,7 +805,10 @@ class SearchPluginsThread(QThread): | |||||
| # FIXME - this probably uses bundles | # FIXME - this probably uses bundles | ||||
| self._pluginLook(self.fLastCheckValue, "AU plugins...") | 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") | binaries = findBinaries(iPATH, "MACOS") | ||||
| for binary in binaries: | for binary in binaries: | ||||
| if binary not in auBinaries: | if binary not in auBinaries: | ||||
| @@ -807,7 +836,10 @@ class SearchPluginsThread(QThread): | |||||
| csoundFiles = [] | csoundFiles = [] | ||||
| self.fCsoundPlugins = [] | 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") | files = findFilenames(iPATH, "csd") | ||||
| for file_ in files: | for file_ in files: | ||||
| if file_ not in csoundFiles: | if file_ not in csoundFiles: | ||||
| @@ -1270,7 +1302,8 @@ class PluginDatabaseW(QDialog): | |||||
| mIns = plugin['midi.ins'] | mIns = plugin['midi.ins'] | ||||
| mOuts = plugin['midi.outs'] | mOuts = plugin['midi.outs'] | ||||
| ptype = self.ui.tableWidget.item(i, 12).text() | 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) | isEffect = bool(aIns > 0 < aOuts and not isSynth) | ||||
| isMidi = bool(aIns == 0 and aOuts == 0 and mIns > 0 < mOuts) | isMidi = bool(aIns == 0 and aOuts == 0 and mIns > 0 < mOuts) | ||||
| isKit = bool(ptype in ("GIG", "SF2", "SFZ")) | isKit = bool(ptype in ("GIG", "SF2", "SFZ")) | ||||
| @@ -1332,6 +1365,9 @@ class PluginDatabaseW(QDialog): | |||||
| self.ui.frame.setVisible(yesNo) | self.ui.frame.setVisible(yesNo) | ||||
| def _addPluginToTable(self, plugin, ptype): | def _addPluginToTable(self, plugin, ptype): | ||||
| if plugin['API'] != PLUGIN_QUERY_API_VERSION: | |||||
| return | |||||
| index = self.fLastTableIndex | index = self.fLastTableIndex | ||||
| if plugin['build'] == BINARY_NATIVE: | 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, 7, QTableWidgetItem(str(plugin['parameters.outs']))) | ||||
| self.ui.tableWidget.setItem(index, 8, QTableWidgetItem(str(plugin['programs.total']))) | 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, 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, 11, QTableWidgetItem(bridgeText)) | ||||
| self.ui.tableWidget.setItem(index, 12, QTableWidgetItem(ptype)) | self.ui.tableWidget.setItem(index, 12, QTableWidgetItem(ptype)) | ||||
| self.ui.tableWidget.setItem(index, 13, QTableWidgetItem(str(plugin['binary']))) | self.ui.tableWidget.setItem(index, 13, QTableWidgetItem(str(plugin['binary']))) | ||||
| @@ -1402,8 +1438,7 @@ class PluginDatabaseW(QDialog): | |||||
| internalPlugins = toList(settingsDB.value("Plugins/Internal", [])) | internalPlugins = toList(settingsDB.value("Plugins/Internal", [])) | ||||
| for plugins in internalPlugins: | 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(): | if Carla.host is not None and internalCount != Carla.host.get_internal_plugin_count(): | ||||
| 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: | for plugin in plugins: | ||||
| self._addPluginToTable(plugin, self.tr("Internal")) | self._addPluginToTable(plugin, self.tr("Internal")) | ||||
| del internalPlugins | |||||
| # --------------------------------------------------------------------------- | # --------------------------------------------------------------------------- | ||||
| # LADSPA | # LADSPA | ||||
| @@ -1437,6 +1474,8 @@ class PluginDatabaseW(QDialog): | |||||
| self._addPluginToTable(plugin, "LADSPA") | self._addPluginToTable(plugin, "LADSPA") | ||||
| ladspaCount += 1 | ladspaCount += 1 | ||||
| del ladspaPlugins | |||||
| # --------------------------------------------------------------------------- | # --------------------------------------------------------------------------- | ||||
| # DSSI | # DSSI | ||||
| @@ -1452,6 +1491,8 @@ class PluginDatabaseW(QDialog): | |||||
| self._addPluginToTable(plugin, "DSSI") | self._addPluginToTable(plugin, "DSSI") | ||||
| dssiCount += 1 | dssiCount += 1 | ||||
| del dssiPlugins | |||||
| # --------------------------------------------------------------------------- | # --------------------------------------------------------------------------- | ||||
| # LV2 | # LV2 | ||||
| @@ -1467,6 +1508,8 @@ class PluginDatabaseW(QDialog): | |||||
| self._addPluginToTable(plugin, "LV2") | self._addPluginToTable(plugin, "LV2") | ||||
| lv2Count += 1 | lv2Count += 1 | ||||
| del lv2Plugins | |||||
| # --------------------------------------------------------------------------- | # --------------------------------------------------------------------------- | ||||
| # VST | # VST | ||||
| @@ -1482,6 +1525,8 @@ class PluginDatabaseW(QDialog): | |||||
| self._addPluginToTable(plugin, "VST") | self._addPluginToTable(plugin, "VST") | ||||
| vstCount += 1 | vstCount += 1 | ||||
| del vstPlugins | |||||
| # --------------------------------------------------------------------------- | # --------------------------------------------------------------------------- | ||||
| # AU | # AU | ||||
| @@ -1496,6 +1541,8 @@ class PluginDatabaseW(QDialog): | |||||
| self._addPluginToTable(plugin, "AU") | self._addPluginToTable(plugin, "AU") | ||||
| auCount += 1 | auCount += 1 | ||||
| del auPlugins | |||||
| # --------------------------------------------------------------------------- | # --------------------------------------------------------------------------- | ||||
| # Csound | # Csound | ||||
| @@ -1506,28 +1553,42 @@ class PluginDatabaseW(QDialog): | |||||
| self._addPluginToTable(csd_i, "CSOUND") | self._addPluginToTable(csd_i, "CSOUND") | ||||
| csoundCount += 1 | csoundCount += 1 | ||||
| del csds | |||||
| # --------------------------------------------------------------------------- | # --------------------------------------------------------------------------- | ||||
| # Kits | # Kits | ||||
| gigs = toList(settingsDB.value("Plugins/GIG", [])) | gigs = toList(settingsDB.value("Plugins/GIG", [])) | ||||
| sf2s = toList(settingsDB.value("Plugins/SF2", [])) | |||||
| sfzs = toList(settingsDB.value("Plugins/SFZ", [])) | |||||
| for gig in gigs: | for gig in gigs: | ||||
| for gig_i in gig: | for gig_i in gig: | ||||
| self._addPluginToTable(gig_i, "GIG") | self._addPluginToTable(gig_i, "GIG") | ||||
| kitCount += 1 | kitCount += 1 | ||||
| del gigs | |||||
| # --------------------------------------------------------------------------- | |||||
| sf2s = toList(settingsDB.value("Plugins/SF2", [])) | |||||
| for sf2 in sf2s: | for sf2 in sf2s: | ||||
| for sf2_i in sf2: | for sf2_i in sf2: | ||||
| self._addPluginToTable(sf2_i, "SF2") | self._addPluginToTable(sf2_i, "SF2") | ||||
| kitCount += 1 | kitCount += 1 | ||||
| del sf2s | |||||
| # --------------------------------------------------------------------------- | |||||
| sfzs = toList(settingsDB.value("Plugins/SFZ", [])) | |||||
| for sfz in sfzs: | for sfz in sfzs: | ||||
| for sfz_i in sfz: | for sfz_i in sfz: | ||||
| self._addPluginToTable(sfz_i, "SFZ") | self._addPluginToTable(sfz_i, "SFZ") | ||||
| kitCount += 1 | kitCount += 1 | ||||
| del sfzs | |||||
| # --------------------------------------------------------------------------- | # --------------------------------------------------------------------------- | ||||
| self.ui.tableWidget.setSortingEnabled(True) | self.ui.tableWidget.setSortingEnabled(True) | ||||
| @@ -1603,10 +1664,8 @@ class PluginDatabaseW(QDialog): | |||||
| # ------------------------------------------------------------------------------------------------------------ | # ------------------------------------------------------------------------------------------------------------ | ||||
| # TESTING | # 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_() | |||||
| @@ -31,8 +31,10 @@ except: | |||||
| # ------------------------------------------------------------------------------------------------------------ | # ------------------------------------------------------------------------------------------------------------ | ||||
| # Imports (Custom) | # Imports (Custom) | ||||
| #import patchcanvas | |||||
| import ui_carla_settings | import ui_carla_settings | ||||
| import ui_carla_settings_driver | import ui_carla_settings_driver | ||||
| from carla_shared import * | from carla_shared import * | ||||
| # ------------------------------------------------------------------------------------------------------------ | # ------------------------------------------------------------------------------------------------------------ | ||||
| @@ -43,16 +45,15 @@ CARLA_DEFAULT_CANVAS_WIDTH = 3100 | |||||
| CARLA_DEFAULT_CANVAS_HEIGHT = 2400 | CARLA_DEFAULT_CANVAS_HEIGHT = 2400 | ||||
| # Engine settings | # Engine settings | ||||
| CARLA_DEFAULT_DISABLE_CHECKS = False | |||||
| CARLA_DEFAULT_RUN_DISCOVERY_CHECKS = True | |||||
| CARLA_DEFAULT_FORCE_STEREO = False | CARLA_DEFAULT_FORCE_STEREO = False | ||||
| CARLA_DEFAULT_PREFER_PLUGIN_BRIDGES = False | CARLA_DEFAULT_PREFER_PLUGIN_BRIDGES = False | ||||
| CARLA_DEFAULT_PREFER_UI_BRIDGES = True | CARLA_DEFAULT_PREFER_UI_BRIDGES = True | ||||
| CARLA_DEFAULT_UIS_ALWAYS_ON_TOP = True | CARLA_DEFAULT_UIS_ALWAYS_ON_TOP = True | ||||
| CARLA_DEFAULT_USE_DSSI_VST_CHUNKS = False | |||||
| CARLA_DEFAULT_MAX_PARAMETERS = MAX_DEFAULT_PARAMETERS | CARLA_DEFAULT_MAX_PARAMETERS = MAX_DEFAULT_PARAMETERS | ||||
| CARLA_DEFAULT_UI_BRIDGES_TIMEOUT = 4000 | CARLA_DEFAULT_UI_BRIDGES_TIMEOUT = 4000 | ||||
| CARLA_DEFAULT_AUDIO_NUM_PERIODS = 2 | CARLA_DEFAULT_AUDIO_NUM_PERIODS = 2 | ||||
| CARLA_DEFAULT_AUDIO_BUFFER_SIZE = 1024 | |||||
| CARLA_DEFAULT_AUDIO_BUFFER_SIZE = 512 | |||||
| CARLA_DEFAULT_AUDIO_SAMPLE_RATE = 44100 | CARLA_DEFAULT_AUDIO_SAMPLE_RATE = 44100 | ||||
| if WINDOWS: | if WINDOWS: | ||||
| @@ -132,7 +133,7 @@ class DriverSettingsW(QDialog): | |||||
| else: | else: | ||||
| self.ui.cb_device.setCurrentIndex(-1) | self.ui.cb_device.setCurrentIndex(-1) | ||||
| if audioNumPeriods and 2 < audioNumPeriods < 3: | |||||
| if 2 < audioNumPeriods < 3: | |||||
| self.ui.sb_numperiods.setValue(audioNumPeriods) | self.ui.sb_numperiods.setValue(audioNumPeriods) | ||||
| else: | else: | ||||
| self.ui.sb_numperiods.setValue(CARLA_DEFAULT_AUDIO_NUM_PERIODS) | self.ui.sb_numperiods.setValue(CARLA_DEFAULT_AUDIO_NUM_PERIODS) | ||||
| @@ -177,7 +178,7 @@ class CarlaSettingsW(QDialog): | |||||
| PROCESS_MODE_NON_JACK_PADDING = 2 | PROCESS_MODE_NON_JACK_PADDING = 2 | ||||
| def __init__(self, parent): | def __init__(self, parent): | ||||
| QDialog.__init__(self, parent) | |||||
| QDialog.__init__(self, parent, hasGL) | |||||
| self.ui = ui_carla_settings.Ui_CarlaSettingsW() | self.ui = ui_carla_settings.Ui_CarlaSettingsW() | ||||
| self.ui.setupUi(self) | self.ui.setupUi(self) | ||||
| @@ -202,8 +203,6 @@ class CarlaSettingsW(QDialog): | |||||
| if WINDOWS: | if WINDOWS: | ||||
| self.ui.group_theme.setEnabled(False) | self.ui.group_theme.setEnabled(False) | ||||
| self.ui.ch_theme_pro.setChecked(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 | # Set-up connections | ||||
| @@ -227,6 +226,8 @@ class CarlaSettingsW(QDialog): | |||||
| # ------------------------------------------------------------- | # ------------------------------------------------------------- | ||||
| # Post-connect setup | # Post-connect setup | ||||
| # TODO - add AU and csound, hide AU on non-mac | |||||
| self.ui.lw_ladspa.setCurrentRow(0) | self.ui.lw_ladspa.setCurrentRow(0) | ||||
| self.ui.lw_dssi.setCurrentRow(0) | self.ui.lw_dssi.setCurrentRow(0) | ||||
| self.ui.lw_lv2.setCurrentRow(0) | self.ui.lw_lv2.setCurrentRow(0) | ||||
| @@ -424,13 +425,13 @@ class CarlaSettingsW(QDialog): | |||||
| @pyqtSlot() | @pyqtSlot() | ||||
| def slot_resetSettings(self): | 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.le_main_def_folder.setText(HOME) | ||||
| self.ui.ch_theme_pro.setChecked(True) | self.ui.ch_theme_pro.setChecked(True) | ||||
| self.ui.cb_theme_color.setCurrentIndex(0) | self.ui.cb_theme_color.setCurrentIndex(0) | ||||
| self.ui.sb_gui_refresh.setValue(50) | 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_theme.setCurrentIndex(0) | ||||
| self.ui.cb_canvas_hide_groups.setChecked(False) | self.ui.cb_canvas_hide_groups.setChecked(False) | ||||
| self.ui.cb_canvas_bezier_lines.setChecked(True) | 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_aa.setCheckState(Qt.PartiallyChecked) | ||||
| self.ui.cb_canvas_render_hq_aa.setChecked(False) | 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.cb_engine_audio_driver.setCurrentIndex(0) | ||||
| self.ui.sb_engine_max_params.setValue(CARLA_DEFAULT_MAX_PARAMETERS) | 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_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.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.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_prefer_plugin_bridges.setChecked(CARLA_DEFAULT_PREFER_PLUGIN_BRIDGES) | ||||
| self.ui.ch_engine_force_stereo.setChecked(CARLA_DEFAULT_FORCE_STEREO) | 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.cb_engine_process_mode_jack.setCurrentIndex(PROCESS_MODE_MULTIPLE_CLIENTS) | ||||
| self.ui.sw_engine_process_mode.setCurrentIndex(0) | self.ui.sw_engine_process_mode.setCurrentIndex(0) | ||||
| else: | 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) | 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: | if self.ui.tw_paths.currentIndex() == 0: | ||||
| paths = DEFAULT_LADSPA_PATH.split(splitter) | paths = DEFAULT_LADSPA_PATH.split(splitter) | ||||
| paths.sort() | paths.sort() | ||||
| @@ -640,14 +640,8 @@ class CarlaSettingsW(QDialog): | |||||
| # ------------------------------------------------------------------------------------------------------------ | # ------------------------------------------------------------------------------------------------------------ | ||||
| # TESTING | # TESTING | ||||
| hasGL = True | |||||
| from PyQt5.QtWidgets import QApplication | from PyQt5.QtWidgets import QApplication | ||||
| app = QApplication(sys.argv) | 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() | gui.show() | ||||
| app.exec_() | app.exec_() | ||||
| @@ -256,8 +256,8 @@ elif MACOS: | |||||
| DEFAULT_VST_PATH = ":".join((os.path.join(HOME, "Library", "Audio", "Plug-Ins", "VST"), | DEFAULT_VST_PATH = ":".join((os.path.join(HOME, "Library", "Audio", "Plug-Ins", "VST"), | ||||
| os.path.join("/", "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 | # TODO | ||||
| DEFAULT_CSOUND_PATH = "" | DEFAULT_CSOUND_PATH = "" | ||||
| @@ -291,13 +291,13 @@ else: | |||||
| # TODO | # TODO | ||||
| DEFAULT_CSOUND_PATH = "" | 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"))) | 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"))) | 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"))) | os.path.join("/", "usr", "share", "sounds", "sfz"))) | ||||
| # ------------------------------------------------------------------------------------------------------------ | # ------------------------------------------------------------------------------------------------------------ | ||||
| @@ -538,7 +538,7 @@ def setUpSignals(): | |||||
| signal(SIGINT, signalHandler) | signal(SIGINT, signalHandler) | ||||
| signal(SIGTERM, signalHandler) | signal(SIGTERM, signalHandler) | ||||
| if haveSIGUSR1: | |||||
| if not haveSIGUSR1: | |||||
| return | return | ||||
| signal(SIGUSR1, signalHandler) | signal(SIGUSR1, signalHandler) | ||||
| @@ -35,6 +35,7 @@ import ui_carla_about | |||||
| import ui_carla_edit | import ui_carla_edit | ||||
| import ui_carla_parameter | import ui_carla_parameter | ||||
| import ui_carla_plugin | import ui_carla_plugin | ||||
| from carla_shared import * | from carla_shared import * | ||||
| # ------------------------------------------------------------------------------------------------------------ | # ------------------------------------------------------------------------------------------------------------ | ||||
| @@ -39,6 +39,8 @@ POSIX_LINK_FLAGS = $(LINK_FLAGS) $(EXTRA_LIBS) -ldl -lpthread | |||||
| ifeq ($(MACOS),true) | ifeq ($(MACOS),true) | ||||
| POSIX_LINK_FLAGS += -framework Cocoa -framework IOKit | POSIX_LINK_FLAGS += -framework Cocoa -framework IOKit | ||||
| else | |||||
| POSIX_LINK_FLAGS += -lrt | |||||
| endif | endif | ||||
| WIN_BUILD_FLAGS = $(BUILD_CXX_FLAGS) | WIN_BUILD_FLAGS = $(BUILD_CXX_FLAGS) | ||||
| @@ -22,7 +22,6 @@ DEFINES += WANT_DSSI | |||||
| DEFINES += WANT_LV2 | DEFINES += WANT_LV2 | ||||
| DEFINES += WANT_VST | DEFINES += WANT_VST | ||||
| DEFINES += WANT_PLUGIN | DEFINES += WANT_PLUGIN | ||||
| DEFINES += WANT_RTAUDIO | |||||
| DEFINES += WANT_FLUIDSYNTH | DEFINES += WANT_FLUIDSYNTH | ||||
| DEFINES += WANT_LINUXSAMPLER | DEFINES += WANT_LINUXSAMPLER | ||||
| DEFINES += WANT_OPENGL | DEFINES += WANT_OPENGL | ||||
| @@ -65,9 +65,9 @@ public: | |||||
| CarlaString filename; | CarlaString filename; | ||||
| filename += fHost->resourceDir; | filename += fHost->resourceDir; | ||||
| #ifdef CARLA_OS_WIN | #ifdef CARLA_OS_WIN | ||||
| filename += "\\resources\\"; | |||||
| filename += "\\"; | |||||
| #else | #else | ||||
| filename += "/resources/"; | |||||
| filename += "/"; | |||||
| #endif | #endif | ||||
| filename += fUi.getExternalFilename(); | filename += fUi.getExternalFilename(); | ||||
| @@ -23,7 +23,7 @@ | |||||
| * | * | ||||
| *****************************************************************************/ | *****************************************************************************/ | ||||
| #define UI_EXECUTABLE "/resources/nekofilter-ui" | |||||
| #define UI_EXECUTABLE "/nekofilter-ui" | |||||
| #define WAIT_START_TIMEOUT 3000 /* ms */ | #define WAIT_START_TIMEOUT 3000 /* ms */ | ||||
| #define WAIT_ZOMBIE_TIMEOUT 3000 /* ms */ | #define WAIT_ZOMBIE_TIMEOUT 3000 /* ms */ | ||||
| @@ -65,7 +65,6 @@ namespace juce | |||||
| #include "buffers/juce_AudioSampleBuffer.cpp" | #include "buffers/juce_AudioSampleBuffer.cpp" | ||||
| #include "buffers/juce_FloatVectorOperations.cpp" | #include "buffers/juce_FloatVectorOperations.cpp" | ||||
| #include "effects/juce_IIRFilter.cpp" | #include "effects/juce_IIRFilter.cpp" | ||||
| #include "effects/juce_IIRFilterOld.cpp" | |||||
| #include "effects/juce_LagrangeInterpolator.cpp" | #include "effects/juce_LagrangeInterpolator.cpp" | ||||
| #include "midi/juce_MidiBuffer.cpp" | #include "midi/juce_MidiBuffer.cpp" | ||||
| #include "midi/juce_MidiFile.cpp" | #include "midi/juce_MidiFile.cpp" | ||||
| @@ -36,7 +36,6 @@ namespace juce | |||||
| #include "buffers/juce_FloatVectorOperations.h" | #include "buffers/juce_FloatVectorOperations.h" | ||||
| #include "effects/juce_Decibels.h" | #include "effects/juce_Decibels.h" | ||||
| #include "effects/juce_IIRFilter.h" | #include "effects/juce_IIRFilter.h" | ||||
| #include "effects/juce_IIRFilterOld.h" | |||||
| #include "effects/juce_LagrangeInterpolator.h" | #include "effects/juce_LagrangeInterpolator.h" | ||||
| #include "effects/juce_Reverb.h" | #include "effects/juce_Reverb.h" | ||||
| #include "midi/juce_MidiMessage.h" | #include "midi/juce_MidiMessage.h" | ||||
| @@ -21,20 +21,21 @@ | |||||
| #include "CarlaBackend.hpp" | #include "CarlaBackend.hpp" | ||||
| #include "CarlaString.hpp" | #include "CarlaString.hpp" | ||||
| #include "juce_core.h" | |||||
| #include <fcntl.h> | #include <fcntl.h> | ||||
| #include <QtCore/QThread> | |||||
| using CarlaBackend::CallbackFunc; | using CarlaBackend::CallbackFunc; | ||||
| using juce::Thread; | |||||
| // ----------------------------------------------------------------------- | // ----------------------------------------------------------------------- | ||||
| // Log thread | // Log thread | ||||
| class CarlaLogThread : public QThread | |||||
| class CarlaLogThread : public Thread | |||||
| { | { | ||||
| public: | public: | ||||
| CarlaLogThread() | CarlaLogThread() | ||||
| : QThread(nullptr), | |||||
| fStop(false), | |||||
| : Thread("CarlaLogThread"), | |||||
| fCallback(nullptr), | fCallback(nullptr), | ||||
| fCallbackPtr(nullptr) | fCallbackPtr(nullptr) | ||||
| { | { | ||||
| @@ -50,7 +51,7 @@ public: | |||||
| fcntl(fPipe[0], F_SETFL, O_NONBLOCK); | fcntl(fPipe[0], F_SETFL, O_NONBLOCK); | ||||
| QThread::start(LowPriority); | |||||
| startThread(2); | |||||
| } | } | ||||
| ~CarlaLogThread() | ~CarlaLogThread() | ||||
| @@ -58,7 +59,7 @@ public: | |||||
| fCallback = nullptr; | fCallback = nullptr; | ||||
| fCallbackPtr = nullptr; | fCallbackPtr = nullptr; | ||||
| stop(); | |||||
| stopThread(5000); | |||||
| fflush(stdout); | fflush(stdout); | ||||
| fflush(stderr); | fflush(stderr); | ||||
| @@ -75,18 +76,10 @@ public: | |||||
| fCallbackPtr = callbackPtr; | fCallbackPtr = callbackPtr; | ||||
| } | } | ||||
| void stop() | |||||
| { | |||||
| fStop = true; | |||||
| if (isRunning()) | |||||
| wait(); | |||||
| } | |||||
| protected: | protected: | ||||
| void run() | void run() | ||||
| { | { | ||||
| while (! fStop) | |||||
| while (! threadShouldExit()) | |||||
| { | { | ||||
| size_t r, lastRead; | size_t r, lastRead; | ||||
| ssize_t r2; // to avoid sign/unsign conversions | ssize_t r2; // to avoid sign/unsign conversions | ||||
| @@ -145,7 +138,6 @@ protected: | |||||
| private: | private: | ||||
| int fPipe[2]; | int fPipe[2]; | ||||
| bool fStop; | |||||
| CallbackFunc fCallback; | CallbackFunc fCallback; | ||||
| void* fCallbackPtr; | void* fCallbackPtr; | ||||