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値で取得できました





