diff --git a/.vscode/compile_commands.json b/.vscode/compile_commands.json deleted file mode 100644 index 7f1b908..0000000 --- a/.vscode/compile_commands.json +++ /dev/null @@ -1,132 +0,0 @@ -[ - { - "arguments": [ - "/usr/bin/clang++", - "-fPIC", - "-std=c++11", - "-g", - "-O3", - "-DVST_2_4_EXTENSIONS=0", - "-DVST_2_3_EXTENSIONS=1", - "-I", - "/home/jens/work/repos/JayFilter/src", - "-I", - "/home/jens/work/repos/JayFilter/sdk/vst/vstsdk2.4", - "-c", - "-o", - "/home/jens/work/repos/JayFilter/build/linux/release/Filter/src/filter.o", - "src/filter.cpp" - ], - "directory": "/home/jens/work/repos/JayFilter", - "file": "/home/jens/work/repos/JayFilter/src/filter.cpp", - "output": "/home/jens/work/repos/JayFilter/build/linux/release/Filter/src/filter.o" - }, - { - "arguments": [ - "/usr/bin/clang++", - "-fPIC", - "-std=c++11", - "-g", - "-O3", - "-DVST_2_4_EXTENSIONS=0", - "-DVST_2_3_EXTENSIONS=1", - "-I", - "/home/jens/work/repos/JayFilter/src", - "-I", - "/home/jens/work/repos/JayFilter/sdk/vst/vstsdk2.4", - "-c", - "-o", - "/home/jens/work/repos/JayFilter/build/linux/release/Filter/src/filterMain.o", - "src/filterMain.cpp" - ], - "directory": "/home/jens/work/repos/JayFilter", - "file": "/home/jens/work/repos/JayFilter/src/filterMain.cpp", - "output": "/home/jens/work/repos/JayFilter/build/linux/release/Filter/src/filterMain.o" - }, - { - "arguments": [ - "/usr/bin/clang++", - "-fPIC", - "-std=c++11", - "-g", - "-O3", - "-DVST_2_4_EXTENSIONS=0", - "-DVST_2_3_EXTENSIONS=1", - "-I", - "/home/jens/work/repos/JayFilter/src", - "-I", - "/home/jens/work/repos/JayFilter/sdk/vst/vstsdk2.4", - "-c", - "-o", - "/home/jens/work/repos/JayFilter/build/linux/release/Filter//home/jens/work/repos/JayFilter/sdk/vst/vstsdk2.4/public.sdk/source/vst2.x/audioeffect.o", - "/home/jens/work/repos/JayFilter/sdk/vst/vstsdk2.4/public.sdk/source/vst2.x/audioeffect.cpp" - ], - "directory": "/home/jens/work/repos/JayFilter", - "file": "/home/jens/work/repos/JayFilter/sdk/vst/vstsdk2.4/public.sdk/source/vst2.x/audioeffect.cpp", - "output": "/home/jens/work/repos/JayFilter/build/linux/release/Filter/home/jens/work/repos/JayFilter/sdk/vst/vstsdk2.4/public.sdk/source/vst2.x/audioeffect.o" - }, - { - "arguments": [ - "/usr/bin/clang++", - "-fPIC", - "-std=c++11", - "-g", - "-O3", - "-DVST_2_4_EXTENSIONS=0", - "-DVST_2_3_EXTENSIONS=1", - "-I", - "/home/jens/work/repos/JayFilter/src", - "-I", - "/home/jens/work/repos/JayFilter/sdk/vst/vstsdk2.4", - "-c", - "-o", - "/home/jens/work/repos/JayFilter/build/linux/release/Filter//home/jens/work/repos/JayFilter/sdk/vst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.o", - "/home/jens/work/repos/JayFilter/sdk/vst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp" - ], - "directory": "/home/jens/work/repos/JayFilter", - "file": "/home/jens/work/repos/JayFilter/sdk/vst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp", - "output": "/home/jens/work/repos/JayFilter/build/linux/release/Filter/home/jens/work/repos/JayFilter/sdk/vst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.o" - }, - { - "arguments": [ - "/usr/bin/clang", - "-fPIC", - "-g", - "-O3", - "-DVST_2_4_EXTENSIONS=0", - "-DVST_2_3_EXTENSIONS=1", - "-I", - "/home/jens/work/repos/JayFilter/src", - "-I", - "/home/jens/work/repos/JayFilter/sdk/vst/vstsdk2.4", - "-c", - "-o", - "/home/jens/work/repos/JayFilter/build/linux/release/Filter/src/iir.o", - "src/iir.c" - ], - "directory": "/home/jens/work/repos/JayFilter", - "file": "/home/jens/work/repos/JayFilter/src/iir.c", - "output": "/home/jens/work/repos/JayFilter/build/linux/release/Filter/src/iir.o" - }, - { - "arguments": [ - "/usr/bin/clang", - "-fPIC", - "-g", - "-O3", - "-DVST_2_4_EXTENSIONS=0", - "-DVST_2_3_EXTENSIONS=1", - "-I", - "/home/jens/work/repos/JayFilter/src", - "-I", - "/home/jens/work/repos/JayFilter/sdk/vst/vstsdk2.4", - "-c", - "-o", - "/home/jens/work/repos/JayFilter/build/linux/release/Filter/src/paramutils.o", - "src/paramutils.c" - ], - "directory": "/home/jens/work/repos/JayFilter", - "file": "/home/jens/work/repos/JayFilter/src/paramutils.c", - "output": "/home/jens/work/repos/JayFilter/build/linux/release/Filter/src/paramutils.o" - } -] diff --git a/Makefile b/Makefile index 128596b..f3912a0 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ include make/defaults.mk NAME := Delay -CONFIG ?= debug +CONFIG ?= release TARGET ?= JayDelay.so CFLAGS += -fPIC @@ -14,8 +14,9 @@ INCLUDES += -I $(realpath submodules/dsp) DEFINES += -DVST_2_4_EXTENSIONS=0 -DVST_2_3_EXTENSIONS=1 -GCC_SRCS := src/iir.c src/paramutils.c -CXX_SRCS := src/filter.cpp src/filterMain.cpp +GCC_SRCS := src/paramutils.c +CXX_SRCS := src/plugin.cpp +CXX_SRCS := src/pluginMain.cpp CXX_SRCS += $(VST2_SDK_PATH)/public.sdk/source/vst2.x/audioeffect.cpp CXX_SRCS += $(VST2_SDK_PATH)/public.sdk/source/vst2.x/audioeffectx.cpp diff --git a/src/filter.cpp b/src/plugin.cpp similarity index 71% rename from src/filter.cpp rename to src/plugin.cpp index b4bf6d9..b56c4e5 100755 --- a/src/filter.cpp +++ b/src/plugin.cpp @@ -4,13 +4,8 @@ -----------------------------------------------------------------------------*/ -#ifdef WIN32 -#include -#endif #include -#include -#include "iir.h" -#include "filter.hpp" +#include "plugin.hpp" #include "paramutils.h" #define NUM_PARMS 7 @@ -37,11 +32,11 @@ char *pParmStr[NUM_PARMS] = {"Order","Filter-Type","Freq min","Freq max","Freque AudioEffect* createEffectInstance (audioMasterCallback audioMaster) { - return new Filter (audioMaster); + return new Plugin (audioMaster); } //----------------------------------------------------------------------------- -Filter::Filter(audioMasterCallback audioMaster) +Plugin::Plugin(audioMasterCallback audioMaster) : AudioEffectX(audioMaster, 1, NUM_PARMS) // 1 program, 1 parameter only //, m_reverb_1({(uint)(48000*0.02), (uint)(48000*0.04), (uint)(48000*0.08), (uint)(48000*0.16)}, (uint)(48000*0.1), (uint)(48000*0.2)) //, m_reverb_2({(uint)(48000*0.02), (uint)(48000*0.04), (uint)(48000*0.08), (uint)(48000*0.16)}, (uint)(48000*0.1), (uint)(48000*0.2)) @@ -49,101 +44,75 @@ Filter::Filter(audioMasterCallback audioMaster) , m_reverb_2({(uint)(48000*0.48)}, (uint)(48000*0.1), (uint)(48000*0.2)) { sampleRate = 48000; - fg = 1000/sampleRate; // default to 1000 Hz - order = 4; - q = 1.0f/MAX_Q; - type = IIR_FILTERTYPE_LOWPASS; setNumInputs(2); // stereo in setNumOutputs(2); // stereo out setUniqueID('Filt'); // identify canMono(); // makes sense to feed both inputs with the same signal canProcessReplacing(); // supports both accumulating and replacing output strcpy(programName, "Default"); // default program name - IIRInit(filterCoeff_L, order); - IIRInit(filterCoeff_R, order); - sm_fg = fg; - sm_q = q; testParam=0; - - IIRCalcFilterCoeff(filterCoeff_L, sampleRate, sm_fg*sampleRate, sm_q, order, type); - IIRCalcFilterCoeff(filterCoeff_R, sampleRate, sm_fg*sampleRate, sm_q, order, type); - forder = (0.5f/MAX_ORDER)*(float)(order -1); - ftype = (1.0f/MAX_TYPES)*(float)(type -1); - f_fmin = 0; - f_fmax = 17300.f/sampleRate; } //----------------------------------------------------------------------------------------- -Filter::~Filter() +Plugin::~Plugin() { // nothing to do here } //----------------------------------------------------------------------------------------- -void Filter::setProgramName(char *name) +void Plugin::setProgramName(char *name) { strcpy(programName, name); } //----------------------------------------------------------------------------------------- -void Filter::getProgramName(char *name) +void Plugin::getProgramName(char *name) { strcpy(name, programName); } //----------------------------------------------------------------------------------------- -void Filter::setParameter(VstInt32 index, float value) +void Plugin::setParameter(VstInt32 index, float value) { - fg = f_fmin + value*(f_fmax-f_fmin); - - switch(index) { case TYPE: ftype = ParamQuantize(value,1.0f/(MAX_TYPES-1)); - - type = 1 + (VstInt32)(ftype*(MAX_TYPES-1)); - IIRCalcFilterCoeff(filterCoeff_L, sampleRate, 0.5f*fg*sampleRate, q*MAX_Q, order, type); - IIRCalcFilterCoeff(filterCoeff_R, sampleRate, 0.5f*fg*sampleRate, q*MAX_Q, order, type); + sprintf(dbgStr, "Set Param: %f",ftype); break; case ORDER: forder = ParamQuantize(value,1.0f/(MAX_ORDER/2-1)); - order = 2*(VstInt32)(1+forder*MAX_ORDER/2); - sprintf(dbgStr, "value = %f, forder = %f, order = %d",value,forder,order); -// OutputDebugString(dbgStr); - IIRCalcFilterCoeff(filterCoeff_L, sampleRate, 0.5f*fg*sampleRate, q*MAX_Q, order, type); - IIRCalcFilterCoeff(filterCoeff_R, sampleRate, 0.5f*fg*sampleRate, q*MAX_Q, order, type); + sprintf(dbgStr, "Set Param: %f",forder); break; case FMIN: - f_fmin = value; + sprintf(dbgStr, "Set Param: %f",value); break; case FMAX: - f_fmax = value; + sprintf(dbgStr, "Set Param: %f",value); break; case FG: - f_fg_param = value; + sprintf(dbgStr, "Set Param: %f",value); break; case Q: - q = value; + sprintf(dbgStr, "Set Param: %f",value); break; case TESTPARAM: testParam=ParamQuantize(value,1.0f/3); sprintf(dbgStr, "Set Param: %f",value); -// OutputDebugString(dbgStr); break; } } //----------------------------------------------------------------------------------------- -float Filter::getParameter(VstInt32 index) +float Plugin::getParameter(VstInt32 index) { float value = 0; @@ -183,13 +152,13 @@ float Filter::getParameter(VstInt32 index) } //----------------------------------------------------------------------------------------- -void Filter::getParameterName(VstInt32 index, char *label) +void Plugin::getParameterName(VstInt32 index, char *label) { strcpy(label,pParmStr[index]); } //----------------------------------------------------------------------------------------- -void Filter::getParameterDisplay(VstInt32 index, char *text) +void Plugin::getParameterDisplay(VstInt32 index, char *text) { switch(index) @@ -220,7 +189,7 @@ void Filter::getParameterDisplay(VstInt32 index, char *text) } //----------------------------------------------------------------------------------------- -void Filter::getParameterLabel(VstInt32 index, char *label) +void Plugin::getParameterLabel(VstInt32 index, char *label) { switch(index) { @@ -249,7 +218,7 @@ void Filter::getParameterLabel(VstInt32 index, char *label) } //----------------------------------------------------------------------------------------- -void Filter::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrames) +void Plugin::processReplacing(float **inputs, float **outputs, VstInt32 sampleFrames) { float *in1 = inputs[0]; float *in2 = inputs[1]; @@ -272,7 +241,7 @@ void Filter::processReplacing(float **inputs, float **outputs, VstInt32 sampleFr } //----------------------------------------------------------------------------------------- -void Filter::setSampleRate(float sampleRate) +void Plugin::setSampleRate(float sampleRate) { this->sampleRate = sampleRate; sprintf(dbgStr, "Sample Rate = %f",sampleRate); @@ -280,7 +249,7 @@ void Filter::setSampleRate(float sampleRate) } //----------------------------------------------------------------------------------------- -void Filter::setBlockSize(VstInt32 blockSize) +void Plugin::setBlockSize(VstInt32 blockSize) { this->blockSize = blockSize; sprintf(dbgStr, "Block Size = %d",blockSize); diff --git a/src/filter.hpp b/src/plugin.hpp similarity index 81% rename from src/filter.hpp rename to src/plugin.hpp index fc760ad..6b8f9b2 100755 --- a/src/filter.hpp +++ b/src/plugin.hpp @@ -3,18 +3,17 @@ � 1999, Steinberg Soft und Hardware GmbH, All Rights Reserved -----------------------------------------------------------------------------*/ -#ifndef __FILTER_H -#define __FILTER_H +#ifndef __PLUGIN_H +#define __PLUGIN_H #include "public.sdk/source/vst2.x/audioeffectx.h" #include -#include "iir.h" -class Filter : public AudioEffectX +class Plugin : public AudioEffectX { public: - Filter(audioMasterCallback audioMaster); - ~Filter(); + Plugin(audioMasterCallback audioMaster); + ~Plugin(); // Processing virtual void processReplacing (float** inputs, float** outputs, VstInt32 sampleFrames); @@ -39,12 +38,10 @@ protected: VstInt32 type, order; char programName[32]; char dbgStr[80]; - IIRPARAM filterParms; - IIRCOEFF filterCoeff_L[8], filterCoeff_R[8]; private: Reverb m_reverb_1; Reverb m_reverb_2; }; -#endif +#endif // __PLUGIN_H diff --git a/src/pluginMain.cpp b/src/pluginMain.cpp index 41bf085..cd60e51 100755 --- a/src/pluginMain.cpp +++ b/src/pluginMain.cpp @@ -3,7 +3,7 @@ � 1999, Steinberg Soft und Hardware GmbH, All Rights Reserved -----------------------------------------------------------------------------*/ -#include "filter.hpp" // *change* +#include "plugin.hpp" // *change* static AudioEffect *effect = 0; bool oome = false; @@ -14,7 +14,7 @@ AEffect *VSTPluginMain (audioMasterCallback audioMaster) if (!audioMaster (0, audioMasterVersion, 0, 0, 0, 0)) return 0; // old version - effect = new Filter (audioMaster); + effect = new Plugin (audioMaster); if (!effect) return 0; if (oome)