レイテンシとは
オーディオレイテンシとは、音が発生した後のある時点で音が耳に届く現象です。自然界では、レイテンシは音源からの物理的な距離によって発生します。音源から数メートルしか離れていなくても、音が発生してから音を聞き取るまでの間には時間差があります。音源が遠くなるほど、レイテンシも大きくなります。デジタルオーディオにもレイテンシが存在しますが、この場合、レイテンシはバッファリングによって発生します。MainStage (またはその他のオーディオソフトウェア) では、オーディオデータを Core Audio ドライバに渡すことができるようにするには、オーディオデータを処理する時間が必要です。このため、オーディオはバッファと呼ばれるまとまりに分割されます。このバッファのサイズによって、発生するレイテンシの大きさが決まります。バッファが小さいほど、オーディオが頻繁に Core Audio ドライバに渡されるため、レイテンシは小さくなります。ただし、次のバッファを処理する時間が少ないため、バッファのサイズが大きい場合よりもコンピュータの処理能力が必要になります。次のバッファが必要になる前にコンピュータが 1 つのバッファを完全に処理できない場合、オーディオ信号に音飛びなどの不具合が発生します。
MainStage でレイテンシを管理する
MainStage 2.2.1 には、システムのレイテンシの大きさに影響を及ぼす 3 つの設定があります。これらの設定にアクセスするには「MainStage」>「環境設定」の順に選択し、「環境設定」パネルの上の「オーディオ」ボタンをクリックします。
「環境設定」パネルの「オーディオ」パネルの「詳細設定」ボタンをクリックします。
I/O バッファサイズ
最初にもっとも重要な設定を「I/O バッファサイズ」ドロップダウンメニューで行います。オーディオチャンネルストリップの場合、このメニューによって入力バッファと出力バッファの両方が設定されます。ソフトウェア音源チャンネルストリップの場合、オーディオ入力はないため、このメニューによって出力バッファのみが設定されます。バッファサイズは 16 ~ 1024 サンプルの間で設定できます。
「I/O バッファサイズ」を変更すると、「詳細オーディオ設定」パネルの下の「現在のラウンドトリップレイテンシ」(ミリ秒表示) が大きく変わります。
「現在のラウンドトリップレイテンシ」をクリックすると、「現在の出力レイテンシ」のみが表示されるよう切り替えられます。これは、ソフトウェア音源チャンネルストリップのレイテンシを確認するのに役立ちます。
バッファサイズを小さく設定するとレイテンシは小さくなりますが、再生時にノイズが入らない状態で同時に使えるチャンネルストリップとプラグインの数は減ります。「I/O バッファサイズ」は、チャンネルストリップとプラグインの使用状況およびコンピュータの処理能力に基づいて設定します。処理負荷の大きいプラグインを多数使う場合は、処理負荷の小さいプラグインを使うようにしている場合や、同時に使うチャンネルストリップの数が少ない場合よりも、バッファサイズを大きくする必要があります。
I/O セーフティバッファ
次の設定は「I/O セーフティバッファ」です。この設定が有効になっていると、予期しない CPU スパイクによるオーバーロードからの保護のため、出力バッファが追加されます。このバッファのサイズは、「I/O バッファサイズ」設定のサイズと同じですが、影響を受けるのは出力バッファのみです。たとえば、「I/O バッファサイズ」を 256 サンプルにするとレイテンシが大きすぎるが、「I/O バッファサイズ」を 128 サンプルにすると音飛びなどのオーディオの不具合が発生する場合は、「I/O バッファサイズ」を 128 サンプルにして、「I/O セーフティバッファ」を有効にしてみてください。セーフティバッファを無効にしてバッファサイズを 128 サンプルにしている場合よりもレイテンシはいくらか大きくなりますが、セーフティバッファを無効にしてバッファサイズを 256 サンプルにしている場合よりレイテンシは小さくなります。
「ドライバのレイテンシ」スライダ
次の設定は「ドライバのレイテンシ」スライダです。このスライダは MainStage 2.2.1 で新たに導入されました。スライダはデフォルトでは可能な限り最大の値、すなわち現在の「I/O バッファサイズ」と同じ値に設定してあります。これによって、MainStage 2.2.1 は過去のバージョンの MainStage とまったく同じように動作します。下図では、MainStage は 128 サンプルのバッファサイズに設定されています。各バッファは青いブロックで示されています。MainStage が 128 サンプルのバッファの処理を終了すると、このバッファが Core Audio ドライバに渡され (ピンクのブロック)、Core Audio ドライバはこれをオーディオハードウェア出力に渡します。
「ドライバのレイテンシ」スライダを左に 1 目盛り動かして 64 サンプルにした場合、システムのレイテンシは数ミリ秒低下します。
下図はその過程を表しています。
MainStage は依然として 128 サンプルのサイズのバッファでオーディオを処理していますが、バッファがいっぱい (128 サンプル) になるまで待ってから各バッファを Core Audio ドライバに渡すのではなく、64 サンプルになった時点で、バッファをドライバに渡し始めます。
「I/O バッファサイズ」と同様に、「ドライバのレイテンシ」設定を小さくすると音飛びなどのオーディオの不具合が発生することがあります。特定のシステムで設定できる最小の値は主にオーディオドライバで決まります。「ドライバのレイテンシ」設定は、実行できるプラグインやチャンネルストリップの数には影響を及ぼしません。
まとめ
最適な組み合わせの設定を見つけるには、「詳細オーディオ設定」パネルの上から順に設定を試すことをお勧めします。最初は「I/O セーフティバッファ」を無効にしたまま「ドライバのレイテンシ」スライダを一番右側の最大値に設定しておきます。
- 
	
- 演奏時に使う予定のパッチの中で CPU 負荷がもっとも大きいパッチを読み込みます。 
	
- 音飛びなどのオーディオの不具合が発生しないで利用できる最小の「I/O バッファサイズ」を決定します。これは、コンピュータの処理能力だけでなく、プラグインの種類や数、同時に使うチャンネルストリップの数の影響も受けます。 
	
- 利用できる最小の「I/O バッファサイズ」設定にしていると快適に演奏できないほどレイテンシが大きくなる場合は、設定を 1 段階小さくして、「I/O セーフティバッファ」を有効にしてみます。 
	
- 最適なバッファ設定を決定したら、「ドライバのレイテンシ」設定を小さくしてみて、システムの全体のレイテンシをさらに小さくします。利用できる最小のバッファサイズ設定を決定する最大の要因は Core Audio ドライバであるため、別のオーディオインターフェイスに変更したり、現在のインターフェイス用にアップデートされたドライバをインストールしたりする場合は、この設定を見直すことをお勧めします。