refactored

This commit is contained in:
2025-11-11 15:36:48 +01:00
parent 6773cf3e20
commit 453fb493f3
5 changed files with 32 additions and 197 deletions
-132
View File
@@ -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"
}
]
+4 -3
View File
@@ -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
+20 -51
View File
@@ -4,13 +4,8 @@
-----------------------------------------------------------------------------*/
#ifdef WIN32
#include <windows.h>
#endif
#include <reverb/reverb.hpp>
#include <stdio.h>
#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);
+6 -9
View File
@@ -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 <reverb/reverb.hpp>
#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<float, 8> m_reverb_1;
Reverb<float, 8> m_reverb_2;
};
#endif
#endif // __PLUGIN_H
+2 -2
View File
@@ -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)