APP下载

用画图软件画音乐

2016-09-10陈凯

中国信息技术教育 2016年17期
关键词:二进制波形字节

陈凯

大家知道,无论是哪一种媒体文件,其数据在计算机内部都是以二进制形式存储的。不同的文件都有文件头,用来说明文件中二进制数据的格式,如果把文件头去掉,只剩下二进制数据,那么计算机软件就不知道这个文件究竟是哪一种媒体文件了。根据这个原理,可以做一些奇怪的事情。例如,用画图软件来画音乐。本期实验需要用到的工具是任意一款画图软件,为简便起见,我们可使用Windows操作系统自带的“画图”;本文示例中所用的声音编辑工具是开源软件Audacity;文件编辑器为在线二进制文件编辑工具onlinehexeditor,其地址是http://www.onlinehexeditor.com/。为了便于浏览和编辑,所有的二进制数据都是以十六进制形式表示的。

● 用画图软件画出一个波

空气分子以一定频率振动就会发出某个音阶的音,振动频率高,则发音高,振动频率低,则发音也低。所谓的音频数据,就是一大串用于表示振动波形的二进制数据,其中最容易实现的波是方波(如图1)。

那么,怎样在画图软件里画波形呢?当然不是直接画波的形状,而是画不同颜色的垂直条纹。例如,最简单的方波可以由黑色和灰色两条垂直的条纹组成(如图2),画好后保存为BMP格式。

为什么两条不同颜色的垂直条纹就是方波呢?想象一下,软件会按行的顺序来读取数据,若读取到一行灰色,其二进制数据就是连续的“10000000”,以十六进制表示就是80;若读到一行黑色,其二进制数据就是连续的“00000000”,以十六进制表示就是00。因为BMP图像有许多行,所以依次读取,就是“00000000”和“10000000”交替出现,恰好就对应着方波图形。需要注意的是,BMP图像是自下而上编码的,二进制文件中的第一行数据所对应的是BMP图像最后一行的数据。

● 使用二进制文件编辑器分析图像文件

使用onlinehexeditor可以清楚地看到这个BMP文件的二进制编码(如图3)。

这些二进制数据是以十六进制形式显示的,前54个字节的数据是用来描述BMP文件格式的,从第55个字节开始就是图像数据。

● 用声音编辑工具导入二进制文件为音频文件

使用Audacity软件,选择“文件—导入—原始数据(File—Import—Raw data)”,导入图像文件。注意在弹出的导入“编码”选项中选择“Unsigned 8 bit PCM”,意为以字节为单位导入数据;在“偏移”栏目里填写55,意思是跳过55个字节的文件头。

于是就能看见一段方波,原来的BMP图像文件变成了声音波形文件,并且还能在Audacity里演奏出声音(如图4)。灰色和黑色交杂的条纹,得到的方波占据了水平线下方的位置,如果是灰色和白色交杂的条纹,得到的方波就会占据水平线上方的位置。条纹深浅变化更丰富一些的话,还能得到其他波形。例如,四种不同深度的条纹(如图5左),所对应的声波是一种粗糙的三角波(如图5右)。

上面所制造的声音只有单调的一种音,下面就留给读者一个问题思考、实验:在画图软件中,怎样改变声音的音高?怎样改变声音延续的时间?怎样改变声音的音量?怎样画出一段完整的音乐旋律?(答案在本期找)

猜你喜欢

二进制波形字节
字节跳动瞄准教育等新业务
有用的二进制
用Scratch把十进制转为二进制
通用6T系列变速器离合器鼓失效的解决方案
有趣的进度
一波三“折” 巧用“波形”来解题
人类进入“泽它时代”
任意波形编辑软件中手动任意绘制功能的设计
探究波形图