Unity |
AudioSource.GetSpectrumData(float samples, int channel, FFTWindow window)
source.GetSpectrumData(spectrum, 0, FFTWindow.Blackman);
private void makeFreqBands()
{
int count = 0;
for (int i = 1; i <= 8; i++)
{
float avg = 0;
int sampleCount = (int)Mathf.Pow(2, i);
if (i == 8)
sampleCount += 2;
for(int j = 0; j < sampleCount; j++)
{
avg += spectrum;
count++;
}
avg /= count;
bands = avg * 10;
}
}
void ProcBandBuffer()
{
for(int i = 0; i < 8; i++)
{
if(bands > bufferBands)
{
bufferBands = bands;
bufferDecrease = 0.00005f;
}
if (bands < bufferBands)
{
bufferBands -= bufferDecrease;
bufferDecrease = 1.2f;
}
}
}
void mapBufferedBands()
{
for (int i = 0; i < 8; i++)
{
if (bufferBands[i] > heighesBufferBand[i])
heighesBufferBand[i] = bufferBands[i];
rangedBufferBand[i] = bufferBands[i] / heighesBufferBand[i];
}
}