保存每秒更改一次的数组中的数据

时间:2018-10-30 02:58:29

标签: c# android ios unity3d audio

我正在做一个会在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);


}
}

问题是当我运行它时,我无法识别添加命令。

如果有人可以帮助我,我将不胜感激。非常感谢。

1 个答案:

答案 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);
    }
}
相关问题