void listBox_SelectedIndexChanged(object sender, EventArgs e) { if ((sender as ListBox).Text.Equals("")) return; //MessageBox.Show((sender as ListBox).Text); //ReadWav rw = new ReadWav(@"G:\Временынй\Дипломммм\диплом\Новая версия\Koordinat\Test GL\bin\Debug\Sounds\" + (sender as ListBox).Text); ReadWav rw = new ReadWav(@".\Sounds\" + (sender as ListBox).Text); array = rw.ReadFileWav(); //график амплитудно-временной характеристики ATKH.ListClear(); ATKH.setListSampl(array.ToList<short>()); //ATKH.Invalidate(null, true); listSamples = ATKH.getListSampl(); #region Energy //================================================================================== //================================================================================== //================================================================================== /* int lll = 0; List<short> listForEnerg = new List<short>(listSamples); SearchMinEnergOfInterval energ = new SearchMinEnergOfInterval(listForEnerg); Sample PointEMax = energ.getMax(); Sample PointEMin = energ.getMin(); int k = 10; List<float> summar = new List<float>(); int L = (int)(listSamples.Count * 0.05); for (int i = 0; i < listSamples.Count - 1; i++) { summar.Add(energ.FuncEnergy(listSamples, i, L)); if (summar.Count > 100) { //Поиск пересечения float X1 = k; float Y1 = summar[k] * 2; float X2 = k + 1; float Y2 = summar[k + 1] * 2; float X3 = 0; float Y3 = (float)PointEMax.amplidute * 0.5f; float X4 = listSamples.Count; float Y4 = (float)PointEMax.amplidute * 0.5f; if (Intersection(X1, Y1, X2, Y2, X3, Y3, X4, Y4)) { PointF ff = Perex125(X1, Y1, X2, Y2, X3, Y3, X4, Y4); listBordersFromEnerg.Add((int)ff.X); } k++; } } */ //================================================================================== //================================================================================== //================================================================================== #endregion listBorders.Clear(); listBorders.Add((int)(listSamples.Count * 0.2)); listBorders.Add((int)(listSamples.Count * 0.8)); FFT.listBorders = listBorders; FFT.listShort = listSamples.GetRange(listBorders[0], listBorders[1] - listBorders[0]); //FFT.Invalidate(null, true); dfff.list = ATKH.getListSampl(); //dfff.Invalidate(null, true); if (dfff.Formants.Count != 0) etallon.AddFormants(dfff.Formants[0].time, dfff.Formants[1].time); //etallon.Invalidate(null, true); ATKH.Invalidate(null, true); FFT.Invalidate(null, true); dfff.Invalidate(null, true); etallon.Invalidate(null, true); dfff.Formants.Clear(); }
private void button1_Click(object sender, EventArgs e) { Stream myStream = null; OpenFileDialog openFileDialog = new OpenFileDialog(); openFileDialog.Filter = "Звуковой файл WAV (*.wav; *.wav) | *.wav; *.wav"; openFileDialog.InitialDirectory = @".\Sounds"; try { if (openFileDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK) { ReadWav rw = new ReadWav(openFileDialog.FileName); array = rw.ReadFileWav(); //график амплитудно-временной характеристики ATKH.ListClear(); ATKH.setListSampl(array.ToList<short>()); //ATKH.Invalidate(null, true); listSamples = ATKH.getListSampl(); #region Energy //================================================================================== //================================================================================== //================================================================================== /* int lll = 0; List<short> listForEnerg = new List<short>(listSamples); SearchMinEnergOfInterval energ = new SearchMinEnergOfInterval(listForEnerg); Sample PointEMax = energ.getMax(); Sample PointEMin = energ.getMin(); int k = 10; List<float> summar = new List<float>(); int L = (int)(listSamples.Count * 0.05); for (int i = 0; i < listSamples.Count - 1; i++) { summar.Add(energ.FuncEnergy(listSamples, i, L)); if (summar.Count > 100) { //Поиск пересечения float X1 = k; float Y1 = summar[k] * 2; float X2 = k + 1; float Y2 = summar[k + 1] * 2; float X3 = 0; float Y3 = (float)PointEMax.amplidute * 0.5f; float X4 = listSamples.Count; float Y4 = (float)PointEMax.amplidute * 0.5f; if (Intersection(X1, Y1, X2, Y2, X3, Y3, X4, Y4)) { PointF ff = Perex125(X1, Y1, X2, Y2, X3, Y3, X4, Y4); listBordersFromEnerg.Add((int)ff.X); } k++; } } */ //================================================================================== //================================================================================== //================================================================================== #endregion listBorders.Clear(); listBorders.Add((int)(listSamples.Count * 0.2)); listBorders.Add((int)(listSamples.Count * 0.8)); FFT.listBorders = listBorders; FFT.listShort = listSamples.GetRange(listBorders[0], listBorders[1] - listBorders[0]); //FFT.Invalidate(null, true); dfff.list = ATKH.getListSampl(); //dfff.Invalidate(null, true); if (dfff.Formants.Count != 0) etallon.AddFormants(dfff.Formants[0].time, dfff.Formants[1].time); //etallon.Invalidate(null, true); ATKH.Invalidate(null, true); FFT.Invalidate(null, true); dfff.Invalidate(null, true); etallon.Invalidate(null, true); dfff.Formants.Clear(); } } catch (Exception ex) { MessageBox.Show("Error: Could not read file from disk. Original error: " + ex.Message); } }