Я новичок в обработке wav-файла и C#. Моя цель - отображение данных в реальном времени в форме волны wavfile.I означает, что во время записи звука (wav) файл, я хочу построить график одновременно. Я искал некоторые звуковые libiraries и решил использовать NAudio. (Не знаю, что это лучший выбор для меня. Я открыт для любых предложений по выбору аудиовизуального). Однако я понятия не имею о построении данных в реальном времени с использованием звука. Некоторые люди предлагают GDI, но, как я уже сказал, я новичок, и я думаю, что это займет слишком много времени, чтобы эффективно использовать GDI. Если я должен изучить GDI, PLS поделитесь любой статьей, которая может помочь новичкам, как я. На самом деле я выгляжу так, как будто не знаю, с чего начать. Нужно руководствоваться :)) И у меня вопрос.C# в режиме реального времени с использованием NAudio
В одном из уроков NAudio он работает с байтовым массивом для построения формы сигнала в Chart.It хорошо, если вы знаете размер wav-файла. Однако он работает слишком медленно и дает исключение из памяти для больших wav-файлов чем 10mb.Код ниже относится к тому, что я имею в виду.
OpenFileDialog open = new OpenFileDialog();
open.Filter = "Wave File (*.wav)|*.wav;";
if (open.ShowDialog() != DialogResult.OK) return;
chart1.Series.Add("wave");
chart1.Series["wave"].ChartType = System.Windows.Forms.DataVisualization.Charting.SeriesChartType.FastLine;
chart1.Series["wave"].ChartArea = "ChartArea1";
NAudio.Wave.WaveChannel32 wave = new NAudio.Wave.WaveChannel32(new NAudio.Wave.WaveFileReader(open.FileName));
byte[] buffer = new byte[426565];
int read;
while (wave.Position < wave.Length)
{
read = wave.Read(buffer, 0, 426565);
for (int i = 0; i < read/4; i++)
{
chart1.Series["wave"].Points.Add(BitConverter.ToSingle(buffer, i * 4));
}
}
Есть ли способ выполнить эту операцию быстрее?
Как основатель Gigasoft см нашего [DirectX/Direct3D диаграмм WAV демо-данных, пример 123] (http://www.gigasoft.com) Демонстрационный показывает EXEs в WinForms, WPF и C++/MFC - чистый родной. В режиме реального времени обновляется позиция воспроизведения по вертикальной аннотации, показывающая 12M точек, постоянно обновляемых без задержки при воспроизведении и перетаскивании видового экрана и т. Д. Также показана простая пользовательская ось x минут: секунды. Масштабирование с помощью мыши и колеса мыши. Отображает масштабную рамку текущей увеличенной области и полную форму каналов. Он похож на Adobe Audition или редактор Nero wave с несколькими строками кода. – Robert