Esempio n. 1
0
        protected virtual void UpdateFrequencyMapping()
        {
            _maximumFrequencyIndex = Math.Min(AudioDelegations.FftInxAcquired(MaximumFrequency) + 1, _maxFftIndex);
            _minimumFrequencyIndex = Math.Min(AudioDelegations.FftInxAcquired(MinimumFrequency), _maxFftIndex);

            int actualResolution = SpectrumResolution;

            int    indexCount            = _maximumFrequencyIndex - _minimumFrequencyIndex;
            double linearIndexBucketSize = Math.Round(indexCount / (double)actualResolution, 3);

            _spectrumIndexMax         = _spectrumIndexMax.CheckBuffer(actualResolution, true);
            _spectrumLogScaleIndexMax = _spectrumLogScaleIndexMax.CheckBuffer(actualResolution, true);

            double maxLog = Math.Log(actualResolution, actualResolution);

            for (int i = 1; i < actualResolution; i++)
            {
                int logIndex =
                    (int)((maxLog - Math.Log((actualResolution + 1) - i, (actualResolution + 1))) * indexCount) +
                    _minimumFrequencyIndex;

                _spectrumIndexMax[i - 1]         = _minimumFrequencyIndex + (int)(i * linearIndexBucketSize);
                _spectrumLogScaleIndexMax[i - 1] = logIndex;
            }

            if (actualResolution > 0)
            {
                _spectrumIndexMax[_spectrumIndexMax.Length - 1] =
                    _spectrumLogScaleIndexMax[_spectrumLogScaleIndexMax.Length - 1] = _maximumFrequencyIndex;
            }
        }
Esempio n. 2
0
 public IEnumerable <Point3D> CreateWave()
 {
     //UpdateFrequencyMapping();
     float[] fftBuffer = new float[(int)FftSize];
     fftBuffer = AudioDelegations.FftAcquired();
     //get the fft result from the spectrum provider
     SpectrumPointData[] spectrumPoints = CalculateSpectrumPoints(MaxOffset, fftBuffer);
     return(GeneratePoints(spectrumPoints, MaxHeight));
 }