From e6f966754c2b9767d480d844525498ad27d29978 Mon Sep 17 00:00:00 2001 From: bsp2 Date: Sun, 14 Oct 2018 13:02:25 +0200 Subject: [PATCH] add vst2_debug_host --- other/vst2_debug_host/makefile.linux | 14 +++ other/vst2_debug_host/vst2_debug_host | Bin 0 -> 7848 bytes other/vst2_debug_host/vst2_debug_host.cpp | 117 ++++++++++++++++++++++ 3 files changed, 131 insertions(+) create mode 100644 other/vst2_debug_host/makefile.linux create mode 100644 other/vst2_debug_host/vst2_debug_host create mode 100644 other/vst2_debug_host/vst2_debug_host.cpp diff --git a/other/vst2_debug_host/makefile.linux b/other/vst2_debug_host/makefile.linux new file mode 100644 index 00000000..b1d0be67 --- /dev/null +++ b/other/vst2_debug_host/makefile.linux @@ -0,0 +1,14 @@ + +include ../../dep/yac/install_linux.mk + +.cpp.o: + $(CPP) $(CPPFLAGS) $(OPTFLAGS_PLUGIN) -I"$(VSVR_BASE_DIR)/dep/yac/" -I"$(VST2_SDK_DIR)" -c "$<" -o"$@" + +.PHONY: bin +bin: vst2_debug_host.o + $(CPP) -o vst2_debug_host vst2_debug_host.o -ldl + +.PHONY: clean +clean: + rm -f vst2_debug_host vst2_debug_host.o + diff --git a/other/vst2_debug_host/vst2_debug_host b/other/vst2_debug_host/vst2_debug_host new file mode 100644 index 0000000000000000000000000000000000000000..2e39ae53505e6eb0d2dbdd833d30dfcd27c773fd GIT binary patch literal 7848 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 literal 0 HcmV?d00001 diff --git a/other/vst2_debug_host/vst2_debug_host.cpp b/other/vst2_debug_host/vst2_debug_host.cpp new file mode 100644 index 00000000..84cfcb36 --- /dev/null +++ b/other/vst2_debug_host/vst2_debug_host.cpp @@ -0,0 +1,117 @@ +// vst_eureka_standalone_test.cpp : Defines the entry point for the console application. +// + +#define DLL_PATH "../../vst2_bin/veeseevstrack_effect.dll" +#define SO_PATH "../../vst2_bin/veeseevstrack_effect.so" + + +#include + +#ifdef YAC_WIN32 +#include "stdafx.h" +#include +#else +#include +#endif + +#include +#include + +typedef AEffect* (*PluginEntryProc) (audioMasterCallback audioMaster); + + +static VstIntPtr VSTCALLBACK HostCallback(AEffect* effect, VstInt32 opcode, VstInt32 index, VstIntPtr value, void* ptr, float opt) { + static VstInt32 lastOpcode = -1; + static VstIntPtr lastTimeMask = ~0; + VstIntPtr result = 0; + + lastOpcode = opcode; + + (void)lastOpcode; + (void)lastTimeMask; + + return result; +} + +float *inputBuffers[48]; +float *outputBuffers[48]; + +void open_and_close(void) { +#ifdef YAC_WIN32 + HINSTANCE dllHandle = ::LoadLibraryA(DLL_PATH); +#else + void *dllHandle = ::dlopen(SO_PATH, RTLD_NOW); + if(NULL == dllHandle) + { + printf("Failed to load library %s: %s", SO_PATH, dlerror()); + return; + } +#endif + + for(int i = 0; i < 48; i++) + { + inputBuffers[i] = new float[4096]; + outputBuffers[i] = new float[4096]; + } + + if(NULL != dllHandle) + { +#ifdef YAC_WIN32 + PluginEntryProc mainProc = (PluginEntryProc) ::GetProcAddress((HMODULE)dllHandle, "VSTPluginMain"); + if(NULL == mainProc) + { + mainProc = (PluginEntryProc) ::GetProcAddress((HMODULE)dllHandle, "main"); + } +#else + PluginEntryProc mainProc = (PluginEntryProc) ::dlsym(dllHandle, "VSTPluginMain"); + if(NULL == mainProc) + { + mainProc = (PluginEntryProc) ::dlsym(dllHandle, "main"); + } +#endif + + if(NULL != mainProc) + { + AEffect *effect; + effect = mainProc(HostCallback); + + if(NULL != effect) + { + effect->dispatcher(effect, effOpen, 0, 0, NULL, 0.0f); + VstIntPtr ip = effect->dispatcher(effect, effEditOpen, 0, 0, NULL/*hWnd*/, 0.0f); + (void)ip; + printf("xxx call processreplacing\n"); + for(int i = 0; i < 1024; i++) + { + effect->processReplacing(effect, inputBuffers, outputBuffers, (VstInt32)64); + } + effect->dispatcher(effect, effEditClose, 0, 0, NULL, 0.0f); + effect->dispatcher(effect, effClose, 0, 0, NULL, 0.0f); + } + } + else + { + printf("[---] failed to find mainProc\n"); + } + +#ifdef YAC_WIN32 + ::FreeLibrary(dllHandle); +#else + ::dlclose(dllHandle); +#endif + } + + for(int i = 0; i < 48; i++) + { + delete [] inputBuffers[i]; + delete [] outputBuffers[i]; + } +} + + int main() { + for(;;) + { + open_and_close(); + } + return 0; +}