Exemple #1
0
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;
}
Exemple #4
0
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);
  }
}
Exemple #5
0
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;
};
Exemple #6
0
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;
};
Exemple #7
0
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;
};