/// <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(); }