📄 equaliz.c
字号:
#include <stdlib.h>
#include <math.h>
#include "rtdspc.h"
/**************************************************************************
EQUALIZ.C - PROGRAM TO DEMONSTRATE AUDIO EQUALIZATION
USING 7 IIR BANDPASS FILTERS.
*************************************************************************/
/* gain values global so they can be changed in real-time */
/* start at flat pass through */
float gain[7] = { 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 };
void main()
{
int i;
float signal_in,signal_out;
/* history arrays for the filters */
static float hist[7][2];
/* bandpass filter coefficients for a 44.1 kHz sampling rate */
/* center freqs are 60, 150, 400, 1000, 2400, 6000, 15000 Hz */
/* at other rates center freqs are: */
/* at 32 kHz: 44, 109, 290, 726, 1742, 4354, 10884 Hz */
/* at 22.1 kHz: 30, 75, 200, 500, 1200, 3000, 7500 Hz */
static float bpf[7][5] = {
{ 0.0025579741, -1.9948111773, 0.9948840737, 0.0, -1.0 },
{ 0.0063700872, -1.9868060350, 0.9872598052, 0.0, -1.0 },
{ 0.0168007612, -1.9632060528, 0.9663984776, 0.0, -1.0 },
{ 0.0408578217, -1.8988473415, 0.9182843566, 0.0, -1.0 },
{ 0.0914007276, -1.7119922638, 0.8171985149, 0.0, -1.0 },
{ 0.1845672876, -1.0703823566, 0.6308654547, 0.0, -1.0 },
{ 0.3760778010, 0.6695288420, 0.2478443682, 0.0, -1.0 },
};
init_evm(); /* INITIALIZE EVALUATION MODULE PARAMETERS */
for(;;) {
/* sum 7 bpf outputs + input for each new sample */
signal_out = signal_in = getinput();
for(i = 0 ; i < 7 ; i++)
signal_out += gain[i]*iir_filter(signal_in,bpf[i],1,hist[i]);
sendout(signal_out);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -