예제 #1
0
        private void autocorrelationButton_Click(object sender, EventArgs e)
        {
            if (_audio != null)
            {
                actionStateLabel.Text = "PROCESSING";
                List <int> frequencies = _audio.Autocorrelation();
                string     freqText    = "";

                foreach (int freq in frequencies)
                {
                    freqText += freq.ToString() + " Hz (T = " + (1.0f / freq) + " s), ";
                }

                actionStateLabel.Text = "";
                CharWindow autoCorelation = new CharWindow();
                autoCorelation.setPropert();

                autoCorelation.Histogram.Series.Add("AutoCorelation");
                autoCorelation.Text = "AutoCorelation";
                autoCorelation.Histogram.Series["AutoCorelation"].ChartType  = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.FastLine;
                autoCorelation.Histogram.Series["AutoCorelation"].MarkerSize = 2;
                autoCorelation.Histogram.ChartAreas[0].AxisX.Title           = "Index";
                autoCorelation.Histogram.ChartAreas[0].AxisY.Title           = "AutoCorelation value";

                for (int i = 0; i < _audio.autoCorrelations[0].Count(); i++)
                {
                    autoCorelation.Histogram.Series["AutoCorelation"].Points.AddXY(i, _audio.autoCorrelations[0][i] / (32768.0f * 32768.0f * 100));
                }

                autoCorelation.Show();

                SoundUtil.SaveSound(_audio.fileName, _audio.sampleRate, _audio.chunkSize, frequencies);
                MessageBox.Show(freqText, "Autocorrelation frequencies");
            }
        }