LR2設定、音の遅延について。


2010/06/26

ASIOについて。

よく誤解されがちな「ASIOにすれば遅延はない」は、半分本当半分嘘です。
正確には、ASIOで設定したレイテンシ値によって、どのくらい遅延するか決まります。
そして重要なのはLR2のバッファ数設定では、ASIOのレイテンシは設定できないということです。
(変わるデバイスも、もしかしたらあるのかも?)
ASIOの遅延はASIO caps等で設定できます。
デバイスによって設定のしかたが違いますが、ms単位で設定できるデバイスならその通りに、
サンプル数単位で設定するデバイスなら、
サンプル数/再生周波数[Hz]=遅延[s]
1s=1000ms
上記の式で、どのくらい遅延するかが決まります。


DirectSoundについて。

DirectSoundの遅延も、ASIOと同レベルです。
そしてLR2のバッファ数設定は、DirectSoundに対して有効(ただしFMOD Exを使用している場合のみ)です。
遅延がASIOと同レベルとする根拠は、実際に検証すればわかります。
以下検証手順
上記を所有PCで確認したところ、ストップウォッチの秒数は38sでした。(出力周波数やデバイスによって変わると思われます)
480000/(38*1000)=12.631578947368421052631578947368…
バッファ数およそ12で、1msの遅延。
LR2のバッファ数最小値16なら、1[ms]/12[buf]*16[buf]=1.33333…[ms]の遅延です。

所有PCに積んでるサウンドカード(Creative Sound Blaster X-Fi XtremeGamer)では、
ASIO 1msの設定はノイズが出るため、結果として1.333ms遅延のDirectSoundのほうが、遅延が少ないです。

総論

LR2に限って言えば、ASIOだからレスポンスがいいだとか、ASIO以外だと遅延が…というのは、根拠の無い都市伝説です。
発音遅延が気になるのであれば、検証してより少ない遅延となる設定を行いましょう。














おまけ

スピーカーでやっている方は、音速を勘定に入れないとかもですね。
秒速340mは1msあたり34cmなので、スピーカが34cm離れていると、1ms遅延と同じわけです。
スピーカが1m離れていると、およそ3ms遅延します。

そのほかにもデバイスから入力してサウンドをミキシングバッファへ入れるまでのラグ…等をあわせると、
ボタンを叩いてから発音して耳に届くまで一桁ms、なんてのは、相当に高い壁だと言えます。

サンワサプライの1P専用ゲームパッドコンバータでさえ、デフォルトのポーリングレートは125Hz。
起こりうる最大の遅延は8ms。
厄介なのは、この8msという値が変動しやすい値なので、常にXXms遅延、などといえないことです。
遅延時間のゆらぎは、発音までのゆらぎになります。
ノーサポートですがusbport.sysでポーリングレートを弄れば、ラグ幅を減少させることができるかもしれません。

つまるところ、どんなに設定を詰めて、どんなに機材を増強したところで、
通常プレイしている状態において、常に1.Xms〜1Xms程度の遅延は、確実に起こりえます。

これで遅延なし!なんていう言葉は、大体が間違いなので、騙されないでね!
耳に届くまでに10msくらいの遅延は起こるもの、と考えていたほうが現実的です。