/// Конвертация файла в wav, если она нужна, запуск БПФ обработки файла. /// При завершении обработки кнопка результата становиться активной. private void runButton_Click(object sender, EventArgs e) { runButton.Enabled = false; try { //Конвертация файла в wav(если требуется) if (this.type == FileType.Mp3 || this.type == FileType.Mp4) { ConverterBackgroundWorker.RunWorkerAsync(); } //Заполнение структуры wav файла данными Analizator.GetWaveData(ref this.wav); } catch (Exception ex) { MessageBox.Show(ex.Message, "Ошибка"); runButton.Enabled = true; return; } //Посекундное БПФ левой и правой дорожки //FFT_bgWorker.RunWorkerAsync(); leftFFTbgWorker.RunWorkerAsync(); rightFFTbgWorker.RunWorkerAsync(); }
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); }
static void Main(string[] args) { string path = Properties.Settings.Default.path; string writePath = Properties.Settings.Default.writePath; string result = Analizator.AnaliseText(FileIO.ReadFile(path)); FileIO.WriteFile(writePath, result); Console.ReadLine(); }
private void Analize_Click(object sender, RoutedEventArgs e) { TbResult.Text = ""; if (TbFileText.Text.Trim() == "") { TbResult.Text = "Error. You dont choose or write code to analize."; return; } //Point startPoint; var analiz = new Analizator(TbFileText.Text); TbResult.Text = "MakkeybNumber = " + (analiz.MakkeybNumber()); //TbResult.Text = analiz.Work(out startPoint) == 0 ? analiz.AnalizeResult(startPoint) : "Sorry. I find some error in code. Check your code and try again."; }
static void Main(string[] args) { Analizator analizator = new Analizator(new SimpleDivider(), new SimpleTokenizer()); List <Token> l = analizator.Process("PROC TOECX:\n" + "MOV ECX, 124\n" + "ENDPROC\n" + "MOV EAX, 2024\n" + "MOV EBX, 1024\n" + "ADD EBX, EAX\n" + "CMP EAX, EBX\n" + "JLT next\n" + "MOV ECX, 500\n" + "next:\n" + "ADD EDX, 300\n" + "CALL TOECX\n" + "STORE ECX, 1\n"); l.ForEach(el => Console.WriteLine(el)); Console.WriteLine("Закончили создавать токены.... Нажмите любую клавишу..."); Console.ReadKey(); Console.WriteLine("Создаем процессор"); Processor processor = new Processor(); Console.WriteLine("Создаем виртуальную машину"); VirtualMachine machine = new VirtualMachine(processor); Console.WriteLine("Компилируем токены в код"); l = l.FindAll(el => el.Type != TokenType.NONE); Console.WriteLine("Выполняем"); //machine.Execute(l); int i = 0; while (i < l.Count) { i = machine.Step(l, i); } Console.WriteLine("Закончили выполнять.... Нажмите любую клавишу..."); Console.ReadKey(); }