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