Em đang làm đồ án về tạo hiệu ứng âm thanh trên kit DSK6713 nhưng làm tới chổ bass-treble thì ko hiểu sao vùng tần số khoảng từ 8k trở lên bị rè
Em chia làm 6 band để lọc : low pass 100Hz, band pass 100 - 500 HZ, band pass 500 - 1KHZ, band pass 1K-3KHz, band pass 3 - 8KHZ và high pass 8KHZ
Em không biết là âm thanh đưa vào có cần xử lý gì ko . Em chỉ đưa âm thành vào, đưa qua các bộ lọc FIR rồi dùng 6 cái slider để điều chỉnh độ khuếch đại (từ -3dB đến 3dB)
đây là code em viết bằng C
Do code này em tham khảo từ tài liệu nên có chổ này em không hiểu . Cái dòng "output_sample(output >> 17)" thì cái dấu >> nghĩa là gì vậy ?
Còn dưới đây là thông số bộ lọc FIR
Thông số h em lấy từ matlab nhưng ko hiểu sao khi đưa vào thì âm thanh ko nghe gì
phải *48000 mới nghe thấy, ko biết là do đâu nữa
Em chia làm 6 band để lọc : low pass 100Hz, band pass 100 - 500 HZ, band pass 500 - 1KHZ, band pass 1K-3KHz, band pass 3 - 8KHZ và high pass 8KHZ
Em không biết là âm thanh đưa vào có cần xử lý gì ko . Em chỉ đưa âm thành vào, đưa qua các bộ lọc FIR rồi dùng 6 cái slider để điều chỉnh độ khuếch đại (từ -3dB đến 3dB)
đây là code em viết bằng C
Code:
#include "lp100.cof"
#include "bp100-500.cof"
#include "bp500-1000.cof"
#include "bp1000-3000.cof"
#include "bp3000-8000.cof"
#include "hp8000.cof"
#include "dsk6713_aic23.h"
#include "math.h"
#include "dsk6713.h"
#include "stdlib.h"
Uint32 fs=DSK6713_AIC23_FREQ_32KHZ;
int temp,output;
int i=0;
int yn1 = 0; //initialize filter's output
int yn2 = 0; //initialize filter's output
int yn3 = 0; //initialize filter's output
int yn4 = 0; //initialize filter's output
int yn5 = 0; //initialize filter's output
int yn6 = 0; //initialize filter's output
int vol1 =3;
int vol2 =3;
int vol3 =3;
int vol4 =3;
int vol5 =3;
int vol6 =3;
short dly[N]; //delay samples
interrupt void c_int11() //ISR
{
short i;
dly[0]=input_sample(); //input newest sample
// Bass-Treble
if (DSK6713_DIP_get(2)==0)
{
yn1 = 0;
yn2 = 0;
yn3 = 0;
yn4 = 0;
yn5 = 0;
yn6 = 0;
for (i = 0; i< N; i++)
yn1 += (h1[i] * dly[i]); //y(n) += h(i)* x(n-i)
for (i = 0; i< N; i++)
yn2 += (h2[i] * dly[i]); //y(n) += h(i)* x(n-i)
for (i = 0; i< N; i++)
yn3 += (h3[i] * dly[i]); //y(n) += h(i)* x(n-i)
for (i = 0; i< N; i++)
yn4 += (h4[i] * dly[i]); //y(n) += h(i)* x(n-i)
for (i = 0; i< N; i++)
yn5 += (h5[i] * dly[i]); //y(n) += h(i)* x(n-i)
for (i = 0; i< N; i++)
yn6 += (h6[i] * dly[i]); //y(n) += h(i)* x(n-i)
for (i = N-1; i > 0; i--) //starting @ end of buffer
dly[i] = dly[i-1]; //update delays with data move
output = yn1*pow(2,vol1-3) + yn2*pow(2,vol2-3) + yn3*pow(2,vol3-3) + yn4*pow(2,vol4-3) + yn5*pow(2,vol5-3) + yn6*pow(2,vol6-3);
output_sample(output >> 17);
}
else
{
output = dly[0];
output_sample(output);
}
return;
}
void main()
{
comm_intr(); //init DSK, codec, McBSP
while(1); //infinite loop
}
Còn dưới đây là thông số bộ lọc FIR
Code:
//*******lp100.cof**********
#define N 81 //number of coefficients
int h1[N]= {
0.001778231322125*48000, 0.00181391345684*48000, 0.001912769694844*48000, 0.002074621445111*48000,
0.00229887686662*48000, 0.002584533087879*48000, 0.002930181189695*48000, 0.003334013927073*48000,
0.003793836147146*48000, 0.004307077841307*48000, 0.004870809751382*48000, 0.00548176143179*48000,
0.006136341652474*48000, 0.006830661010895*48000, 0.007560556605831*48000, 0.008321618611112*48000,
0.009109218573952*48000, 0.00991853925021*48000, 0.01074460577791*48000, 0.0115823179807*48000,
0.01242648358463*48000, 0.01327185212502*48000, 0.01411314931492*48000, 0.01494511164295*48000,
0.01576252096657*48000, 0.01656023886624*48000, 0.01733324052725*48000, 0.0180766479189*48000,
0.0187857620452*48000, 0.01945609404741*48000, 0.02008339494606*48000, 0.02066368381968*48000,
0.02119327422747*48000, 0.02166879869531*48000, 0.02208723109765*48000, 0.0224459067819*48000,
0.02274254029762*48000, 0.0229752406089*48000, 0.02314252368578*48000, 0.0232433223882*48000,
0.02327699357489*48000, 0.0232433223882*48000, 0.02314252368578*48000, 0.0229752406089*48000,
0.02274254029762*48000, 0.0224459067819*48000, 0.02208723109765*48000, 0.02166879869531*48000,
0.02119327422747*48000, 0.02066368381968*48000, 0.02008339494606*48000, 0.01945609404741*48000,
0.0187857620452*48000, 0.0180766479189*48000, 0.01733324052725*48000, 0.01656023886624*48000,
0.01576252096657*48000, 0.01494511164295*48000, 0.01411314931492*48000, 0.01327185212502*48000,
0.01242648358463*48000, 0.0115823179807*48000, 0.01074460577791*48000, 0.00991853925021*48000,
0.009109218573952*48000, 0.008321618611112*48000, 0.007560556605831*48000, 0.006830661010895*48000,
0.006136341652474*48000, 0.00548176143179*48000, 0.004870809751382*48000, 0.004307077841307*48000,
0.003793836147146*48000, 0.003334013927073*48000, 0.002930181189695*48000, 0.002584533087879*48000,
0.00229887686662*48000, 0.002074621445111*48000, 0.001912769694844*48000, 0.00181391345684*48000,
0.001778231322125*48000
};
phải *48000 mới nghe thấy, ko biết là do đâu nữa

Comment