private void FftCalculated(object sender, FftEventArgs e)
{
if (_lines == 0)
return;
lock (SpectrumData)
{
int x;
var b0 = 0;
SpectrumData.Clear();
for (x = 0; x < _lines; x++)
{
float peak = 0;
var b1 = (int) Math.Pow(2, x*10.0/(_lines - 1));
if (b1 > 2047)
b1 = 2047;
if (b1 <= b0)
b1 = b0 + 1;
for (; b0 < b1; b0++)
if (peak < e.Result[1 + b0].X)
peak = e.Result[1 + b0].X;
var y = (int) (Math.Sqrt(peak)*3*255 - 4);
if (y > 255)
y = 255;
if (y < 0)
y = 0;
SpectrumData.Add((byte) y);
}
}
}