参数平衡特技(ParamEQ)

参数平衡特技的参数通过下面的结构来调整:
typedef struct _DSFXParamEq 
{
 FLOAT fCenter;//中心的频率 ,单位是hz,取值范围是 80.0f hz~~16000.0f ,缺省值 是 8000hz
 FLOAT fBandwidth;//音的带宽,以半音为单位,取值范围是 1.0f~~36.0f,缺省值 是12
 FLOAT fGain;//音频的音量,以db为单位,取值范围是 -15.0db ~~15.0f db,缺省值是0db
} DSFXParamEq, *LPDSFXParamEq;
 
我们在程序中可以定义这个结构的对象,如下:
LPDIRECTSOUNDFXPARAMEQ8 g_pParamEq = NULL;
DSFXParamEq g_paramsParamEq; 
通过拖动滑动条,我们可以用下面的代码调整参数:
DSEFFECTDESC effectdesc;
ZeroMemory( &effectdesc, sizeof( DSEFFECTDESC ) );
effectdesc.dwSize = sizeof(DSEFFECTDESC);
effectdesc.dwFlags = 0;
effectdesc.guidDSFXClass = GUID_DSFX_STANDARD_PARAMEQ;
DWORD dwResult;
if(g_pDSBuffer8)
{
 g_pDSBuffer8->SetFX(1,&effectdesc,&dwResult);
 if( FAILED( hr = g_pDSBuffer8->GetObjectInPath( GUID_DSFX_STANDARD_PARAMEQ, 0, IID_IDirectSoundFXParamEq8,(LPVOID*) &g_pParamEq ) ) )
  return ;
 g_pParamEq ->SetAllParameters (&g_paramsParamEq);
}
 
 
 
原文地址:https://www.cnblogs.com/qq78292959/p/2077037.html