Platform SDK: DirectX

ステップ 4 : 3D サウンドの再生と変更

[C++]

ここでは、Visual Basic でのアプリケーション開発について説明する。C++ については、「DirectSound C/C++ チュートリアル」を参照すること。

[Visual Basic]

ここまでで 3D サウンド バッファが 2 つのオブジェクトで表された。バッファの標準機能を備えた DirectSoundBuffer オブジェクトと、バッファの 3D プロパティを制御する DirectSound3DBuffer オブジェクトである。

このバッファを再生するには、2D バッファの場合と同じようにする。チュートリアル 1 の「ステップ 3 : サウンドの再生」を参照すること。

バッファの 3D プロパティの変更は、再生中か否かにかかわらずいつでも行える。このサンプル アプリケーションでは、バッファを作成するときや、ユーザーが [Direction] スクロールバーやバッファを示す三角形を動かすのに応答して、プロパティが設定される。

バッファに対するサウンド コーンの方向は、[Direction] スクロールバーの Change プロシージャで設定される。

Private Sub scrlAngle_Change(i As Integer)
 
  Dim x As Single
  Dim z As Single
 
  '方向ベクトルを計算する。
  '単位の度をラジアンに変換し、cos または sin を取得する。
 
  x = 5 * Cos(3.141 * scrlAngle(0).Value / 180)
  z = 5 * Sin(3.141 * scrlAngle(0).Value / 180)
    
  'グラフィックスを更新する。
 
  DrawPositions
 
  If m_dsBuffer(i) Is Nothing Then Exit Sub
  m_ds3dBuffer(i).SetConeOrientation x, 0, z, DS3D_IMMEDIATE

End Sub

このサンプルでは、ユーザーがマウスの左ボタンや右ボタンをクリックしたり、サウンドを表す三角形を移動することで、リスナーに対する相対的な 2 つのサウンドの位置を移動できる。サウンドの位置は、DirectSound3DBuffer.SetPosition メソッドで変更する。サンプルの UpdatePosition プロシージャを参照すること。