1、基于虚拟仪器的钢琴软件设计基于虚拟仪器的钢琴软件设计.设计课题 设计一个基于虚拟仪器的钢琴软件设计思路:利用myDAQ的8个数字I/O通道作为琴键输入,通过labview编程合成所需频率的声音,经过D/A变换后通过Audio Out端口放大输出。程序中通过设置不同的谐波组合可以最终混合出不同乐器的音色。说明:除了数字I/O的信号采集和模拟信号输出之外,这个题目主要工作在软件方面的数字信号处理与合成(比如,如果同时按下两个按键,出来的效果应该是两个音的叠加;同时还要考虑针对不同乐器不同音色所对应增加的谐波比例)。软件上还可以增加其他功能。例如可以选择将PC音频输出的音乐通过myDAQ的Audio
2、 In端采集后增加混音或重低音效果等然后再通过Audio Out端播放出来。在硬件方面,可以扩展的一些工作包括琴键输入开关的毛刺滤除电路设计、音频输出后再做一级放大电路等。由于myDAQ只有8个数字I/O端口,因此只能做一个八音阶。.设计过程响应琴键事件 在while结构中放入8个条件结构,每个条件结构对应一个按键发音事件:在每个对应的条件结构中,嵌入子vi,用来执行相应的选择事件,子vi负责了音量调节,音名选择,音色选择,音调选择等功能。为了不使程序连线过于复杂,使用了局部变量。上图可见。.集成功能的子vi设计子vi的设计是基于音色控制的,这里提供了三种音色实现方式,通过条件分支架构来选择,
3、一一介绍如下:.直接读入播放wav文件由于自己合成的音色总是不能达到钢琴发音的效果,所以通过录制的wav音频直接拿来播放音色就比较好。而没有找到现成的钢琴按键音频文件,所以通过利用adobe audition专业音频处理软件来录制、截取,升降调制作了钢琴的单键声音。对应的程序框图如下:找到相应wav文件写入读出:.正弦波基波与高次谐波的叠加: 由于音色是由于正弦波基波与其高次谐波成分比例多少不同而不同的,所以通过加入不同的谐波成分,可以来改变音色,效果要比只加入基波成分好很多,此次设计中可以调节二,三,四次谐波的比例成分。而且,又考虑到真实按键音会随着时间变化音量减小,所以在设计过程中也对此作
4、了相应处理。程序框图如下:通过公式节点来计算出对应的声音频率,参考了十二平均律公式波形与合成的正弦波形相乘,实现了音量随着时间而减小,而且,通过时间计时器,实现了音长的控制。.三角波形的低通滤波 三角波经过低通滤波后只会出现基波和偶次谐波成分,音色听起来会比较和谐。而低通滤波的设计不止一种,低通滤波函数提供给我们几种滤波方法,所以可以有几种音色的选择,实际效果虽然不如第二种设计方法好,但还凑合。程序框图如下:其他的音量调节等见上图一目了然。.子vi的调用 子vi定义了八个输入接口,用来实现相应的功能。 在主vi的调用中,使用了静态的方式,而且,为了子vi能够同时多次调用,并实现子vi的并行,所
5、以对子vi添加了可重用的属性。.控件的显示 在选择音色的过程中,在前面板上,对应于某一种音色选择的其他一些输入控件并没有作用,所以,我们可以通过属性节点来让这些控件在要用的时候才被显示出来,而不用的时候就将其设为不可见,这些控件是 可调滤波控件,二次谐波控件,三次谐波控件,四次谐波控件。程序框图如下:.声音录制声音的录制vi如下:.前面板效果.实验总结 本次实验对labview的使用可以说大大提升。从一点都不懂简单的编程到现在能实现一个简单的作品。学会了应用各种程序结构,对声音的输入,输出,文件的写入与读取都有了自己的认识。在程序设计的过程中,也碰到了不少的问题,通过查找labview帮助,查看工具书,上网查找资料和cnki上的论文对问题的解决有了自己的方法。当然,有些问题确实也没有得到实质上的解决,比如主从vi的并行,比如对某些事件的响应顺序,再比如数字滤波器的具体应用与选择方法等等没有找到好的解决办法,这个都是在以后的学习过程中要改进的地方。当然,在短时间内想要做出一个非常复杂的vi还是很不现实的,知识的积累需要一个过程。对于一个问题,总会有各种各样的方法,前提是知识要丰富,有足够的认识才行,所以学习一门知识系统点也是很有必要的。 总的来说,这次的设计课题使我有了提高。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1