急!!!波形图

miter 2003-08-19 02:37:36
该怎么样画一个wav,midi文件的波形图
...全文
48 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
DarthVader 2003-09-06
  • 打赏
  • 举报
回复
那么MIDI的波形图呢?可能比较麻烦
azheng0305 2003-09-05
  • 打赏
  • 举报
回复
给分!
azheng0305 2003-08-21
  • 打赏
  • 举报
回复
我做过一个画wav波形图的程序。
其实很简单:
1、直接用fopen打开你的wav文件;
2、先fseek到22字节处,读取下2字节的数据给一个整数变量,这是通道数(如果你的wav文件分左右声道,你画的时候要体现左右声道的话,这个也很重要);
3、再fseek到34字节处,读取下2字节的数据给一个整数变量,这是你的采样率信息(这个很重要);
4、然后fseek到第40字节处,读取下4个字节的数值赋予一个长整型变量,这个值就是你的wav数据长度了,哈哈;
5、根据你刚才读到的采样率采取不同的读数据方式,如果采样率==8,那么你要每1个字节一读,数据放到一个__int8的数组中;如果是==16,那么就每2字节一读,放到一个__int16的数组中——这些数组中的数据就是你的波形图的y轴坐标啦!不过这些值可能很大,你必须除去一个很大的数才可以表示成屏幕象素可以表示的图形信息,哈哈,我是这么做的,8位的就除去128再乘以你要话的图形的高度的一半,如果是16位的,就除以32768再乘以你要画的图形的高度的一半。当然,图形有x、y组成,x就随便你啦,你可以用你要画的图形宽度除以你的数组长度(16位要用数据数除以2)在一个一个累加就可以了。

其他的你自己摸索吧。

对了,对于通道数为2的wav,是这样的,数据区的数据是第一个数据是左声道,紧接的一个数据是右声道。

注意,以上所说的,仅仅可以正常画出没有经过任何压缩的wav文件的波形图,其他压缩过的,你自己要揣摩如何解压缩了,这是自找麻烦的事情,你干吗不用一个纯wav的文件?呵呵
潘李亮 2003-08-19
  • 打赏
  • 举报
回复
我也在研究

8,304

社区成员

发帖
与我相关
我的任务
社区描述
游戏开发相关内容讨论专区
社区管理员
  • 游戏开发
  • 呆呆敲代码的小Y
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧