Files
2022-01-18 17:10:16 +11:00

41 lines
1.1 KiB
C#

using System.Collections.Generic;
using System.Linq;
using CSCore.DSP;
namespace Assets.WasapiAudio.Scripts.Core
{
internal class LineSpectrum : SpectrumBase
{
public int BarCount
{
get => SpectrumResolution;
set => SpectrumResolution = value;
}
public LineSpectrum(FftSize fftSize, int minFrequency, int maxFrequency)
: base(minFrequency, maxFrequency)
{
FftSize = fftSize;
}
public float[] GetSpectrumData(double maxValue)
{
// Get spectrum data internal
var fftBuffer = new float[(int)FftSize];
UpdateFrequencyMapping();
if (SpectrumProvider.GetFftData(fftBuffer, this))
{
SpectrumPointData[] spectrumPoints = CalculateSpectrumPoints(maxValue, fftBuffer);
// Convert to float[]
List<float> spectrumData = new List<float>();
spectrumPoints.ToList().ForEach(point => spectrumData.Add((float)point.Value));
return spectrumData.ToArray();
}
return null;
}
}
}