オーディオバス

はじめに

Godotのオーディオ処理コードは、パフォーマンスと音質の最適なバランスを実現することを目的として、ゲームを念頭に置いて書かれています。

Godotのオーディオエンジンを使用すると、任意の数のオーディオバスを作成でき、各バスに任意の数のエフェクトプロセッサを追加できます。ゲームを実行しているデバイスのハードウェアのみが、パフォーマンスが低下しない範疇で使用可能なバスとエフェクトの数を規定します。

デシベルスケール

Godotのサウンドインターフェイスは、サウンドデザインの専門家の期待に応えるように設計されています。この目的のために、主にデシベルスケールを使用します。

それに不慣れな人のために、いくつかの事実で説明できます:

  • デシベル(dB)スケールは相対スケールです。これは、比率の常用対数に20を掛けて(20 × log10(P/P0))、音響パワーの比を表します。
  • 6dBごとに、音の振幅は2倍または半分になります。 12dBは係数4、18dBは係数8、20dBは係数10、40dBは係数100などを表します。
  • スケールは対数であるため、真のゼロ(オーディオなし)は表現できません。
  • 0dBは、デジタルオーディオシステムで可能な最大振幅です。この制限は人間の制限ではなく、サウンドハードウェアの制限です。振幅が大きすぎて0dB未満で適切に表現できないオーディオでは、クリッピング と呼ばれる一種の歪みが発生します。
  • クリッピングを避けるために、master bus (詳細は後述)の出力が 0dBを超えないようにサウンド ミックスを調整します。
  • 0dBの上限を6dB下回るごとに、音響エネルギーは *半分*になります。つまり、-6dBでの音量は0dBの半分です。-12dBは、-6dBの半分の音量です。
  • デシベルを使用する場合、-60dB〜-80dBの間で音は聞こえないと見なされます。これにより、作業範囲は通常-60dB〜0dBになります。

これには少し慣れる必要がありますが、最終的には使いやすくなり、オーディオの専門家とのコミュニケーションが向上します。

オーディオバス

オーディオバスは、Godotエディタの下部パネルにあります:

../../_images/audio_buses1.png

audio bus*(*audio channel*とも呼ばれる)は、デバイスのスピーカーを介して再生する途中でオーディオが流れる場所と見なすことができます。オーディオデータは、オーディオバスによって*変更および再ルーティングできます。オーディオバスには、通過する信号の振幅を示すVUメーター(サウンドが再生されると点灯するバー)があります。

左端のバスはmaster busです。このバスはミックスをスピーカーに出力するため、上記のデシベルスケールセクションで説明したように、このバスでミックスレベルが0dBに達しないようにしてください。残りのオーディオバスは柔軟にルーティングできます。サウンドを変更した後、左の別のバスに送信します。宛先バスは、非マスターオーディオバスごとに指定できます。ルーティングは、常に右側のバスからさらに左側のバスにオーディオを渡します。これにより、無限ルーティングループが回避されます。

../../_images/audio_buses2.png

上の画像では、Bus2の出力はMasterバスにルーティングされています。

バスを介したオーディオの再生

バスへのオーディオの受け渡しをテストするには、AudioStreamPlayerノードを作成し、AudioStreamを読み込みんで、再生するターゲット バスを選択します:

../../_images/audio_buses3.png

最後に、Playing プロパティを On に切り替えると、音が流れます。

参考

また、同時にオーディオストリーム を読むことに興味があるかもしれません。

エフェクトの追加

オーディオバスには、あらゆる種類のエフェクトを含めることができます。これらのエフェクトは、何かの方法でサウンドを変更し、順番に適用されます。

../../_images/audio_buses4.png

それらをすべて試して、音がどのように変化するかを理解してください。次に、使用可能な効果の簡単な説明を示します:

Amplify(アンプ)

Amplifyは、信号の振幅を変更します。いくつかの注意が必要です。レベルを高く設定しすぎると、サウンドクリップが作成される可能性がありますが、これは通常は望ましくありません。

BandLimit、BandPass(バンドリミット、バンドパス)

これらは、Cutoff ポイント付近の周波数をブロックする共振フィルターです。 BandPassは、古い電話回線またはメガホンを通過する音をシミュレートするために使用できます。 BandPass周波数を変調すると、ワウワウギターペダルのサウンドをシミュレートできます。ジミヘンドリックスの Voodoo Child(Slight Return) のギターを思い浮かべてください。

Chorus(コーラス)

コーラスエフェクトは、入力オーディオを複製し、複製をわずかに遅延させ、LFOを使用して複製信号のピッチを連続的に変調してから、複製信号と元の信号を再びミキシングします。これにより、きらめく効果が得られ、サウンドにステレオ幅が追加されます。

Compressor(コンプレッサー)

ダイナミックレンジコンプレッサーは、振幅が特定のしきい値を超えると、入力信号のレベルを自動的に減衰させます。適用される減衰のレベルは、入力オーディオがしきい値をどれだけ超えるかに比例します。コンプレッサーの比率パラメーターは、減衰の度合いを制御します。コンプレッサーの主な用途の1つは、非常に大きな音と静かな部分で信号のダイナミックレンジを減らすことです。信号のダイナミックレンジを小さくすると、ミックスしやすくなります。

コンプレッサーには多くの用途があります。例えば:

  • マスターバスで使用して、出力全体を圧縮できます。
  • 音声チャンネルで使用して、可能な限り均等に聞こえるようにすることができます。
  • *sidechained*(サイドチェーン)にすることができます。これは、しきい値検出用の別のオーディオバスのレベルを使用して、1つの信号のサウンドレベルを下げることができることを意味します。このテクニックは、音声を聞く必要があるときに音楽や効果音のレベルを「ダッキング」するビデオゲームミキシングでは非常に一般的です。
  • ゆっくりとした音の立ち上がりを使用すると、トランジェントを強調できます。これにより、効果音がよりパンチの効いたものになります。

注釈

信号のダイナミックレンジを縮小するのではなく、信号が特定の振幅を完全に超えないようにすることが目標である場合は、コンプレッサーよりも limiter の方が適しています。

Delay(ディレイ)

フィードバック ループで「エコー」効果を追加します。Reverbと一緒に使用して、広い部屋や渓谷などの遠く離れている場所からの音の跳ね返りをシミュレートすることができます。

Distortion(ディストーション)

ディストーションエフェクトは、サウンドが「ダーティ」になります。Godotは、いくつかのタイプのディストーションを提供しています: overdrivetanbit crushing。ディストーションは、低品質のスピーカーやデバイスを介して来る音をシミュレートするために使用することができます。

EQ

EQは、他のすべてのイコライザーが継承するものです。カスタムスクリプトで拡張して、好きな数のバンドを持つイコライザーを作成できます。

EQ6、EQ10、EQ21

Godotは、バンド数の異なる3つのイコライザーを提供します。マスターバスのイコライザーは、デバイスのスピーカーがうまく再生できない周波数をカットするのに役立ちます(たとえば、携帯電話のスピーカーは低音のコンテンツをうまく再生できません)。ヘッドフォンを接続すると、イコライザー効果を無効にできます。

フィルタ(Filter)

フィルタは、他のすべてのフィルタが継承する為のものであり、直接使用しないでください。

HighPassFilter、HighShelfFilter(ハイパスフィルタ、ハイシェルフフィルタ)

これらは、特定の Cutoff 周波数より低い周波数をカットするフィルタです。 HighPassFilterとHighShelfFilterは、信号の低音成分を減らすために使用されます。

Limiter(リミッター)

リミッターはコンプレッサーに似ていますが、柔軟性が低く、特定のdBしきい値を超える信号の振幅を防ぐように設計されています。マスターバスにリミッターを追加すると、クリッピングを防止できます。

LowPassFilter、LowShelfFilter(ローパスフィルタ、ローシェルフフィルタ)

これらは最も一般的なフィルタで、特定の Cutoff 周波数より高い周波数をカットし、resonate(共振、Cutoff 周波数に近い周波数をブースト)させることもできます。ローパスフィルタを使用して、「こもった」サウンドをシミュレートできます。たとえば、水中の音、壁で遮られた音、または遠くの音など。

NotchFilter(ノッチフィルタ)

BandPassフィルタの反対で、所定の *Cutoff * 周波数で周波数スペクトルから音のバンドを削除します。

Panner(パン)

Pannerを使用すると、信号のステレオバランスを左右のチャンネル間で調整できます(この効果を確認するにはヘッドフォンを着用してください)。

Phaser(フェイザー)

このエフェクトは、2つの信号がディフェーズされ、互いに打ち消し合うことによって形成されることを説明してもおそらく意味がありません。ダース・ベイダーの声、またはジェットのような音を作ることができます。

PitchShift(ピッチシフト)

このエフェクトにより、信号のピッチを速度に関係なく調整できます。トランジェントへの影響を最小限に抑えながら、すべての周波数を増減できます。 PitchShiftは、異常に高いまたは低い音声を作成するのに役立ちます。

Record(録音)

Recordエフェクトを使用すると、バスを通過するオーディオをファイルに書き込むことができます。

Reverb(リバーブ)

リバーブは、さまざまなサイズの部屋をシミュレートします。特定の部屋の音を得るために調整できる変更可能なパラメーターがあります。リバーブは一般に Areas から出力されます(リバーブバス を参照)、またはすべての音に「チャンバー」感を与えます。

SpectrumAnalyzer(スペクトラムアナライザ)

このエフェクトはオーディオを変更しません。代わりに、このエフェクトをスペクトル分析が必要なバスに追加します。これは通常、オーディオの視覚化に使用されます。これを使用したデモプロジェクトは、こちら にあります。

StereoEnhance(ステレオエンハンス)

このエフェクトは、いくつかのアルゴリズムを使用して、信号のステレオスペクトルを強化します。

自動的なバス無効化

使用していないときにバスを手動で無効にする必要はありません。 Godotは、バスが数秒間無音であることを検出し、無効にします(すべての効果を含む)。

../../_images/audio_buses5.png

無効になっているバスには、赤緑の代わりに青いVUメーターがあります。

バスの再配置

ストリームプレイヤーはバス名を使用してバスを識別し、バスへの参照が保持されている間にバスを追加、削除、移動できるようにします。ただし、バスの名前を変更すると、参照は失われ、ストリームプレイヤーはマスターに出力されます。このシステムが選択されたのは、バスの並べ替えが名前を変更するよりも一般的なプロセスであるためです。

デフォルトのバスレイアウト

デフォルトのバスレイアウトは自動的に res://default_bus_layout.tres ファイルに保存されます。カスタムのバス配置を保存し、ディスクからロードできます。