Display a audio waveform using C#

Adir picture Adir · Aug 6, 2010 · Viewed 27.6k times · Source

I've already searched at Stackoverflow and google, but haven't found what I'm looking for.
So far I got the audio raw data(WAV File) and I want to visualize it.

        private void Form1_Load(object sender, EventArgs e)
    {
        FileStream fs = new FileStream("D:\\tada.wav", FileMode.Open);
        BinaryReader reader = new BinaryReader(fs);
        char[] data = new char[4];
        long fsize;
        long wfxSize;
        long dataSize;
        WaveFormatEx wfx;

        //RIFF
        reader.Read(data, 0, 4);

        fsize = reader.ReadInt32();

        //WAVE
        reader.Read(data, 0, 4);

        //FMT
        reader.Read(data, 0, 4);
        wfxSize = reader.ReadInt32();

        byte[] wfxBuffer = new byte[wfxSize];
        reader.Read(wfxBuffer, 0, (int)wfxSize);
        wfx = new WaveFormatEx(wfxBuffer);

        //DATA
        reader.Read(data, 0, 4);
        dataSize = reader.ReadInt32();
        byte[] dataBuff = new byte[dataSize];
        reader.Read(dataBuff, 0, (int)dataSize);
        reader.Close();

        //Visualize the data...
    }

I know I need to convert the raw data into samples and then check for the peak for each sample and draw lines, but I really don't know how to do it(except for the drawing).

Answer

Jecho Jekov picture Jecho Jekov · Mar 11, 2013

I see this is an old question but in case someone is interested here is a solution:

Use the NAudio library: http://naudio.codeplex.com/

Here is a video tutorial on how to use NAudio to display waveforms: http://www.youtube.com/watch?v=ZnFoVuOVrUQ