SoundFingerprinting.FFT.SpectrumService.CutLogarithmizedSpectrum C# (CSharp) Method

CutLogarithmizedSpectrum() public method

public CutLogarithmizedSpectrum ( float logarithmizedSpectrum, int sampleRate, SpectrogramConfig configuration ) : List
logarithmizedSpectrum float
sampleRate int
configuration SoundFingerprinting.Configuration.SpectrogramConfig
return List
        public List<SpectralImage> CutLogarithmizedSpectrum(float[][] logarithmizedSpectrum, int sampleRate, SpectrogramConfig configuration)
        {
            var strideBetweenConsecutiveImages = configuration.Stride;
            int overlap = configuration.Overlap;
            int index = GetFrequencyIndexLocationOfAudioSamples(strideBetweenConsecutiveImages.FirstStride, overlap);
            int numberOfLogBins = configuration.LogBins;
            var spectralImages = new List<SpectralImage>();

            int width = logarithmizedSpectrum.GetLength(0);
            int fingerprintImageLength = configuration.ImageLength;
            int sequenceNumber = 0;
            while (index + fingerprintImageLength <= width)
            {
                float[][] spectralImage = AllocateMemoryForFingerprintImage(fingerprintImageLength, numberOfLogBins);
                for (int i = 0; i < fingerprintImageLength; i++)
                {
                    Buffer.BlockCopy(logarithmizedSpectrum[index + i], 0, spectralImage[i], 0, numberOfLogBins * sizeof(float));
                }

                var startsAt = index * ((double)overlap / sampleRate);
                spectralImages.Add(new SpectralImage(spectralImage, startsAt, sequenceNumber));
                index += fingerprintImageLength + GetFrequencyIndexLocationOfAudioSamples(strideBetweenConsecutiveImages.NextStride, overlap);
                sequenceNumber++;
            }

            return spectralImages;
        }