・DTM機材

レイテンシー

2014/10/12

レイテンシーについて書いてみます。

レイテンシーは小さいほど録音や再生時に
遅延による違和感を覚えなくなりますが、
レイテンシーを小さくするとプチプチノイズが
発生したり音が途切れたりします。

なぜこの様なことが発生するのでしょうか。

rei1.gif
上の図は簡単なイメージです。

CPUの処理が遅いのでバッファを大きめにとり、
CPUの処理遅れによる音の途切れを防いでいます。

その分バッファに溜まった分が音の遅れ、
いわゆるレイテンシーとなります。

転送エラーやCPUからのデータ送信が追いつかないと
音が途切れる現象として聞こえる場合があります。

これはUSBの転送がエラーがあっても再送信しない
アイソクロナスのモードで動作しているからなのですが、
影響がある単位が1ms単位なのでこれを耳が感知できるか否かは
別問題ですが連続で発生すれば判ると思います。

rei2.gif
今度はCPUの処理速度が速いので
バッファ容量が小さくても
PCから次々に転送されてくるイメージです。

バッファが小さいのでレイテンシーも小さくて済みます。
ここで問題となるのが赤丸で囲んだ部分です。

バッファ要領を小さくしているので
次から次にデータを送らねばなりません。

ここがドライバの影響を受ける部分です。

ASIOドライバの出来が良くないと、
CPUが処理して送るデータに遅延が発生したり、
時にはドライバの影響でフリーズすることもあります。

ドライバの設定ではサンプル数とバッファ容量の
2つの設定でレイテンシーの調整をするものもあります。

バッファ容量とレイテンシーの関係は先のイメージに
なりますが、サンプル数とはどのようなものなのでしょうか。

44.1kHz/16bitでは
1秒間に44,100回サンプリングし、その音を65,536段階で記録しています。
記録できる高域の上限は22kHzでダイナミックレンジは96dBです。

CD-DAでは高域の上限が20kHzですが、ナイキスト周波数
LPFを掛けた時のフィルターマージンも考慮されての規格でしょう。

1秒間に44,100回サンプリングしているということは、
「1秒=1000ms」なので1サンプルは0.022675737msとなります。

ドライバの設定で256サンプルとあれば、
0.022675737ms×256サンプル=5.804988662ms
この部分だけで約5.8msのレイテンシーとなります。

1サンプルは音量を16bit(65,536段階)で記録しているので、
1サンプルあたり2Byteのバッファ容量が必要になります。

256サンプルに設定するなら、
2byte×256サンプル×2ch=1024byte
24bitなら3byteなので1536byteのバッファ容量となります。

逆で計算するとレイテンシーが11msであれば512サンプル分に
相当するので、44.1kHz/16bitであればバッファは2048byteと
なります。

実際はUSB転送に係るデータが加えられて、
データ量は増えると思いますが、
イメージとしてはこんな感じです。(^^)

レイテンシーとドライバの関係が理解できれば、
レイテンシーを小さくする際に何かの参考になるかも知れません。

-・DTM機材