我正在做一个会在Unity中计算HBR的应用。
因此,当用户单击麦克风按钮时,它将开始录音,并通过数组中的GetSpectrumData命令获取的频谱数据。我想做的就是在阵列中每秒(15秒)获得光谱,然后将其保存在另一个光谱中。
代码如下:
using UnityEngine;
[RequireComponent(typeof(AudioSource))]
public class Data : MonoBehaviour
{
AudioSource _audio;
public float[] _samples1, arreglo = new float[512];
void Start()
{
_audio = GetComponent<AudioSource>();
_audio.clip = Microphone.Start("Built-in Microphone", true, 15, 44100);
}
void Update()
{
GetSpectrum();
for (int i = 0; i > 15; i++)
{
arreglo.add(_samples1[i]);
}
}
void GetSpectrum()
{
_audio.GetSpectrumData(_samples1, 0, FFTWindow.Blackman);
}
}
问题是当我运行它时,我无法识别添加命令。
如果有人可以帮助我,我将不胜感激。非常感谢。
答案 0 :(得分:0)
using UnityEngine;
using System.Collections.Generic;
[RequireComponent(typeof(AudioSource))]
public class Data : MonoBehaviour
{
AudioSource _audio;
public float[] _samples1 = new float[512];
public List<float> arreglo = new List<float>();
void Start()
{
_audio = GetComponent<AudioSource>();
_audio.clip = Microphone.Start("Built-in Microphone", true, 15, 44100);
}
void Update()
{
GetSpectrum();
// optional if you want to clear old data
arreglo.Clear();
// replace 15 with '_samples1.Length' for adding all values
for (int i = 0; i < 15; i++)
{
arreglo.Add(_samples1[i]);
}
}
void GetSpectrum()
{
_audio.GetSpectrumData(_samples1, 0, FFTWindow.Blackman);
}
}