[Unity] オーディオレベルメーターを作ってみる [なんか違う?]

Pocket

音に反応して上下するメーターを作ってみます。こちらの記事 Unity のオーディオの再生・エフェクト・解析周りについてまとめてみた(凹みTips) をそのままやってみる感じです。音楽から映像を作る 「Unity でシェーダを使って 20,000 人が音楽に合わせてサイリウム振ってる様子を作ってみた」 も素敵。

音に関する知識も無いのですべて他の方の記事をそのまま作ってみます。

※作ってみたはいいですが思った結果になりませんでした。(作成したメーターと、他のソフトウェアで表示されるメーターとなんか違う・・・。何かが足りない・・・。)

 

 

 

環境

Unity 5.0.0f4

 

uGUIでメーターのパーツを作る

参考サイトではキューブでメーターを作成していたので、今回はuGUIで作成してみます。

初期バージョン。Imageコンポーネントをそのままメーターとして使う。グラデーションテクスチャーを指定するだけでそれっぽくなる。ImageTypeをFilledにし、FillAmountを変更させることでメーターとして使えるようになります。

audiometer_bar

もうちょっと頑張ったバージョン。テクスチャーは使用せず、UIコンポーネントを並べて作成。ぽちぽちと作るのが大変。絵を作れないだけなので、テクスチャーを作って貼った方がもちろん楽だし実行時の負荷は少ないと思われる。BarにはImageとMaskを指定してあります。上と同じようにImageTypeをFilledにしてFill Amountを操作することでメーターを表現します。

audiometer_bar2

 

バー制御用スクリプトを作成

値(0~1)を渡すことで内部のMaskサイズを制御するスクリプトです。

 

必要な本数を並べる

先ほど作成したバーを並べます。ここでは20本並べました。

audiometer_meter2

 

オーディオメーター制御用のスクリプトを作成

表示する周波数の最小値、最大値、配置したバーのスクリプト配列などをプロパティに準備し、マウスでぽちぽちと設定していきます。データ取得先はAudioListenerとしました。

 

さて本当にこれで良いのか不明です。参考にした場所はこちら。

http://www.kaappine.fi/tutorials/fundamental-frequencies-and-detecting-notes/

http://answers.unity3d.com/questions/720179/getspectrumdata-cant-recognize-correct-note.html

http://answers.unity3d.com/questions/175173/audio-analysis-pass-filter.html

 

デモ

BGM : 魔王魂

 

※オーディオメーターも満足に作れないよー・・・。今後の課題としてひっそり更新しておきます。

Pocket

希木小鳥

Diablo1でハクスラの世界に。今はPath of Exileをプレイ中。長くやっていてもNoob属性は常に付いている。そのくらい行き当たりばったり。オタクになれないゲーマー。

You may also like...