Screenberry logo
オーディオの扱い方

オーディオの扱い方

概要

Screenberryは、スムーズで低遅延のオーディオ出力を実現するために設計された高度な32bitオーディオエンジンを取り入れています。このエンジンは、最大128チャンネル、最大192kHzのサンプルレートをサポートしています。様々なデバイスと互換性があり、カスタマイズされたオーディオミックスや様々なオーディオエフェクトの適用が可能です。

ノードグラフ内でのオーディオデータの転送

ノードを追加してリンクさせることで作成されるノードグラフは、Screenberryのデータフローと処理を視覚的に表現しています。オーディオを含むデータは、ノードをつなぐリンクを通じて左から右に移動します。

システム内のすべてのオーディオデータは、共通のサンプルレートの32bitの形式で一律に転送されます。このシステム全体のAudio Sample Rateは、Preferencesから設定することができます。ただし、変更を反映させるためにはServerを再起動する必要があります。

ノードグラフ内で転送されるオーディオのサンプルレートがメディアや入出力信号と異なる場合、Screenberryは自動的にオーディオを再サンプリングします。この再サンプリングを避けるためには、共通のAudio Sample Rateをデバイスとコンテンツの形式に合わせることを推奨します。

Screenberryでは、オーディオデータはノード間でリンクによって転送されます。つながっているノードの出力ピンから別のノードのオーディオ入力ピンへの転送は、バッファブロックと呼ばれる単位で行われます。各バッファブロックには固定のサンプル数であるバッファサイズが含まれ、異なるチャンネル数をサポートすることができます。

オーディオチャンネルは自動的に結合またはサブミックスされるわけではないことを理解しておくことが重要です。これによって、1対1の直接マッピングシステムが維持されています。例えば、4チャンネルのメディアプレーヤーが2チャンネルのステレオ出力に接続されている場合、出力されるのは最初の2つのチャンネルのみです。残りの3番目と4番目のチャンネルを出力するには、適切なオプションを持つ特定のノードも使用する必要があります。同様に、モノラル音源がステレオ出力に接続されている場合、出力されるのは左チャンネルのみです。Screenberryはモノ信号を自動的にステレオにアップミックスしません。

Preferencesで変更できるAudio Buffer Sizeは、レイテンシ(遅延)とCPU負荷の両方に影響を与えます。バッファサイズが小さいほどレイテンシは低くなりますが、CPU負荷が高くなり、グリッチの可能性があります。デフォルトのバッファサイズは1024サンプルであり、48kHzで20msに相当します。低レイテンシが重要でない場合は、バッファサイズを大きくすることで全体的なオーディオパフォーマンスと安定性を向上させることができます。ただし、4096サンプルを超えることは推奨されません。また、クロックエンジンを使用するオーディオ入出力では、動的にバッファサイズが上書きされる場合があります。小さなバッファサイズでは、Screenberryで同時に実行される他のタスクや他のソフトウェアによってCPUが重く負荷がかかった場合に、オーディオが途切れる可能性があります。

ノードグラフ内のオーディオのリンクを接続または切断する際に、アナログハードウェアにオーディオケーブルを接続するとよく聞かれるパチパチ音に似た突然の音を避けるために、Screenberryは各オーディオパラメーターポートにフェードバッファを割り当てます。この機能により、ポートが接続または切断されたときにオーディオがスムーズにフェードイン/フェードアウトされますが、わずかな遅延が発生します。フェードバッファはより滑らかなオーディオの遷移を保証します。Preferencesで調整できるFade Buffer Durationから、フェードバッファのサイズを設定することができます。

Screenberryでは、ゲイン、ボリューム、またはレベルを制御するオーディオノードのすべてのパラメーターが対数スケールで動作します。このスケールでは、中間点は-15.5dBに相当し、ゼロに近づくほど-50dBに近くなります。

Audio Mixingノードの基本

現在、ScreenberryではオーディオリミックスのためにAudio MixerAudio Channel Mixerの2つのノードが提供されています。

Audio Mixerノードは複数の入力ピンと1つの出力ピンを持っています。選択したレベルを調整することで、すべてのオーディオ入力をブレンドすることができます。このノードはチャンネルを変更しませんので、注意が必要です。例えば、1チャンネルのモノラルと2チャンネルのステレオの2つのオーディオ入力がある場合、出力は2チャンネルのオーディオになります。最初のチャンネルは両方の入力のミックスであり、2番目のチャンネルは2番目の入力から来ますが、レベルは適切に調整されます。ただし、2チャンネルの入力を切断すると、出力は即座に1チャンネルのオーディオになります。

Audio Channel Mixerノードは1つの入力ピンと1つの出力ピンを持っています。このノードでは、マトリックスを使用してサブミックスされる固定数のオーディオチャンネルが一貫して出力されます。このノードでは、どのチャンネルをリマップし、出力として他のノードに渡すかを簡単に選択することができます。

オーディオノードとドライバの設定

Screenberryはさまざまなオーディオデバイスとドライバをサポートしています。これにはWindowsのASIOとWASAPI、LinuxのPulseとALSA、およびmacOSのCore Audioが含まれます。

マルチチャンネル同期または低レイテンシのオーディオ入出力処理を求めるWindowsユーザーには、ASIOが推奨されています。ただし、ASIOハードウェアは予期しない停電や破損したデジタルケーブルインターフェースなどの物理的な障害に対して脆弱です。これらの障害はサーバーのクラッシュやシステムの障害を引き起こす可能性があります。

デフォルトのWindowsオーディオエンジンであるWASAPIは、一般的にモノラルまたはステレオで動作します。ただし、特定のサウンドカードではマルチチャンネルオーディオもサポートしています。WASAPIには、低レイテンシのオーディオ入出力のための排他モードがあり、選択したオーディオデバイスをScreenberry専用に割り当て、他のソフトウェアからのアクセスを防止します。レイテンシの面では、WASAPIの排他モードのパフォーマンスはASIOと同等です。

Screenberryのオーディオノードでは、デバイスのバッファサイズを調整する設定項目があります。WASAPI ExclusiveやASIOなどの直接アクセスドライバでは、このバッファはデジタルからアナログへの変換(DAC)プロセス中にハードウェアに格納されます。このバッファはグローバルバッファサイズと同様の機能を持ち、クロックエンジンモードを使用する場合、実際にはグローバルバッファサイズとなります。

ただし、これらの直接アクセスドライバには特定の制限があります。バッファサイズは特定の値の倍数であるか、固定されている必要があります。Screenberryは、自動的に最も適切なバッファサイズを選択し、Actual Buffer Size欄に表示します。

ASIOを含む特定のハードウェアには、設定のための外部ツールが用意されている場合があります。これにはサンプルレートやバッファサイズを変更するユーティリティが含まれることがあります。ただし、Screenberryのオーディオノードがデバイスとやり取りしている間に外部ユーティリティを介してパラメータを変更することは推奨しません。これにより、システムのクラッシュや障害の原因となる可能性があります。

クロックエンジン機能

Screenberryは、各ハードウェアデバイスが独自のクロックを保持しながらオーディオデータを処理します。これらのクロックシステムの間には一貫性のないジッターが発生することがあります。これらの影響を軽減するために、Screenberryのすべてのオーディオ入出力ノードにはスムースバッファが組み込まれています。このバッファは、デバイスバッファとグローバルバッファサイズに基づいて自動的に計算され、2つのクロック間の不整合を滑らかにします。ただし、スムースバッファの使用により追加のレイテンシが発生し、特定のシナリオでは望ましくないオーディオの遅延が生じる可能性があります。

このため、Screenberryではデバイスからのクロックオーディオエンジンという機能を提供しています。この機能は、Audio InノードまたはAudio Outノードのいずれかにのみ有効にできます。有効にすると、選択したデバイスのクロックがScreenberryのノードグラフ全体でオーディオデータ処理に適応されます。その結果、グローバルバッファサイズがデバイスのバッファサイズに自動的に調整され、レイテンシが最小限に抑えられます。ただし、クロックエンジン機能を有効化しても、グローバルサンプルレートは変更されないことに注意してください。

ASIOデバイスの使用方法

Audio Stream Input/Output(ASIO)ドライバーの技術的制約により、Screenberryでは同時に1つのASIOデバイスのみを使用することができます。この制約により、サーバーに接続された複数のASIOデバイスにはオーディオを出力することができず、また、1つのデバイスから入力し、同時に別のデバイスに出力することもできません。ASIOの追加のチャンネルが必要な場合、プロフェッショナルオーディオカードでは通常、複数のカードを1つのシステムに組み合わせる機能が提供されています。詳細については、使用しているオーディオカードのマニュアルを参照してください。

ASIOの重要な機能の1つは、リアルタイムオーディオ処理が可能な統合デバイスとしての機能です。この機能により、Screenberryはノードベースのデジタルオーディオミキサーとして機能することができます。ただしこれにより、ノードグラフ内ではASIOオーディオ出力ノード1つとASIO入力ノード1つのみの利用に制限され、両方のノードは同じデバイスを選択する必要があります。ただし、ASIOとWindowsオーディオセッションAPI(WASAPI)を併用することで、別のデバイスにも同時にオーディオを出力することはできます。

最初にオーディオノード(Audio InまたはAudio Outのいずれか)の設定でASIOをオーディオドライバーとして使用するように構成すると、そのノードはプライマリASIOノードとなります。ASIOドライバーを使用する他のオーディオノードはセカンダリASIOノードとなります。各ノードの状態はASIO Owner欄に表示されます。

デバイスの選択、バッファサイズ、クロックエンジン機能の設定はプライマリASIOノードで行います。また、セカンダリASIOノードプライマリASIOノードと同じデバイスを選択する必要があります。プライマリASIOノードに設定されたパラメーターはデバイスに適用されるため、セカンダリASIOノードにも適用されます。その結果、ASIO出力ノード(プライマリとして指定された場合)でクロックエンジンを有効にすると、出力ノードと入力ノード(この場合はセカンダリ)のスムーズバッファが消去されます。これは、2つのノードが統合されたクロックを持つ同じデバイスを表しているからです。

Virtual Studio Technology (VST) エフェクトの利用

Screenberryは、システム内にVirtual Studio Technology(VST)を組み込む機能を試験的に導入しました。VSTは、ソフトウェアオーディオシンセサイザーやエフェクトプラグインをオーディオエディターやレコーディングシステムに統合するためのソフトウェアインターフェース規格であり、ユーザーは幅広いオーディオエフェクトを作成することができます。

実験的な機能として、ScreenberryのVST Effectsノードは、ノードグラフ内でのオーディオ処理と操作の柔軟性をさらに高める追加レイヤーを提供します。このノードでは、VSTプラグインの統合と使用が可能であり、より複雑でユニークなオーディオエフェクト、サウンドデザイン、音響テクスチャの可能性を拡げます。