十段图示均衡器实验报告文档格式.docx

上传人:b****6 文档编号:16662395 上传时间:2022-11-25 格式:DOCX 页数:13 大小:37.17KB
下载 相关 举报
十段图示均衡器实验报告文档格式.docx_第1页
第1页 / 共13页
十段图示均衡器实验报告文档格式.docx_第2页
第2页 / 共13页
十段图示均衡器实验报告文档格式.docx_第3页
第3页 / 共13页
十段图示均衡器实验报告文档格式.docx_第4页
第4页 / 共13页
十段图示均衡器实验报告文档格式.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

十段图示均衡器实验报告文档格式.docx

《十段图示均衡器实验报告文档格式.docx》由会员分享,可在线阅读,更多相关《十段图示均衡器实验报告文档格式.docx(13页珍藏版)》请在冰豆网上搜索。

十段图示均衡器实验报告文档格式.docx

中心频率两边功率衰减3dB时,对应的两个不同频率,分别为上、下截止频率,上、下截止频率之差为带宽。

增益(G):

均衡器对于各种音效的实现依靠的最重要指标为增益曲线,一般以分贝为单位表示。

品质因子(Q):

中心频率与带宽的比值,用来表征滤波器的锐度。

音乐风格

预设增益

Default

{0,0,0,0,0,0,0,0,0,0}

Club

{0,0,0,1,2,3,3,2,1,0}

Dance

{9,8,5,2,1,0,-3,-4,-3,0}

FullBuss

{8,8,8,7,4,0,-3,-5,-7,-9}

FullTreble

{-9,-8,-7,-6,-3,1,5,8,10,12}

Pope

{-2,-1,0,2,3,2,0,-2,-2,-1}

Rock

{6,5,2,-2,-5,-2,0,3,5,6}

Soft

{2,1,0,0,-1,0,1,2,3,4}

LargeHall

{8,7,6,3,2,0,-1,-2,-1,0}

Party

{4,4,3,2,0,0,0,0,0,4}

四、实验主要代码:

//音乐风格的预设增益

intPreEft[18][10]={0,0,0,0,0,-1,-2,-4,-6,-9,

0,0,0,1,2,3,3,2,1,0,

9,8,5,2,1,0,-3,-4,-3,0,

0,0,0,0,0,0,0,0,0,0,

8,8,8,7,4,0,-3,-5,-7,-9,

7,6,4,1,-3,-2,-1,2,6,9,

-9,-8,-7,-6,-3,1,5,8,10,12,

1,5,7,3,-2,-1,0,3,6,10,

8,7,6,3,2,0,-1,-2,-1,0,

-4,-3,-1,0,2,3,3,2,1,0,

4,4,3,2,0,0,0,0,0,4,

-2,-1,0,2,3,2,0,-2,-2,-1,

0,0,0,-1,-3,0,2,2,1,0,

6,5,2,-2,-5,-2,0,3,5,6,

-1,-2,-3,-2,0,1,2,3,4,5,

2,1,0,0,-1,0,1,2,3,4,

1,1,1,1,0,-1,-2,-2,0,3,

3,2,1,0,-3,-2,-1,1,3,4};

intCEqualizer:

:

UseEQ(EQPARAM*param,unsignedchar*Sig,unsignedchar*OutSig,longILen)

{

unsignedlongHband=(unsignedlong)(3*param->

Fs/8);

double*bandpow=(double*)malloc(param->

wbandlen*sizeof(double));

longi,k,len,level=-1;

for(i=9;

i>

=0;

i--)

{

if(CenBand[i]<

Hband)

{level=i;

break;

}

}

if((level<

1)||((level+1)>

param->

wbandlen))returnERR_PARAMERR;

if(level==1)returnERR_NOERR;

InitFilterBank(level);

for(i=0;

i<

wbandlen;

i++)bandpow[i]=pow(10,(param->

wband[i]/20));

double*tSig1=NULL;

double*tSig2=NULL;

if(param->

bitpersmp==16)

short*sig16=NULL;

if(param->

nchn==2)

{

len=ILen>

>

2;

if(NULL==(tSig1=(double*)malloc(sizeof(double)*len)))

returnERR_INSURMEM;

if(NULL==(tSig2=(double*)malloc(sizeof(double)*len)))

sig16=(short*)Sig;

k=0;

for(i=0;

len;

i++)

{tSig1[i]=sig16[k++]/32768.;

tSig2[i]=sig16[k++]/32768.;

//channel1

WaveDec(tSig1,len);

level+1;

i++)//addweight

{

k=Lb[i];

while(k<

=Le[i]){C[k]*=bandpow[i];

k++;

}

WaveRec(tSig1,len);

//channel2

WaveDec(tSig2,len);

WaveRec(tSig2,len);

//writebacktoOutSig

sig16=(short*)OutSig;

if(tSig1[i]>

1)sig16[k++]=32767;

elseif(tSig1[i]<

-1)sig16[k++]=-31768;

elsesig16[k++]=(short)(tSig1[i]*32768);

if(tSig2[i]>

elseif(tSig2[i]<

elsesig16[k++]=(short)(tSig2[i]*32768);

}

elseif(param->

nchn==1)

1;

{tSig1[i]=sig16[i]/32768.;

1)sig16[i]=32767;

-1)sig16[i]=-31768;

elsesig16[i]=(short)(tSig1[i]*32768);

else

returnERR_PARAMERR;

elseif(param->

bitpersmp==8)

k=0;

{tSig1[i]=(Sig[k++]-128)/128.;

tSig2[i]=(Sig[k++]-128)/128.;

1)OutSig[k++]=255;

-1)OutSig[k++]=0;

elseOutSig[k++]=(unsignedchar)(tSig1[i]*128+128);

elseOutSig[k++]=(unsignedchar)(tSig2[i]*128+128);

//OutSig[k++]=(unsignedchar)(tSig1[i]*128+128);

//OutSig[k++]=(unsignedchar)(tSig2[i]*128+128);

len=ILen;

{tSig1[i]=(Sig[i]-128)/128;

1)OutSig[i]=255;

-1)OutSig[i]=0;

elseOutSig[i]=(unsignedchar)(tSig1[i]*128+128);

//OutSig[i]=(unsignedchar)(tSig1[i]*128+128);

free(bandpow);

if(tSig1!

=NULL)free(tSig1);

if(tSig2!

=NULL)free(tSig2);

returnERR_NOERR;

//启用均衡

voidCEQDlg:

OnBtnset()//启用均衡

//TODO:

Addyourcontrolnotificationhandlercodehere

isset=true;

CScrollBar*pSB=(CScrollBar*)GetDlgItem(IDC_SCR1);

pSB->

EnableScrollBar(ESB_ENABLE_BOTH);

pSB=(CScrollBar*)GetDlgItem(IDC_SCR2);

pSB->

pSB=(CScrollBar*)GetDlgItem(IDC_SCR3);

pSB=(CScrollBar*)GetDlgItem(IDC_SCR4);

pSB=(CScrollBar*)GetDlgItem(IDC_SCR5);

pSB=(CScrollBar*)GetDlgItem(IDC_SCR6);

pSB=(CScrollBar*)GetDlgItem(IDC_SCR7);

pSB=(CScrollBar*)GetDlgItem(IDC_SCR8);

pSB=(CScrollBar*)GetDlgItem(IDC_SCR9);

pSB=(CScrollBar*)GetDlgItem(IDC_SCR10);

pSB=(CScrollBar*)GetDlgItem(IDC_SCRG);

if(isset)

for(inti=0;

10;

i++)bandpow[i]+=m_editg;

mwavefile.SetEQ(bandpow,10);

//禁用均衡

OnBtnclose()//禁用均衡

isset=false;

EnableScrollBar(ESB_DISABLE_BOTH);

mwavefile.StopEQ();

//归零

OnBtnzero()//归零

if(isset)

CScrollBar*pSB=(CScrollBar*)GetDlgItem(IDC_SCR1);

pSB->

SetScrollPos(0);

pSB=(CScrollBar*)GetDlgItem(IDC_SCR2);

pSB=(CScrollBar*)GetDlgItem(IDC_SCR3);

pSB=(CScrollBar*)GetDlgItem(IDC_SCR4);

pSB=(CScrollBar*)GetDlgItem(IDC_SCR5);

pSB=(CScrollBar*)GetDlgItem(IDC_SCR6);

pSB=(CScrollBar*)GetDlgItem(IDC_SCR7);

pSB=(CScrollBar*)GetDlgItem(IDC_SCR8);

pSB=(CScrollBar*)GetDlgItem(IDC_SCR9);

pSB=(CScrollBar*)GetDlgItem(IDC_SCR10);

UpdateData();

bandpow[0]=m_edit1=0;

bandpow[1]=m_edit2=0;

bandpow[2]=m_edit3=0;

bandpow[3]=m_edit4=0;

bandpow[4]=m_edit5=0;

bandpow[5]=m_edit6=0;

bandpow[6]=m_edit7=0;

bandpow[7]=m_edit8=0;

bandpow[8]=m_edit9=0;

bandpow[9]=m_edit10=0;

m_editg=0;

UpdateData(FALSE);

if(isset)mwavefile.SetEQ(bandpow,10);

}

//选择下拉效果菜单

OnSelchangePresent()//效果选择下拉框

isset=true;

intix=m_PresentEf.GetCurSel();

bandpow[0]=m_edit1=PreEft[ix][0];

bandpow[1]=m_edit2=PreEft[ix][1];

bandpow[2]=m_edit3=PreEft[ix][2];

bandpow[3]=m_edit4=PreEft[ix][3];

bandpow[4]=m_edit5=PreEft[ix][4];

bandpow[5]=m_edit6=PreEft[ix][5];

bandpow[6]=m_edit7=PreEft[ix][6];

bandpow[7]=m_edit8=PreEft[ix][7];

bandpow[8]=m_edit9=P

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1