| |
用DirectSound实现增强的音频特技效果 |
|
时间: 2005-12-28 来自:天极开发 |
 |
|
3、失真特技(Distorion)
失真特技的参数通过下面的结构来调整:
typedef struct _DSFXDistortion { FLOAT fGain;//信号失真后的音量的强度变化,缺省是比原来衰减 18db。 FLOAT fEdge;//失真的强度,用百分比来表示,缺省值是15 FLOAT fPostEQCenterFrequency;//信号叠加的中心频率,缺省是2400hz FLOAT fPostEQBandwidth;//信号的带宽 ,缺省是2400hz FLOAT fPreLowpassCutoff;//高通滤波的最高值,缺省是8000hz } DSFXDistortion, *LPDSFXDistortion; | 我们在程序中可以定义这个结构的对象,如下:
LPDIRECTSOUNDFXDISTORTION8 g_pDistortion = NULL; DSFXDistortion g_paramsDistortion; | 通过拖动滑动条,我们可以用下面的代码调整参数:
DSEFFECTDESC effectdesc; ZeroMemory( &effectdesc, sizeof( DSEFFECTDESC ) ); effectdesc.dwSize = sizeof(DSEFFECTDESC); effectdesc.dwFlags = 0; effectdesc.guidDSFXClass = GUID_DSFX_STANDARD_DISTORTION; DWORD dwResult; if(g_pDSBuffer8) { g_pDSBuffer8->SetFX(1,&effectdesc,&dwResult); if( FAILED( hr = g_pDSBuffer8->GetObjectInPath( GUID_DSFX_STANDARD_DISTORTION, 0, IID_IDirectSoundFXDistortion8,(LPVOID*) &g_pDistortion ) ) ) return ; g_pDistortion ->SetAllParameters (&g_paramsDistortion); } | 4、回声特技( Echo)
回声特技的参数通过下面的结构来调整:
typedef struct _DSFXEcho { FLOAT fWetDryMix;处理过的信号和没有处理的信号的比率,缺省值是50 FLOAT fFeedback;//输出信号反馈到输入信号的百分比, 缺省值是50 FLOAT fLeftDelay;//左声道延迟的时间,缺省值500ms FLOAT fRightDelay;//右声道延迟的时间,缺省值500ms LONG lPanDelay;//是否左右声道交替延迟,缺省值 0,左右声道不交替 } DSFXEcho, *LPDSFXEcho; | 我们在程序中可以定义这个结构的对象,如下:
LPDIRECTSOUNDFXECHO8 g_pEcho = NULL; DSFXEcho g_paramsEcho; | 通过拖动滑动条,我们可以用下面的代码调整参数:
DSEFFECTDESC effectdesc; ZeroMemory( &effectdesc, sizeof( DSEFFECTDESC ) ); effectdesc.dwSize = sizeof(DSEFFECTDESC); effectdesc.dwFlags = 0; effectdesc.guidDSFXClass = GUID_DSFX_STANDARD_ECHO; DWORD dwResult; if(g_pDSBuffer8) { g_pDSBuffer8->SetFX(1,&effectdesc,&dwResult); if( FAILED( hr = g_pDSBuffer8->GetObjectInPath( GUID_DSFX_STANDARD_ECHO, 0, IID_IDirectSoundFXEcho8,(LPVOID*) &g_pEcho ) ) ) return ; g_pEcho->SetAllParameters (&g_paramsEcho); } |
|
|
|
|
|
|
|
|