| |
用DirectSound实现增强的音频特技效果 |
|
时间: 2005-12-28 来自:天极开发 |
 |
|
5、波浪特技(Flanger)
波浪特技的参数通过下面的结构来调整:
typedef struct _DSFXFlanger { FLOAT fWetDryMix;//处理过的信号和没有处理的信号的比率,取值范围 0~~100,缺省值是50 FLOAT fDepth;//低频振荡器调整延迟时间的百分比,取值范围 0~~100,缺省值 是100 FLOAT fFeedback;//输出信号反馈到输入信号的百分比,取值范围 -99~~99, 缺省值是-50 FLOAT fFrequency;//低频振荡器的频率, 缺省值是 0.25 LONG lWaveform;//低频振荡器的波形,分为三角形,和正弦波形 FLOAT fDelay;//播放之前的延迟,以毫秒作单位,缺省值是2ms LONG lPhase;//相位 } DSFXFlanger, *LPDSFXFlanger; | 我们在程序中可以定义这个结构的对象,如下:
LPDIRECTSOUNDFXFLANGER8 g_pFlanger = NULL; DSFXFlanger g_paramsFlanger; | 通过拖动滑动条,我们可以用下面的代码调整参数:
DSEFFECTDESC effectdesc; ZeroMemory( &effectdesc, sizeof( DSEFFECTDESC ) ); effectdesc.dwSize = sizeof(DSEFFECTDESC); effectdesc.dwFlags = 0; effectdesc.guidDSFXClass = GUID_DSFX_STANDARD_FLANGER; DWORD dwResult; if(g_pDSBuffer8) { g_pDSBuffer8->SetFX(1,&effectdesc,&dwResult); if( FAILED( hr = g_pDSBuffer8->GetObjectInPath( GUID_DSFX_STANDARD_FLANGER, 0, IID_IDirectSoundFXFlanger8,(LPVOID*) &g_pFlanger ) ) ) return ; g_pFlanger->SetAllParameters (&g_paramsFlanger); } | 6、咕噜声效特技(Gargle)
咕噜声效特技的参数通过下面的结构来调整:
typedef struct _DSFXGargle { DWORD dwRateHz;//调制波频率,取值范围 1 ~~1000 hz,缺省值是20 hz DWORD dwWaveShape;//调制波形状,分为三角形和正方形两种,DSFXGARGLE_WAVE_TRIANGLE DSFXGARGLE_WAVE_SQUARE } DSFXGargle, *LPDSFXGargle; | 我们在程序中可以定义这个结构的对象,如下:
LPDIRECTSOUNDFXGARGLE8 g_pGargle = NULL; DSFXGargle g_paramsGargle; DSEFFECTDESC effectdesc; ZeroMemory( &effectdesc, sizeof( DSEFFECTDESC ) ); effectdesc.dwSize = sizeof(DSEFFECTDESC); effectdesc.dwFlags = 0; effectdesc.guidDSFXClass = GUID_DSFX_STANDARD_GARGLE; DWORD dwResult; if(g_pDSBuffer8) { g_pDSBuffer8->SetFX(1,&effectdesc,&dwResult); if( FAILED( hr = g_pDSBuffer8->GetObjectInPath( GUID_DSFX_STANDARD_GARGLE, 0, IID_IDirectSoundFXGargle8,(LPVOID*) &g_pGargle ) ) ) return ; g_pGargle->SetAllParameters (&g_paramsGargle); } |
|
|
|
|
|
|
|
|