micinputのサンプルがどれを試してもうまくいかない.
サンプルの記事ですと,コンソールにずっとゼロが表示されて音量が変化しません.
(最初に参考にさせていただいたスクリプト http://www.jonki.net/entry/20130607/1370622815 )
思い悩んで2日目,グーグルさんに1年以内の記事に限って検索するとその答えが載っていた.
まずはスクリプト(改変済み)
using UnityEngine; using System.Collections; //script source from web sample // public class micinput : MonoBehaviour { void Start() { //check foreach (string device in Microphone.devices) { Debug.Log("Name: " + device); } // GetComponent<AudioSource>().clip = Microphone.Start(null, true, 999, 44100); // マイク入力 GetComponent<AudioSource>().loop = true; // ループ再生にしておく //GetComponent<AudioSource>().mute = true; // Unity5ではコメントアウトうる while (!(Microphone.GetPosition("") > 0)){} // マイクが使えるまで待つらしい GetComponent<AudioSource>().Play(); // 再生しないと音量をチェックできない } void Update() { float vol = GetAveragedVolume(); print(vol); } float GetAveragedVolume() { float[] data = new float[256]; float a = 0; GetComponent<AudioSource>().GetOutputData(data,0); foreach(float s in data) { a += Mathf.Abs(s); } return a/256.0f; } }
その対処方法
(ソース http://qiita.com/CST_negi/items/c8862f8d05dd9e871917 )
CreateEmptyで空のオブジェクトを作成
そこにスクリプトをアサインします
ミキサーの画面を呼び出し,[+]ボタンでミキサーを作成(ミキサなんてはじめてつこうたよ,,)
そのミキサのフェーダーを-80dbまで下げる(でないとハウリングおこしました)
上で空のオブジェクトに割り当てたたスクリプト(画面最下段の赤線)にAudio Sourceを割り当てます.
Outputに先ほど作成したミキサー(なぜかMasterと表示される)をアサインします
無事float値で取得できました