private void Process2(int start, int end) { //Сдвиг окна (shift 500 - width 512) int shift = 256; int width = 1024; //Диапазон частот (256 - до 22100Hz, 128 - до 11050Hz) int freq_range = 256; double[] func = FFTHelper.WindowFunc(SelectedWindowFunc, width); Bitmap btm = new Bitmap((end - start) / shift, 256); System.Drawing.Color[] freq = new System.Drawing.Color[freq_range]; int btm_i = 0; FFTLine.Points.Clear(); double[] result = new double[width]; for (int x = 0; x < SelectedData.Count() - width; x += shift) { int i = 0; int ii = 0; if (x + width < SelectedData.Count() - 1) { FFT2Helper.fft(SelectedData.GetRange(x, width).ToArray()).ToList().ForEach(p => { p = p.Magnitude * func[ii]; int Db = (int)(GetYPosLog(p) + 5) * 8; int intense1 = Db <= 0 ? 0 : Db; intense1 = intense1 > 255 ? 255 : intense1; // intense1 = Math.Abs(intense1 - 255) ; if (i < freq.Count()) { freq[i] = System.Drawing.Color.FromArgb(255, intense1, intense1, 50); } i++; ii++; }); for (int yi = freq.Count() - 1; yi > 0; yi--) { btm.SetPixel(btm_i, yi, freq[Math.Abs(yi - (freq.Count() - 1))]); } } btm_i++; } Spectrogramm = BitmapToImage(btm); //for (int i = 0; i < 2048; i++) //{ // temp[i].Magnitude = (temp[i].Magnitude / 2048); // // temp[i].Magnitude = temp[i].Rep > cons ? (temp[i].Magnitude / temp[i].Rep) : 0; // FFTLine.Points.Add(new DataPoint(i, temp[i].Magnitude)); //} //FFTModel.InvalidatePlot(true); }