Exemple #1
0
        /// Конвертация файла в 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();
        }
Exemple #2
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);
        }
Exemple #3
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);
        }
Exemple #4
0
        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.";
 }
Exemple #6
0
        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();
        }