Platform SDK: DirectX |
どの方向でも、距離に応じて音の大きさが決まる。方向のある音はサウンド コーンである。
DirectSound のサウンド コーンは、内部コーンと外部コーンで形成される。内部コーンの内側では、ボリュームはコーンが存在しない場合と同じ大きさになる。言い換えると、通常のボリュームからの減衰は発生しない。(もちろん、通常のボリュームは最大ボリュームとは限らない。通常のボリュームは IDirectSoundBuffer::SetVolume メソッドによって設定されるもので、さらにリスナーとの距離、リスナーの方向、ロールオフ係数、バッファの最小距離によって決まる。)。外部コーンの外側では、通常のボリュームはアプリケーションによって設定されたデシベル数だけ減衰する。内部コーンと外部コーンの間の角度は、内部ボリュームから外部ボリュームへの移行地帯である。
DirectSound のサウンド コーンは、内部コーンと外部コーンで形成される。内部コーンの内側では、ボリュームはコーンが存在しない場合と同じ大きさになる。言い換えると、通常のボリュームからの減衰は発生しない。(もちろん、通常のボリュームは最大ボリュームとは限らない。通常のボリュームは DirectSoundBuffer.SetVolume メソッドによって設定されるもので、さらにリスナーとの距離、リスナーの方向、ロールオフ係数、バッファの最小距離によって決まる。)。外部コーンの外側では、通常のボリュームはアプリケーションによって設定されたデシベル数だけ減衰する。内部コーンと外部コーンの間の角度は、内部ボリュームから外部ボリュームへの移行地帯である。
次の図は、サウンド コーンの概念を示す。
技術的には、DirectSound 内のすべての 3D バッファはサウンド コーンである。しかし、外部ボリュームは 0 (つまり減衰が存在しない)、内部コーンと外部コーンの角度はどちらも 360 度なので、デフォルトではバッファは単一方向の音源として動作する。アプリケーションがこれらの値を変更するまでは、サウンドには見かけの方向はない。
サウンド コーンを適切に設計すると、アプリケーションに劇的なエフェクトが追加される。たとえば音源を部屋の中央に置き、音源の方向を、廊下に面して開いたドアの方向に設定する。次にそのドアの幅に合わせて内部コーンの角度を設定する。外部コーンをそれより少しだけ広く設定し、外部コーンのボリュームを聴取不可能に設定する。リスナーが廊下を歩き、ドアの近くまで来るとサウンドが聞こえ始める。そして開いているドアの正面に来るとサウンドは最大になる。
アプリケーションは、IDirectSound3DBuffer::SetConeAngles と IDirectSound3DBuffer::GetConeAngles の各メソッドを使って、サウンド コーンを定義する角度の設定と取得を行う。外部コーンの角度は、常に内部コーンの角度以上でなければならない。
アプリケーションは、IDirectSound3DBuffer::SetConeOrientation と IDirectSound3DBuffer::GetConeOrientation の各メソッドを使って、サウンド コーンの方向の設定と取得を行う。
アプリケーションは、IDirectSound3DBuffer::SetConeOutsideVolume と IDirectSound3DBuffer::GetConeOutsideVolume の各メソッドを使って、外部コーンのボリュームの設定と取得を行う。外部コーンのボリュームは、1/100 dB 単位の負の数で表される。デフォルトのボリュームを 0 とし、このボリュームはそこからの減衰を表すからである。
アプリケーションは、DirectSound3DBuffer.SetConeAngles と DirectSound3DBuffer.GetConeAngles の各メソッドを使って、サウンド コーンを定義する角度の設定と取得を行う。外部コーンの角度は、常に内部コーンの角度以上でなければならない。
アプリケーションは、DirectSound3DBuffer.SetConeOrientation と DirectSound3DBuffer.GetConeOrientation の各メソッドを使って、サウンド コーンの方向の設定と取得を行う。
アプリケーションは、DirectSound3DBuffer.SetConeOutsideVolume と DirectSound3DBuffer.GetConeOutsideVolume の各メソッドを使って、外部コーンのボリュームの設定と取得を行う。外部コーンのボリュームは、1/100 dB 単位の負の数で表される。デフォルトのボリュームを 0 とし、このボリュームはそこからの減衰を表すからである。