private void rightFFTbgWorker_DoWork(object sender, DoWorkEventArgs e) { wav.FFTright = new double[(wav.Length + 1) * wav.Samplerate / 2 + 50]; int progressDelta = wav.Samplerate * wav.Length / 10; //Посекундное БПФ преобразование и запись результата for (int i = 0, p = 0; i < wav.Length; i++, p += wav.Samplerate) { double[] toFFTright = SubArray(wav.Right, i * wav.Samplerate, wav.Samplerate); double[] resFFTright = SubArray(Analizator.FFT(toFFTright), 0, wav.Samplerate / 2); int fftSampleIndex = (wav.Samplerate * i) / 2; for (int j = 0; j < wav.Samplerate / 2; j++) { wav.FFTright[fftSampleIndex + j] = resFFTright[j]; } if (p >= progressDelta) { this.rightFFTbgWorker.ReportProgress(1); p = 0; } } while (!this.leftChannelCompleted) { System.Threading.Thread.Sleep(50); } this.rightFFTbgWorker.ReportProgress(1); }
private void leftFFTbgWorker_DoWork(object sender, DoWorkEventArgs e) { wav.FFTleft = new double[(wav.Length + 1) * wav.Samplerate / 2 + 100]; int progressDelta = wav.Samplerate * wav.Length / 10; //Посекундное БПФ преобразование и запись результата for (int i = 0, p = 0; i < wav.Length; i++, p += wav.Samplerate) { double[] toFFTleft = SubArray(wav.Left, i * wav.Samplerate, wav.Samplerate); double[] resFFTleft = SubArray(Analizator.FFT(toFFTleft), 0, wav.Samplerate / 2); int fftSampleIndex = (wav.Samplerate * i) / 2; for (int j = 0; j < wav.Samplerate / 2; j++) { wav.FFTleft[fftSampleIndex + j] = resFFTleft[j]; } if (p >= progressDelta) { this.leftFFTbgWorker.ReportProgress(1); p = 0; } } this.leftFFTbgWorker.ReportProgress(1); }