@@ -1363,17 +1363,6 @@ typedef struct { | |||||
*/ | */ | ||||
const double* sampleRates; | const double* sampleRates; | ||||
#ifdef __cplusplus | |||||
/*! | |||||
* Clear data. | |||||
*/ | |||||
void clear() noexcept | |||||
{ | |||||
hints = 0x0; | |||||
bufferSizes = nullptr; | |||||
sampleRates = nullptr; | |||||
} | |||||
#endif | |||||
} EngineDriverDeviceInfo; | } EngineDriverDeviceInfo; | ||||
/** @} */ | /** @} */ | ||||
@@ -18,9 +18,13 @@ ifeq ($(HAVE_FFMPEG),true) | |||||
BUILD_CXX_FLAGS += -DHAVE_FFMPEG | BUILD_CXX_FLAGS += -DHAVE_FFMPEG | ||||
endif | endif | ||||
# ifeq ($(HAVE_JUCE),true) | |||||
# BUILD_CXX_FLAGS += -DHAVE_JUCE | |||||
# endif | |||||
ifeq ($(HAVE_JUCE),true) | |||||
BUILD_CXX_FLAGS += -DHAVE_JUCE | |||||
endif | |||||
ifeq ($(HAVE_OPENGL),true) | |||||
BUILD_CXX_FLAGS += -DHAVE_OPENGL | |||||
endif | |||||
# -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
@@ -30,10 +30,6 @@ | |||||
#include "CarlaStateUtils.hpp" | #include "CarlaStateUtils.hpp" | ||||
#include "CarlaMIDI.h" | #include "CarlaMIDI.h" | ||||
#include <QtCore/QFile> | |||||
#include <QtCore/QFileInfo> | |||||
#include <QtCore/QTextStream> | |||||
#ifdef HAVE_JUCE | #ifdef HAVE_JUCE | ||||
# include "juce_audio_basics.h" | # include "juce_audio_basics.h" | ||||
using juce::FloatVectorOperations; | using juce::FloatVectorOperations; | ||||
@@ -41,16 +37,16 @@ using juce::FloatVectorOperations; | |||||
# include <cmath> | # include <cmath> | ||||
#endif | #endif | ||||
#include <QtCore/QFile> | |||||
#include <QtCore/QFileInfo> | |||||
#include <QtCore/QTextStream> | |||||
CARLA_BACKEND_START_NAMESPACE | CARLA_BACKEND_START_NAMESPACE | ||||
#if 0 | #if 0 | ||||
} // Fix editor indentation | } // Fix editor indentation | ||||
#endif | #endif | ||||
// Engine helper macro, sets lastError and returns false/NULL | |||||
#define CARLA_SAFE_ASSERT_RETURN_ERR(cond, err) if (cond) pass(); else { carla_safe_assert(#cond, __FILE__, __LINE__); setLastError(err); return false; } | |||||
#define CARLA_SAFE_ASSERT_RETURN_ERRN(cond, err) if (cond) pass(); else { carla_safe_assert(#cond, __FILE__, __LINE__); setLastError(err); return nullptr; } | |||||
// ----------------------------------------------------------------------- | // ----------------------------------------------------------------------- | ||||
// Fallback data | // Fallback data | ||||
@@ -33,6 +33,12 @@ CARLA_BACKEND_START_NAMESPACE | |||||
// ----------------------------------------------------------------------- | // ----------------------------------------------------------------------- | ||||
// Engine helper macro, sets lastError and returns false/NULL | |||||
#define CARLA_SAFE_ASSERT_RETURN_ERR(cond, err) if (cond) pass(); else { carla_safe_assert(#cond, __FILE__, __LINE__); setLastError(err); return false; } | |||||
#define CARLA_SAFE_ASSERT_RETURN_ERRN(cond, err) if (cond) pass(); else { carla_safe_assert(#cond, __FILE__, __LINE__); setLastError(err); return nullptr; } | |||||
// ----------------------------------------------------------------------- | |||||
static inline | static inline | ||||
const char* EngineType2Str(const EngineType type) | const char* EngineType2Str(const EngineType type) | ||||
{ | { | ||||
@@ -22,14 +22,14 @@ | |||||
#include "List.hpp" | #include "List.hpp" | ||||
#include "jackbridge/JackBridge.hpp" | #include "jackbridge/JackBridge.hpp" | ||||
#include <cmath> | |||||
#include <QtCore/QStringList> | |||||
#ifdef HAVE_JUCE | #ifdef HAVE_JUCE | ||||
# include "juce_audio_basics.h" | # include "juce_audio_basics.h" | ||||
using juce::FloatVectorOperations; | using juce::FloatVectorOperations; | ||||
#endif | #endif | ||||
#include <cmath> | |||||
#include <QtCore/QStringList> | |||||
#define URI_CANVAS_ICON "http://kxstudio.sf.net/ns/canvas/icon" | #define URI_CANVAS_ICON "http://kxstudio.sf.net/ns/canvas/icon" | ||||
CARLA_BACKEND_START_NAMESPACE | CARLA_BACKEND_START_NAMESPACE | ||||
@@ -1960,11 +1960,11 @@ private: | |||||
bool portIsCV = (jackPortFlags & JackPortIsControlVoltage); | bool portIsCV = (jackPortFlags & JackPortIsControlVoltage); | ||||
unsigned int canvasPortFlags = 0x0; | unsigned int canvasPortFlags = 0x0; | ||||
canvasPortFlags |= portIsInput ? PATCHBAY_PORT_IS_INPUT : PATCHBAY_PORT_IS_OUTPUT; | |||||
canvasPortFlags |= portIsAudio ? PATCHBAY_PORT_IS_AUDIO : PATCHBAY_PORT_IS_MIDI; | |||||
canvasPortFlags |= portIsInput ? PATCHBAY_PORT_IS_INPUT : 0x0; | |||||
canvasPortFlags |= portIsAudio ? PATCHBAY_PORT_TYPE_AUDIO : PATCHBAY_PORT_TYPE_MIDI; | |||||
if (portIsAudio && portIsCV) | if (portIsAudio && portIsCV) | ||||
canvasPortFlags |= PATCHBAY_PORT_IS_CV; | |||||
canvasPortFlags |= PATCHBAY_PORT_TYPE_CV; | |||||
PortNameToId portNameToId(groupId, fLastPortId++, portName, fullPortName); | PortNameToId portNameToId(groupId, fLastPortId++, portName, fullPortName); | ||||
fUsedPortNames.append(portNameToId); | fUsedPortNames.append(portNameToId); | ||||
@@ -22,9 +22,11 @@ | |||||
#include "CarlaEngineInternal.hpp" | #include "CarlaEngineInternal.hpp" | ||||
#include "CarlaBackendUtils.hpp" | #include "CarlaBackendUtils.hpp" | ||||
#include "CarlaMIDI.h" | #include "CarlaMIDI.h" | ||||
#include "RtList.hpp" | |||||
#include "juce_audio_basics.h" | |||||
// #include "RtList.hpp" | |||||
#include "juce_audio_devices.h" | |||||
using namespace juce; | |||||
CARLA_BACKEND_START_NAMESPACE | CARLA_BACKEND_START_NAMESPACE | ||||
@@ -33,12 +35,23 @@ CARLA_BACKEND_START_NAMESPACE | |||||
#endif | #endif | ||||
// ------------------------------------------------------------------------------------------------------------------- | // ------------------------------------------------------------------------------------------------------------------- | ||||
// Juce Engine | |||||
static const char** gRetNames = nullptr; | static const char** gRetNames = nullptr; | ||||
static OwnedArray<AudioIODeviceType> gJuceDeviceTypes; | |||||
static void initJuceDevices() | |||||
{ | |||||
static AudioDeviceManager manager; | |||||
if (gJuceDeviceTypes.size() == 0) | |||||
manager.createAudioDeviceTypes(gJuceDeviceTypes); | |||||
} | |||||
// ------------------------------------------------------------------------------------------------------------------- | |||||
// Juce Engine | |||||
class CarlaEngineJuce : public CarlaEngine/*, | class CarlaEngineJuce : public CarlaEngine/*, | ||||
public juce::AudioIODeviceCallback*/ | |||||
public AudioIODeviceCallback*/ | |||||
{ | { | ||||
public: | public: | ||||
CarlaEngineJuce() | CarlaEngineJuce() | ||||
@@ -121,7 +134,7 @@ protected: | |||||
private: | private: | ||||
//juce::AudioIODeviceType* fDeviceType; | //juce::AudioIODeviceType* fDeviceType; | ||||
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(CarlaEngineJuce) | |||||
//JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(CarlaEngineJuce) | |||||
}; | }; | ||||
// ----------------------------------------- | // ----------------------------------------- | ||||
@@ -133,54 +146,138 @@ CarlaEngine* CarlaEngine::newJuce(const AudioApi /*api*/) | |||||
size_t CarlaEngine::getJuceApiCount() | size_t CarlaEngine::getJuceApiCount() | ||||
{ | { | ||||
return 0; | |||||
initJuceDevices(); | |||||
return gJuceDeviceTypes.size(); | |||||
} | } | ||||
const char* CarlaEngine::getJuceApiName(const unsigned int /*index*/) | |||||
const char* CarlaEngine::getJuceApiName(const unsigned int index) | |||||
{ | { | ||||
return nullptr; | |||||
initJuceDevices(); | |||||
if ((int)index >= gJuceDeviceTypes.size()) | |||||
return nullptr; | |||||
AudioIODeviceType* const deviceType(gJuceDeviceTypes[index]); | |||||
if (deviceType == nullptr) | |||||
return nullptr; | |||||
return deviceType->getTypeName().toRawUTF8(); | |||||
} | } | ||||
const char* const* CarlaEngine::getJuceApiDeviceNames(const unsigned int /*index*/) | |||||
const char* const* CarlaEngine::getJuceApiDeviceNames(const unsigned int index) | |||||
{ | { | ||||
#if 0 | |||||
juce::ScopedPointer<juce::AudioIODeviceType> deviceType; | |||||
initJuceDevices(); | |||||
switch(index) | |||||
{ | |||||
case 0: | |||||
deviceType = juce::AudioIODeviceType::createAudioIODeviceType_JACK(); | |||||
break; | |||||
default: | |||||
//setLastError(""); | |||||
if ((int)index >= gJuceDeviceTypes.size()) | |||||
return nullptr; | return nullptr; | ||||
} | |||||
AudioIODeviceType* const deviceType(gJuceDeviceTypes[index]); | |||||
if (deviceType == nullptr) | if (deviceType == nullptr) | ||||
{ | |||||
//setLastError(""); | |||||
return nullptr; | return nullptr; | ||||
} | |||||
deviceType->scanForDevices(); | deviceType->scanForDevices(); | ||||
const juce::StringArray devNames(deviceType->getDeviceNames()); | |||||
const int devNameCount(devNames.size()); | |||||
StringArray deviceNames(deviceType->getDeviceNames()); | |||||
const int deviceNameCount(deviceNames.size()); | |||||
if (devNameCount <= 0) | |||||
if (deviceNameCount <= 0) | |||||
return nullptr; | return nullptr; | ||||
gRetNames = new const char*[devNameCount+1]; | |||||
if (gRetNames != nullptr) | |||||
{ | |||||
for (int i=0; gRetNames[i] != nullptr; ++i) | |||||
delete[] gRetNames[i]; | |||||
delete[] gRetNames; | |||||
} | |||||
gRetNames = new const char*[deviceNameCount+1]; | |||||
for (unsigned int i=0; i < devNameCount; ++i) | |||||
gRetNames[i] = carla_strdup(devNames[i].toRawUTF8()); | |||||
for (int i=0; i < deviceNameCount; ++i) | |||||
gRetNames[i] = carla_strdup(deviceNames[i].toRawUTF8()); | |||||
gRetNames[devNameCount] = nullptr; | |||||
#endif | |||||
gRetNames[deviceNameCount] = nullptr; | |||||
return gRetNames; | return gRetNames; | ||||
} | } | ||||
const EngineDriverDeviceInfo* CarlaEngine::getJuceDeviceInfo(const unsigned int index, const char* const deviceName) | |||||
{ | |||||
initJuceDevices(); | |||||
if ((int)index >= gJuceDeviceTypes.size()) | |||||
return nullptr; | |||||
AudioIODeviceType* const deviceType(gJuceDeviceTypes[index]); | |||||
if (deviceType == nullptr) | |||||
return nullptr; | |||||
deviceType->scanForDevices(); | |||||
ScopedPointer<AudioIODevice> device(deviceType->createDevice(deviceName, deviceName)); | |||||
if (device == nullptr) | |||||
return nullptr; | |||||
static EngineDriverDeviceInfo devInfo = { 0x0, nullptr, nullptr }; | |||||
static uint32_t dummyBufferSizes[11] = { 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 0 }; | |||||
static double dummySampleRates[14] = { 22050.0, 32000.0, 44100.0, 48000.0, 88200.0, 96000.0, 176400.0, 192000.0, 0.0 }; | |||||
// reset | |||||
devInfo.hints = ENGINE_DRIVER_DEVICE_VARIABLE_BUFFER_SIZE | ENGINE_DRIVER_DEVICE_VARIABLE_SAMPLE_RATE; | |||||
// cleanup | |||||
if (devInfo.bufferSizes != nullptr && devInfo.bufferSizes != dummyBufferSizes) | |||||
{ | |||||
delete[] devInfo.bufferSizes; | |||||
devInfo.bufferSizes = nullptr; | |||||
} | |||||
if (devInfo.sampleRates != nullptr && devInfo.sampleRates != dummySampleRates) | |||||
{ | |||||
delete[] devInfo.sampleRates; | |||||
devInfo.sampleRates = nullptr; | |||||
} | |||||
if (device->hasControlPanel()) | |||||
devInfo.hints |= ENGINE_DRIVER_DEVICE_HAS_CONTROL_PANEL; | |||||
if (size_t bufferSizesCount = device->getNumBufferSizesAvailable()) | |||||
{ | |||||
uint32_t* const bufferSizes(new uint32_t[bufferSizesCount+1]); | |||||
for (size_t i=0; i < bufferSizesCount; ++i) | |||||
bufferSizes[i] = device->getBufferSizeSamples(i); | |||||
bufferSizes[bufferSizesCount] = 0; | |||||
devInfo.bufferSizes = bufferSizes; | |||||
} | |||||
else | |||||
{ | |||||
devInfo.bufferSizes = dummyBufferSizes; | |||||
} | |||||
if (size_t sampleRatesCount = device->getNumSampleRates()) | |||||
{ | |||||
double* const sampleRates(new double[sampleRatesCount+1]); | |||||
for (size_t i=0; i < sampleRatesCount; ++i) | |||||
sampleRates[i] = device->getSampleRate(i); | |||||
sampleRates[sampleRatesCount] = 0.0; | |||||
devInfo.sampleRates = sampleRates; | |||||
} | |||||
else | |||||
{ | |||||
devInfo.sampleRates = dummySampleRates; | |||||
} | |||||
return &devInfo; | |||||
} | |||||
// ----------------------------------------- | // ----------------------------------------- | ||||
CARLA_BACKEND_END_NAMESPACE | CARLA_BACKEND_END_NAMESPACE |
@@ -24,8 +24,7 @@ | |||||
#include "rtmidi/RtMidi.h" | #include "rtmidi/RtMidi.h" | ||||
#ifdef USE_JUCE | #ifdef USE_JUCE | ||||
#include "juce_audio_basics.h" | |||||
# include "juce_audio_basics.h" | |||||
using juce::FloatVectorOperations; | using juce::FloatVectorOperations; | ||||
#endif | #endif | ||||
@@ -94,10 +93,6 @@ public: | |||||
fAudio(api), | fAudio(api), | ||||
fAudioBufIn(nullptr), | fAudioBufIn(nullptr), | ||||
fAudioBufOut(nullptr), | fAudioBufOut(nullptr), | ||||
#ifdef CARLA_PROPER_CPP11_SUPPORT | |||||
fAudioBufRackIn{nullptr}, | |||||
fAudioBufRackOut{nullptr}, | |||||
#endif | |||||
fAudioCountIn(0), | fAudioCountIn(0), | ||||
fAudioCountOut(0), | fAudioCountOut(0), | ||||
fAudioIsInterleaved(false), | fAudioIsInterleaved(false), | ||||
@@ -108,10 +103,8 @@ public: | |||||
{ | { | ||||
carla_debug("CarlaEngineRtAudio::CarlaEngineRtAudio(%i)", api); | carla_debug("CarlaEngineRtAudio::CarlaEngineRtAudio(%i)", api); | ||||
#ifndef CARLA_PROPER_CPP11_SUPPORT | |||||
fAudioBufRackIn[0] = fAudioBufRackIn[1] = nullptr; | |||||
fAudioBufRackIn[0] = fAudioBufRackIn[1] = nullptr; | |||||
fAudioBufRackOut[0] = fAudioBufRackOut[1] = nullptr; | fAudioBufRackOut[0] = fAudioBufRackOut[1] = nullptr; | ||||
#endif | |||||
// just to make sure | // just to make sure | ||||
pData->options.forceStereo = true; | pData->options.forceStereo = true; | ||||
@@ -148,7 +141,7 @@ public: | |||||
CARLA_ASSERT(fAudioCountIn == 0); | CARLA_ASSERT(fAudioCountIn == 0); | ||||
CARLA_ASSERT(fAudioCountOut == 0); | CARLA_ASSERT(fAudioCountOut == 0); | ||||
CARLA_ASSERT(! fAudioIsReady); | CARLA_ASSERT(! fAudioIsReady); | ||||
CARLA_ASSERT(clientName != nullptr); | |||||
CARLA_ASSERT(clientName != nullptr && clientName[0] != '\0'); | |||||
carla_debug("CarlaEngineRtAudio::init(\"%s\")", clientName); | carla_debug("CarlaEngineRtAudio::init(\"%s\")", clientName); | ||||
RtAudio::StreamParameters iParams, oParams; | RtAudio::StreamParameters iParams, oParams; | ||||
@@ -396,13 +389,13 @@ public: | |||||
return "OSS"; | return "OSS"; | ||||
case RtAudio::UNIX_JACK: | case RtAudio::UNIX_JACK: | ||||
#if defined(CARLA_OS_WIN) | #if defined(CARLA_OS_WIN) | ||||
return "JACK with WinMM"; | |||||
return "JACK with WinMM"; | |||||
#elif defined(CARLA_OS_MAC) | #elif defined(CARLA_OS_MAC) | ||||
return "JACK with CoreMidi"; | |||||
return "JACK with CoreMidi"; | |||||
#elif defined(CARLA_OS_LINUX) | #elif defined(CARLA_OS_LINUX) | ||||
return "JACK with ALSA-MIDI"; | |||||
return "JACK with ALSA-MIDI"; | |||||
#else | #else | ||||
return "JACK (RtAudio)"; | |||||
return "JACK (RtAudio)"; | |||||
#endif | #endif | ||||
case RtAudio::MACOSX_CORE: | case RtAudio::MACOSX_CORE: | ||||
return "CoreAudio"; | return "CoreAudio"; | ||||
@@ -1503,15 +1496,6 @@ const char* const* CarlaEngine::getRtAudioApiDeviceNames(const unsigned int inde | |||||
RtAudio rtAudio(api); | RtAudio rtAudio(api); | ||||
if (gRetNames != nullptr) | |||||
{ | |||||
int i=0; | |||||
while (gRetNames[i] != nullptr) | |||||
delete[] gRetNames[i++]; | |||||
delete[] gRetNames; | |||||
gRetNames = nullptr; | |||||
} | |||||
const unsigned int devCount(rtAudio.getDeviceCount()); | const unsigned int devCount(rtAudio.getDeviceCount()); | ||||
if (devCount == 0) | if (devCount == 0) | ||||
@@ -1529,6 +1513,13 @@ const char* const* CarlaEngine::getRtAudioApiDeviceNames(const unsigned int inde | |||||
const unsigned int realDevCount(devNames.count()); | const unsigned int realDevCount(devNames.count()); | ||||
if (gRetNames != nullptr) | |||||
{ | |||||
for (int i=0; gRetNames[i] != nullptr; ++i) | |||||
delete[] gRetNames[i]; | |||||
delete[] gRetNames; | |||||
} | |||||
gRetNames = new const char*[realDevCount+1]; | gRetNames = new const char*[realDevCount+1]; | ||||
for (unsigned int i=0; i < realDevCount; ++i) | for (unsigned int i=0; i < realDevCount; ++i) | ||||
@@ -1570,9 +1561,9 @@ const EngineDriverDeviceInfo* CarlaEngine::getRtAudioDeviceInfo(const unsigned i | |||||
if (i == devCount) | if (i == devCount) | ||||
return nullptr; | return nullptr; | ||||
static EngineDriverDeviceInfo devInfo; | |||||
static uint32_t dummyBufferSizes[11] = { 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 0 }; | |||||
static double dummySampleRates[14] = { 22050.0, 32000.0, 44100.0, 48000.0, 88200.0, 96000.0, 176400.0, 192000.0, 0.0 }; | |||||
static EngineDriverDeviceInfo devInfo = { 0x0, nullptr, nullptr }; | |||||
static uint32_t dummyBufferSizes[11] = { 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 0 }; | |||||
static double dummySampleRates[14] = { 22050.0, 32000.0, 44100.0, 48000.0, 88200.0, 96000.0, 176400.0, 192000.0, 0.0 }; | |||||
// reset | // reset | ||||
devInfo.hints = 0x0; | devInfo.hints = 0x0; | ||||
@@ -1587,7 +1578,7 @@ const EngineDriverDeviceInfo* CarlaEngine::getRtAudioDeviceInfo(const unsigned i | |||||
if (size_t sampleRatesCount = rtAudioDevInfo.sampleRates.size()) | if (size_t sampleRatesCount = rtAudioDevInfo.sampleRates.size()) | ||||
{ | { | ||||
double* sampleRates(new double[sampleRatesCount+1]); | |||||
double* const sampleRates(new double[sampleRatesCount+1]); | |||||
for (size_t i=0; i < sampleRatesCount; ++i) | for (size_t i=0; i < sampleRatesCount; ++i) | ||||
sampleRates[i] = rtAudioDevInfo.sampleRates[i]; | sampleRates[i] = rtAudioDevInfo.sampleRates[i]; | ||||
@@ -23,10 +23,10 @@ OBJS = $(OBJSp) \ | |||||
CarlaEngineJack.cpp.o \ | CarlaEngineJack.cpp.o \ | ||||
CarlaEngineRtAudio.cpp.o | CarlaEngineRtAudio.cpp.o | ||||
# ifeq ($(HAVE_JUCE),true) | |||||
# OBJS += \ | |||||
# CarlaEngineJuce.cpp.o | |||||
# endif | |||||
ifeq ($(HAVE_JUCE),true) | |||||
OBJS += \ | |||||
CarlaEngineJuce.cpp.o | |||||
endif | |||||
HEADERS = \ | HEADERS = \ | ||||
../CarlaBackend.h ../CarlaEngine.hpp ../CarlaPlugin.hpp \ | ../CarlaBackend.h ../CarlaEngine.hpp ../CarlaPlugin.hpp \ | ||||
@@ -19,12 +19,13 @@ | |||||
#ifdef HAVE_JUCE | #ifdef HAVE_JUCE | ||||
#include "JuceHeader.h" | |||||
//#include "JuceHeader.h" | |||||
using juce::VSTPluginFormat; | |||||
//using juce::VSTPluginFormat; | |||||
CARLA_BACKEND_START_NAMESPACE | CARLA_BACKEND_START_NAMESPACE | ||||
#if 0 | |||||
class JucePlugin : public CarlaPlugin | class JucePlugin : public CarlaPlugin | ||||
{ | { | ||||
public: | public: | ||||
@@ -58,6 +59,7 @@ private: | |||||
CARLA_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(JucePlugin) | CARLA_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(JucePlugin) | ||||
}; | }; | ||||
#endif | |||||
CARLA_BACKEND_END_NAMESPACE | CARLA_BACKEND_END_NAMESPACE | ||||
@@ -69,7 +71,7 @@ CarlaPlugin* CarlaPlugin::newJuce(const Initializer& init) | |||||
{ | { | ||||
carla_debug("CarlaPlugin::newJuce({%p, \"%s\", \"%s\", \"%s\"})", init.engine, init.filename, init.name, init.label); | carla_debug("CarlaPlugin::newJuce({%p, \"%s\", \"%s\", \"%s\"})", init.engine, init.filename, init.name, init.label); | ||||
#ifdef HAVE_JUCE | |||||
#if 0 //def HAVE_JUCE | |||||
JucePlugin* const plugin(new JucePlugin(init.engine, init.id)); | JucePlugin* const plugin(new JucePlugin(init.engine, init.id)); | ||||
//if (! plugin->init(init.filename, init.name, init.label)) | //if (! plugin->init(init.filename, init.name, init.label)) | ||||
@@ -10,10 +10,21 @@ include ../Makefile.mk | |||||
# Common | # Common | ||||
LINK_FLAGS += $(shell pkg-config --libs liblo) | LINK_FLAGS += $(shell pkg-config --libs liblo) | ||||
LINK_FLAGS += $(QTCORE_LIBS) | LINK_FLAGS += $(QTCORE_LIBS) | ||||
LINK_FLAGS += $(QTXML_LIBS) | LINK_FLAGS += $(QTXML_LIBS) | ||||
LINK_FLAGS += $(RTMEMPOOL_LIBS) | LINK_FLAGS += $(RTMEMPOOL_LIBS) | ||||
ifeq ($(HAVE_JUCE),true) | |||||
LINK_FLAGS += $(JUCE_AUDIO_BASICS_LIBS) | |||||
LINK_FLAGS += $(JUCE_AUDIO_DEVICES_LIBS) | |||||
LINK_FLAGS += $(JUCE_CORE_LIBS) | |||||
# LINK_FLAGS += $(JUCE_DATA_STRUCTURES_LIBS) | |||||
LINK_FLAGS += $(JUCE_EVENTS_LIBS) | |||||
# LINK_FLAGS += $(JUCE_GRAPHICS_LIBS) | |||||
# LINK_FLAGS += $(JUCE_GUI_BASICS_LIBS) | |||||
endif | |||||
# -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
# Engine | # Engine | ||||
@@ -22,13 +33,6 @@ LINK_FLAGS += $(RTMIDI_LIBS) | |||||
LINK_FLAGS += $(JACKBRIDGE_LIBS) | LINK_FLAGS += $(JACKBRIDGE_LIBS) | ||||
# LINK_FLAGS += $(JUCE_AUDIO_BASICS_LIBS) | |||||
# LINK_FLAGS += $(JUCE_CORE_LIBS) | |||||
# LINK_FLAGS += $(JUCE_DATA_STRUCTURES_LIBS) | |||||
# LINK_FLAGS += $(JUCE_EVENTS_LIBS) | |||||
# LINK_FLAGS += $(JUCE_GRAPHICS_LIBS) | |||||
# LINK_FLAGS += $(JUCE_GUI_BASICS_LIBS) | |||||
# -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
# Plugin | # Plugin | ||||
@@ -79,24 +83,28 @@ LIBS += ../libcarla_plugin.a | |||||
LIBS += ../../modules/carla_native.a | LIBS += ../../modules/carla_native.a | ||||
LIBS += ../../modules/jackbridge.a | LIBS += ../../modules/jackbridge.a | ||||
# LIBS += ../../modules/juce_audio_basics.a | |||||
# LIBS += ../../modules/juce_core.a | |||||
# LIBS += ../../modules/juce_data_structures.a | |||||
# LIBS += ../../modules/juce_events.a | |||||
# LIBS += ../../modules/juce_graphics.a | |||||
# LIBS += ../../modules/juce_gui_basics.a | |||||
LIBS += ../../modules/rtaudio.a | LIBS += ../../modules/rtaudio.a | ||||
LIBS += ../../modules/rtmidi.a | LIBS += ../../modules/rtmidi.a | ||||
LIBS += ../../modules/rtmempool.a | LIBS += ../../modules/rtmempool.a | ||||
ifeq ($(HAVE_OPENGL),true) | |||||
LIBS += ../../modules/dgl.a | |||||
endif | |||||
ifeq ($(CARLA_PLUGIN_SUPPORT),true) | ifeq ($(CARLA_PLUGIN_SUPPORT),true) | ||||
LIBS += ../../modules/lilv.a | LIBS += ../../modules/lilv.a | ||||
endif | endif | ||||
ifeq ($(HAVE_JUCE),true) | |||||
LIBS += ../../modules/juce_audio_basics.a | |||||
LIBS += ../../modules/juce_audio_devices.a | |||||
LIBS += ../../modules/juce_core.a | |||||
# LIBS += ../../modules/juce_data_structures.a | |||||
LIBS += ../../modules/juce_events.a | |||||
# LIBS += ../../modules/juce_graphics.a | |||||
# LIBS += ../../modules/juce_gui_basics.a | |||||
endif | |||||
ifeq ($(HAVE_OPENGL),true) | |||||
LIBS += ../../modules/dgl.a | |||||
endif | |||||
# -------------------------------------------------------------- | # -------------------------------------------------------------- | ||||
OBJS = \ | OBJS = \ | ||||