0

記録中にwaveVieverを使用して波形をプロットできますか?

    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);
    }

そのコードステートメントを使用してファイルを記録し、タイマーのティック間隔ごとにファイルを読み取り、waveViewer で波形をプロットしたいのですが、「ファイルは別のプロセスで使用されています」というエラーが発生します。とにかくこれを行うことはありますか。WaveFileReader(Stream streamInput) の最初のオーバーロードを使用する必要がありますか? はいの場合、最初のオーバーロードについて例を挙げてください。

4

1 に答える 1