はじめに
みなさん、Unity 5から使えるようになったネイティブオーディオプラグインのこと、知ってますか?
え?「DllImportで呼ぶやつだろ」って?はい、それはただのネイティブプラグインですね。
Unity 5ではオーディオ機能が改良され、Audio Mixerなどの仕組みが追加されると同時にネイティブオーディオプラグインが使えるようになりました。
今までと何が変わったの?
Unity 5以前では音声データを加工するためにはMonoBehaviourのOnAudioFilterReadを使って、スクリプトで処理するしかありませんでした。
ネイティブオーディオプラグインでは処理部分をC/C++などのネイティブコードで記述できるため、高速に音声データの生成・加工を行うことができます。
(エディターからプラグインを操作するためのGUIはC#で記述する)
サンプル
ネイティブオーディオプラグインのサンプルが以下のURLで公開されています。
サンプルと言っても実際のプロジェクトでもそのまま使えるような機能を持ったプラグインが25個も含まれており、「サンプルとはいったい?うごごご…」と宇宙の法則が乱れること請け合いなので、どのようなプラグインが含まれているか順に説明していきたいと思います(というかサンプルの紹介がこの記事の主題だったりする)。
ビジュアライズ系
エディターでの再生時に、Audio Mixerのインスペクターで何らかの可視化を行えるようにするプラグインです。
名前 | 説明 |
---|---|
CorrelationMeter | ステレオメーター。ステレオ信号の位相関係を確認することができます。 |
LoudnessMeter | ラウドネスレベル(音の大きさ)が確認できます。 |
Oscilloscope | リアルタイムに波形が確認できます。 |
プロシージャル系
様々なアルゴリズムを元にパラメータに応じて波形を生成します。
名前 | 説明 |
---|---|
ImpactGenerator | スクリプト側からの指示を受けて衝撃音のような波形を生成します。 |
ImpulseGenerator | 揺らぎを持ったインパルスを生成します。 |
NoiseBox | ノイズを生成します。 |
エフェクト系
様々なアルゴリズムを元にパラメータに応じて波形を加工します。
名前 | 説明 |
---|---|
ConvolutionReverb | 畳み込み演算を利用したリバーブです。 |
Equalizer | よくあるイコライザー。3バンド対応。 |
Granulator | グラニュラーシンセシスを行います。それ以上説明のしようがない。 |
LevelMixer | 音声チャンネルごとにレベルを調整します。 |
Lofinator | サンプルレートと量子化ビット数を下げてLo-Fi(Hi-Fiの逆)な音を作り出すエフェクトのようですが…デモでは使用されていないような? |
ModalFilter | 金属音を作り出すのに使えるエフェクトです。 |
Multiband | マルチバンドのコンプレッサーです。これも3バンド。 |
RingModulator | リングモジュレーターです。正弦波オシレータ内蔵。 |
Spatializer | 立体的な音場を作り出すためのエフェクトです。 |
StereoWidener | 音声のステレオ効果を強めます。 |
TubeResonator | 共鳴管?のシミュレーションを行います。 |
Vocoder | ボコーダーです。Daft Punkが使ってるアレ。 |
WahWah | 俗に言うワウ・エフェクトです。ジミ・ヘンドリックスがよく使ってました。 |
「俺はUnityのサンプルの話を聞いていたと思ったらいつのまにかDAWの話になっていた」って?僕もそう思います。
シンセサイザー系
プロシージャル系に近いですが、より楽器的な音声を生成します。
名前 | 説明 |
---|---|
Synthesizer | ちょっとしたソフトウェア・シンセ。なんとMIDI入力にも対応!何に使うんだよ! |
TeeBee3o3 | アシッドハウスを生んだあの名機を再現した?シンセサイザーです。 |
TeeDee9o9 | デトロイトテクノでおなじみのあの名ドラムマシンを再現した?シンセサイザーです。名前がちょっと違うけど。 |
ここらへんから「お前絶対趣味で作ってるだろ!」という気がしてきます。
その他
名前 | 説明 |
---|---|
PitchDetector | 高速フーリエ変換によって再生中の音声の音程を分析します。 |
Routing | スクリプトから音声データを取り出せるようにルーティングするためのプラグインです。 |
Teleport | 共有メモリーを利用して、プロセス間で音声データの転送を行います。 |
もう完全にゲームと関係ないよね…。
デモ
サンプルに含まれるデモシーン(Assets/demos.unity)を再生することで実際のプラグインの動作を体験できます。プロシージャル系のプラグインを組み合わせて環境音を再現するデモなど一聴の価値あり。
より詳しく
ネイティブオーディオプラグインの詳しい解説がUnityのマニュアルにあります。
また、こちらはUnity 5のオーディオシステムを開発したJan MargucがUnite 2015 Tokyoで講演をした際の資料です。
最後に
さて、ネイティブオーディオプラグインによって今までのUnityにおける音声処理の限界を軽く突破できることがお分かりいただけたと思います。プレイヤーによりよい体験を提供するには、聴覚への刺激も効果的かもしれませんね。
以上、Unity 2 Advent Calendar 2015の12日目として書かせていただきました。
それでは24日にまたお会いしましょう!