Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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);
        }