www.pudn.com > lpc.zip > lpfilt31_i.c


/************************************************************************
*
*	Ron Cohn's implementation	January 1992
*
*   31 Point Equiripple FIR Low-Pass Filter
*
*	Passband:  ripple = 0.5 dB, cutoff =  800 Hz
*	Stopband:  atten. =  40 dB, cutoff = 1240 Hz
*
* Inputs:
*    LEN    - Length of speech buffers
*    NSAMP  - Number of samples to filter
*    INBUF  - Input speech buffer
* Output:
*    LPBUF_I  - Low passed speech buffer
*/
#include "ourstuff.h"

void lpfilt31_i(inbuf_i, lpbuf_i)
int_type inbuf_i[], lpbuf_i[];
{
   int_type j;
   static int_type h0  =   -40;
   static int_type h1  =   -43;
   static int_type h2  =   -34;
   static int_type h3  =    2;
   static int_type h4  =    54;
   static int_type h5  =    89;
   static int_type h6  =    75;
   static int_type h7  =    1;
   static int_type h8  =   -107;
   static int_type h9  =   -187;
   static int_type h10 =   -165;
   static int_type h11 =    2;
   static int_type h12 =    299;
   static int_type h13 =    644;
   static int_type h14 =    921;
   static int_type h15 =    1026;
	

   for(j=312+1-180; j<=312; j++)
   {
      lpbuf_i[j]  = ((long_type)h0  * (long_type)(inbuf_i[j   ] + inbuf_i[j-30]))>>12;
      /*      printf("%d lpbuf_i: %f\n", j, lpbuf_i[j]/1.0);*/
      lpbuf_i[j] += ((long_type)h1  * (long_type)(inbuf_i[j -1] + inbuf_i[j-29]))>>12;
      lpbuf_i[j] += ((long_type)h2  * (long_type)(inbuf_i[j -2] + inbuf_i[j-28]))>>12;
      lpbuf_i[j] += ((long_type)h3  * (long_type)(inbuf_i[j -3] + inbuf_i[j-27]))>>12;
      lpbuf_i[j] += ((long_type)h4  * (long_type)(inbuf_i[j -4] + inbuf_i[j-26]))>>12;
      lpbuf_i[j] += ((long_type)h5  * (long_type)(inbuf_i[j -5] + inbuf_i[j-25]))>>12;
      lpbuf_i[j] += ((long_type)h6  * (long_type)(inbuf_i[j -6] + inbuf_i[j-24]))>>12;
      lpbuf_i[j] += ((long_type)h7  * (long_type)(inbuf_i[j -7] + inbuf_i[j-23]))>>12;
      lpbuf_i[j] += ((long_type)h8  * (long_type)(inbuf_i[j -8] + inbuf_i[j-22]))>>12;
      lpbuf_i[j] += ((long_type)h9  * (long_type)(inbuf_i[j -9] + inbuf_i[j-21]))>>12;
      lpbuf_i[j] += ((long_type)h10 * (long_type)(inbuf_i[j-10] + inbuf_i[j-20]))>>12;
      lpbuf_i[j] += ((long_type)h11 * (long_type)(inbuf_i[j-11] + inbuf_i[j-19]))>>12;
      lpbuf_i[j] += ((long_type)h12 * (long_type)(inbuf_i[j-12] + inbuf_i[j-18]))>>12;
      lpbuf_i[j] += ((long_type)h13 * (long_type)(inbuf_i[j-13] + inbuf_i[j-17]))>>12;
      lpbuf_i[j] += ((long_type)h14 * (long_type)(inbuf_i[j-14] + inbuf_i[j-16]))>>12;
      lpbuf_i[j] += ((long_type)h15 * (long_type)(inbuf_i[j-15]              ))>>12;

   }
}