Exemplo n.º 1
0
void equ_bang(t_rbjfilter *x)
{
     t_atom at[5];
     t_float omega = e_omega(x->x_freq,x->x_rate);
     t_float alpha = e_alpha(x->x_bw*0.01,omega);
     t_float b0 = 1 + alpha*e_A(x->x_gain);
     t_float b1 = -2.*cos(omega);
     t_float b2 = 1 - alpha*e_A(x->x_gain);
     t_float a0 = 1 + alpha/e_A(x->x_gain);
     t_float a1 = -2.*cos(omega);
     t_float a2 = 1 - alpha/e_A(x->x_gain);

/*      post("bang %f %f %f",x->x_freq, x->x_gain, x->x_bw);*/
     
     if (!check_stability(-a1/a0,-a2/a0,b0/a0,b1/a0,b2/a0)) {
       post("equ: filter unstable -> resetting");
       a0=1.;a1=0.;a2=0.;
       b0=1.;b1=0.;b2=0.;
     }

     SETFLOAT(at,-a1/a0);
     SETFLOAT(at+1,-a2/a0);
     SETFLOAT(at+2,b0/a0);
     SETFLOAT(at+3,b1/a0);
     SETFLOAT(at+4,b2/a0);
     
     outlet_list(x->x_obj.ob_outlet,&s_list,5,at);
}
Exemplo n.º 2
0
void highshelf_bang(t_rbjfilter *x)
{
     t_atom at[5];
     t_float omega = e_omega(x->x_freq,x->x_rate);
     t_float A = e_A(x->x_gain);
     t_float cs = cos(omega);
     t_float sn = sin(omega);
     t_float beta = e_beta(A,x->x_bw* 0.01);

     t_float b0 =    A*((A+1) + (A-1)*cs + beta*sn);
     t_float b1 =-2.*A*((A-1) + (A+1)*cs);
     t_float b2 =    A*((A+1) + (A-1)*cs - beta*sn);
     t_float a0 =      ((A+1) - (A-1)*cs + beta*sn);
     t_float a1 =   2.*((A-1) - (A+1)*cs);
     t_float a2 =      ((A+1) - (A-1)*cs - beta*sn);

/*     post("bang %f %f %f",x->x_freq, x->x_gain, x->x_bw);*/
     
     if (!check_stability(-a1/a0,-a2/a0,b0/a0,b1/a0,b2/a0)) {
       post("highshelf: filter unstable -> resetting");
       a0=1.;a1=0.;a2=0.;
       b0=1.;b1=0.;b2=0.;
     }

     SETFLOAT(at,-a1/a0);
     SETFLOAT(at+1,-a2/a0);
     SETFLOAT(at+2,b0/a0);
     SETFLOAT(at+3,b1/a0);
     SETFLOAT(at+4,b2/a0);
     
     outlet_list(x->x_obj.ob_outlet,&s_list,5,at);
}