Top > チュートリアル > 最適なバッファサイズとは?

最適なバッファサイズとは?

 

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



Latency(レイテンシー)

まずは「そもそもレイテンシーとは何か?」です。レイテンシー(Latency)とは、平たく言うと命令をしてから実際に処理が行われるまでの時間ということです。例えば、裏方さんが天井に吊るされたタライのロープを切って、それが実際に志村けんさんの頭にヒットするまでの時間がレイテンシーです。

・・・喩えを誤りました。

例えば、キーボードの鍵盤を演奏してから実際に音が出るまでの時間ですね。これはmsという単位で表されます。msとは「ミリセカンド」の略で、1ms=1/1000秒です。

リアルタイムでシンセサイザーなどを演奏する場合、オーディオのレコーディングを行う場合、デジタルDJソフトで高速なスクラッチを行う場合など、レイテンシーは少なければ少ないほど良いですよね。ギターソロで速弾きをレコーディングするときも、自分が演奏しているのとヘッドフォンから聴こえる音が極端にずれていたらとても困ってしまいます。

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

Buffer Size(バッファサイズ)

バッファサイズ(Buffer Size)は、バッファのサイズです・・・以上説明終わり!

いや・・・Bufferというのは直訳では緩衝材というような意味ですが、コンピュータ用語では一時的に蓄えておく場所というニュアンスで使われます。

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

YoutubeBuffer

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

このバッファ部分を再生位置が超えて動画が停止してしまったという経験がありませんか? 音楽ソフトでは、このような場合、プチノイズが発生したり、ソフトがフリーズしてしまったりという症状が発生します。

Sample Rate(サンプルレート)

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

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

細かく説明すると難しくなってしまうので、あえて大雑把に説明しますが、アナログ音声をデジタル変換する際に、1秒間に何回サンプリングするかのレート(周波数)がサンプルレートです。

最もポピュラーなサンプルレートは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バッファーなども関係して総合的なレイテンシーが決定されます。

今までレイテンシーやサンプルレートをまったく気にしていなかったという方も、知っていて損をする部分ではないので、興味を持たれた方はもう少し深く調べてみるのもおもしろいと思いますよ!