オーディオミキサーは、オーディオソースによって参照できるアセットで、AudioSource から生成される音声信号の、より複雑なルーティングとミキシングを可能にします。アセット内でユーザーが構築した AudioGroup (オーディオグループ) 階層を通して、カテゴリを基にしたミキシングを行います。
音声信号は AudioSource(オーディオソース)から AudioListener(オーディオリスナー)へ送られており、そこに DSP エフェクトなどの音声マスタリングの概念を適用することができます。
http://en.wikipedia.org/wiki/Audio_mixing
オーディオのルーティングは、複数のオーディオ信号を入力し、1 つまたは複数の出力信号を出力するプロセスです。ここで言う信号とは、連続したデジタルオーディオデータのことであり、これは複数のデジタルオーディオチャンネル (ステレオや 5.1 (6 チャンネル) など) に分けることができます。
内部的には通常これらの信号になんらかの処理 (ミキシング、エフェクトの適用、減衰など) が行われます。詳しくは後述しますが、これがオーディオ処理の重要な部分であり、オーディオミキサーはこのために設計されたものであると言えます。
Send と Return (これに関しては後述します) を除いて、オーディオミキサーには、入力信号をいくつでもインプットしてそれをミックスし、1 つにして出力する AudioGroup が含まれます。
オーディオ処理のルーティングとミキシングは通常、対象のシーングラフ階層で ORTHOGONAL(直交)に行われます。これはオーディオの動作やデザイナーの作業方法がシーンのコンセプトやオブジェクトによって大きく異なるためです。
Unity の以前のバージョンにはルーティングとミキシングの概念はありませんでした。ユーザーは AudioSource をシーン内に配置し、それらが (例えば AudioClip を通して) 生成したオーディオ信号は、直接 AudioListener に送られ、そこですべてのオーディオ信号が一度にミックスされていました。ここで留意していただきたいのは、これは、AudioSource がシーンのどこにあろうとも、シーングラフに対して直角に行われるということです。
現在の仕様ではオーディオミキサーはオーディオ信号処理空間の中で AudioSource と AudioListener の間に存在しており、AudioSource から出力された信号が、最終的にすべて AudioListener に出力されてスピーカーから音が鳴るまでの間に、さまざまなルーティングやミキシング処理を挟むことが可能です。
ミキシングとルーティングによって、ゲーム内オーディオをさまざまなコンセプトにカテゴライズ (分類) することが可能になります。サウンドがこれらのカテゴリにミックスされたら、そのカテゴリにまとめてエフェクトその他の操作を適用できます。これは非常に強力な機能で、ゲームロジックの変更をさまざまなサウンドカテゴリに適用する上でも役立ちますし、デザイナーがミックスのいろいろな面を調整し、ランタイム上でサウンドスケープ全体にまとめて“マスタリング”を行ったりすることも可能にするものです。
サウンドのコンセプト (概念) には、シーングラフや 3D 世界に関連したものがあります。もっとも代表的なものは、3D 距離、 AudioListener への相対的速度、環境リバーブエフェクトに基づいた、減衰の適用です。
これらのオペレーションはオーディオミキサー内のサウンドのカテゴリにではなくシーンに関連しているので、エフェクトは、信号がオーディオミキサーに入る前に、AudioSource に適用されます。例えば、AudioListener からの距離に基づいてある AudioSource に適用された減衰は、信号がその AudioSource から出てオーディオミキサーに入る前に適用されます。
上記のとおりオーディオミキサーは、異なる種類のサウンドを効率的に分類 (カテゴライズ) し、そこに処理を行うことを可能にします。これは重要な概念です。なぜならこのような分類ができなければ、すべての音が、一切ミキシングが適用されない状態で同じように再生されるため、サウンドスケープ全体が区別の付かないノイズでごちゃごちゃになってしまうからです。ダッキングなどの概念があれば、サウンドカテゴリ間で相互に影響を与え合うこともでき、ミックスに深みを与えることができます。
デザイナーは、それぞれのカテゴリーに対して例えば次のような操作を行うことができます。
どのような分類を行うかはゲームやプロジェクトによってそれぞれですが、下記はその一例です。
上記の設計のカテゴリー階層は、大まかには以下のようなものになります。
シーングラフのレイアウトはサウンドカテゴリーのレイアウトとはまったく見え方が違うことに注意してください。
ゲームサウンドのミキシングとルーティングは、デザイナーが求める没入感を作り出すためにも利用できます。例えば、ゲーム音のすべてにリバーブをかけて音楽を減衰させることで、洞窟の中にいる雰囲気を作ったりすることができます。
オーディオミキサーはゲーム中のいろいろな雰囲気を作り出すのに効果的です。スナップショット (後述) などの概念やその他さまざまなミキサーを 1 つのゲーム内で使用することによって、ゲーム中の雰囲気を簡単に変えることができ、デザイナーがプレイヤーに感じて欲しい感情を感じてもらうようにすることが可能です。これはゲームの没入感をつくりだすのに非常に重要なことです。
オーディオミキサーは、ゲーム内のすべてのサウンドのミックスを総合的に制御するために使われます。これらのオーディオミキサーはグローバルミックスを制御し、サウンドのインスタンスが通過する静的シングルトンミックスとして見ることができます。
つまり、オーディオミキサーはあるシーンの生存期間を通して常に存在しており、サウンドインスタンスはゲームが進行するにしたがって生成・破棄され、これらのグローバルオーディオミキサーを通して再生されます。
Snapshot を使用すれば、オーディオミキサーの状態をキャプチャし、ゲームの進行に合わせて異なる状態を相互に切り替えることができます。これは、ミックスの雰囲気やテーマを定めたり、プレイヤーがゲームを進めるにしたがって雰囲気を変えていったりするのに非常に有効な方法です。
Snapshot は、オーディオミキサー内のすべてのパラメーターの値をキャプチャします。
Snapshots とゲームロジックを組み合わせることによって、サウンドスケープのさまざまな面に変化を加えることができます。