Example #1
0
        /// <summary>
        /// Method to calculate DFT on wave window
        /// </summary>
        private void calculateDFT()
        {
            Complex[][] DFT     = new Complex[wave.channels][];
            double[]    samples = new double[fourierN];

            for (int i = 0; i < samples.Length; i++)
            {
                samples[i] = 0;
            }
            int startIndex = Math.Max(timeSelStart, 0);

            int N = Math.Min(wave.getNumSamples() - startIndex, fourierN);

            Array.Copy(wave.samples[0], startIndex, samples, 0, N);

            if (sampleWindowing == WINDOWING.triangle)
            {
                Formulas.WindowTriangle(ref samples);
            }
            else if (sampleWindowing == WINDOWING.cosine)
            {
                Formulas.WindowCosine(ref samples);
            }
            else if (sampleWindowing == WINDOWING.blackman)
            {
                Formulas.WindowBlackman(ref samples);
            }
            DFT[0] = Formulas.DFT(ref samples);
            frequencyDomain.SampleRate = wave.sampleRate;
            frequencyDomain.Fourier    = DFT;
            frequencyDomain.Invalidate();
        }