diff --git a/c++/carla-backend/carla_engine.cpp b/c++/carla-backend/carla_engine.cpp index a73298b..65fdac9 100644 --- a/c++/carla-backend/carla_engine.cpp +++ b/c++/carla-backend/carla_engine.cpp @@ -569,7 +569,7 @@ void CarlaEngine::setOscBridgeData(const CarlaOscData* const oscData) // ----------------------------------------------------------------------- // protected calls -void CarlaEngine::bufferSizeChanged(uint32_t newBufferSize) +void CarlaEngine::bufferSizeChanged(const uint32_t newBufferSize) { qDebug("CarlaEngine::bufferSizeChanged(%i)", newBufferSize); @@ -585,12 +585,11 @@ void CarlaEngine::bufferSizeChanged(uint32_t newBufferSize) // ------------------------------------------------------------------------------------------------------------------- // Carla Engine Client -CarlaEngineClient::CarlaEngineClient(const CarlaEngineType& type_, const CarlaEngineClientNativeHandle& handle_) - : type(type_), - handle(handle_) +CarlaEngineClient::CarlaEngineClient(const CarlaEngineClientNativeHandle& handle_) + : handle(handle_) { qDebug("CarlaEngineClient::CarlaEngineClient()"); - CARLA_ASSERT(type != CarlaEngineTypeNull); + CARLA_ASSERT(handle.type != CarlaEngineTypeNull); m_active = false; } @@ -681,11 +680,11 @@ bool CarlaEngineClient::isOk() const #endif { #ifdef CARLA_ENGINE_JACK - if (type == CarlaEngineTypeJack) + if (handle.type == CarlaEngineTypeJack) return bool(handle.jackClient); #endif #ifdef CARLA_ENGINE_RTAUDIO - if (type == CarlaEngineTypeRtAudio) + if (handle.type == CarlaEngineTypeRtAudio) return bool(handle.rtAudioPtr); #endif } @@ -695,7 +694,7 @@ bool CarlaEngineClient::isOk() const const CarlaEngineBasePort* CarlaEngineClient::addPort(const CarlaEnginePortType portType, const char* const name, const bool isInput) { - qDebug("CarlaEngineClient::addPort(%i, \"%s\", %s)", type, name, bool2str(isInput)); + qDebug("CarlaEngineClient::addPort(%i, \"%s\", %s)", portType, name, bool2str(isInput)); CarlaEnginePortNativeHandle portHandle; #ifdef CARLA_ENGINE_JACK @@ -707,7 +706,7 @@ const CarlaEngineBasePort* CarlaEngineClient::addPort(const CarlaEnginePortType #endif { #ifdef CARLA_ENGINE_JACK - if (type == CarlaEngineTypeJack) + if (handle.type == CarlaEngineTypeJack) { switch (portType) { @@ -723,7 +722,7 @@ const CarlaEngineBasePort* CarlaEngineClient::addPort(const CarlaEnginePortType #endif #ifdef CARLA_ENGINE_RTAUDIO - if (type == CarlaEngineTypeRtAudio) + if (handle.type == CarlaEngineTypeRtAudio) { // TODO } @@ -740,7 +739,7 @@ const CarlaEngineBasePort* CarlaEngineClient::addPort(const CarlaEnginePortType return new CarlaEngineMidiPort(portHandle, isInput); } - qCritical("CarlaEngineClient::addPort(%i, \"%s\", %s) - invalid type", type, name, bool2str(isInput)); + qCritical("CarlaEngineClient::addPort(%i, \"%s\", %s) - invalid type", portType, name, bool2str(isInput)); return nullptr; } diff --git a/c++/carla-backend/carla_engine.h b/c++/carla-backend/carla_engine.h index 1e28cab..a14a734 100644 --- a/c++/carla-backend/carla_engine.h +++ b/c++/carla-backend/carla_engine.h @@ -52,7 +52,9 @@ const uint32_t CarlaEngineTimeBBT = 0x1; enum CarlaEngineType { CarlaEngineTypeNull, CarlaEngineTypeJack, - CarlaEngineTypeRtAudio + CarlaEngineTypeRtAudio, + CarlaEngineTypePluginLv2, + CarlaEngineTypePluginVst }; enum CarlaEnginePortType { @@ -96,7 +98,7 @@ struct CarlaEngineMidiEvent { size(0), data{0} {} #else - size(0) { memset(data, 0, sizeof(uint8_t)*4); } + size(0) { data[0] = data[1] = data[2] = data[3] = 0; } #endif }; @@ -136,6 +138,7 @@ struct CarlaTimeInfo { }; struct CarlaEngineClientNativeHandle { + CarlaEngineType type; #ifdef CARLA_ENGINE_JACK jack_client_t* jackClient; #endif @@ -145,6 +148,7 @@ struct CarlaEngineClientNativeHandle { CarlaEngineClientNativeHandle() { + type = CarlaEngineTypeNull; #ifdef CARLA_ENGINE_JACK jackClient = nullptr; #endif @@ -374,7 +378,7 @@ protected: double sampleRate; CarlaTimeInfo timeInfo; - void bufferSizeChanged(uint32_t newBufferSize); + void bufferSizeChanged(const uint32_t newBufferSize); private: CarlaCheckThread m_checkThread; @@ -404,7 +408,7 @@ private: class CarlaEngineClient { public: - CarlaEngineClient(const CarlaEngineType& type, const CarlaEngineClientNativeHandle& handle); + CarlaEngineClient(const CarlaEngineClientNativeHandle& handle); ~CarlaEngineClient(); void activate(); @@ -417,7 +421,6 @@ public: private: bool m_active; - const CarlaEngineType type; const CarlaEngineClientNativeHandle handle; }; @@ -489,7 +492,6 @@ public: bool init(const char* const clientName); bool close(); - bool isOnAudioThread(); bool isOffline(); bool isRunning(); diff --git a/c++/carla-backend/carla_engine_jack.cpp b/c++/carla-backend/carla_engine_jack.cpp index eecab37..4fc2bca 100644 --- a/c++/carla-backend/carla_engine_jack.cpp +++ b/c++/carla-backend/carla_engine_jack.cpp @@ -227,6 +227,7 @@ bool CarlaEngineJack::isRunning() CarlaEngineClient* CarlaEngineJack::addClient(CarlaPlugin* const plugin) { CarlaEngineClientNativeHandle handle; + handle.type = type; #ifndef BUILD_BRIDGE if (carlaOptions.processMode == PROCESS_MODE_SINGLE_CLIENT) @@ -243,7 +244,7 @@ CarlaEngineClient* CarlaEngineJack::addClient(CarlaPlugin* const plugin) //{ //} - return new CarlaEngineClient(CarlaEngineTypeJack, handle); + return new CarlaEngineClient(handle); } // ------------------------------------------------------------------------------------------------------------------- diff --git a/c++/carla-backend/carla_engine_rtaudio.cpp b/c++/carla-backend/carla_engine_rtaudio.cpp index 1408819..536a824 100644 --- a/c++/carla-backend/carla_engine_rtaudio.cpp +++ b/c++/carla-backend/carla_engine_rtaudio.cpp @@ -143,6 +143,7 @@ bool CarlaEngineRtAudio::isRunning() CarlaEngineClient* CarlaEngineRtAudio::addClient(CarlaPlugin* const plugin) { CarlaEngineClientNativeHandle handle; + handle.type = type; // unsigned int rtBufferFrames = getBufferSize(); @@ -163,7 +164,7 @@ CarlaEngineClient* CarlaEngineRtAudio::addClient(CarlaPlugin* const plugin) // return false; // } - return new CarlaEngineClient(CarlaEngineTypeRtAudio, handle); + return new CarlaEngineClient(handle); Q_UNUSED(plugin); } diff --git a/c++/carla-backend/qtcreator/carla-backend.pro b/c++/carla-backend/qtcreator/carla-backend.pro index e778f22..185a9cb 100644 --- a/c++/carla-backend/qtcreator/carla-backend.pro +++ b/c++/carla-backend/qtcreator/carla-backend.pro @@ -15,7 +15,7 @@ VERSION = 0.5.0 SOURCES = \ ../carla_backend_standalone.cpp \ -# ../carla_backend_lv2.cpp \ + ../carla_backend_vst.cpp \ ../carla_bridge.cpp \ ../carla_engine.cpp \ ../carla_engine_jack.cpp \ @@ -73,6 +73,7 @@ DEFINES += DEBUG NDEBUG DEFINES += CARLA_ENGINE_JACK DEFINES += CARLA_ENGINE_RTAUDIO HAVE_GETTIMEOFDAY __LINUX_ALSA__ __LINUX_ALSASEQ__ __LINUX_PULSE__ __RTAUDIO_DEBUG__ __RTMIDI_DEBUG__ DEFINES += CARLA_ENGINE_LV2 +DEFINES += CARLA_ENGINE_VST DEFINES += HAVE_SUIL DEFINES += WANT_LADSPA WANT_DSSI WANT_LV2 WANT_VST DEFINES += WANT_FLUIDSYNTH WANT_LINUXSAMPLER