- Home /
Microphone is late in built version after I created multiple screen feature.
Hi I'm making somekind of VJ software in unity and I have this script that lets your Microphone Audio be recognize as a Spectrum so when I speak in my microphone my graphics will move. check out my pic.
everything was fine in the Unity Editor, the microphone recognition was never late, Even when I created the multiple screen(because i want 2 screen: 1 for the Interface and 1 for the graphics only) but when I built it and run it. the Microphone seems so late. I know the reason of this might be when I created the multiple screen feature. I know this because I've already built it without the multiple display feature. and it works fine. anyway here's the script.
using UnityEngine;
using System.Collections;
public class AnalyzeAudioC : MonoBehaviour {
public GameObject prefab;
public int numberOfObjects = 20;
public float radius = 5f;
public GameObject[] cubes;
void Start ()
{
GetComponent<AudioSource>().clip = Microphone.Start("Built-in Microphone", true , 10, 44100);
GetComponent<AudioSource>().loop = true;
while(!(Microphone.GetPosition(null)>0))
{}
GetComponent<AudioSource>().Play();
for (int i = 0; i < numberOfObjects; i++)
{
float angle = i * Mathf.PI * 2 / numberOfObjects;
Vector3 pos = new Vector3 (Mathf.Cos (angle), 0, Mathf.Sin (angle)) * radius;
Instantiate (prefab, pos, Quaternion.identity);
}
cubes = GameObject.FindGameObjectsWithTag ("Cubes");
}
// Update is called once per frame
void Update ()
{
float[] spectrum = AudioListener.GetSpectrumData (1024, 0, FFTWindow.Hamming);
for (int i = 0; i < numberOfObjects; i++)
{
Vector3 previousScale = cubes [i].transform.localScale;
previousScale.y = Mathf.Lerp(previousScale.y, spectrum [i] * 40, Time.deltaTime* 30);
cubes [i].transform.localScale = previousScale;
}
}
}
and this here is the the multiple display script
using UnityEngine;
using System.Collections;
public class DisplayScript : MonoBehaviour {
// Use this for initialization
void Start ()
{
Debug.Log ("display connected: " + Display.displays.Length);
if (Display.displays.Length > 1)
Display.displays[1].Activate ();
if (Display.displays.Length > 2)
Display.displays[2].Activate ();
}
// Update is called once per frame
void Update () {
}
}
ok I just realize something. the build file without the multiple display version is a little late. but not that late compared to the build version with the multiple display. I didn't notice this because it was never that late really, maybe about a little less that 0.5 seconds. but the built version was very noticable.
Your answer
Follow this Question
Related Questions
A node in a childnode? 1 Answer
Microphone Input Latency Android 1 Answer
How do I achieve the smallest amount of latency between Audio Input and Audio Output? 0 Answers
whats this Argument Out Of Range error when navigating between 0 and max value? 1 Answer
Another argument out of range (sorry) 2 Answers