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;
}
}