IEnumerator Start()
{
while (true) {
if( source && source.clip ) {
AudioClip ac = source.clip;
if( rawData == null ) {
nSamples = (int) (((float)ac.frequency * analysisWindowSec) * ac.channels);
rawData = new float[nSamples];
}
if( rawData != null ) {
ac.GetData(rawData, source.timeSamples);
}
source.GetSpectrumData(rawSpectrum, 0, FFTWindow.BlackmanHarris);
_ConvertOutputDataToVolumeLevels();
_ConvertRawSpectrumToBandLevels();
}
if( isMicSourceNow != isMicSource ) {
if(mic) {
if(isMicSource) {
oldSource = source;
source = mic.StartMicrophone();
rawData = null;
rawVolume = 0.0f;
} else {
mic.StopMicrophone();
source = oldSource;
rawData = null;
rawVolume = 0.0f;
}
isMicSourceNow = isMicSource;
}
}
yield return new WaitForSeconds(intervalSec);
}
}