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