DTM用語:レイテンシとは
■はじめに
そもそもレイテンシとは、待ち時間や反応時間を意味する言葉です。ここでは音楽ソフトウェアにおける要求から反応までにかかる時間を指します。
■レイテンシとは
レイテンシとは、要求から反応までに生じる遅延時間です。単位はミリ秒(ms)であり、1秒の1/1,000を意味します。
遅延時間が短いほどレイテンシが低い、遅延時間が長いほどレイテンシが高いと表現します。
■レイテンシの求め方
レイテンシは、バッファサイズをサンプリングレートで割ることで求められます。
例えばバッファサイズ512sample/サンプリングレート44.1kHzの場合、レイテンシは以下のような計算で求めることが出来ます。
■バッファサイズとの関係
バッファとは、連続したデータの流れが途切れてしまわないよう、あらかじめデータを先読みして保持しておく領域であり、バッファサイズとはその大きさを意味します。単位はサンプル(sample)であり、どれだけのサンプルを保持しておくかを意味します。
試しにバッファサイズのみ変更したところ、バッファサイズが小さくなるほどレイテンシが低くなっているのがわかります。
これは、保持するサンプルが少なくなったことでバッファを読み書きする速度が上がっため、結果として遅延時間が短くなったことを意味します。
■サンプリングレートとの関係
サンプリングレートとは、サンプリング処理において1秒間にサンプリングする回数です。単位はヘルツ(Hz)であり、1秒間にどれだけのサンプルを扱うかを意味します。
試しにサンプリングレートのみ変更したところ、サンプリングレートが大きくなるほどレイテンシが低くなっているのがわかります。
これは、サンプリングレートが大きくなったことで1秒間に扱えるサンプルが増えた=バッファに転送する速度が上がったため、結果として遅延時間が短くなったことを意味します。
■レイテンシの最適値
バッファサイズを小さく、サンプリングレートを大きくすればレイテンシが低くなることがわかりましたが、だからと言ってバッファサイズを最小に、サンプリングレートを最大にすればいいわけでもありません。
それによりレイテンシが最小となるのは明らかですが、同時にCPU負荷が高まりシステムが不安定になるのもまた明らかだからです。
そのため、適切なレイテンシを得るためには、一般的に①サンプリングレートを確定させる、②システムの安定性を確かめながら徐々にバッファサイズを小さくしていく、という方法が推奨されています。
1.サンプリングレートを確定する
サンプリングレートとは、サンプリング処理において1秒間にサンプリングする回数です。サンプリングレートが大きいほど遅延時間が短くなるのはもちろん、より高い音域(高周波数帯)を表現出来ます。
しかしながら、サンプリングレートが大きくなればなるほど、そこには下記のような3つのデメリットが考えられます。
もちろん、密度の高いデータを後々低いデータにする事は可能です。実際プロの現場では、96kHzで作業しつつ配布媒体に合わせてダウンサンプルするのが常識とも言われています。
しかしながら、そこまでしてプロの真似をする必要はどこにもなく、個人的にはメリット/デメリットを踏まえたうえで自分の環境に合ったサンプリングレートにするのが一番だと思います。
そのため私は、CD音源とハイレゾ音源の中間値でもある48kHzで録音する事が多いです。理由は単純に自分の環境で96kHzは荷が重すぎるからと、無闇にサンプリングレートを大きくするより、ビットデプスを24bitにする方がよほど音質が向上するような気がするからです。
2.バッファサイズを小さくしていく
サンプリングレートが決まれば、後はバッファサイズをどれだけ小さく出来るかのせめぎ合いです。巷ではこれをバッファサイズを詰めるなんて言うらしいですが、実のところそこまで神経質になる必要もありません。
なぜなら、ミリ秒の違いなんてほとんど感じないからであり、体感として違和感がなく、安定して作業が続けられる状態こそが自分にとって最適のレイテンシだからです。
とは言え、何事にも目安は必要です。まずは一般的に推奨される512sampleに設定して、自分の環境ではどれくらいの遅延が発生するか確かめてみるといいでしょう。
特に遅延を感じなければ、次に確認すべきは録音時のCPU負荷です。CPU負荷は、タスクマネージャーのパフォーマンスで確認出来ます。
C:\Windows\System32\Taskmgr.exe
しかしながら、タスクマネージャーで判断出来るのはあくまでシステム全体の負荷であり、DAWそのものの負荷までは判断出来ません。もちろん、システムが不安定になるのは避けたいところですが、なにより困るのはDAWでまともに録音出来なくなる事なので、出来ればDAWに搭載されているパフォーマンスモニタにて負荷を確認するのが懸命かと思われます。
そのため、ここではCubaseに搭載されるオーディオパフォーマンスにてピーク値(オーディオエンジンのリアルタイムパスにかかっている処理の負荷)を確認してみました。ピーク値が高いほどドロップアウト(処理負荷によりオーディオエンジンが再起動)するリスクが高いとされています。
結果は見ての通りです。CPU使用率だけを見ると32sampleでもよさそうなものですが、オーディオパフォーマンスでは64sampleですでにドロップアウト、128sampleではドロップアウトこそしていないものの、ピーク値がやや高すぎな感じが否めません。
つまるところ、私の環境ではバッファサイズは128sampleが限界、万全を期すなら256sampleにすべきという結果が導き出されました。ちなみにレイテンシで表すと下記のようになります。
ただし、ここで注意しておかなければならないのは、この結果はあくまで空のプロジェクトにオーディオトラックのみを作成して録音したものであるということです。実際には複数のトラックがあり、そこに様々なインストゥルメントつまりソフトウェア音源が鳴らされていると考えると、バッファサイズはさらに大きなものにした方が安全かもしれません。
■おわりに
最後まで読んで頂き有り難うございました。あくまで個人的備忘録ですが、何かしらの参考になれば幸いです。
乱筆乱文にて恐縮ですが、よろしければ今後の活動資金をサポートして頂けると助かります。