1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
|
// generated from file '../src/faust/noise_shaper.dsp' by dsp2cc:
// Code generated with Faust 0.9.90 (http://faust.grame.fr)
namespace noise_shaper {
class Dsp: public PluginDef {
private:
int fSamplingFreq;
double fConst0;
double fConst1;
double fConst2;
double fRec0[2];
FAUSTFLOAT fslider0;
void clear_state_f();
void init(unsigned int samplingFreq);
void compute(int count, FAUSTFLOAT *input0, FAUSTFLOAT *output0);
int register_par(const ParamReg& reg);
static void clear_state_f_static(PluginDef*);
static void init_static(unsigned int samplingFreq, PluginDef*);
static void compute_static(int count, FAUSTFLOAT *input0, FAUSTFLOAT *output0, PluginDef*);
static int register_params_static(const ParamReg& reg);
static void del_instance(PluginDef *p);
public:
Dsp();
~Dsp();
};
Dsp::Dsp()
: PluginDef() {
version = PLUGINDEF_VERSION;
flags = 0;
id = "shaper";
name = N_("Shaper");
groups = 0;
description = ""; // description (tooltip)
category = ""; // category
shortname = ""; // shortname
mono_audio = compute_static;
stereo_audio = 0;
set_samplerate = init_static;
activate_plugin = 0;
register_params = register_params_static;
load_ui = 0;
clear_state = clear_state_f_static;
delete_instance = del_instance;
}
Dsp::~Dsp() {
}
inline void Dsp::clear_state_f()
{
for (int i=0; i<2; i++) fRec0[i] = 0;
}
void Dsp::clear_state_f_static(PluginDef *p)
{
static_cast<Dsp*>(p)->clear_state_f();
}
inline void Dsp::init(unsigned int samplingFreq)
{
fSamplingFreq = samplingFreq;
fConst0 = min(1.92e+05, max(1.0, (double)fSamplingFreq));
fConst1 = exp((0 - (0.1 / fConst0)));
fConst2 = exp((0 - (2e+02 / fConst0)));
clear_state_f();
}
void Dsp::init_static(unsigned int samplingFreq, PluginDef *p)
{
static_cast<Dsp*>(p)->init(samplingFreq);
}
void always_inline Dsp::compute(int count, FAUSTFLOAT *input0, FAUSTFLOAT *output0)
{
double fSlow0 = double(fslider0);
double fSlow1 = (5 * fSlow0);
for (int i=0; i<count; i++) {
double fTemp0 = (double)input0[i];
double fTemp1 = max((double)1, fabs(fTemp0));
double fTemp2 = ((fConst2 * (fRec0[1] < fTemp1)) + (fConst1 * (fRec0[1] >= fTemp1)));
fRec0[0] = ((fRec0[1] * fTemp2) + (fTemp1 * (0 - (fTemp2 - 1))));
double fTemp3 = max((double)0, (fSlow1 + (20 * log10(fRec0[0]))));
double fTemp4 = (0.5 * min((double)1, max((double)0, (0.09522902580706599 * fTemp3))));
output0[i] = (FAUSTFLOAT)(fTemp0 * pow(10,(0.05 * (fSlow0 + ((fTemp3 * (0 - fTemp4)) / (1 + fTemp4))))));
// post processing
fRec0[1] = fRec0[0];
}
}
void __rt_func Dsp::compute_static(int count, FAUSTFLOAT *input0, FAUSTFLOAT *output0, PluginDef *p)
{
static_cast<Dsp*>(p)->compute(count, input0, output0);
}
int Dsp::register_par(const ParamReg& reg)
{
reg.registerVar("shaper.sharper",N_("sharper"),"S","",&fslider0, 1.0, 1.0, 1e+01, 1.0);
return 0;
}
int Dsp::register_params_static(const ParamReg& reg)
{
return static_cast<Dsp*>(reg.plugin)->register_par(reg);
}
PluginDef *plugin() {
return new Dsp();
}
void Dsp::del_instance(PluginDef *p)
{
delete static_cast<Dsp*>(p);
}
} // end namespace noise_shaper
|