最小距離と最大距離
リスナーがサウンド ソースに近づくにつれサウンドは大きくなり、距離が半分になると、ボリュームは 2 倍になります。ただし、特定の位置を通過すると、ボリュームが大きくなり続けるという法則は妥当ではなくなります。これがサウンド ソースの最小距離です。
サウンドに設定する最小距離によって、サウンドが距離とともに次第に聞こえなくなる速度が決まります。たとえば、この値をジェット エンジンに対しては 100 メートルに設定し、蜂には 2 cm に設定することができます。これらの設定によって、ジェット エンジンはリスナーから 200 m 離れた場所でボリュームは半分になりますが、蜂はわずか 4 cm 離れただけでボリュームが半分になります。
以下の図は、離れるにつれ最小距離と最大距離がジェット エンジンと蜂のボリュームにどのように影響するかを示しています。
図形 1. 最小距離と最大距離
サウンド バッファーの既定の最小距離である DS3D_DEFAULTMINDISTANCE は、既定の距離係数で 1 単位、つまり 1 m として定義されます。この値を変更しない限り、リスナーから 1 m 離れているときにサウンドは最大ボリュームとなり、2 m 離れるとボリュームは半分になり、4 m 離れると 4 分の 1 というようになります。ほとんどのサウンドに関して、離れるにつれサウンドが急速にフェードアウトしないように、場合によってはこれよりも大きな最小距離を設定する必要があります。
サウンド ソースの最大距離とは、サウンドのボリュームがそれ以上は小さくならなくなる距離です。DirectSound 3D バッファー (DS3D_DEFAULTMAXDISTANCE) の既定の最大距離は、10 億です。つまり、サウンドが可聴範囲外に移動しても延々と減衰は計算され続けます。VXD ドライバー下のソフトウェア バッファーでの不要な処理を避けるには、アプリケーションで妥当な最大距離を設定して、バッファーの作成時に DSBCAPS_MUTE3DATMAXDISTANCE フラグを含める必要があります。
また、最大距離を使用してサウンドが聞こえなくなることを防ぐこともできます。たとえば、サウンドの最小距離を 100 m に設定している場合、そのサウンドは事実上は 1,000 m 以下で聞こえなくなります。最大距離を 800 m に設定することで、距離に関係なくサウンドは常に少なくともその最大ボリュームの 8 分の 1 になります。もちろん、この場合、DSBCAPS_MUTE3DATMAXDISTANCE フラグを設定する必要はありません。
既定では、距離値はメートル単位で表されます。
すべてのサウンド バッファーに関してボリュームでの距離の影響を調整するには、ロールオフ係数を変更します。