/* * Carla Csound Plugin * Copyright (C) 2013-2014 Filipe Coelho * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of * the License, or any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * For a full copy of the GNU General Public License see the doc/GPL.txt file. */ #include "CarlaPluginInternal.hpp" #include "CarlaEngine.hpp" //#define WANT_CSOUND 1 #ifdef WANT_CSOUND //#include "CarlaVstUtils.hpp" CARLA_BACKEND_START_NAMESPACE #if 0 } #endif class CsoundPlugin : public CarlaPlugin { public: CsoundPlugin(CarlaEngine* const engine, const unsigned short id) : CarlaPlugin(engine, id) { carla_debug("CsoundPlugin::CsoundPlugin(%p, %i)", engine, id); } ~CsoundPlugin() override { carla_debug("CsoundPlugin::~CsoundPlugin()"); pData->singleMutex.lock(); pData->masterMutex.lock(); if (pData->client != nullptr && pData->client->isActive()) pData->client->deactivate(); } // ------------------------------------------------------------------- // Information (base) PluginType getType() const noexcept override { return PLUGIN_CSOUND; } void reload() override { CARLA_SAFE_ASSERT_RETURN(pData->engine != nullptr,); carla_debug("CsoundPlugin::reload() - start"); bufferSizeChanged(pData->engine->getBufferSize()); reloadPrograms(true); carla_debug("CsoundPlugin::reload() - end"); } void process(float** const inBuffer, float** const outBuffer, const uint32_t frames) override { } private: CARLA_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR(CsoundPlugin) }; CARLA_BACKEND_END_NAMESPACE #endif // ----------------------------------------------------------------------- CARLA_BACKEND_START_NAMESPACE CarlaPlugin* CarlaPlugin::newCsound(const Initializer& init) { carla_debug("CarlaPlugin::newCsound({%p, \"%s\", \"%s\", \"%s\", " P_INT64 "})", init.engine, init.filename, init.name, init.label, init.uniqueId); #ifdef WANT_CSOUND CsoundPlugin* const plugin(new CsoundPlugin(init.engine, init.id)); //if (! plugin->init(init.filename, init.name, init.label)) { delete plugin; return nullptr; } plugin->reload(); if (init.engine->getProccessMode() == ENGINE_PROCESS_MODE_CONTINUOUS_RACK && ! plugin->canRunInRack()) { init.engine->setLastError("Carla's rack mode can only work with Stereo VST3 plugins, sorry!"); delete plugin; return nullptr; } return plugin; #else init.engine->setLastError("VST3 support not available"); return nullptr; #endif } CarlaPlugin* CarlaPlugin::newFileCSD(const Initializer& init) { carla_debug("CarlaPlugin::newFileCSD({%p, \"%s\", \"%s\", \"%s\"})", init.engine, init.filename, init.name, init.label); return newCsound(init); } CARLA_BACKEND_END_NAMESPACE // -----------------------------------------------------------------------