藤本健のDigital Audio Laboratory
第905回
USBオーディオの遅延がわかる無料ツール「RTL Utility」を試す
2021年7月26日 10:29
Digital Audio Laboratoryの記事内で、オーディオインターフェイスを取り上げる際に必ずチェックしているのが「レイテンシー」だ。レイテンシーとはオーディオインターフェイスで音を再生したり、録音したりする際に起こる遅延のこと。
今回はWindowsでもMacでも遅延が測定できるツールを見つけたので、その紹介と測定方法を解説しよう。
そもそもレイテンシーはなぜ発生するのか?
USB-DACでも、オーディオインターフェイスでも、もちろんPC内蔵のサウンド機能であっても、レイテンシーというものが生じる。プレーヤーソフトでもDAWでも、ゲームソフトであっても、ソフトが音を出そうとしてから、実際に音が出るまでには時間差が生じており、これを出力レイテンシーという。
逆に音が実際に発生してからPCに入ってきてレコーディングソフトなどに届くまでの時間が入力レイテンシーというもので、それぞれmsec(ミリ秒)単位での遅れが生じる。
なぜレイテンシーが発生するのかについては、第817回(曲作りに重要な「レイテンシー」とは何なのか。小さければOK、じゃない?)で取り上げているので、そちらを参照していただきたいが、簡単にいうと、アプリケーションとオーディオインターフェイスの間で音のデータをバケツリレー的に受け渡ししているから生じてしまう。
この時、音が途切れないよう、いったんバッファという“溜め池”にデータを溜めるのだが、このバッファを大きくすればするほど安定する一方で、レイテンシーが大きくなるという問題が生じる。
ただし、オーディオを再生するだけであれば、レイテンシーを小さくする必要はまったくないことは、以前の記事でも書いた通り。
仮に100msecなどという大きなレイテンシーがあったとしても、再生ボタンを押してから音になるまで0.1秒遅れるだけの話なので、なんら問題はない。それよりバッファサイズをたっぷりとって再生するほうが、PCに負荷もかからず、安定した再生ができるというものなのだ。
では、どのようなときにレイテンシーが重要になるのかというと、DAWを使ってレコーディングする際や、MIDI鍵盤を使ってソフトウェア音源をリアルタイム再生する時である。
たとえば、ギターをレコーディングする場合を考えてみよう。
プラグインでエフェクトを掛けた音をモニターする場合、ギターを弾いた音に入力レイテンシーがあって、DAWに届き、DAW上のプラグインでエフェクト処理をした結果、出力レイテンシーがあって、エフェクトのかかったギターの音が聴こえるわけだ。この際、レイテンシーが大きいと、ギターを弾いてから、その音が聴こえるまでに時差を感じてしまい、違和感を感じ、非常に弾きにくくなってしまう。
一方、ソフトウェア音源をMIDI鍵盤で弾く場合は、鍵盤を押すとソフトウェア音源が音を出すが、出力レイテンシーがあってから聴こえてくることになる。この際、レイテンシーが大きいと、やはり非常に違和感があり、演奏しにくい。そのため、レイテンシーは小さいほうがいいのだ。
もっとも厳密にいうと、レイテンシーが小さすぎる設定もちょっぴり問題がある。
たとえばアコースティックギターの音をマイクで拾い、オーディオインターフェイス・DAWを経由してヘッドフォンでモニターする場合、1.5msec程度のレイテンシーがあるのがベスト。
というのも、音は空気のあるところでは340m/秒で進むため、耳とギターの距離が50cmほどあったとすれば、音が出てから聴こえるまで1.5msec程度かかる。もし、これよりも小さいレイテンシーだと、現実よりも早く音が聴こえてしまうという珍現象が起こる。もっとも、そこまで小さなレイテンシーのオーディオインターフェイスはほとんどないので、通常は小さければ小さいほどいい、と考えていいはずだ。
ちなみに、ゲームにおいても、レイテンシーが大きな意味を持つ。アクションをしてから音が出るまでにレイテンシーがあると違和感が出るし、まともにプレイができなくなるからだ。ゲームの場合は、基本的には出力レイテンシーだけが影響すると思うが、これをどこまで縮められるかが重要なポイントとなるわけだ。
オーディオインターフェイスにおけるレイテンシーの測定方法
では、実際どのようにレイテンシーを測定すればいいのだろう。
たとえばCubaseのようなDAWだと、オーディオインターフェイスの入力レイテンシーと出力レイテンシーが数値として表示される。
が、これを鵜呑みにしてはいけない。ここで表示されているのは、オーディオインターフェイスのバッファサイズなどから自動計算される“理論値”にすぎない。実際には、様々な要因があって音が遅れるため、実測値と理論値は異なってくるのだ。
入力レイテンシーと出力レイテンシーそれぞれを別々に測定するのは困難だが、両方を足し合わせたものであれば、意外と簡単な方法で測定できる。
オーディオインターフェイスの出力を入力に接続してループさせた上で、パツンという短いインパルス音を再生し、別チャンネルで録音する方法だ。こうすれば、出力レイテンシーで遅れて音が出たものが、そのままオーディオインタフェースの入力に入り、入力レイテンシーを経て録音されるから、その時間差を見ればいいわけだ。
試しに、インパルス音をSOUND FORGE Proを使って作成し、これをCubaseのトラックに置いて再生するとともに、別トラックに返ってきた音を録音してみた。
このままだと、比較しにくいため、いったん2つのトラックをミックスした上で、SOUND FORGE Proに読み込んでみたところ、レイテンシーを目で確認することができた。
上画面の場合、数えてみると12サンプル分のレイテンシーということになるが、時間的に短く、SOUND FORGEの表記では0.00秒となってしまい、それ以上細かくは表示できない。また、そもそもCubase側でレイテンシー補正などを行なっている可能性もあり、どこまで信用できるかという問題もある。実際この結果は短すぎるように思える。
そこで、こうした面倒な手順は経ず、もっと簡単に、より正確にレイテンシーを測るため、レイテンシー測定専用のツールがある。筆者も普段、それを使っている。それがCEntranceというメーカーがフリーウェアで提供していた「ASIO Latency Test Ulility」というものだ。ただ残念なことに、このツールが何年か前に公開を中止してしまったため、新たに入手することが困難になっている。
しかも名前からもわかる通り、Windows専用であって、Macでは使うことができないという弱点があった。
Windowsでも、Macでも使える測定ツール「RTL Utility」
ASIO Latency Test Ulility以外に、何か良いツールはないだろうかと思っていたところ、先日見つけたのが、Oblique Audioが開発した「RTL Utility」というツールだった。
このツールもフリーウェアで提供されており、Windows 64bit版、Windows 32bit版、Mac OS X版がそれぞれリリースされている。バージョン履歴を見ると、比較的頻繁にアップデートしており、最新版が2020年9月にリリースされた0.5.2というものとなっている。
基本的な考え方はCEntranceのASIO Latency Test Ulilityと同じで、出力端子と入力端子を接続した状態で、ボタンを押して測定するだけなのだが、RTL Utilityのほうがより詳しく情報が表示されるとともに、機能も豊富なようだ。
さっそくWindows版を起動し、Deviceのプラダウンメニューを見ると、現在利用できるオーディオデバイスの一覧が出てくるので、ここから測定するものを選択する。
すると、サンプリングレートやバッファサイズの指定ができるようになり、これを設定した上で、左側の「Measure RTL」ボタンを押せば、RTLの欄に何サンプルのレイテンシーで、それが何msecなのかが表示される。
その際のサンプリングレートやバッファサイズ、出ていった音が戻ってくる時点でどのくらいの音がロスするか、フロアノイズは何dBなのか? といった情報も画面左側にまとめて表示されるようになっている。
試しに、Steinberg「UR22C」を使い、96kHzでバッファサイズを64sampleにした際の結果が下の画像だ。
これを見ると、510サンプル=5.312msecのレイテンシーということになるが、いつも使っているCEntranceのASIO Latency Test Ulilityで測定すると、511サンプル=5.32msecのレイテンシーとなった。微妙な差はあるが、おそらく計算結果の有効桁数の持たせ方の違いくらいで同じ結果と考えてよさそうだ。
RLT Utilityが面白いは、Windows版において、ASIOだけでなく、Windows Audio(WDM)、Windows Audio Exclusive Mode、DirectSoundのそれぞれにおけるレイテンシー測定もできるという点。
試しに同じ96kHzでWindows Audioを選ぶと、バッファサイズも幅広く選択できるようになっている。ここで最小を選んで測定した結果がこちらだ。
一方、Windows Audio Exclusive Modeの場合でも、Direct Soudでもバッファサイズを小さくして測定すると、Buffer under/overrun detectedという、なんか20年くらい前のCD-Rドライブで見たようなメッセージが表示されて、測定することができなかった。
試しに、DirectSoundでバッファサイズを最大の6912sampleにして測定したら、下記の結果となった。
では、同じことをMacで行なったらどうなるのだろう?
試しにM1 Mac miniにRTL Utilityをダウンロードして起動してみたところ、セキュリティーに引っかかった。
セキュリティー問題を強制解除して再度立ち上げてみると、Windows版とほぼ同じ画面が登場。ただし、Macの場合はCore Audioだけなので、ドライバの種類を選ぶ項目は存在しない。
ここで、先ほどと同じくUR22Cを使って96kHzを選択すると、32sampleまでバッファサイズを小さくすることが可能。その状態で測定した結果が下写真だ。
バッファサイズは小さいが、実際のレイテンシーは6.427msecと大きい値になっている。この辺がWindowsのASIOと、MacのCore Audioの挙動の違いといったところなのだろう。
このように環境によっても、レイテンシーの値はいろいろ変わってくるが、どんな環境であっても、それぞれ細かくチェックできるのがRTL Utilityのメリットだろう。なお、このソフトでは測定した結果を保存しておくこともできるなど、機能面でも優れているようだ。
今後、Digital Audio Laboratoryにおいて、RTL Utilityを使うか、従来通りASIO Latency Test Ulilityを使うかは、もう少し検討したいところ。もしかしたら、しばらくは両方を記載するかもしれないが、いずれにしてもフリーウェアとしてこうした便利なツールが登場してくれたのは嬉しいところだ。