ホーム > DirectMusic > エフェクトを使った再生

エフェクトを使った再生

目次

  1. 初期化
  2. 再生
  3. 終了処理
  4. サンプル

初期化

まずはじめにオーディオパスを作成します。

// オーディオパスを作成
IDirectMusicAudioPath8 *g_lpAudioPath = NULL;  // オーディオパス
g_lpPerformance->CreateStandardAudioPath(
  DMUS_APATH_SHARED_STEREOPLUSREVERB,// パスのタイプ
  64,                                // パス内のパフォーマンスチャンネル数
  FALSE,                             // 作成時にパスをアクティブにするか
  &lpDMAudioPath );                  // 作成したパスのポインタ

次にサウンドバッファのポインタを取得します。

// サウンドバッファを取得
g_lpAudioPath->GetObjectInPath(
  DMUS_PCHANNEL_ALL,        // 検索するパフォーマンス チャンネル
  DMUS_PATH_BUFFER,         // パス内のステージ
  0,                        // バッファのインデックス
  GUID_NULL,                // オブジェクトのクラス識別子
  0,                        // オブジェクトのインデックス
  IID_IDirectSoundBuffer8,  // インターフェイスの識別子
  (void**)&g_lpDSBuffer );  // 作成したインターフェイスのポインタ

エフェクトをDSEFFECTDESC構造体で指定します。guidDSFXClassメンバに指定できる識別子はたくさんあります。

エフェクト識別子 効果
GUID_DSFX_STANDARD_CHORUS コーラス
GUID_DSFX_STANDARD_COMPRESSOR コンプレッサ
GUID_DSFX_STANDARD_DISTORTION ディストーション
GUID_DSFX_STANDARD_ECHO エコー
GUID_DSFX_STANDARD_FLANGER フランジ
GUID_DSFX_STANDARD_GARGLE ガーグル
GUID_DSFX_STANDARD_I3DL2REVERB Interactive 3D Level 2 リバーブ
GUID_DSFX_STANDARD_PARAMEQ パラメトリック イコライザ
GUID_DSFX_WAVES_REVERB Waves リバーブ
DSEFFECTDESC desc;
ZeroMemory( &desc, sizeof(DSEFFECTDESC) );
desc.dwSize        = sizeof(DSEFFECTDESC);
desc.dwFlags       = 0;
desc.guidDSFXClass = GUID_DSFX_STANDARD_CHORUS;  // エフェクト識別子
desc.dwReserved1   = 0;
desc.dwReserved2   = 0;
g_lpDSBuffer->SetFX( 1, &desc, NULL );

設定し終えたら、オーディオパスをアクティブにします。

// オーディオパスのアクティブ化
g_lpAudioPath->Activate( TRUE );

再生

再生する時にオーディオパスを指定すれば完了です。

// セグメントの再生
g_lpPerformance->PlaySegmentEx( g_lpSegment, NULL, NULL, 0, 0,
                                NULL, NULL, g_lpAudioPath );

終了処理

作成したオブジェクトを解放します。

// 解放
/* #define RELEASE(p) { if(p){(p)->Release();p=NULL;} } */
RELEASE( g_lpAudioPath );   // オーディオパス解放
RELEASE( g_lpDSBuffer );    // サウンドバッファ

サンプル

これでエフェクトを使った再生ができます。例のソースを置いておきます。



Last Update 2006/11/24.
Copyright © 2002-2004 Toru All Rights Reserved.
inserted by FC2 system