You are currently viewing 【基本用語】最適なバッファサイズって?

【基本用語】最適なバッファサイズって?

DAWホストやプラグイン・インストゥルメント、エフェクトなどを使用していると、「バッファサイズ(Buffer Size)」「レイテンシー(Latency)」「サンプルレート(Sample Rate」という言葉を耳にすることがあります。これはコンピューターで音楽を制作する環境では避けて通れない設定のひとつだと思います!ご存知の方も多いと思いますが、「これらが何を意味するのか? 最適な値は?」というお問い合わせをいただく機会が増えてきましたので、あらためておさらいをしてみたいと思います!


Latency(レイテンシー)

まずは「レイテンシーとは何か?」

レイテンシー(Latency)とは、平たく言うと命令をしてから実際に処理が行われるまでの時間ということです。
鍵盤を弾く、ノブをひねる等の操作をしてからソフトウェアに反映されるまでの時間ですね。

このレイテンシーはmsという単位で表されます。msとは「ミリセカンド」の略で、1ms=1/1000秒となります。
リアルタイムでソフトウェア・シンセサイザーなどを演奏する場合、オーディオのレコーディングを行う場合、デジタルDJソフトで高速なスクラッチを行う場合など、レイテンシーは少なければ少ないほど良いとされますギターソロで速弾きをレコーディングするときも、自分が演奏しているのとヘッドフォンから聴こえる音が極端にずれていたらとても困ってしまいます。

それではレイテンシーはできるだけ下げた方が良いのか?
というと、レイテンシーの数値が下がれば下がるほどCPUの能力が必要になってくるので、どこまで数値を下げることができるかは、ご使用のコンピュータの能力に依存するということになります。


Buffer Size(バッファサイズ)

バッファサイズ(Buffer Size)はコンピュータの処理が間に合わなくなって問題が発生してしまうのを防ぐために、データを一時的に蓄えておく・・・と文章にすると伝わり辛いですが、身近なところではYoutubeなどで視覚的に捉えることができます。
YoutubeBuffer

動画を再生させると、再生位置のポインターから右に向かってグレーのバー(画像青枠部分)が伸びて行くのが見えます。これは、ネット接続の速度の低下などによってデータの転送が間に合わない場合に、動画が停止してしまうのを防ぐため、予め動画の先のデータを一時的に蓄えている状態です。

こうすることで、動画の再生中にインターネット接続の速度が極端に低下してしまった場合にも、すでに蓄えている動画を再生することができるのです。このバッファ部分を再生位置が超えて動画が停止してしまったという経験がありませんか? 音楽ソフトでは、このような場合、プチノイズが発生したり、ソフトがフリーズしてしまったりという症状が発生します。


Sample Rate(サンプルレート)

レイテンシー設定を行う場合、ほぼすべてのソフトですぐ近くにサンプルレートの設定項目が表示されるはずです。バッファサイズの数値はサンプルで表されるのが一般的ですが、では1サンプルというのはどのような単位なのか?という疑問を持たれる方も多いようです。

結論から言うと、1サンプルの長さというのは現在のサンプルレートによって変化します。これを説明するにはサンプルレートとは何か?を知る必要があります。

簡単に説明すると、アナログ音声をデジタル変換する際に、1秒間に何回サンプリングするかのレート(周波数)がサンプルレートです。

最もポピュラーなサンプルレートはAudio CDの規格の44.1kHz(キロヘルツ)だと思いますが、これは44100Hz(ヘルツ)と置き換えられます。

例えばレコーディングソフトを44100Hzに設定してオーディオレコーディングを行った場合、1秒間に44100回サンプリングされることになります。DVDなどでは96000Hzが標準ですが、これは1秒間に96000回サンプリングしているということになります。

本題です。
1サンプルの長さは現在のサンプルレートに依存すると書きましたが、具体的にはどういうことかと言えば、44.1kHzに設定されている場合の1サンプルは1/44100サンプル、96kHzに設定されている場合の1サンプルは1/96000ということになります。
ここで念のため注意点をひとつ。サンプルレートはサンプリング(レコーディング)する際のレートなので、例えば44.1kHzでサンプリングされたデータを96kHzに設定して再生しても音が良くなるという性質のものではありません。正確にはビットレートなどとも絡んでくるので、今回の内容とは微妙にニュアンスが異なるので説明は省きます。

もう一度Latency

レイテンシー設定は現在のサンプルレートの何サンプル分の時間を与えるかを設定します。式で表すと「サンプル数(バッファサイズ)」÷「サンプルレート」=レイテンシーとなります。

具体的にはサンプルレートが44100Hzの時にバッファサイズを512サンプルに設定した場合、512÷44100=0.0116で、11.6ms。同じ512サンプルの設定の場合でもサンプルレートを96000Hzに設定している場合は512÷96000=0.0053で5.3msという設定になります。

ただし、高いサンプルレートや速いレイテンシー設定は、より高いコンピュータ性能を必要とします。逆にコンピュータのスペックが高ければ高いほど、高速にソフトウェアを動作させることができるというわけですね。

最適な値の探し方

さて、簡単にレイテンシーに関わる機能説明をしてみましたが、結局自分のコンピュータに最適な設定はどうなのか?というのは「使用するコンピュータによって変わる」というのが伝わりましたでしょうか?

では最適な値の探し方は?
というと、最も簡単なのは「バッファサイズを大きめに設定して普段通りの操作をする、遅れを感じたらバッファサイズを下げる」という操作を繰り返して、遅れを感じない中で最も大きな数値がコンピュータに優しい最適な値。

逆に「バッファサイズをどんどん下げながら操作を行い、ノイズや音飛びなどの症状が発生するようなら少し大きめの数値に戻す」という操作を繰り返して、問題が発生しない中で最も小さな数値がコンピュータの性能をフルに活かす値ということになります。

ただし、この設定はCPUの寿命にも関わってくる部分であったり、コンピュータが発する熱の問題も関係する部分であったりするので、プロのエンジニアさんでもDAWソフトではレコーディング時とミックス/アレンジ作業中などでその都度レイテンシーの値を変更することもあるようです。

今回は難しくなり過ぎるのを避けるため、レイテンシーという言葉をひとまとめにしていますが、実際にはプロセスのバッファやアウトプットバッファ、USBバッファなども関係して総合的なレイテンシーが決定されるので、皆さんの環境に合ったバッファサイズを導きだしてみてください。