83
86

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Unity 2Advent Calendar 2015

Day 12

知る人ぞ知るUnity 5のネイティブオーディオプラグインについて

Posted at

はじめに

みなさん、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日にまたお会いしましょう!

83
86
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
83
86

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?