@@ -13,6 +13,8 @@ | |||
namespace rack { | |||
struct Plugin; | |||
typedef void (*InitCallback)(Plugin *); | |||
} | |||
typedef void (*vst2_handle_ui_param_fxn_t) (int uniqueParamId, float normValue); | |||
@@ -30,7 +32,7 @@ extern void vst2_queue_param_sync (int _uniqueParamId, float _value, bool _bNorm | |||
#ifdef _MSC_VER | |||
#define RACK_PLUGIN_INIT(pluginname) extern "C" void init_plugin_##pluginname##(rack::Plugin *p) | |||
#else | |||
#define RACK_PLUGIN_INIT(pluginname) extern "C" void CONCAT(init_plugin_, pluginname) (rack::Plugin *p) | |||
#define RACK_PLUGIN_INIT(pluginname) static void loc_init_plugin(rack::Plugin *p); extern "C" { void CONCAT(init_plugin_, pluginname) (rack::Plugin *p) { loc_init_plugin(p); } } static void loc_init_plugin(rack::Plugin *p) | |||
#endif // _MSC_VER | |||
#define RACK_PLUGIN_INIT_ID() RACK_PLUGIN_INIT_ID_INTERNAL | |||
@@ -80,7 +82,7 @@ namespace rack { \ | |||
seed_initialized = p->json.seed_initialized; \ | |||
} \ | |||
} \ | |||
RACK_PLUGIN_EXPORT void init_plugin(rack::Plugin *p) | |||
static void loc_init_plugin(rack::Plugin *p); extern "C" { RACK_PLUGIN_EXPORT void init_plugin(rack::Plugin *p) { loc_init_plugin(p); } } static void loc_init_plugin(rack::Plugin *p) | |||
#define RACK_PLUGIN_INIT_ID() \ | |||
rack::plugin = p; \ | |||
rack::plugin->set_tls_globals_fxn = &rack::loc_set_tls_globals; \ | |||
@@ -95,7 +97,7 @@ RACK_PLUGIN_EXPORT void init_plugin(rack::Plugin *p) | |||
#ifdef _MSC_VER | |||
#define RACK_PLUGIN_INIT(pluginname) extern "C" void init_plugin_##pluginname##(rack::Plugin *p) | |||
#else | |||
#define RACK_PLUGIN_INIT(pluginname) extern "C" void CONCAT(init_plugin_, pluginname) (rack::Plugin *p) | |||
#define RACK_PLUGIN_INIT(pluginname) static void loc_init_plugin(rack::Plugin *p); extern "C" { void CONCAT(init_plugin_, pluginname) (rack::Plugin *p) { loc_init_plugin(p); } } static void loc_init_plugin(rack::Plugin *p) | |||
#endif | |||
#define RACK_PLUGIN_INIT_ID() RACK_PLUGIN_INIT_ID_INTERNAL | |||
#endif // RACK_PLUGIN_SHARED | |||
@@ -106,7 +106,8 @@ LIB_OBJ_WIN= \ | |||
src/util/dirent_win32/dirent.o \ | |||
dep/lglw/lglw_windows.o \ | |||
dep/lglw/lglw_windows_cpp.o \ | |||
dep/osdialog/osdialog_win.o | |||
dep/osdialog/osdialog_win.o \ | |||
src/plugin_static.o | |||
LIB_OBJ_LINUX= \ | |||
dep/lglw/lglw_linux.o \ | |||
@@ -8,7 +8,7 @@ include dep/yac/install_linux.mk | |||
TARGET_BASENAME=Rack | |||
EXTRAFLAGS= -DVERSION=0.6.1 -DARCH_LIN -D_USE_MATH_DEFINES -DRACK_HOST -DUSE_VST2 -Iinclude/ -Idep/include -Idep/ | |||
EXTRAFLAGS+= -DSKIP_STATIC_MODULES | |||
#EXTRAFLAGS+= -DSKIP_STATIC_MODULES | |||
# for osdialog: | |||
EXTRAFLAGS+= `pkg-config gtk+-2.0 --cflags` | |||
@@ -22,6 +22,10 @@ PLAF_OBJ= | |||
include make.objects | |||
# compile but link this one in a different order than the other objects | |||
# (the GNU linker is very unforgiving in this regard) | |||
BIN_RULES+= src/plugin_static.o | |||
ALL_OBJ=$(LIB_OBJ) $(LIB_OBJ_LINUX) | |||
include dep/yac/staticlib_linux.mk |
@@ -10,6 +10,14 @@ EXTRAFLAGS+= | |||
EXTRALIBS+= ../../../Rack_shared.a | |||
# ../../../../dep/lib/linux_gcc/ | |||
ifeq ($(BUILD_64),y) | |||
EXTRALIBS_DEP= $(VSVR_BASE_DIR)/dep/lib/linux_gcc/x64 | |||
else | |||
EXTRALIBS_DEP= $(VSVR_BASE_DIR)/dep/lib/linux_gcc/x86 | |||
endif | |||
EXTRALIBS+= $(EXTRALIBS_DEP)/libspeexdsp.a $(EXTRALIBS_DEP)/glew.a $(EXTRALIBS_DEP)/jansson.a `pkg-config gtk+-2.0 --libs` -lGL | |||
PLAF_OBJ+= | |||
EXTRAFLAGS+= -DARCH_LIN | |||
@@ -3,7 +3,7 @@ | |||
#ifndef RACK_PLUGIN_SHARED | |||
using namespace rack; | |||
RACK_PLUGIN_INIT(Core); | |||
// // RACK_PLUGIN_INIT(Core); | |||
struct GridChoice : LedDisplayChoice { | |||
virtual void setId(int id) {} | |||
@@ -26,12 +26,14 @@ namespace rack { | |||
void assetInit(bool devMode) { | |||
#ifndef USE_VST2 | |||
if (devMode) { | |||
// Use current working directory if running in development mode | |||
global->asset.globalDir = "."; | |||
global->asset.localDir = "."; | |||
return; | |||
} | |||
#endif // USE_VST2 | |||
#if ARCH_MAC | |||
CFBundleRef bundle = CFBundleGetMainBundle(); | |||
@@ -69,6 +71,7 @@ void assetInit(bool devMode) { | |||
#endif | |||
#if ARCH_LIN | |||
#ifndef USE_VST2 | |||
// TODO For now, users should launch Rack from their terminal in the global directory | |||
global->asset.globalDir = "."; | |||
@@ -81,6 +84,10 @@ void assetInit(bool devMode) { | |||
} | |||
global->asset.localDir = homeBuf; | |||
global->asset.localDir += "/.Rack"; | |||
#else | |||
global->asset.globalDir = global->vst2.program_dir; | |||
global->asset.localDir = global->vst2.program_dir; | |||
#endif // USE_VST2 | |||
#endif | |||
systemCreateDirectory(global->asset.localDir); | |||
} | |||
@@ -42,14 +42,14 @@ | |||
#endif | |||
namespace rack { | |||
extern "C" { extern void init_plugin_Core (rack::Plugin *p); } | |||
namespace rack { | |||
typedef void (*InitCallback)(Plugin *); | |||
#ifdef USE_VST2 | |||
#ifndef RACK_PLUGIN | |||
static void vst2_load_static_rack_plugins(void); | |||
extern void vst2_load_static_rack_plugins(void); | |||
#endif // RACK_PLUGIN | |||
#endif // USE_VST2 | |||
@@ -74,18 +74,21 @@ static bool loadPlugin(std::string path, bool _bFX) { | |||
#ifdef RACK_HOST | |||
std::string libraryFilename; | |||
#if ARCH_LIN | |||
libraryFilename = path + "/" + "plugin.so"; | |||
libraryFilename = path + "/" + "plugin.so" + (_bFX ? ".fx" : ".instr"); | |||
#elif ARCH_WIN | |||
libraryFilename = path + "/" + "plugin.dll" + (_bFX ? ".fx" : ".instr"); | |||
#elif ARCH_MAC | |||
libraryFilename = path + "/" + "plugin.dylib"; | |||
libraryFilename = path + "/" + "plugin.dylib" + (_bFX ? ".fx" : ".instr"); | |||
#endif | |||
// Check file existence | |||
if (!systemIsFile(libraryFilename)) { | |||
warn("Plugin file %s does not exist", libraryFilename.c_str()); | |||
// warn("Plugin file %s does not exist", libraryFilename.c_str()); | |||
return false; | |||
} | |||
else { | |||
info("trying to load shared plugin file %s", libraryFilename.c_str()); | |||
} | |||
// Load dynamic/shared library | |||
#if ARCH_WIN | |||
@@ -600,171 +603,6 @@ Model *pluginGetModel(std::string pluginSlug, std::string modelSlug) { | |||
} | |||
#ifdef USE_VST2 | |||
#ifndef RACK_PLUGIN | |||
#ifndef SKIP_STATIC_MODULES | |||
extern "C" { | |||
extern void init_plugin_21kHz (rack::Plugin *p); | |||
extern void init_plugin_AmalgamatedHarmonics (rack::Plugin *p); | |||
extern void init_plugin_Alikins (rack::Plugin *p); | |||
extern void init_plugin_alto777_LFSR (rack::Plugin *p); | |||
extern void init_plugin_AS (rack::Plugin *p); | |||
extern void init_plugin_AudibleInstruments (rack::Plugin *p); | |||
extern void init_plugin_Autodafe (rack::Plugin *p); | |||
extern void init_plugin_BaconMusic (rack::Plugin *p); | |||
extern void init_plugin_Befaco (rack::Plugin *p); | |||
extern void init_plugin_Bidoo (rack::Plugin *p); | |||
extern void init_plugin_Bogaudio (rack::Plugin *p); | |||
// extern void init_plugin_bsp (rack::Plugin *p); // contains GPLv3 code from Ob-Xd (Obxd_VCF) | |||
// extern void init_plugin_BOKONTEPByteBeatMachine (rack::Plugin *p); // unstable | |||
extern void init_plugin_CastleRocktronics (rack::Plugin *p); | |||
extern void init_plugin_cf (rack::Plugin *p); | |||
extern void init_plugin_com_soundchasing_stochasm (rack::Plugin *p); | |||
extern void init_plugin_computerscare (rack::Plugin *p); | |||
//extern void init_plugin_dBiz (rack::Plugin *p); // now a DLL (13Jul2018) | |||
extern void init_plugin_DHE_Modules (rack::Plugin *p); | |||
extern void init_plugin_DrumKit (rack::Plugin *p); | |||
extern void init_plugin_ErraticInstruments (rack::Plugin *p); | |||
extern void init_plugin_ESeries (rack::Plugin *p); | |||
extern void init_plugin_FrankBussFormula (rack::Plugin *p); | |||
extern void init_plugin_FrozenWasteland (rack::Plugin *p); | |||
extern void init_plugin_Fundamental (rack::Plugin *p); | |||
extern void init_plugin_Geodesics (rack::Plugin *p); | |||
extern void init_plugin_Gratrix (rack::Plugin *p); | |||
extern void init_plugin_HetrickCV (rack::Plugin *p); | |||
extern void init_plugin_huaba (rack::Plugin *p); | |||
extern void init_plugin_ImpromptuModular (rack::Plugin *p); | |||
extern void init_plugin_JE (rack::Plugin *p); | |||
extern void init_plugin_JW_Modules (rack::Plugin *p); | |||
extern void init_plugin_Koralfx (rack::Plugin *p); | |||
extern void init_plugin_LindenbergResearch (rack::Plugin *p); | |||
extern void init_plugin_LOGinstruments (rack::Plugin *p); | |||
extern void init_plugin_mental (rack::Plugin *p); | |||
extern void init_plugin_ML_modules (rack::Plugin *p); | |||
extern void init_plugin_moDllz (rack::Plugin *p); | |||
extern void init_plugin_modular80 (rack::Plugin *p); | |||
extern void init_plugin_mscHack (rack::Plugin *p); | |||
extern void init_plugin_mtsch_plugins (rack::Plugin *p); | |||
extern void init_plugin_NauModular (rack::Plugin *p); | |||
extern void init_plugin_Nohmad (rack::Plugin *p); | |||
extern void init_plugin_Ohmer (rack::Plugin *p); | |||
// extern void init_plugin_ParableInstruments (rack::Plugin *p); // alternative "Clouds" module (crashes) | |||
extern void init_plugin_PG_Instruments (rack::Plugin *p); | |||
extern void init_plugin_PvC (rack::Plugin *p); | |||
extern void init_plugin_Qwelk (rack::Plugin *p); | |||
extern void init_plugin_RJModules (rack::Plugin *p); | |||
extern void init_plugin_SerialRacker (rack::Plugin *p); | |||
extern void init_plugin_SonusModular (rack::Plugin *p); | |||
extern void init_plugin_Southpole (rack::Plugin *p); | |||
extern void init_plugin_Southpole_parasites (rack::Plugin *p); | |||
extern void init_plugin_squinkylabs_plug1 (rack::Plugin *p); | |||
extern void init_plugin_SubmarineFree (rack::Plugin *p); | |||
extern void init_plugin_SynthKit (rack::Plugin *p); | |||
extern void init_plugin_Template (rack::Plugin *p); | |||
extern void init_plugin_TheXOR (rack::Plugin *p); | |||
extern void init_plugin_trowaSoft (rack::Plugin *p); | |||
extern void init_plugin_unless_modules (rack::Plugin *p); | |||
extern void init_plugin_Valley (rack::Plugin *p); | |||
// extern void init_plugin_VultModules (rack::Plugin *p); | |||
} | |||
#endif // SKIP_STATIC_MODULES | |||
static void vst2_load_static_rack_plugin(const char *_name, InitCallback _initCallback) { | |||
std::string path = assetStaticPlugin(_name); | |||
// Construct and initialize Plugin instance | |||
Plugin *plugin = new Plugin(); | |||
plugin->path = path; | |||
plugin->handle = NULL; | |||
_initCallback(plugin); | |||
#if 0 | |||
// Reject plugin if slug already exists | |||
Plugin *oldPlugin = pluginGetPlugin(plugin->slug); | |||
if (oldPlugin) { | |||
warn("Plugin \"%s\" is already loaded, not attempting to load it again", plugin->slug.c_str()); | |||
// TODO | |||
// Fix memory leak with `plugin` here | |||
return false; | |||
} | |||
#endif | |||
// Add plugin to list | |||
global->plugin.gPlugins.push_back(plugin); | |||
info("vcvrack: Loaded static plugin %s %s", plugin->slug.c_str(), plugin->version.c_str()); | |||
} | |||
void vst2_load_static_rack_plugins(void) { | |||
#ifndef SKIP_STATIC_MODULES | |||
vst2_load_static_rack_plugin("21kHz", &init_plugin_21kHz); | |||
vst2_load_static_rack_plugin("AmalgamatedHarmonics", &init_plugin_AmalgamatedHarmonics); | |||
vst2_load_static_rack_plugin("Alikins", &init_plugin_Alikins); | |||
vst2_load_static_rack_plugin("alto777_LFSR", &init_plugin_alto777_LFSR); | |||
vst2_load_static_rack_plugin("AS", &init_plugin_AS); | |||
vst2_load_static_rack_plugin("AudibleInstruments", &init_plugin_AudibleInstruments); | |||
vst2_load_static_rack_plugin("Autodafe", &init_plugin_Autodafe); | |||
vst2_load_static_rack_plugin("BaconMusic", &init_plugin_BaconMusic); | |||
vst2_load_static_rack_plugin("Befaco", &init_plugin_Befaco); | |||
vst2_load_static_rack_plugin("Bidoo", &init_plugin_Bidoo); | |||
vst2_load_static_rack_plugin("Bogaudio", &init_plugin_Bogaudio); | |||
// vst2_load_static_rack_plugin("bsp", &init_plugin_bsp); // contains GPLv3 code from Ob-Xd (Obxd_VCF) | |||
// vst2_load_static_rack_plugin("BOKONTEPByteBeatMachine", &init_plugin_BOKONTEPByteBeatMachine); | |||
vst2_load_static_rack_plugin("CastleRocktronics", &init_plugin_CastleRocktronics); | |||
vst2_load_static_rack_plugin("cf", &init_plugin_cf); | |||
vst2_load_static_rack_plugin("com_soundchasing_stochasm", &init_plugin_com_soundchasing_stochasm); | |||
vst2_load_static_rack_plugin("computerscare", &init_plugin_computerscare); | |||
// vst2_load_static_rack_plugin("dBiz", &init_plugin_dBiz); // now a DLL (13Jul2018) | |||
vst2_load_static_rack_plugin("DHE-Modules", &init_plugin_DHE_Modules); | |||
vst2_load_static_rack_plugin("DrumKit", &init_plugin_DrumKit); | |||
vst2_load_static_rack_plugin("ErraticInstruments", &init_plugin_ErraticInstruments); | |||
vst2_load_static_rack_plugin("ESeries", &init_plugin_ESeries); | |||
vst2_load_static_rack_plugin("FrankBussFormula", &init_plugin_FrankBussFormula); | |||
vst2_load_static_rack_plugin("FrozenWasteland", &init_plugin_FrozenWasteland); | |||
vst2_load_static_rack_plugin("Fundamental", &init_plugin_Fundamental); | |||
vst2_load_static_rack_plugin("Geodesics", &init_plugin_Geodesics); | |||
vst2_load_static_rack_plugin("Gratrix", &init_plugin_Gratrix); | |||
vst2_load_static_rack_plugin("HetrickCV", &init_plugin_HetrickCV); | |||
vst2_load_static_rack_plugin("huaba", &init_plugin_huaba); | |||
vst2_load_static_rack_plugin("ImpromptuModular", &init_plugin_ImpromptuModular); | |||
vst2_load_static_rack_plugin("JE", &init_plugin_JE); | |||
vst2_load_static_rack_plugin("JW_Modules", &init_plugin_JW_Modules); | |||
vst2_load_static_rack_plugin("Koralfx-Modules", &init_plugin_Koralfx); | |||
vst2_load_static_rack_plugin("LindenbergResearch", &init_plugin_LindenbergResearch); | |||
vst2_load_static_rack_plugin("LOGinstruments", &init_plugin_LOGinstruments); | |||
vst2_load_static_rack_plugin("mental", &init_plugin_mental); | |||
vst2_load_static_rack_plugin("ML_modules", &init_plugin_ML_modules); | |||
vst2_load_static_rack_plugin("moDllz", &init_plugin_moDllz); | |||
vst2_load_static_rack_plugin("modular80", &init_plugin_modular80); | |||
vst2_load_static_rack_plugin("mscHack", &init_plugin_mscHack); | |||
vst2_load_static_rack_plugin("mtsch_plugins", &init_plugin_mtsch_plugins); | |||
vst2_load_static_rack_plugin("NauModular", &init_plugin_NauModular); | |||
vst2_load_static_rack_plugin("Nohmad", &init_plugin_Nohmad); | |||
vst2_load_static_rack_plugin("Ohmer", &init_plugin_Ohmer); | |||
// vst2_load_static_rack_plugin("ParableInstruments", &init_plugin_ParableInstruments); | |||
vst2_load_static_rack_plugin("PG_Instruments", &init_plugin_PG_Instruments); | |||
vst2_load_static_rack_plugin("PvC", &init_plugin_PvC); | |||
vst2_load_static_rack_plugin("Qwelk", &init_plugin_Qwelk); | |||
vst2_load_static_rack_plugin("RJModules", &init_plugin_RJModules); | |||
vst2_load_static_rack_plugin("SerialRacker", &init_plugin_SerialRacker); | |||
vst2_load_static_rack_plugin("SonusModular", &init_plugin_SonusModular); | |||
vst2_load_static_rack_plugin("Southpole", &init_plugin_Southpole); | |||
vst2_load_static_rack_plugin("Southpole_parasites", &init_plugin_Southpole_parasites); | |||
vst2_load_static_rack_plugin("squinkylabs-plug1", &init_plugin_squinkylabs_plug1); | |||
vst2_load_static_rack_plugin("SubmarineFree", &init_plugin_SubmarineFree); | |||
vst2_load_static_rack_plugin("SynthKit", &init_plugin_SynthKit); | |||
vst2_load_static_rack_plugin("Template", &init_plugin_Template); | |||
vst2_load_static_rack_plugin("TheXOR", &init_plugin_TheXOR); | |||
vst2_load_static_rack_plugin("trowaSoft", &init_plugin_trowaSoft); | |||
vst2_load_static_rack_plugin("unless_modules", &init_plugin_unless_modules); | |||
vst2_load_static_rack_plugin("Valley", &init_plugin_Valley); | |||
// vst2_load_static_rack_plugin("VultModules", &init_plugin_VultModules); | |||
#endif // SKIP_STATIC_MODULES | |||
} | |||
#endif // RACK_PLUGIN | |||
#endif // USE_VST2 | |||
} // namespace rack | |||
using namespace rack; | |||
@@ -0,0 +1,218 @@ | |||
#include "global_pre.hpp" | |||
#include "plugin.hpp" | |||
#include "Core/Core.hpp" | |||
#include "app.hpp" | |||
#include "asset.hpp" | |||
#include "util/request.hpp" | |||
#include "osdialog.h" | |||
#include <stdio.h> | |||
#include <assert.h> | |||
#include <string.h> | |||
#ifdef YAC_POSIX | |||
#include <unistd.h> | |||
#include <sys/types.h> | |||
#include <sys/stat.h> | |||
#include <sys/param.h> // for MAXPATHLEN | |||
#include <fcntl.h> | |||
#include <dirent.h> | |||
#else | |||
#include "util/dirent_win32/dirent.h" | |||
#endif // YAC_POSIX | |||
#include <thread> | |||
#include <stdexcept> | |||
#include "global.hpp" | |||
#include "global_ui.hpp" | |||
#ifndef USE_VST2 | |||
#define ZIP_STATIC | |||
#include <zip.h> | |||
#endif // USE_VST2 | |||
#include <jansson.h> | |||
#if ARCH_WIN | |||
#include <windows.h> | |||
#include <direct.h> | |||
#define mkdir(_dir, _perms) _mkdir(_dir) | |||
#else | |||
#include <dlfcn.h> | |||
#endif | |||
namespace rack { | |||
extern Plugin *pluginGetPlugin (std::string pluginSlug); | |||
#ifdef USE_VST2 | |||
#ifndef RACK_PLUGIN | |||
#ifndef SKIP_STATIC_MODULES | |||
extern "C" { | |||
extern void init_plugin_21kHz (rack::Plugin *p); | |||
extern void init_plugin_AmalgamatedHarmonics (rack::Plugin *p); | |||
extern void init_plugin_Alikins (rack::Plugin *p); | |||
extern void init_plugin_alto777_LFSR (rack::Plugin *p); | |||
extern void init_plugin_AS (rack::Plugin *p); | |||
extern void init_plugin_AudibleInstruments (rack::Plugin *p); | |||
extern void init_plugin_Autodafe (rack::Plugin *p); | |||
extern void init_plugin_BaconMusic (rack::Plugin *p); | |||
extern void init_plugin_Befaco (rack::Plugin *p); | |||
extern void init_plugin_Bidoo (rack::Plugin *p); | |||
extern void init_plugin_Bogaudio (rack::Plugin *p); | |||
// extern void init_plugin_bsp (rack::Plugin *p); // contains GPLv3 code from Ob-Xd (Obxd_VCF) | |||
// extern void init_plugin_BOKONTEPByteBeatMachine (rack::Plugin *p); // unstable | |||
extern void init_plugin_CastleRocktronics (rack::Plugin *p); | |||
extern void init_plugin_cf (rack::Plugin *p); | |||
extern void init_plugin_com_soundchasing_stochasm (rack::Plugin *p); | |||
extern void init_plugin_computerscare (rack::Plugin *p); | |||
//extern void init_plugin_dBiz (rack::Plugin *p); // now a DLL (13Jul2018) | |||
extern void init_plugin_DHE_Modules (rack::Plugin *p); | |||
extern void init_plugin_DrumKit (rack::Plugin *p); | |||
extern void init_plugin_ErraticInstruments (rack::Plugin *p); | |||
extern void init_plugin_ESeries (rack::Plugin *p); | |||
extern void init_plugin_FrankBussFormula (rack::Plugin *p); | |||
extern void init_plugin_FrozenWasteland (rack::Plugin *p); | |||
extern void init_plugin_Fundamental (rack::Plugin *p); | |||
extern void init_plugin_Geodesics (rack::Plugin *p); | |||
extern void init_plugin_Gratrix (rack::Plugin *p); | |||
extern void init_plugin_HetrickCV (rack::Plugin *p); | |||
extern void init_plugin_huaba (rack::Plugin *p); | |||
extern void init_plugin_ImpromptuModular (rack::Plugin *p); | |||
extern void init_plugin_JE (rack::Plugin *p); | |||
extern void init_plugin_JW_Modules (rack::Plugin *p); | |||
extern void init_plugin_Koralfx (rack::Plugin *p); | |||
extern void init_plugin_LindenbergResearch (rack::Plugin *p); | |||
extern void init_plugin_LOGinstruments (rack::Plugin *p); | |||
extern void init_plugin_mental (rack::Plugin *p); | |||
extern void init_plugin_ML_modules (rack::Plugin *p); | |||
extern void init_plugin_moDllz (rack::Plugin *p); | |||
extern void init_plugin_modular80 (rack::Plugin *p); | |||
extern void init_plugin_mscHack (rack::Plugin *p); | |||
extern void init_plugin_mtsch_plugins (rack::Plugin *p); | |||
extern void init_plugin_NauModular (rack::Plugin *p); | |||
extern void init_plugin_Nohmad (rack::Plugin *p); | |||
extern void init_plugin_Ohmer (rack::Plugin *p); | |||
// extern void init_plugin_ParableInstruments (rack::Plugin *p); // alternative "Clouds" module (crashes) | |||
extern void init_plugin_PG_Instruments (rack::Plugin *p); | |||
extern void init_plugin_PvC (rack::Plugin *p); | |||
extern void init_plugin_Qwelk (rack::Plugin *p); | |||
extern void init_plugin_RJModules (rack::Plugin *p); | |||
extern void init_plugin_SerialRacker (rack::Plugin *p); | |||
extern void init_plugin_SonusModular (rack::Plugin *p); | |||
extern void init_plugin_Southpole (rack::Plugin *p); | |||
extern void init_plugin_Southpole_parasites (rack::Plugin *p); | |||
extern void init_plugin_squinkylabs_plug1 (rack::Plugin *p); | |||
extern void init_plugin_SubmarineFree (rack::Plugin *p); | |||
extern void init_plugin_SynthKit (rack::Plugin *p); | |||
extern void init_plugin_Template (rack::Plugin *p); | |||
extern void init_plugin_TheXOR (rack::Plugin *p); | |||
extern void init_plugin_trowaSoft (rack::Plugin *p); | |||
extern void init_plugin_unless_modules (rack::Plugin *p); | |||
extern void init_plugin_Valley (rack::Plugin *p); | |||
// extern void init_plugin_VultModules (rack::Plugin *p); | |||
} | |||
#endif // SKIP_STATIC_MODULES | |||
static void vst2_load_static_rack_plugin(const char *_name, InitCallback _initCallback) { | |||
std::string path = assetStaticPlugin(_name); | |||
// Construct and initialize Plugin instance | |||
Plugin *plugin = new Plugin(); | |||
plugin->path = path; | |||
plugin->handle = NULL; | |||
_initCallback(plugin); | |||
#if 0 | |||
// Reject plugin if slug already exists | |||
Plugin *oldPlugin = pluginGetPlugin(plugin->slug); | |||
if (oldPlugin) { | |||
warn("Plugin \"%s\" is already loaded, not attempting to load it again", plugin->slug.c_str()); | |||
// TODO | |||
// Fix memory leak with `plugin` here | |||
return false; | |||
} | |||
#endif | |||
// Add plugin to list | |||
global->plugin.gPlugins.push_back(plugin); | |||
info("vcvrack: Loaded static plugin %s %s", plugin->slug.c_str(), plugin->version.c_str()); | |||
} | |||
void vst2_load_static_rack_plugins(void) { | |||
#ifndef SKIP_STATIC_MODULES | |||
printf("[dbg] vst2_load_static_rack_plugins: ENTER\n"); | |||
#if 1 | |||
vst2_load_static_rack_plugin("21kHz", &init_plugin_21kHz); | |||
vst2_load_static_rack_plugin("AmalgamatedHarmonics", &init_plugin_AmalgamatedHarmonics); | |||
vst2_load_static_rack_plugin("Alikins", &init_plugin_Alikins); | |||
vst2_load_static_rack_plugin("alto777_LFSR", &init_plugin_alto777_LFSR); | |||
vst2_load_static_rack_plugin("AS", &init_plugin_AS); | |||
vst2_load_static_rack_plugin("AudibleInstruments", &init_plugin_AudibleInstruments); | |||
vst2_load_static_rack_plugin("Autodafe", &init_plugin_Autodafe); | |||
vst2_load_static_rack_plugin("BaconMusic", &init_plugin_BaconMusic); | |||
vst2_load_static_rack_plugin("Befaco", &init_plugin_Befaco); | |||
vst2_load_static_rack_plugin("Bidoo", &init_plugin_Bidoo); | |||
vst2_load_static_rack_plugin("Bogaudio", &init_plugin_Bogaudio); | |||
// vst2_load_static_rack_plugin("bsp", &init_plugin_bsp); // contains GPLv3 code from Ob-Xd (Obxd_VCF) | |||
// vst2_load_static_rack_plugin("BOKONTEPByteBeatMachine", &init_plugin_BOKONTEPByteBeatMachine); | |||
vst2_load_static_rack_plugin("CastleRocktronics", &init_plugin_CastleRocktronics); | |||
vst2_load_static_rack_plugin("cf", &init_plugin_cf); | |||
vst2_load_static_rack_plugin("com_soundchasing_stochasm", &init_plugin_com_soundchasing_stochasm); | |||
vst2_load_static_rack_plugin("computerscare", &init_plugin_computerscare); | |||
// vst2_load_static_rack_plugin("dBiz", &init_plugin_dBiz); // now a DLL (13Jul2018) | |||
vst2_load_static_rack_plugin("DHE-Modules", &init_plugin_DHE_Modules); | |||
vst2_load_static_rack_plugin("DrumKit", &init_plugin_DrumKit); | |||
vst2_load_static_rack_plugin("ErraticInstruments", &init_plugin_ErraticInstruments); | |||
vst2_load_static_rack_plugin("ESeries", &init_plugin_ESeries); | |||
vst2_load_static_rack_plugin("FrankBussFormula", &init_plugin_FrankBussFormula); | |||
vst2_load_static_rack_plugin("FrozenWasteland", &init_plugin_FrozenWasteland); | |||
vst2_load_static_rack_plugin("Fundamental", &init_plugin_Fundamental); | |||
vst2_load_static_rack_plugin("Geodesics", &init_plugin_Geodesics); | |||
vst2_load_static_rack_plugin("Gratrix", &init_plugin_Gratrix); | |||
vst2_load_static_rack_plugin("HetrickCV", &init_plugin_HetrickCV); | |||
vst2_load_static_rack_plugin("huaba", &init_plugin_huaba); | |||
vst2_load_static_rack_plugin("ImpromptuModular", &init_plugin_ImpromptuModular); | |||
vst2_load_static_rack_plugin("JE", &init_plugin_JE); | |||
vst2_load_static_rack_plugin("JW_Modules", &init_plugin_JW_Modules); | |||
vst2_load_static_rack_plugin("Koralfx-Modules", &init_plugin_Koralfx); | |||
vst2_load_static_rack_plugin("LindenbergResearch", &init_plugin_LindenbergResearch); | |||
vst2_load_static_rack_plugin("LOGinstruments", &init_plugin_LOGinstruments); | |||
vst2_load_static_rack_plugin("mental", &init_plugin_mental); | |||
vst2_load_static_rack_plugin("ML_modules", &init_plugin_ML_modules); | |||
vst2_load_static_rack_plugin("moDllz", &init_plugin_moDllz); | |||
vst2_load_static_rack_plugin("modular80", &init_plugin_modular80); | |||
vst2_load_static_rack_plugin("mscHack", &init_plugin_mscHack); | |||
vst2_load_static_rack_plugin("mtsch_plugins", &init_plugin_mtsch_plugins); | |||
vst2_load_static_rack_plugin("NauModular", &init_plugin_NauModular); | |||
vst2_load_static_rack_plugin("Nohmad", &init_plugin_Nohmad); | |||
vst2_load_static_rack_plugin("Ohmer", &init_plugin_Ohmer); | |||
// vst2_load_static_rack_plugin("ParableInstruments", &init_plugin_ParableInstruments); | |||
vst2_load_static_rack_plugin("PG_Instruments", &init_plugin_PG_Instruments); | |||
vst2_load_static_rack_plugin("PvC", &init_plugin_PvC); | |||
vst2_load_static_rack_plugin("Qwelk", &init_plugin_Qwelk); | |||
vst2_load_static_rack_plugin("RJModules", &init_plugin_RJModules); | |||
vst2_load_static_rack_plugin("SerialRacker", &init_plugin_SerialRacker); | |||
vst2_load_static_rack_plugin("SonusModular", &init_plugin_SonusModular); | |||
vst2_load_static_rack_plugin("Southpole", &init_plugin_Southpole); | |||
vst2_load_static_rack_plugin("Southpole_parasites", &init_plugin_Southpole_parasites); | |||
vst2_load_static_rack_plugin("squinkylabs-plug1", &init_plugin_squinkylabs_plug1); | |||
vst2_load_static_rack_plugin("SubmarineFree", &init_plugin_SubmarineFree); | |||
vst2_load_static_rack_plugin("SynthKit", &init_plugin_SynthKit); | |||
vst2_load_static_rack_plugin("Template", &init_plugin_Template); | |||
vst2_load_static_rack_plugin("TheXOR", &init_plugin_TheXOR); | |||
vst2_load_static_rack_plugin("trowaSoft", &init_plugin_trowaSoft); | |||
vst2_load_static_rack_plugin("unless_modules", &init_plugin_unless_modules); | |||
vst2_load_static_rack_plugin("Valley", &init_plugin_Valley); | |||
// vst2_load_static_rack_plugin("VultModules", &init_plugin_VultModules); | |||
#else | |||
vst2_load_static_rack_plugin("Template", &init_plugin_Template); | |||
#endif | |||
printf("[dbg] vst2_load_static_rack_plugins: LEAVE\n"); | |||
#endif // SKIP_STATIC_MODULES | |||
} | |||
#endif // RACK_PLUGIN | |||
#endif // USE_VST2 | |||
} |
@@ -5,8 +5,11 @@ | |||
EXTRAFLAGS+= -DVERSION=0.6.1 -D_USE_MATH_DEFINES -Iinclude/ -Idep/include -Idep/ -DUSE_VST2 | |||
EXTRALIBS+= src/plugin_static.o | |||
## note: remove -DSKIP_STATIC_MODULES in makefile_lib.linux and uncomment the following line to link the add-on modules | |||
#include vst2_common_staticlibs.mk | |||
include vst2_common_staticlibs.mk | |||
##EXTRALIBS+= $(call plugin_lib,Template) | |||
EXTRALIBS+= Rack.a | |||