Microsoft DirectX 8.0 (Visual Basic)

バッファでのエフェクトの設定

DirectMusic Producer で作成したセグメントを、オーディオパス構成を使って演奏している場合、エフェクトは構成オブジェクトからオーディオパスを作成したときに設定される。標準オーディオパスにはエフェクトも保持される。ただし、実行時にカスタム オーディオパスでエフェクトを実装したり、標準オーディオパスにエフェクトを追加したい場合がある。たとえば、ウェーブまたは MIDI ファイルにエフェクトを適用できるように、標準オーディオパスにエフェクトを追加したい場合がある。

オーディオパスにエフェクトを適用するには、まずパス上のバッファへの DirectSoundSecondaryBuffer8 オブジェクトを取得する。次に、DirectSoundSecondaryBuffer8.SetFX を使って、そのバッファに 1 つまたは複数のエフェクトを設定する。オーディオパスは非アクティブでなければならない。

バッファ オブジェクトを取得する方法については、「オーディオパスからのオブジェクトの取得」を参照すること。GetObjectInPath の呼び出しで標準オーディオパス バッファを識別する方法については、「標準オーディオパス」のオーディオパスのタイプを参照すること。

次のサンプルコードでは、標準オーディオパスを設定し、パスからバッファを取得し、バッファ上でエコー エフェクトを設定している。dmPerformanceDirectMusicPerformance8 オブジェクトである。

Dim dmAudioPath As DirectMusicAudioPath8
Dim dsBuffer As DirectSoundSecondaryBuffer8
Dim DSEffects(0) As DSEFFECTDESC
Dim lResults(0) As Long

' 音源および環境リバーブ バッファを使って、
' 標準オーディオパスを作成する。パスはアクティブにしない。
' バッファが実行中の場合、SetFX は失敗する。
 
Set dmAudioPath = dmPerformance.CreateStandardAudioPath( _
    DMUS_APATH_DYNAMIC_3D, 128, False)
 
' オーディオパスのバッファを取得する。
 
Set dsBuffer = dmAudioPath.GetObjectinPath(DMUS_PCHANNEL_ALL, _
    DMUS_PATH_BUFFER, 0, GUID_ALL, 0, IID_DirectSoundSecondaryBuffer)
 
' エフェクトを記述する。
 
DSEffects(0).lFlags = 0
DSEffects(0).guidDSFXClass = DSFX_STANDARD_ECHO
 
' バッファのエフェクトを設定する。
 
dsBuffer.SetFX 1, DSEffects, lResults
 
' ここで lResults(0) の値をチェックし、エフェクトが
' どのように割り当てられているかを確認できる。
 
dmAudioPath.Activate (True)