@@ -4,6 +4,7 @@ | |||||
#include <stdio.h> // debug | #include <stdio.h> // debug | ||||
#include <list> | #include <list> | ||||
#include "tags.hpp" | #include "tags.hpp" | ||||
#include "util/common.hpp" | |||||
#define RACK_PLUGIN_INIT_ID_INTERNAL p->slug = TOSTRING(SLUG); p->version = TOSTRING(VERSION) | #define RACK_PLUGIN_INIT_ID_INTERNAL p->slug = TOSTRING(SLUG); p->version = TOSTRING(VERSION) | ||||
@@ -26,7 +27,11 @@ extern void vst2_handle_ui_param (int uniqueParamId, float normValue); | |||||
extern void vst2_queue_param_sync (int _uniqueParamId, float _value, bool _bNormalized); | extern void vst2_queue_param_sync (int _uniqueParamId, float _value, bool _bNormalized); | ||||
#define RACK_PLUGIN_DECLARE(pluginname) | #define RACK_PLUGIN_DECLARE(pluginname) | ||||
#ifdef _MSC_VER | |||||
#define RACK_PLUGIN_INIT(pluginname) extern "C" void init_plugin_##pluginname##(rack::Plugin *p) | #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) | |||||
#endif // _MSC_VER | |||||
#define RACK_PLUGIN_INIT_ID() RACK_PLUGIN_INIT_ID_INTERNAL | #define RACK_PLUGIN_INIT_ID() RACK_PLUGIN_INIT_ID_INTERNAL | ||||
#else | #else | ||||
@@ -87,7 +92,11 @@ RACK_PLUGIN_EXPORT void init_plugin(rack::Plugin *p) | |||||
#else | #else | ||||
// Statically linked plugin build | // Statically linked plugin build | ||||
#define RACK_PLUGIN_DECLARE(pluginname) | #define RACK_PLUGIN_DECLARE(pluginname) | ||||
#define RACK_PLUGIN_INIT(pluginname) extern "C" void init_plugin_##pluginname##(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) | |||||
#endif | |||||
#define RACK_PLUGIN_INIT_ID() RACK_PLUGIN_INIT_ID_INTERNAL | #define RACK_PLUGIN_INIT_ID() RACK_PLUGIN_INIT_ID_INTERNAL | ||||
#endif // RACK_PLUGIN_SHARED | #endif // RACK_PLUGIN_SHARED | ||||
#endif // RACK_PLUGIN_SHARED_LIB_BUILD | #endif // RACK_PLUGIN_SHARED_LIB_BUILD | ||||
@@ -107,9 +116,17 @@ RACK_PLUGIN_EXPORT void init_plugin(rack::Plugin *p) | |||||
#define RACK_PLUGIN_INIT_MANUAL(url) p->manual = url | #define RACK_PLUGIN_INIT_MANUAL(url) p->manual = url | ||||
#define RACK_PLUGIN_INIT_VERSION(ver) p->version = ver | #define RACK_PLUGIN_INIT_VERSION(ver) p->version = ver | ||||
#ifdef _MSC_VER | |||||
#define RACK_PLUGIN_MODEL_DECLARE(pluginname, modelname) extern Model *create_model_##pluginname##_##modelname##(void) | #define RACK_PLUGIN_MODEL_DECLARE(pluginname, modelname) extern Model *create_model_##pluginname##_##modelname##(void) | ||||
#define RACK_PLUGIN_MODEL_INIT(pluginname, modelname) Model *create_model_##pluginname##_##modelname##(void) | #define RACK_PLUGIN_MODEL_INIT(pluginname, modelname) Model *create_model_##pluginname##_##modelname##(void) | ||||
#define RACK_PLUGIN_MODEL_ADD(pluginname, modelname) p->addModel(create_model_##pluginname##_##modelname##()) | #define RACK_PLUGIN_MODEL_ADD(pluginname, modelname) p->addModel(create_model_##pluginname##_##modelname##()) | ||||
#else | |||||
#define CONCAT_USCORE_LITERAL(x, y) x ## _ ## y | |||||
#define CONCAT_USCORE(x, y) CONCAT_USCORE_LITERAL(x, y) | |||||
#define RACK_PLUGIN_MODEL_DECLARE(pluginname, modelname) extern Model *CONCAT(create_model_, CONCAT_USCORE(pluginname, modelname))(void) | |||||
#define RACK_PLUGIN_MODEL_INIT(pluginname, modelname) Model *CONCAT(create_model_, CONCAT_USCORE(pluginname, modelname))(void) | |||||
#define RACK_PLUGIN_MODEL_ADD(pluginname, modelname) p->addModel(CONCAT(create_model_, CONCAT_USCORE(pluginname, modelname))()) | |||||
#endif // _MSC_VER | |||||
namespace rack { | namespace rack { | ||||
@@ -1,9 +1,10 @@ | |||||
COMMON_OBJ= \ | |||||
COMMON_DEP_OBJ= \ | |||||
dep/jpommier-pffft-29e4f76ac53b/fftpack.o \ | dep/jpommier-pffft-29e4f76ac53b/fftpack.o \ | ||||
dep/jpommier-pffft-29e4f76ac53b/pffft.o \ | dep/jpommier-pffft-29e4f76ac53b/pffft.o \ | ||||
dep/nanovg/src/nanovg.o \ | dep/nanovg/src/nanovg.o \ | ||||
dep/osdialog/osdialog.o \ | |||||
dep/osdialog/osdialog_win.o \ | |||||
dep/osdialog/osdialog.o | |||||
COMMON_OBJ= \ | |||||
src/app/app.o \ | src/app/app.o \ | ||||
src/app/AudioWidget.o \ | src/app/AudioWidget.o \ | ||||
src/app/CircularShadow.o \ | src/app/CircularShadow.o \ | ||||
@@ -84,6 +85,9 @@ COMMON_OBJ= \ | |||||
# src/keyboard.o | # src/keyboard.o | ||||
COMMON_OBJ+=$(COMMON_DEP_OBJ) | |||||
HOST_OBJ= \ | HOST_OBJ= \ | ||||
src/Core/AudioInterface.o \ | src/Core/AudioInterface.o \ | ||||
src/Core/Blank.o \ | src/Core/Blank.o \ | ||||
@@ -101,11 +105,17 @@ LIB_OBJ= \ | |||||
LIB_OBJ_WIN= \ | LIB_OBJ_WIN= \ | ||||
src/util/dirent_win32/dirent.o \ | src/util/dirent_win32/dirent.o \ | ||||
dep/lglw/lglw_windows.o \ | dep/lglw/lglw_windows.o \ | ||||
dep/lglw/lglw_windows_cpp.o | |||||
dep/lglw/lglw_windows_cpp.o \ | |||||
dep/osdialog/osdialog_win.o | |||||
LIB_OBJ_LINUX= \ | |||||
dep/lglw/lglw_linux.o \ | |||||
dep/osdialog/osdialog_gtk2.o | |||||
SHARED_LIB_OBJ= \ | SHARED_LIB_OBJ= \ | ||||
$(COMMON_OBJ) | $(COMMON_OBJ) | ||||
MAIN_OBJ= \ | MAIN_OBJ= \ | ||||
src/vst2_main.o \ | src/vst2_main.o \ | ||||
src/main.o | src/main.o | ||||
@@ -0,0 +1,37 @@ | |||||
# | |||||
# Makefile for VCV rack lib + GCC | |||||
# | |||||
# | |||||
#NUM_JOBS=20 | |||||
NUM_JOBS=1 | |||||
.PHONY: bin | |||||
bin: vst | |||||
.PHONY: lib | |||||
lib: | |||||
make -f makefile_lib.linux bin -j $(NUM_JOBS) | |||||
.PHONY: shared_lib | |||||
shared_lib: | |||||
make -f makefile_shared_lib.linux bin -j $(NUM_JOBS) && mv Rack_shared.a plugins/ | |||||
.PHONY: vst | |||||
vst: lib | |||||
rm -f src/vst2_main.o | |||||
make -f makefile_vst_instr.linux bin -j $(NUM_JOBS) | |||||
rm -f src/vst2_main.o | |||||
make -f makefile_vst_effect.linux bin -j $(NUM_JOBS) | |||||
mv veeseevstrack_instr.so vst2_bin/ | |||||
mv veeseevstrack_effect.so vst2_bin/ | |||||
@ls -l vst2_bin/veeseevstrack_instr.so | |||||
@ls -l vst2_bin/veeseevstrack_effect.so | |||||
.PHONY: clean | |||||
clean: | |||||
make -f makefile_lib.linux clean | |||||
make -f makefile_shared_lib.linux clean | |||||
make -f makefile_vst_instr.linux clean | |||||
make -f makefile_vst_effect.linux clean | |||||
@@ -5,29 +5,29 @@ | |||||
NUM_JOBS=20 | NUM_JOBS=20 | ||||
.PHONY: | |||||
.PHONY: bin | |||||
bin: vst | bin: vst | ||||
.PHONY: | |||||
.PHONY: lib | |||||
lib: | lib: | ||||
make -f makefile_lib.msvc bin -j $(NUM_JOBS) | make -f makefile_lib.msvc bin -j $(NUM_JOBS) | ||||
.PHONY: | |||||
.PHONY: shared_lib | |||||
shared_lib: | shared_lib: | ||||
make -f makefile_shared_lib.msvc bin -j $(NUM_JOBS) && mv Rack_shared.lib plugins/ | make -f makefile_shared_lib.msvc bin -j $(NUM_JOBS) && mv Rack_shared.lib plugins/ | ||||
.PHONY: | |||||
.PHONY: vst | |||||
vst: lib | vst: lib | ||||
rm -f src/vst2_main.o | rm -f src/vst2_main.o | ||||
make -f makefile_vst_instr.msvc bin -j $(NUM_JOBS) | make -f makefile_vst_instr.msvc bin -j $(NUM_JOBS) | ||||
rm -f src/vst2_main.o | rm -f src/vst2_main.o | ||||
make -f makefile_vst_effect.msvc bin -j $(NUM_JOBS) | make -f makefile_vst_effect.msvc bin -j $(NUM_JOBS) | ||||
# (note) cannot use both instrument and effect plugin at the same time! | |||||
mv veeseevstrack_instr.dll vst2_bin/ | mv veeseevstrack_instr.dll vst2_bin/ | ||||
mv veeseevstrack_effect.dll vst2_bin/ | mv veeseevstrack_effect.dll vst2_bin/ | ||||
@ls -l vst2_bin/veeseevstrack_instr.dll | @ls -l vst2_bin/veeseevstrack_instr.dll | ||||
@ls -l vst2_bin/veeseevstrack_effect.dll | @ls -l vst2_bin/veeseevstrack_effect.dll | ||||
.PHONY: clean | |||||
clean: | clean: | ||||
make -f makefile_lib.msvc clean | make -f makefile_lib.msvc clean | ||||
make -f makefile_shared_lib.msvc clean | make -f makefile_shared_lib.msvc clean | ||||
@@ -0,0 +1,26 @@ | |||||
# | |||||
# Makefile for VCV rack lib + GCC | |||||
# | |||||
# | |||||
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/ | |||||
# for osdialog: | |||||
EXTRAFLAGS+= `pkg-config gtk+-2.0 --cflags` | |||||
EXTRALIBS+= | |||||
# need to link these later on: | |||||
#jansson.a | |||||
PLAF_OBJ= | |||||
include make.objects | |||||
ALL_OBJ=$(LIB_OBJ) $(LIB_OBJ_LINUX) | |||||
include dep/yac/staticlib_linux.mk |
@@ -0,0 +1,34 @@ | |||||
# | |||||
# Makefile for VCV rack shared lib + GCC | |||||
# | |||||
# | |||||
include dep/yac/install_linux.mk | |||||
TARGET_BASENAME=Rack_shared | |||||
EXTRAFLAGS= -DVERSION=0.6.1 -DARCH_LIN -D_USE_MATH_DEFINES -DRACK_PLUGIN -DRACK_PLUGIN_SHARED -DUSE_VST2 -Iinclude/ -Idep/include -Idep/ | |||||
EXTRAFLAGS+= -DRACK_PLUGIN_SHARED_LIB_BUILD | |||||
# for osdialog: | |||||
EXTRAFLAGS+= `pkg-config gtk+-2.0 --cflags` | |||||
ifeq ($(BUILD_64),y) | |||||
EXTRALIBS_DEP= dep/lib/linux_gcc/x64 | |||||
else | |||||
EXTRALIBS_DEP= dep/lib/linux_gcc/x86 | |||||
endif | |||||
# need to link these later on: | |||||
#EXTRALIBS+= `pkg-config gtk+-2.0 --libs` | |||||
#EXTRALIBS+= $(EXTRALIBS_DEP)/jansson.a | |||||
#EXTRALIBS+= $(EXTRALIBS_DEP)/glew.a | |||||
#libspeexdsp.a | |||||
PLAF_OBJ= | |||||
include make.objects | |||||
ALL_OBJ=$(SHARED_LIB_OBJ) $(LIB_OBJ_LINUX) | |||||
include dep/yac/staticlib_linux.mk |
@@ -0,0 +1,10 @@ | |||||
PLUGIN_DIR=plugins/community/repos/ | |||||
include dep/yac/install_linux.mk | |||||
TARGET_BASENAME=veeseevstrack_effect | |||||
EXTRAFLAGS+= -DVST2_EFFECT | |||||
include vst2_common_linux.mk |
@@ -6,4 +6,5 @@ include dep/yac/install_msvc.mk | |||||
TARGET_BASENAME=veeseevstrack_effect | TARGET_BASENAME=veeseevstrack_effect | ||||
EXTRAFLAGS+= -DVST2_EFFECT | EXTRAFLAGS+= -DVST2_EFFECT | ||||
include vst2_common.mk | |||||
include vst2_common_msvc.mk |
@@ -0,0 +1,8 @@ | |||||
PLUGIN_DIR=plugins/community/repos/ | |||||
include dep/yac/install_linux.mk | |||||
TARGET_BASENAME=veeseevstrack_instr | |||||
include vst2_common_linux.mk |
@@ -5,4 +5,4 @@ include dep/yac/install_msvc.mk | |||||
TARGET_BASENAME=veeseevstrack_instr | TARGET_BASENAME=veeseevstrack_instr | ||||
include vst2_common.mk | |||||
include vst2_common_msvc.mk |
@@ -114,10 +114,12 @@ static void engineStep() { | |||||
} | } | ||||
static void engineRun() { | static void engineRun() { | ||||
#ifdef _MSC_VER | |||||
// Set CPU to flush-to-zero (FTZ) and denormals-are-zero (DAZ) mode | // Set CPU to flush-to-zero (FTZ) and denormals-are-zero (DAZ) mode | ||||
// https://software.intel.com/en-us/node/682949 | // https://software.intel.com/en-us/node/682949 | ||||
_MM_SET_FLUSH_ZERO_MODE(_MM_FLUSH_ZERO_ON); | _MM_SET_FLUSH_ZERO_MODE(_MM_FLUSH_ZERO_ON); | ||||
_MM_SET_DENORMALS_ZERO_MODE(_MM_DENORMALS_ZERO_ON); | _MM_SET_DENORMALS_ZERO_MODE(_MM_DENORMALS_ZERO_ON); | ||||
#endif // _MSC_VER | |||||
// Every time the engine waits and locks a mutex, it steps this many frames | // Every time the engine waits and locks a mutex, it steps this many frames | ||||
const int mutexSteps = 64; | const int mutexSteps = 64; | ||||
@@ -767,11 +767,11 @@ using namespace rack; | |||||
#ifdef USE_VST2 | #ifdef USE_VST2 | ||||
#ifdef ARCH_WIN | #ifdef ARCH_WIN | ||||
extern "C" extern long seed_initialized; | |||||
extern "C" { extern long seed_initialized; } | |||||
#else | #else | ||||
extern "C" extern volatile char seed_initialized; | |||||
extern "C" { extern volatile char seed_initialized; } | |||||
#endif // ARCH_WIN | #endif // ARCH_WIN | ||||
extern "C" extern volatile uint32_t hashtable_seed; | |||||
extern "C" { extern volatile uint32_t hashtable_seed; } | |||||
void vst2_set_shared_plugin_tls_globals(void) { | void vst2_set_shared_plugin_tls_globals(void) { | ||||
// Called in audio thread (see vst2_main.cpp:VSTPluginProcessReplacingFloat32()) | // Called in audio thread (see vst2_main.cpp:VSTPluginProcessReplacingFloat32()) | ||||
for(Plugin *p : global->plugin.gPlugins) { | for(Plugin *p : global->plugin.gPlugins) { | ||||
@@ -18,7 +18,7 @@ | |||||
/// created: 25Jun2018 | /// created: 25Jun2018 | ||||
/// changed: 26Jun2018, 27Jun2018, 29Jun2018, 01Jul2018, 02Jul2018, 06Jul2018, 13Jul2018 | /// changed: 26Jun2018, 27Jun2018, 29Jun2018, 01Jul2018, 02Jul2018, 06Jul2018, 13Jul2018 | ||||
/// 26Jul2018, 04Aug2018, 05Aug2018, 06Aug2018, 07Aug2018, 09Aug2018, 11Aug2018 | /// 26Jul2018, 04Aug2018, 05Aug2018, 06Aug2018, 07Aug2018, 09Aug2018, 11Aug2018 | ||||
/// 18Aug2018, 19Aug2018, 05Sep2018, 06Sep2018 | |||||
/// 18Aug2018, 19Aug2018, 05Sep2018, 06Sep2018, 10Oct2018 | |||||
/// | /// | ||||
/// | /// | ||||
@@ -38,8 +38,8 @@ | |||||
#ifndef RACK_PLUGIN_SHARED_LIB_BUILD | #ifndef RACK_PLUGIN_SHARED_LIB_BUILD | ||||
extern void vst2_set_globals (void *_wrapper); | extern void vst2_set_globals (void *_wrapper); | ||||
extern "C" extern void lglw_timer_cbk (lglw_t _lglw); // implemented in vst2_main.cpp | |||||
extern "C" extern void lglw_redraw_cbk (lglw_t _lglw); // implemented in vst2_main.cpp | |||||
extern "C" { extern void lglw_timer_cbk (lglw_t _lglw); } // implemented in vst2_main.cpp | |||||
extern "C" { extern void lglw_redraw_cbk (lglw_t _lglw); } // implemented in vst2_main.cpp | |||||
#else | #else | ||||
void vst2_set_globals(void *) { } | void vst2_set_globals(void *) { } | ||||
void vst2_window_size_set(int, int) { } | void vst2_window_size_set(int, int) { } | ||||
@@ -0,0 +1,18 @@ | |||||
# | |||||
# Makefile for VCV rack VST2 plugin | |||||
# | |||||
# | |||||
EXTRAFLAGS+= -DVERSION=0.6.1 -D_USE_MATH_DEFINES -Iinclude/ -Idep/include -Idep/ -DUSE_VST2 | |||||
include vst2_common_linux_pre.mk | |||||
include vst2_common_staticlibs.mk | |||||
PLAF_OBJ= | |||||
include make.objects | |||||
ALL_OBJ= $(MAIN_OBJ) | |||||
include vst2_common_linux_post.mk |
@@ -0,0 +1,3 @@ | |||||
EXTRALIBS+= Rack.a | |||||
include dep/yac/sharedlib_linux.mk |
@@ -0,0 +1,14 @@ | |||||
EXTRAFLAGS+= -DARCH_LIN | |||||
EXTRAFLAGS+= -I../../dev/vstsdk2.4/pluginterfaces/vst2.x/ | |||||
EXTRALIBS= | |||||
ifeq ($(BUILD_64),y) | |||||
EXTRALIBS_DEP= dep/lib/linux_gcc/x64 | |||||
else | |||||
EXTRALIBS_DEP= dep/lib/linux_gcc/x86 | |||||
endif | |||||
EXTRALIBS+= $(EXTRALIBS_DEP)/libspeexdsp.a $(EXTRALIBS_DEP)/glew.a -lGL | |||||
plugin_lib = $(PLUGIN_DIR)/$(1)/$(1).a |