用C#显示音频波形

10

我已经在Stackoverflow和谷歌上搜索了,但没有找到我要找的内容。
目前我已经获得了音频原始数据(WAV文件),我想要将其可视化。

        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...
    }

我知道我需要将原始数据转换为样本,然后检查每个样本的峰值并绘制线条,但是除了绘图,我真的不知道该如何做。


2
作为Gigasoft的创始人,我们提供了一个解决方案,简化了这个需求,并提供了示例代码来播放和绘制wav数据,就像Adobe Audition或Nero Wave Editor一样。请查看我们的小型18兆字节V8 C#图表演示,并查看演示示例123。下载还包括WPF和MFC exes以及源代码,展示了必要的学习曲线。此示例不依赖于依赖库,并显示了可视化和播放wav所需的最小代码。 - Robert
2个回答

13

9
可视化数据...哇!你应该查看这里的WAV文件规范,也许是这里,然后重新考虑一下是否真的要处理它。(第二个链接实际上是更好的、更简化的概述。看看数据部分,看看它是否是你想要处理的东西。)
别误会。也许这正是你想做的事情,而且可能很有趣。你只需要知道自己在做什么!
另外,这里有一个Code Project组件,你可以直接使用或参考其思路。

“通过‘可视化数据’,我指的是基于振幅显示简单的波形,而不是3D可视化……无论如何,这个代码项目组件真的很有帮助,谢谢。” - Adir
3个链接中有2个无效。 - Irakli

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接