data | オーディオデータを持つ float配列 |
channels | デリゲートに渡されたオーディオデータのチャネルの数を格納する int |
OnAudioFilterReadが実装されている場合、UnityはDSPチェーンにカスタムフィルタを挿入します。
フィルターはインスペクターに表示されているMonoBehaviourスクリプトと同じ順番で挿入されます。 OnAudioFilterReadは毎回呼ばれているオーディオのチャンクをフィルターに通すルートです。(これはサンプルレートやプラットフォームに応じて毎回 ~20msで頻繁に発生します。) オーディオデータは-1.0fから1.0fまでのfloat値の配列で、チェーンのフィルター前のオーディオ、またはAudioSourceのAudioClipを含みます。これがチェーンの最初のフィルタでオーディオソースがアタッチされていない場合、このフィルタはフィルタリングしたことになります。そうすれば手続き的にオーディオの生成を行い、オーディオクリップのようにフィルターを使用することができます。 OnAudioFilterReadが実装されている場合、VUメーターはサンプルレベルを出力を表示するためにインスペクターに表示されます。フィルターの処理時間も測定され、使用済みのミリ秒は次のVUメーターに表示されます。(ミキサーがオーディオデータを開始した時に、フィルタが多くの時間を費やしている場合、赤色に変わります) また、OnAudioFilterRead関数内から他のUnity関数を呼び出すことは許可されていません(渓谷が表示されます)ので、メインスレッド(すなわちオーディオスレッド)から異なるスレッドが呼び出されていることに注意してください。 See Also: Audio Filters.
// This custom filter controls the gain by filtering the samples by multiplying each sample with a <i>gain</i> parameter. public var gain : float; function OnAudioFilterRead(var data:float[], var channels:int) { for (var i = 0; i < data.Length; ++i) data[i] = data[i] * gain; }