バッファとレイテンシについて【SONARでの設定方法など】
今回は「バッファ」と「レイテンシ」について解説します。
DTMのシステムとしてはとても大事な要素なんですが、わたしのような初心者にとっては解説の単語すら難しくてなんとなくスルーしてしまいがち。でもちゃんとイメージを掴んでいるとDTMへの理解がより深まると同時に、何かトラブルが起きた際などに非常に役に立つんですよ。
SONARでの設定方法なども併せてご紹介します。
スポンサーリンク
バッファとレイテンシ
バッファというのはオーディオインターフェイスに組み込まれているデータを一時的に保存しておくメモリのことで、PCとオーディオインターフェイス間のデータのやり取りを円滑にするために使用します。
さっそく分かりにくいと思いますので、まずは図で音声データの流れを見てみましょう。
歌やギターなど、アナログの音声データをパソコンで取り扱うためにはデジタルデータへの変換が必須です。また、パソコンからアウトプットされるデジタルデータは、スピーカー等から出音するためにアナログデータへ変換しなければいけません。
それを行っているのがオーディオインターフェイスです。
図の通りオーディオインターフェイスは、外部アナログ機器とパソコン間で音声データのやりとりがある度に【アナログ⇔デジタル】の変換を行っているわけですが、全ての音声データをリアルタイムに変換処理するのはとても大変…到底パソコンの処理が追いつきません。
そこで登場するのがバッファです。
音声データをある程度バッファに蓄積してまとめて取り扱うことで処理の回数を減らし、PCの負担を軽くしようというわけ。
というわけで、バッファが実際にどのような役割を果たしているのかを見てみましょう。
バッファの役割 ~バッファサイズによる違い~
使用するバッファの大きさ(バッファサイズ)は、通常DAW側の環境設定画面などで設定します。
単純に、バッファサイズの値を大きく設定すればより多くのデータを一時保存しておくことが出来るし、小さく設定すればその逆です。
では、バッファサイズの大小でデータ処理にどのような違いが出てくるのでしょうか。
パソコンから音が出るまでを例にとってご説明します。
バッファサイズ大(再生したときの流れ)
まずはバッファサイズが大きい場合。
1.初めの処理
パソコンから音声データがアウトプットされると、バッファサイズに応じたデジタルの音声データがまとめてオーディオインターフェイスに送られます。図の例ではバッファサイズが大きいので、多くのデータを一度に送信していますね。対してオーディオインターフェイス側では、パソコンから送られたデジタルデータを順次アナログデータに変換し、スピーカー等から出音します。
2.途中経過
オーディオインターフェイスは相変わらずデジタルデータをアナログに変換し続けています…が、デジタルデータがバッファに残っている間はPCは新たなデータを送る必要がありません。休憩時間です。
3.次の処理
バッファに一時保存したデータがほとんどアナログデータに変換されて出音されたので、PCは新たなデジタルデータを送りました。
バッファサイズが大きいので初めの処理から次の処理まで十分な時間があり、少ない負荷で処理が出来ています。
バッファサイズ小(再生したときの流れ)
次はバッファサイズが小さい場合。
1.初めの処理
先ほどと同じくバッファサイズに応じたデータ量のデジタル音声データがパソコンからオーディオインターフェイスに送られます。…が、今度はバッファサイズが小さいので一度に送信できるデータ量も少なくなりました。
2.途中経過
デジタルデータはどんどんアナログデータに変換されて発音されていきます。貯蓄が少ないのでもう無くなってしまいそう。
3.次の処理
貯蓄が無くなると音が途切れてしまうので、その前にPCから新たなデジタル音声データを送らなければいけません。先ほどより処理の間隔が短い分、負荷が大きくなりました。
バッファサイズが小さい場合にドロップアウトが起きたり、音切れ、またはノイズが入ったりするのはこのせいなんです。PCの処理が追いつかず、貯蓄を切らしてしまった結果です。
こうしてみるとバッファサイズが小さいとデメリットしかないように見えますが…。
続いてバッファサイズの違う環境でリアルタイムに演奏した場合を考えてみましょう。
レイテンシ
バッファサイズの大きい環境でギターや歌などアナログな楽器を演奏してみました。どうなるでしょうか。
バッファサイズが大きいと処理から処理までの間隔が長いので、出入力の処理は言ってみれば時間差で行われる形になり、結果的にタイムラグが生じます。実際には、例えばMIDIキーボードを叩いてから音が出るまでに遅れを感じたり、ギターを演奏したモニター音に遅れを感じたりするわけです。
これがレイテンシです。
逆に、バッファサイズを小さくするとレイテンシも小さくなります。
見たまんまですね。
時間差で処理が行われるのは一緒ですが、バッファサイズが小さいと頻繁に処理が行われるので、データの出入力がよりリアルタイムに近い状況になってきます。
オーディオインターフェイスを通してPC上のDAWとデータのやりとりをしている以上は決して本当のリアルタイムにはなりませんが(ダイレクトモニタリングという例外もある)、バッファサイズを小さくしていけばほとんど人間の耳では判別できないほど小さなレイテンシにすることは可能です。が、もちろんその分マシンパワーを必要とします。
バッファとレイテンシ まとめ
ここまで書いてきたバッファとレイテンシの関係を単純にまとめてみました。
バッファサイズが小さいほどレイテンシは小さくなりますが、その分PC負荷が高くなるので動作が不安定になり、逆にバッファサイズを大きくするとPC負荷が小さくなるので動作は安定しますが、レイテンシは大きくなる(実はレイテンシにはサンプルレートも深く関わってきますが今回は触れません)。
この図の関係って恐らくDTMをやっている方ならどなたでもご存じのことと思いますが、仕組みを理解した上で見るとまた印象が違うんじゃないかな、と思います。
SOANRでのバッファサイズ設定方法
最後に、以上を踏まえてバッファサイズをお使いのマシンパワーに合わせて適切に設定してみましょう。DAWはSONARを例として使用します。
SONARでは環境設定画面からバッファサイズの設定をします。
画面上部メニューバー【編集→環境設定】と進み、
オーディオカテゴリのデバイスの設定をクリック。
項目下部の「ミキシングレイテンシ」の項でバッファサイズを設定します。
バッファの役割を踏まえて、PCやオーディオインターフェイスの性能と相談しつつバッファサイズを決めましょう(WDMドライバを使用するオーディオインターフェイスを使用している場合は「オーディオデバイスの確認」ボタンをクリックするとSONAR側で自動で最適なバッファサイズに設定してくれますよ)。
基本的には、問題なくDAWが動作するようならバッファサイズを小さくしておけばいいんじゃないかと思います。DAWの動作が重くなったり、再生時にトラブルが起こるようならバッファサイズを大きくして適宜調節しましょう。
また、PCやオーディオインターフェイスの性能がどうしても処理に追いつかない、というような場合は、現在行っているDTM作業に応じて都度バッファサイズを変更する、という手もあります。
参考:SONARの動作が重い(再生時のノイズ・ドロップアウトなど)ときに試す対策3点
例えばレコーディングをしないのにレイテンシをカツカツに小さくする必要もないですよね。仕組みさえわかっていれば、設定の数値にしばられず柔軟な対応が出来るんじゃないかと思います。
バッファとレイテンシについての解説は以上です。