public void SpectrumData()
{
if (sampleChannel == null)
{
var rusult = EventInstance.getChannelGroup(out sampleChannel);
if (rusult == RESULT.OK)
{
RuntimeManager.LowlevelSystem.createDSPByType(DSP_TYPE.FFT, out FFTDsp);
FFTDsp.setParameterInt((int)FMOD.DSP_FFT.WINDOWTYPE, (int)fFTWindow);
FFTDsp.setParameterInt((int)FMOD.DSP_FFT.WINDOWSIZE, 128);
sampleChannel.addDSP(FMOD.CHANNELCONTROL_DSP_INDEX.HEAD, FFTDsp);
}
else return;
}
FFTDsp.getParameterData((int)FMOD.DSP_FFT.SPECTRUMDATA, out _unmanagedDataTemp, out _spectrumLenTemp);
_fftData = (FMOD.DSP_PARAMETER_FFT)Marshal.PtrToStructure(_unmanagedDataTemp, typeof(FMOD.DSP_PARAMETER_FFT));
Array.Clear(sample, 0, sampleSize);
if (_fftData.numchannels > 0 && _fftData.spectrum[0].Length >= sampleSize)
{
Array.Copy(_fftData.spectrum[0], sample, sampleSize);
}
}
zero value always starts at 63 when windowsize set as 128