- improved parameters
- added 5th diffusion step
This commit is contained in:
+17
-7
@@ -6,16 +6,27 @@ class Param
|
|||||||
{
|
{
|
||||||
std::string m_name;
|
std::string m_name;
|
||||||
std::string m_unit;
|
std::string m_unit;
|
||||||
|
|
||||||
|
|
||||||
|
public:
|
||||||
typedef struct _sparam_info_t
|
typedef struct _sparam_info_t
|
||||||
{
|
{
|
||||||
double pmin, pmax, pvalue, pinterval, pcenter, scenter, base, kexp;
|
double pmin, pmax, pvalue, pinterval, pcenter, scenter, base, kexp;
|
||||||
|
|
||||||
} param_info_t;
|
} param_info_t;
|
||||||
|
|
||||||
param_info_t m_param_info;
|
param_info_t m_param_info;
|
||||||
|
|
||||||
public:
|
|
||||||
|
|
||||||
|
Param(
|
||||||
|
std::string name,
|
||||||
|
std::string unit,
|
||||||
|
param_info_t param
|
||||||
|
)
|
||||||
|
: m_name(name)
|
||||||
|
, m_param_info(param)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
Param(
|
Param(
|
||||||
std::string name,
|
std::string name,
|
||||||
@@ -23,14 +34,13 @@ class Param
|
|||||||
double pmin,
|
double pmin,
|
||||||
double pmax,
|
double pmax,
|
||||||
double pvalue,
|
double pvalue,
|
||||||
|
double base=1.0,
|
||||||
|
double kexp=1.0,
|
||||||
double pinterval=1.0,
|
double pinterval=1.0,
|
||||||
double pcenter=-1.0,
|
double pcenter=-1.0,
|
||||||
double scenter=0.0,
|
double scenter=0.0
|
||||||
double base=1.0,
|
|
||||||
double kexp=1.0
|
|
||||||
)
|
)
|
||||||
: m_name(name)
|
: Param(name, unit, {pmin, pmax, pvalue, pinterval, pcenter, scenter, base, kexp})
|
||||||
, m_param_info({pmin, pmax, pvalue, pinterval, pcenter, scenter, base, kexp})
|
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
+43
-39
@@ -9,9 +9,7 @@
|
|||||||
#include <cstdlib>
|
#include <cstdlib>
|
||||||
#include <cstdio>
|
#include <cstdio>
|
||||||
|
|
||||||
#define MAX_ORDER 4
|
enum {ORDER, SIZE_1, SIZE_2, SIZE_3, SIZE_4, SIZE_5, FB_DELAY_MIN, FB_DELAY_MAX, FB_DELAY_GAIN};
|
||||||
|
|
||||||
enum {ORDER, SIZE_1, SIZE_2, SIZE_3, SIZE_4, FEEDBACK_DELAY_MIN, FEEDBACK_DELAY_XAX, FEEDBACK_GAIN};
|
|
||||||
|
|
||||||
AudioEffect* createEffectInstance (audioMasterCallback audioMaster)
|
AudioEffect* createEffectInstance (audioMasterCallback audioMaster)
|
||||||
{
|
{
|
||||||
@@ -21,8 +19,8 @@ AudioEffect* createEffectInstance (audioMasterCallback audioMaster)
|
|||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
Plugin::Plugin(audioMasterCallback audioMaster)
|
Plugin::Plugin(audioMasterCallback audioMaster)
|
||||||
: AudioEffectX(audioMaster, 1, NUM_PARMS) // 1 program, 1 parameter only
|
: AudioEffectX(audioMaster, 1, NUM_PARMS) // 1 program, 1 parameter only
|
||||||
, m_reverb_1({DELAY_MAX, DELAY_MAX, DELAY_MAX, DELAY_MAX}, DELAY_MAX, 0)
|
, m_reverb_1({DELAY_MAX, DELAY_MAX, DELAY_MAX, DELAY_MAX, {DELAY_MAX, 0.0}}, DELAY_MAX, 0)
|
||||||
, m_reverb_2({DELAY_MAX, DELAY_MAX, DELAY_MAX, DELAY_MAX}, DELAY_MAX, 0)
|
, m_reverb_2({DELAY_MAX, DELAY_MAX, DELAY_MAX, DELAY_MAX, {DELAY_MAX, 0.0}}, DELAY_MAX, 0)
|
||||||
{
|
{
|
||||||
sampleRate = 48000;
|
sampleRate = 48000;
|
||||||
setNumInputs(2); // stereo in
|
setNumInputs(2); // stereo in
|
||||||
@@ -35,14 +33,16 @@ Plugin::Plugin(audioMasterCallback audioMaster)
|
|||||||
m_feedback_delay[0] = 0;
|
m_feedback_delay[0] = 0;
|
||||||
m_feedback_delay[1] = 0;
|
m_feedback_delay[1] = 0;
|
||||||
|
|
||||||
m_params[0] = new Param("Order", "", 0, 4, 4);
|
uint order = m_reverb_1.getNumDiffusionSteps();
|
||||||
m_params[1] = new Param("Delay 1", "ms", 0, 1000, 50);
|
m_params[0] = new Param("Order", "", order, order, order);
|
||||||
m_params[2] = new Param("Delay 2", "ms", 0, 1000, 100);
|
m_params[1] = new Param("Diffusion 1", "ms", 0, 1000, 48, 10.0);
|
||||||
m_params[3] = new Param("Delay 3", "ms", 0, 1000, 250);
|
m_params[2] = new Param("Diffusion 2", "ms", 0, 1000, 96, 10.0);
|
||||||
m_params[4] = new Param("Delay 4", "ms", 0, 1000, 500);
|
m_params[3] = new Param("Diffusion 3", "ms", 0, 1000, 192, 10.0);
|
||||||
m_params[5] = new Param("Feedback Delay Min", "ms", 0, 1000, 100);
|
m_params[4] = new Param("Diffusion 4", "ms", 0, 1000, 384, 10.0);
|
||||||
m_params[6] = new Param("Feedback Delay Max", "ms", 0, 1000, 200);
|
m_params[5] = new Param("Diffusion 5", "ms", 0, 1000, 768, 10.0);
|
||||||
m_params[7] = new Param("Feedback Gain", "%", 0, 100, 0);
|
m_params[6] = new Param("Delay Min", "ms", 0, 1000, 100, 10.0);
|
||||||
|
m_params[7] = new Param("Delay Max", "ms", 0, 1000, 200, 10.0);
|
||||||
|
m_params[8] = new Param("Delay Feedback", "%", 0, 100, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
//-----------------------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------------------
|
||||||
@@ -75,6 +75,7 @@ void Plugin::setParameter(VstInt32 index, float value)
|
|||||||
case SIZE_2:
|
case SIZE_2:
|
||||||
case SIZE_3:
|
case SIZE_3:
|
||||||
case SIZE_4:
|
case SIZE_4:
|
||||||
|
case SIZE_5:
|
||||||
{
|
{
|
||||||
double p = m_params[index]->fromSlider(value);
|
double p = m_params[index]->fromSlider(value);
|
||||||
uint delay = (uint)(p*sampleRate/1000);
|
uint delay = (uint)(p*sampleRate/1000);
|
||||||
@@ -83,25 +84,24 @@ void Plugin::setParameter(VstInt32 index, float value)
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case FEEDBACK_GAIN:
|
case FB_DELAY_MIN:
|
||||||
|
case FB_DELAY_MAX:
|
||||||
|
{
|
||||||
|
double p = m_params[index]->fromSlider(value);
|
||||||
|
uint delay = (uint)(p*sampleRate/1000);
|
||||||
|
m_feedback_delay[index-FB_DELAY_MIN] = delay;
|
||||||
|
m_reverb_1.setFeedbackDelay(m_feedback_delay[0], m_feedback_delay[1]);
|
||||||
|
m_reverb_2.setFeedbackDelay(m_feedback_delay[0], m_feedback_delay[1]);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
case FB_DELAY_GAIN:
|
||||||
{
|
{
|
||||||
double p = m_params[index]->fromSlider(value)/100;
|
double p = m_params[index]->fromSlider(value)/100;
|
||||||
m_reverb_1.setFeedbackGain(p);
|
m_reverb_1.setFeedbackGain(p);
|
||||||
m_reverb_2.setFeedbackGain(p);
|
m_reverb_2.setFeedbackGain(p);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case FEEDBACK_DELAY_MIN:
|
|
||||||
case FEEDBACK_DELAY_XAX:
|
|
||||||
{
|
|
||||||
double p = m_params[index]->fromSlider(value);
|
|
||||||
uint delay = (uint)(p*sampleRate/1000);
|
|
||||||
m_feedback_delay[index-FEEDBACK_DELAY_MIN] = delay;
|
|
||||||
m_reverb_1.setFeedbackDelay(m_feedback_delay[0], m_feedback_delay[1]);
|
|
||||||
m_reverb_2.setFeedbackDelay(m_feedback_delay[0], m_feedback_delay[1]);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
@@ -118,9 +118,10 @@ float Plugin::getParameter(VstInt32 index)
|
|||||||
case SIZE_2:
|
case SIZE_2:
|
||||||
case SIZE_3:
|
case SIZE_3:
|
||||||
case SIZE_4:
|
case SIZE_4:
|
||||||
case FEEDBACK_GAIN:
|
case SIZE_5:
|
||||||
case FEEDBACK_DELAY_MIN:
|
case FB_DELAY_MIN:
|
||||||
case FEEDBACK_DELAY_XAX:
|
case FB_DELAY_MAX:
|
||||||
|
case FB_DELAY_GAIN:
|
||||||
value = m_params[index]->getSlider();
|
value = m_params[index]->getSlider();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
@@ -139,9 +140,10 @@ void Plugin::getParameterName(VstInt32 index, char *label)
|
|||||||
case SIZE_2:
|
case SIZE_2:
|
||||||
case SIZE_3:
|
case SIZE_3:
|
||||||
case SIZE_4:
|
case SIZE_4:
|
||||||
case FEEDBACK_DELAY_MIN:
|
case SIZE_5:
|
||||||
case FEEDBACK_DELAY_XAX:
|
case FB_DELAY_MIN:
|
||||||
case FEEDBACK_GAIN:
|
case FB_DELAY_MAX:
|
||||||
|
case FB_DELAY_GAIN:
|
||||||
strcpy(label,m_params[index]->name().c_str());
|
strcpy(label,m_params[index]->name().c_str());
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
@@ -161,9 +163,10 @@ void Plugin::getParameterDisplay(VstInt32 index, char *text)
|
|||||||
case SIZE_2:
|
case SIZE_2:
|
||||||
case SIZE_3:
|
case SIZE_3:
|
||||||
case SIZE_4:
|
case SIZE_4:
|
||||||
case FEEDBACK_DELAY_MIN:
|
case SIZE_5:
|
||||||
case FEEDBACK_DELAY_XAX:
|
case FB_DELAY_MIN:
|
||||||
case FEEDBACK_GAIN:
|
case FB_DELAY_MAX:
|
||||||
|
case FB_DELAY_GAIN:
|
||||||
sprintf(text, "%f", m_params[index]->getParameter());
|
sprintf(text, "%f", m_params[index]->getParameter());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@@ -179,9 +182,10 @@ void Plugin::getParameterLabel(VstInt32 index, char *label)
|
|||||||
case SIZE_2:
|
case SIZE_2:
|
||||||
case SIZE_3:
|
case SIZE_3:
|
||||||
case SIZE_4:
|
case SIZE_4:
|
||||||
case FEEDBACK_DELAY_MIN:
|
case SIZE_5:
|
||||||
case FEEDBACK_DELAY_XAX:
|
case FB_DELAY_MIN:
|
||||||
case FEEDBACK_GAIN:
|
case FB_DELAY_MAX:
|
||||||
|
case FB_DELAY_GAIN:
|
||||||
strcpy(label,m_params[index]->unit().c_str());
|
strcpy(label,m_params[index]->unit().c_str());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -13,7 +13,7 @@
|
|||||||
class Plugin : public AudioEffectX
|
class Plugin : public AudioEffectX
|
||||||
{
|
{
|
||||||
static const uint DELAY_MAX = 48000;
|
static const uint DELAY_MAX = 48000;
|
||||||
static const uint NUM_PARMS = 8;
|
static const uint NUM_PARMS = 9;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Plugin(audioMasterCallback audioMaster);
|
Plugin(audioMasterCallback audioMaster);
|
||||||
|
|||||||
Reference in New Issue
Block a user