为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

对《用手绘波形制作声音的软件》的研究

2017-11-13 16页 doc 145KB 32阅读

用户头像

is_620441

暂无简介

举报
对《用手绘波形制作声音的软件》的研究对《用手绘波形制作声音的软件》的研究 北京八中 曹建秋 自然界中的声音多种多样、千变万化,但当我们要用到时,它们往往满足不了需 要,许多时候需要对其进行加工,有时甚至要制作人工声音。这时我们用到的工具经 常是电脑。我观察了现在电脑里面的多媒体软件。各种声音加工软件大都有一个基本 功能:将声波显示在屏幕上,并可以在时间横轴上任意放大,显示声波曲线图上的细 节。在此基础上,还有一些很有用的功能。以Cool Edit软件为例: 1.手工修改声音:可以将原有的声音波形放大后,用鼠标修改声波上面任何一 个样本点的振幅。(图1) ...
对《用手绘波形制作声音的软件》的研究
对《用手绘波形制作声音的软件》的研究 北京八中 曹建秋 自然界中的声音多种多样、千变万化,但当我们要用到时,它们往往满足不了需 要,许多时候需要对其进行加工,有时甚至要制作人工声音。这时我们用到的工具经 常是电脑。我观察了现在电脑里面的多媒体软件。各种声音加工软件大都有一个基本 功能:将声波显示在屏幕上,并可以在时间横轴上任意放大,显示声波曲线图上的细 节。在此基础上,还有一些很有用的功能。以Cool Edit软件为例: 1.手工修改声音:可以将原有的声音波形放大后,用鼠标修改声波上面任何一 个样本点的振幅。(图1) 图1,Cool Edit声音软件放大声波后可直接修改声波曲线 2.制作新声音:可以生成以数学函数图像为波形的声音(方波、正弦波、三角 波„„)。 现有软件的功能大都停留在有限修改声音和创建固定波形的声音上。而如果能够 自由绘制声波曲线,然后用计算机将其转换成声音播放出来,将是十分方便的。可惜 没有这样的软件。我又考察了一些现有的其他技术: 1. 任意波形信号发生器。它可以利用示波器和一些电路生成任意的波形。使 用时,用黑纸切割出需要的波形,覆盖在示波器上,用对示波器上的亮点 感光的方法扫描出波形。(详见附录) 2. 2001年全国大学生电子设计竞赛的一道题目:波形发生器。要求是用键盘 24088860.doc Page 1 of 11 9/5/2009 编辑生成一定频率的正弦波、三角波、方波和由用户编辑的特定形状波形。 选手可以利用各种电子元件以及单片机完成题目。(详见附录) 以上两个技术虽然没有生成声音,但都涉及到了生成任意的波形,对我有参 考价值。前者利用模拟电路和示波器,扫描纸上的波形;后者利用单片机,用键 盘输入波形。他们有共同的弱点,就是方法复杂,并且它们都是单独的电路,难 于扩展。于是,我便有了在电脑中编一个可以把手绘的声波曲线转化成声音的软 件的想法。设想中的软件基本功能是: 1.将任意的手绘的波形转化为指定频率的声音。 2.将已有的声音的波形进行绘图式的修改。 1. 研究声音文件结构,为以后的工作铺平道路。 2. 编制一个初级的程序,可以把从文件载入的声波曲线转化为声音文件。 3. 实现直接在电脑上用手绘制声波曲线,并即时转化成声音播放出来。 4. 增加绘图式修改声音波形的功能。 5. 参照现有声音软件,增加一些声音的辅助功能(编辑、转化等)。 6. 将软件发布测试,征求使用者的意见,再进行优化。 以上研究、开发、设计均在个人电脑上完成,使用WINDOWS操作系统。 硬件:多媒体电脑 软件:Cool Edit声音软件、Office软件、Visual Basic程序设计语言。 1. 研究电脑中声音文件的结构 我开始打算用播放WAV文件的方式进行发音,所以首先研究它的结构。 我用记事本打开一个WAV文件,发现它有一个可认读的文件头(“RIFF6 WAVEfmt”的字样),后边不可认读,是一些中西文字符。改用Word打开,选择文字编码为西欧,看到它们是ASCII码为0~255的字符。我猜想WAV文件中采样点的坐标数是用其对应的ASCII码的字符表示的。于是我修改了这个文件中的ASCII码,比如,用一个英文字母T,连续复制几百个,保存后再用声音软件打开,果然发现声波 的曲线增加了一段直线。初次尝试就取得了进展:不但了解了WAV文件的结构,还实现了在文本中修改和制作一段声音的功能。 我的创建声音文件的方法试验成功了,而这个文件便是一个“伪WAV文件”。之所以有这样的称呼,是因为它在形式上与WAV文件相同,可以被某些声音软件当作 WAV文件处理,却没有文件头。 2. 制作把波形转化为声音文件的程序 24088860.doc Page 2 of 11 9/5/2009 我首先用Windows“画笔”绘制一个波形并保存为BMP文件。然后用VB编制了程序。程序中用图片框载入BMP文件,在波形上每n个点取一个采样,n的公式为: n = 波形上点的总数/(采样率/预期声音频率) (采样率=22050Hz) 采样精度是8bit,坐标取值范围0~255,其中128表示零电平,记录下采样点的 坐标。然后,用上面所述的方法,把坐标数制作成文件,就得到具有一个周期声波的 “伪WAV文件”。用Cool Edit打开这个文件,按预期的声音频率数复制多遍后,就 制作成可以播放的声音文件了。 以上的方法可以概括为下面的几个步骤: 绘制图片(画笔)?取采样点(我的程序)?制作声音文件(Word)?复制、 播放(Cool Edit) 我取得了初步的成功,能够在电脑上听到自己“绘制”的声音了。但是,这种方 法存在明显的缺点: ? 需要很多的手工操作,前后用到4个程序,不能做到自动化,并且兼容性 差。 ? 声音的长度全靠复制的次数来调整,一则不准确,二则当频率高时工作量 很大。 3. 改进声音文件 针对以上的缺点,我准备改进程序,使它能够进行文件操作,一次性地完成声音 文件。 一天偶然发现Cool Edit软件可以把声音保存成一种文本文件,我用记事本打开它, 看到其中的声音样本都是从0~255之间的数字,中间用回车符分隔。如果能把声音文 件保存为这样的形式,再用Cool Edit读入,则能省去把数字转化成字符的工作,比原 来要方便。原来还有一个问题,ASCII码在32以下的字符都是特殊控制符,无法使用, 所以采样点的坐标数也不能小于32,现在没有这个问题了,采样点的坐标可以是0~255之间任意的整数。 这样,我在程序中,增加了一段代码,使它可以生成表示一个周期声音的这种格 式的字符串,根据用户输入的频率数,重复写入到文件中,制作成指定频率的声音文 本文件。 改进后的优点有: ? 省掉了用Word宏命令的步骤,减为三步。 ? 声音文件在Cool Edit中可以直接播放,不用再进行复制 仍然存在的不足: ? 还需要在别的程序中绘图。 ? 生成的声音文本文件只能被Cool Edit打开播放,兼容性仍然不强。 24088860.doc Page 3 of 11 9/5/2009 4. 增加绘图功能 我对WAV文件结构的了解还不充分,还不能创建可以在其他程序中打开的真的 WAV文件。曾经在网上下载了一个英文版的WAV文件结构介绍,但在阅读时遇到了 很大困难。所以我打算在寻找好办法的同时,先进行下一步,制作绘图的功能。 在采集声音样本后,程序将在采样点上绘制指示线,而绘图时又要把指示线擦去。 所以我选择的办法是,绘图后先把图片保存起来,采集样本后画上指示线,再次绘图 时把原来的图片恢复。现在遇到的问题就是如何保存图片。我想在VB中寻找一种可以把图片框里的图片暂时储存起来的控件,在查找资料之后却没有发现理想的。于是 想到了用API函数,但是函数手册总是看不太明白。我又请教了中科院软件所的同志, 而他们对VB的了解也不太多。只得又退回来,重新研究VB中的功能。这次细致地看了一下资料,终于发现图片框中有一个表示里面图片的属性,而VB中也有一种可以接收这个属性赋值的变量。这样,费了很大的周折,终于解决了保存图片的问题。 绘出的方式我设置有3种:铅笔、画直线、橡皮。这是仿造Windows里的“画图”设置的。“铅笔”是随着鼠标的移动画出任意的曲线,“画直线”时鼠标可以拉出直线, “橡皮”是擦除。这项工作完成想来倒相对比较简单,只用到了图片框的鼠标事件和 绘图方法。 下面要为绘图时的鼠标选取图标。我从网上下载了一些,没有如意的。后来从VB自带的图形库里找到了一个铅笔的图标,橡皮的图标则是自己绘制的。 这样,绘图的功能被制作到了程序里,由声波曲线制作声音的过程减少到了两步: ?画曲线,程序自动找坐标,保存成TXT声音文件;?用Cool Edit软件打开后将制作的声音播放出来。 程序里载入BMP文件的功能仍然保留。以方便载入现成的声波曲线。 5. 把ActiveX声音控件加入程序里 到这时,对于保存声音文件和声音播放的问题,已经有了解决办法。我在网上发 现了一个声音控件——NCTWavPlayer(图2)。它十分强大,具有一般的声音处理软 件的所有功能。我打算在程序中引用这个控件。这样,我便不必研究中的声音文 件的创建和播放的问题,控件都可以代劳了。而且在里面声音波形也可以显示出来。 并且再加入其它的功能也是易如反掌了。 图2,声音控件——NCTWavPlayer的界面 但是,我编程序时遇到了大问题。程序需要把采样点加入到声音控件中,但是, 24088860.doc Page 4 of 11 9/5/2009 在控件中建立新文件后,按照帮助文件上的方法加入采样点并不能成功。我便到NCT公司的网站上询问,但没有得到满意的答复。问题只得自己解决。我试验在各种情况 下进行采样点的加入,最后终于发现,只有当控件载入一个现有的声音文件后,才可 以加入采样点。这很令人费解,现在仍未找到原因。但是我想出了把采样点加入控件 的办法:先载入一个声音文件,再把全部定义成块,这时加入采样点,便可以把原来 载入了的声音覆盖成新的声音。 我在程序中加入播放的功能,这调用了NCTWavPlayer的函数。 现在,我的程序大体成型,它终于实现了自动地完成把用手绘制的声波曲线即时 转化成声音的目标。 6. 制作其他功能 我首先把程序界面重新制作,加上了菜单和工具栏,提高了易用性。 我增加了把选定的声音画在图片框里的功能,这调用了NCTWavPlayer的函数。这样我们就可以把波形进行绘图式的修改了,然后再把波形重新制作成声音。 我还加入了一个很新颖的功能:在设置音高时,不仅可以设置频率数,而且能用 点击琴键的方式,选择它在音乐上对应的音名,并加上了音名、音分、频率的换算功 能。当需要制作特定音高的声音时,这就给我们带来许多方便。 然后又增加了声音的辅助功能,如下,这基本上是调用了NCTWavPlayer的功能。 打开、保存声音文件 播放、暂停、停止 录音 剪切、复制、粘贴、删除 撤消、重复 放大、缩小 增加振幅、减小振幅 调节音量 到此为止,软件的第一个版本的最终完成了。 本软件实现了预期中的两个基本功能: 1. 将任意的手绘的波形转换为指定频率的声音。 2. 将已有的声音波形进行绘图式的修改。 此外,软件中还具有一些有用的其他功能:载入、保存声音,编辑声音,放大、 缩小波形,选择音名以设置频率,调节音量等。这样本软件也具有了一般声音处理软 件的功能。 本软件的最大特点就在于可以用手随意在电脑上画声波曲线。只需要一只鼠标作 24088860.doc Page 5 of 11 9/5/2009 为画笔,就可以随心所欲地制作、修改声音。不止是进行声音的一些处理,而是“画” 声音,这是其他声音软件所办不到的。本软件也不失严密性,可以将严密绘制的声波 曲线文件载入到程序中进行声音制作。所以可以满足不同人群的需要。 我初步设想,它有以下用途: 1.创造新声音:用户可以用画笔绘制出自己的波形,来创造希望的声音。也可 以在观察其他声音的波形特点之后,取长补短,绘制出理想的声音。本软件以后 还将设置一些声音波形的,供用户载入,在此基础上修改后制作声音。 2.加工、修改已有的声音:用户可以观察现有声音的波形,然后进行修改,重 新制作,以改变他的音色;也能截取现有声音的一个周期,重新选择频率后进行 制作,以修改它的音调。 3.教学作用:本软件也可以作为一个物理声学的教具。它可以向学生演示采样 率与采样点疏密的关系,振幅与响度的关系,声音频率与音高的关系,微观波形 与宏观音色的关系。 4.科普宣传:适用于从儿童到成人各个年龄段。例如,对少年儿童,可以让他 们体验跨越美术与声音之间的鸿沟,用耳朵听自己的手绘制出的奇妙声音;从而 体验到数字化时代的实质。 以后,我将本着“随意性”的特点,继续开发其它的功能: 声音频率的手绘调节 采样点振幅的手绘调节 然后,我会将软件发布,征求使用者的意见,再进行优化,最终完成。 本软件属多媒体技术,据网上调查,本软件的功能填补了现有声音软件的空白。 软件的界面见图3。 本软件实现了预期中的两个基本功能: 1.任意的手绘的波形转换为指定频率的声音。 2.已有的声音波形进行绘图式的修改。 软件第1版的基本功能: 1.菜单及工具栏功能: ?文件:建立、载入、保存声音文件和图片文件 ?绘图:铅笔、画直线、橡皮 ?声音:把波形制作成声音、把声音波形绘制图片框 声音的播放、暂停、停止、录制 声音的剪切、复制、粘贴、删除 波形的放大、缩小 24088860.doc Page 6 of 11 9/5/2009 增加振幅、减小振幅 ?操作:重复、撤消 2.面板上的功能: NCTWavPlayer:当前位置调整、选取一段声音 图片框:绘图 调整零电平线位置、采样左右边界位置 音调设置:频率或音名 音长设置 音量设置 设置自动寻找左右边界 图3,“把手绘制的声波曲线即时转化成声音的软件”界面 北京八中 李岗老师 中科院软件研究所 多媒体通信与网络工程研究中心 俄罗斯 NCT Company 王栋 《Visual Basic程序设计实用教程》 清华大学出版社 24088860.doc Page 7 of 11 9/5/2009 James.D.Foxall 《Visual Basic编程标准》 机械工业出版社 Microsoft 《Visual Basic 6.0中文版语言参考手册(电子版)》 北京希望电脑公司 黄淼云等 《Visual Basic控件高手》 北京希望电子出版社 《无线电》杂志 《电子制作》杂志 网上下载资料 《VB函数速查》 Cool Edit帮助文件 陈正生 《音高标识与音律计算》 24088860.doc Page 8 of 11 9/5/2009 20015 在实验和科研中,有时我们需要一些波形较为复杂的信号,并且信号的波形还能根据实际需要进行改变。本文向大家介绍一种利用光敏电阻和负反馈原理制作的任意 波形信号发生器。 如图1所示,把光敏电阻固定于铝罩的中心,以保证可以接受示波器任何位置的光 点,再将黑纸切割成所需的波形铺在示波器屏幕上。铝罩应根据示波器的形状和大小 制作,以避免外界杂散光的干扰。要求光敏电阻的光照特性具有良好的线性,可选用硫化铅(PbS)光敏电阻。 图1 图2为屏幕亮度监示与光点垂直移动的驱动电路。假设光点原处于Pl点,由于较强的人射光使光敏电阻的阻值减小到几百欧姆,这时运算放大器(F007)的同相输入端为负电位,输出端也是负电位。运放的输出(也是本函数发生器的输出)驱动示波 器的垂直输入端,使光点的位置垂直下降到P2点,这就导致对光敏电阻的光照变弱,阻值升高,使运放同相输入端的电位变正,输出也变正,光点上升,在P2点上下波动。 图2 24088860.doc Page 9 of 11 9/5/2009 由于负反馈的结果,光点就会收敛停留在使R1=R2的P点,当然,光点同时还在水平方向从左向右移动着,由于电路使光点沿着掩膜的上边缘移动,故而能产生按照掩膜切割的函数波形输出(见图3(a))。为了获得平滑的输出电压(图3(b)),电路中加了由R4、C组成的低通滤波器。输出电压幅度可以通过调节示波器的垂直幅度旋钮在 一定范围内进行调整。如果要使输出电压幅度较大,可以在图2所示的驱动电路中增加放大电路进行级联,但不能破坏负反馈链。 用以上方法可以得到50OHz以下的任意波形的信号。 图2 (2001) 1、任务 (1)设计制作一个波形发生器,该波形发生器能产生正弦波、方波、三角波和 由用户编辑的特定形状波形。示意图如下: 24088860.doc Page 10 of 11 9/5/2009 (2)用键盘输入编辑生成上述三种波形(同周期)的线性组合波形,以及由基波及 其谐波(5次以下)线性组合的波形。 (3)具有波形存储功能。 (4)输出波形的频率范围为100Hz~20kHz(非正弦波频率按10次谐波计算);重复频率可调,频率步进间隔?100Hz。 (5)输出波形幅度范围0~5V(峰-峰值),可按步进0.1V(峰—峰值)调整。 (6)具有显示输出波形的类型、重复频率(周期)和幅度的功能。 2、发挥部分 (1)输出波形频率范围扩展至100Hz~200kHz。 (2)用键盘或其他输入装置产生任意波形。 (3)增加稳幅输出功能,当负载变化时,输出电压幅度变化不大于?3%(负载电阻变化范围:100Ω~?)。 (4)具有掉电存储功能,可存储掉电前用户编辑的波形和设置。 (5)可产生单次或多次(1000次以下)特定波形(如产生1个半周期三角波)输出。 (6)其它(如增加频谱分析、失真度分析、频率扩展>200kHz、扫频输出等功能)。 24088860.doc Page 11 of 11 9/5/2009
/
本文档为【对《用手绘波形制作声音的软件》的研究】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索