AnalogFilter::AnalogFilter (unsigned char Ftype, float Ffreq, float Fq, unsigned char Fstages) { iSAMPLE_RATE=SAMPLE_RATE; ifSAMPLE_RATE=fSAMPLE_RATE; stages = Fstages; for (int i = 0; i < 3; i++) { oldc[i] = 0.0; oldd[i] = 0.0; c[i] = 0.0; d[i] = 0.0; }; type = Ftype; freq = Ffreq; q = Fq; gain = 1.0; if (stages >= MAX_FILTER_STAGES) stages = MAX_FILTER_STAGES; cleanup (); firsttime = 0; abovenq = 0; oldabovenq = 0; setfreq_and_q (Ffreq, Fq); firsttime = 1; d[0] = 0; //this is not used outgain = 1.0; };
void AnalogFilter_Init(ZEq10ban_t * s, AnalogFilter *filter, unsigned char Ftype, float Ffreq, float Fq, unsigned char Fstages) { int i; filter->stages = Fstages; for (i = 0; i < 3; i++) { filter->oldc[i] = 0.0; filter->oldd[i] = 0.0; filter->c[i] = 0.0; filter->d[i] = 0.0; }; filter->type = Ftype; filter->freq = Ffreq; filter->q = Fq; filter->gain = 1.0; if (filter->stages >= MAX_FILTER_STAGES) filter->stages = MAX_FILTER_STAGES; AnalogFilter_Cleanup (s,filter); filter->firsttime = 0; filter->abovenq = 0; filter->oldabovenq = 0; setfreq_and_q (s, filter, Ffreq, Fq); filter->firsttime = 1; filter->d[0] = 0; //this is not used filter->outgain = 1.0; };
AnalogFilter::AnalogFilter(unsigned char Ftype, float Ffreq, float Fq, unsigned char Fstages, unsigned int srate, int bufsize) :Filter(srate, bufsize), type(Ftype), stages(Fstages), freq(Ffreq), q(Fq), gain(1.0), abovenq(false), oldabovenq(false) { for(int i = 0; i < 3; ++i) coeff.c[i] = coeff.d[i] = oldCoeff.c[i] = oldCoeff.d[i] = 0.0f; if(stages >= MAX_FILTER_STAGES) stages = MAX_FILTER_STAGES; cleanup(); firsttime = false; setfreq_and_q(Ffreq, Fq); firsttime = true; coeff.d[0] = 0; //this is not used outgain = 1.0f; }
void SVFilter::init(float sample_rate, int type, REALTYPE Ffreq, REALTYPE Fq, unsigned char Fstages, float gain) { m_sample_rate = sample_rate; stages = Fstages; m_type = type; freq = Ffreq; q = Fq; m_gain = 1.0; m_outgain = 1.0; needsinterpolation = 0; firsttime = 1; if (stages >= MAX_FILTER_STAGES) { stages = MAX_FILTER_STAGES; } cleanup(); setfreq_and_q(Ffreq,Fq); m_outgain = dB2rap(gain); if (m_outgain > 1.0) { m_outgain = sqrt(m_outgain); } }
RBFilter::RBFilter (Parameters *param, int Ftype, float Ffreq, float Fq, int Fstages) { this->param = param; stages = Fstages; type = Ftype; freq = Ffreq; q = Fq; qmode = 0; gain = 1.0f; outgain = 1.0f; needsinterpolation = 0; firsttime = 1; en_mix = 0; oldq = 0.0f; oldsq = 0.0f; oldf = 0.0f; hpg = lpg = bpg = 0.0f; if (stages >= MAX_FILTER_STAGES) stages = MAX_FILTER_STAGES; cleanup (); setfreq_and_q (Ffreq, Fq); iper = 1.0f/param->fPERIOD; a_smooth_tc = cSAMPLE_RATE/(cSAMPLE_RATE + 0.01f); //10ms time constant for averaging coefficients b_smooth_tc = 1.0f - a_smooth_tc; };
RBFilter::RBFilter (int Ftype, float Ffreq, float Fq, int Fstages, double sample_rate, float* interpbuf) { stages = Fstages; type = Ftype; freq = Ffreq; q = Fq; qmode = 0; gain = 1.0f; outgain = 1.0f; needsinterpolation = 0; firsttime = 1; en_mix = 0; oldq = 0.0f; oldsq = 0.0f; oldf = 0.0f; hpg = lpg = bpg = 0.0f; fSAMPLE_RATE = sample_rate; if (stages >= MAX_FILTER_STAGES) stages = MAX_FILTER_STAGES; cleanup (); setfreq_and_q (Ffreq, Fq); float cSAMPLE_RATE = 1/sample_rate; a_smooth_tc = cSAMPLE_RATE/(cSAMPLE_RATE + 0.01f); //10ms time constant for averaging coefficients b_smooth_tc = 1.0f - a_smooth_tc; ismp = interpbuf; };
SVFilter::SVFilter(unsigned char Ftype,REALTYPE Ffreq, REALTYPE Fq,unsigned char Fstages) { stages=Fstages; type=Ftype; freq=Ffreq; q=Fq; gain=1.0; outgain=1.0; needsinterpolation=0; firsttime=1; if (stages>=MAX_FILTER_STAGES) stages=MAX_FILTER_STAGES; cleanup(); setfreq_and_q(Ffreq,Fq); };
SVFilter::SVFilter(unsigned char Ftype, float Ffreq, float Fq, unsigned char Fstages) :type(Ftype), stages(Fstages), freq(Ffreq), q(Fq), gain(1.0f), needsinterpolation(false), firsttime(true) { if(stages >= MAX_FILTER_STAGES) stages = MAX_FILTER_STAGES; outgain = 1.0f; cleanup(); setfreq_and_q(Ffreq, Fq); }
AnalogFilter::AnalogFilter (unsigned char Ftype, REALTYPE Ffreq, REALTYPE Fq, unsigned char Fstages) { ismp = new REALTYPE [SOUND_BUFFER_SIZE * 2]; stages=Fstages; for (int i=0;i<3;i++){ oldc[i]=0.0;oldd[i]=0.0; c[i]=0.0;d[i]=0.0; }; type=Ftype; freq=Ffreq; q=Fq; gain=1.0; if (stages>=MAX_FILTER_STAGES) stages=MAX_FILTER_STAGES; cleanup(); firsttime=0; abovenq=0;oldabovenq=0; setfreq_and_q(Ffreq,Fq); firsttime=1; d[0]=0;//this is not used outgain=1.0; };