陈凯
人们能听到的声音,无论是轻柔的钢琴声还是锣鼓喧天,本质上都是波。改变了波,其实就改变了声音。只要画出一幅波的图形,这个图形也就对应了某种特殊的声音。不过几乎没有人能真正“手绘”出某种特别的声音,因为一个完整的声音——可能是敲击声、弹波声、摩擦声等,从击发到余响,常常要延续好几秒的时间,加之人耳能识别的声音的频率从每秒几十下振动到几万下振动不等。所以,若要画出某个声音,大概需要几百根乃至几万根曲线或折线,非寻常人力可为。好在人类有计算机作为高效的信息处理工具,人们只要输入参数,告诉计算机如何自动把输入的数据转化为波,就可以大大降低“画声音”的劳动量了。
● 计算机不畏惧重复
(图1为一段可修改采样点的声波,为了便于绘制,横轴即时间轴被放大了)
没有人喜欢单调枯燥的重复劳动,但重复恰恰是计算机所擅长的事情。所以,可以先画出一小段波,然后让计算机将这段图形重复画上很多遍(如图2)。
(图2为重复画了很多次的声波,为了便于观察,横轴即时间轴被压缩了)
将这个图形重复个上百次的话,就能得到“叽”一下的响声了。完成实验所需要的软件可以是任何一款拥有修改采样点功能的音频编辑软件。比如,在开源软件Audacity的界面中,可借助铅笔工具调整波的采样点,然后点“特效—重复”菜单项,将简单的波形重复许多遍,只是由于波形缺少变化,生成的声音不怎么有美感。
● 数学的力量
数学是推动计算机科学发展的强大动力之一,不过在这里,是要借助强大的数学做一件小事:用数学函数来生成一段更好听的声音。所以,一方面要让波的形态在时间轴上重复出现,另一方面还要在重复出现时产生细微的变化,如波的振幅随时间的变化而变化,使得声音的效果更自然。网页http://js.do/blog/sound-waves-with-javascript/提供了一个难得的工具,不仅可以将数学函数绘制成波形图像,还能将这个波作为声音播放出来(如图3)。
这段示例代码所生成的基本波形是一个余弦函数,然后通过一个指数函数改变波的振幅,浏览器播放这个波形所产生的声音类似于敲击铃铛的效果。在网页里还可以直接编辑函数,创造属于自己的独特声音效果。
● 声音的更多画法
画声音当然有更多的办法,这里给出若干有趣的工具,限于篇幅,仅做简单的介绍。
◇JavOICe:这个工具名称的意思就是Java+Voice,名称里字母的大小写也是有意安排的。这个工具所绘制endprint
人们能听到的声音,无论是轻柔的钢琴声还是锣鼓喧天,本质上都是波。改变了波,其实就改变了声音。只要画出一幅波的图形,这个图形也就对应了某种特殊的声音。不过几乎没有人能真正“手绘”出某种特别的声音,因为一个完整的声音——可能是敲击声、弹波声、摩擦声等,从击发到余响,常常要延续好几秒的时间,加之人耳能识别的声音的频率从每秒几十下振动到几万下振动不等。所以,若要画出某个声音,大概需要几百根乃至几万根曲线或折线,非寻常人力可为。好在人类有计算机作为高效的信息处理工具,人们只要输入参数,告诉计算机如何自动把输入的数据转化为波,就可以大大降低“画声音”的劳动量了。
● 计算机不畏惧重复
(图1为一段可修改采样点的声波,为了便于绘制,横轴即时间轴被放大了)
没有人喜欢单调枯燥的重复劳动,但重复恰恰是计算机所擅长的事情。所以,可以先画出一小段波,然后让计算机将这段图形重复画上很多遍(如图2)。
(图2为重复画了很多次的声波,为了便于观察,横轴即时间轴被压缩了)
将这个图形重复个上百次的话,就能得到“叽”一下的响声了。完成实验所需要的软件可以是任何一款拥有修改采样点功能的音频编辑软件。比如,在开源软件Audacity的界面中,可借助铅笔工具调整波的采样点,然后点“特效—重复”菜单项,将简单的波形重复许多遍,只是由于波形缺少变化,生成的声音不怎么有美感。
● 数学的力量
数学是推动计算机科学发展的强大动力之一,不过在这里,是要借助强大的数学做一件小事:用数学函数来生成一段更好听的声音。所以,一方面要让波的形态在时间轴上重复出现,另一方面还要在重复出现时产生细微的变化,如波的振幅随时间的变化而变化,使得声音的效果更自然。网页http://js.do/blog/sound-waves-with-javascript/提供了一个难得的工具,不仅可以将数学函数绘制成波形图像,还能将这个波作为声音播放出来(如图3)。
这段示例代码所生成的基本波形是一个余弦函数,然后通过一个指数函数改变波的振幅,浏览器播放这个波形所产生的声音类似于敲击铃铛的效果。在网页里还可以直接编辑函数,创造属于自己的独特声音效果。
● 声音的更多画法
画声音当然有更多的办法,这里给出若干有趣的工具,限于篇幅,仅做简单的介绍。
◇JavOICe:这个工具名称的意思就是Java+Voice,名称里字母的大小写也是有意安排的。这个工具所绘制endprint
人们能听到的声音,无论是轻柔的钢琴声还是锣鼓喧天,本质上都是波。改变了波,其实就改变了声音。只要画出一幅波的图形,这个图形也就对应了某种特殊的声音。不过几乎没有人能真正“手绘”出某种特别的声音,因为一个完整的声音——可能是敲击声、弹波声、摩擦声等,从击发到余响,常常要延续好几秒的时间,加之人耳能识别的声音的频率从每秒几十下振动到几万下振动不等。所以,若要画出某个声音,大概需要几百根乃至几万根曲线或折线,非寻常人力可为。好在人类有计算机作为高效的信息处理工具,人们只要输入参数,告诉计算机如何自动把输入的数据转化为波,就可以大大降低“画声音”的劳动量了。
● 计算机不畏惧重复
(图1为一段可修改采样点的声波,为了便于绘制,横轴即时间轴被放大了)
没有人喜欢单调枯燥的重复劳动,但重复恰恰是计算机所擅长的事情。所以,可以先画出一小段波,然后让计算机将这段图形重复画上很多遍(如图2)。
(图2为重复画了很多次的声波,为了便于观察,横轴即时间轴被压缩了)
将这个图形重复个上百次的话,就能得到“叽”一下的响声了。完成实验所需要的软件可以是任何一款拥有修改采样点功能的音频编辑软件。比如,在开源软件Audacity的界面中,可借助铅笔工具调整波的采样点,然后点“特效—重复”菜单项,将简单的波形重复许多遍,只是由于波形缺少变化,生成的声音不怎么有美感。
● 数学的力量
数学是推动计算机科学发展的强大动力之一,不过在这里,是要借助强大的数学做一件小事:用数学函数来生成一段更好听的声音。所以,一方面要让波的形态在时间轴上重复出现,另一方面还要在重复出现时产生细微的变化,如波的振幅随时间的变化而变化,使得声音的效果更自然。网页http://js.do/blog/sound-waves-with-javascript/提供了一个难得的工具,不仅可以将数学函数绘制成波形图像,还能将这个波作为声音播放出来(如图3)。
这段示例代码所生成的基本波形是一个余弦函数,然后通过一个指数函数改变波的振幅,浏览器播放这个波形所产生的声音类似于敲击铃铛的效果。在网页里还可以直接编辑函数,创造属于自己的独特声音效果。
● 声音的更多画法
画声音当然有更多的办法,这里给出若干有趣的工具,限于篇幅,仅做简单的介绍。
◇JavOICe:这个工具名称的意思就是Java+Voice,名称里字母的大小写也是有意安排的。这个工具所绘制endprint