0
웨이브 뷰어를 사용하여 녹음 중에 웨이브 폼을 그릴 수 있습니까? 내가 파일을 기록하는 코드 문을 사용하여 파일을 waveViewer.However에 타이머와 플롯 파형의 모든 틱 간격을 읽을 수 있어요NAudio WaveViewer 컨트롤에서 녹음하는 동안 웨이브 폼을 플롯
private NAudio.Wave.WaveIn wi = null;
int waveInDevices = NAudio.Wave.WaveIn.DeviceCount;
WaveFileWriter waveWriter = null;
SaveFileDialog save;
private void button2_Click(object sender, EventArgs e)
{
save = new SaveFileDialog();
save.Filter = "Wave File (*.wav)|*.wav;";
if (save.ShowDialog() != System.Windows.Forms.DialogResult.OK) return;
int deviceNumber = 0;
wi = new WaveIn();
wi.DeviceNumber = deviceNumber;
wi.WaveFormat = new WaveFormat(44100, WaveIn.GetCapabilities(deviceNumber).Channels);
wi.DataAvailable += new EventHandler<WaveInEventArgs>(wi_DataAvailable);
waveWriter = new NAudio.Wave.WaveFileWriter(save.FileName, wi.WaveFormat);
wi.StartRecording();
timer1.Start();
}
private void wi_DataAvailable(object sender, WaveInEventArgs e)
{
if (waveWriter == null) return;
waveWriter.WriteData(e.Buffer, 0, e.BytesRecorded);
waveWriter.Flush();
}
private void timer1_Tick(object sender, EventArgs e)
{
waveViewer1.WaveStream = new WaveFileReader(save.Filename);
}
는 "파일은 다른 프로세스에서 사용하고 있습니다"라는 오류가 있습니다. 어쨌든 이것을 할 수 있습니까? WaveFileReader (StreamInput Stream)의 첫 번째 오버로드를 사용해야합니까? 그렇다면 첫 번째 과부하에 대한 예를 들어주십시오.