版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、精选优质文档-倾情为你奉上 虚拟仪器技术及应用-基于LabVIEW的便携式按键钢琴班 级: 姓 名: 学 号: 成 绩: 一、 设计要求: 基本功能要求:便携式按键钢琴思路: 利用myDAQ的8个数字I/O通道作为琴键输入,通过LabVIEW编程合成出所需频率的声音,经过D/A变换后通过Audio Out端口放大输出。程序中通过设置不同的谐波组合可以最终混合出不同乐器的音色。 说明:除了数字I/O的信号采集和模拟信号输出之外,这个题目的主要工作在软件方面的数字信号处理与合成(比如,如果同时按下两个按键,出来的效果应该是两个音的叠加;同时还要考虑针对不同乐器不同音色所对应增加的谐波比例)。软件上
2、还可以增加其他功能,例如可以选择将PC音频输出的音乐通过myDAQ的Audio In端采集后增加混音或重低音效果等然后再通过Audio Out端播放出来。在硬件方面,可以扩展的一些工作包括琴键输入开关的毛刺滤除电路设计、音频输出后再做一级放大电路等。由于myDAQ只有8个数字I/O端口,因此只能做一个八音阶。 衍生功能要求: 便携式曲目练习器 思路:播放一首歌曲的同时,在PC界面上显示乐谱(或者当前的音阶和拍长),练习者需要按下对应的按键,这些按键连接到myDAQ的数字I/O端口,从而计算机可以判断是否正确,乐曲结束后根据按键的正确性和节奏的正确性给于相应评分。 说明:本题目硬件与上一题目基本
3、相同,在练习时可以播放原有旋律,同时记录练习者的按键顺序和时长,合成成乐声在练习结束后播放,并与原旋律比较。相比上一题目,需要在软件中记录数字键输入的顺序和时长。此外,可以设置不同的难度级别。 本程序功能规划: 根据已有的功能要求,我们需要制定一下我们电子琴程序的方向,究竟要做到什么地步,要做哪些功能,经过小组内的讨论,以及与指导老师的交流,再就是根据我们目前对MyDaq以及LabView的掌握情况,我们制定了如下的具体要求:1.图形界面模块:一个非常形似电子琴的图形界面,做到界面整洁美观,有区分度,交互通俗易懂2.发声模块:电子琴的基本发声功能,做到不同音调,音色,音量3.控制方式模块:做到
4、能用鼠标,键盘和基于MYDAQ的机械按键控制4.扩展模块:曲目练习器模块:考虑到现有设备的局限性以及知识的局限性,我们现在把曲目练习模块简化为:通过文件IO读取歌曲TXT曲谱,根据曲谱控制钢琴的按键的变色从而作为演奏提示,最后不考虑节奏只考虑曲谱声调的正确率做打分。自动播放模块:该模块做到根据TXT曲谱来自动演奏钢琴乐。除此之外,由于涉及曲目练习,我们还要做歌曲的曲谱以及声音文件。二、 模块实现: 在做本次程序之前,我们进行了充分的调研工作,包括:l LabVIEW图形界面系列-色彩搭配;l 八度音阶频率关系对应表;l 乐器音色的原理;l 钢琴音色的制作;l 曲目曲谱的设计及制作;l LabV
5、IEW文件IO及属性节点的使用;l MYDAQ设备的基本使用及设备可实现功能;下面将按搭建顺序一一介绍每一个模块的具体实现,最后介绍每个模块之间是如何联系起来的。n 发声模块u 播放正弦波要做电子琴,理所当然我们第一步想的就是如何发声,想到以前在数字信号处理课程中做过语音信号的处理相关编程,知道播放固定频率的正弦波可以发出声音,再查看LabVIEW所支持的函数,定下了初步的思路,即:首先产生一定频率的正弦波,设置好采样频率以及时长,送播放波形函数,如下图1.1: 图1.1 播放正弦波 图1.2 播放三角波于是,我们马上做了一个布尔按钮做测试,利用条件结构(布尔变量为真送一个数字,如266,到正
6、弦波产生函数的输入参数-频率中)实现了发声,但有两个问题: 音质很差(主要因为音色) 有很强的尾音(声音突然停止产生的刺耳噪声)但无论如何我们成功实现了发声。u 播放三角波为了解决第一个问题,之后查阅了相关内容,知道:不同音色是由某一基频的正弦波叠加上一定比例的谐波成分实现;于是我们做了如下处理:如图1.2,先同样方法产生一定频率的三角波,再通过低通滤波器,我们知道周期的三角波一定可以分解为基波和谐波相加,经过低通滤波器滤除高频后,出来的声音与正弦波是不同的音色结果正如我们所想,出来的音色不同,音色更像电子音,但尾声仍存在。u 播放公式波形为了解决尾声的问题,我们想如果能让音的尾部音量变小就好
7、了,于是找到了公式波形,将正弦波的幅度随时间改变,开始和末尾的幅度偏小,中间幅度最大,用了如下的公式:sin(w*t)*sin(m*t);幅度A(t)= sin(m*t),使/m = 采样数 / 采样频率我们设计的采样数为5000,采样率为11025,那么差不多 m = 2;于是设计的第三种音色如图1.3: 图1.3 播放公式波形 图1.4 播放WAV文件效果比之前两个都好,音色像管弦乐器,尾音更小。u 播放文件公式波形仍然不能满足我们对完美音色的要求,于是我们决定用另外一种发声机制-播放文件,在网上找了很久没有发现好的八度音阶音色后,我们开始了自己制作相关的音色,还好本组同学中之前有对音乐软
8、件的了解,用 + + = 制作出了所需的WAV文件。我们并用如图1.4的结构实现了WAV播放,由于是外部音,所以效果很好,只是第一次载入有些慢。至此,我们实现了四种音色,接下来就要讨论如何控制发声n 控制模块由于调试的需要(调试时基本都用鼠标),以及DAQ设备的抢手,我们最初只做了两种控制模式,鼠标控制,以及机械按钮控制。u 鼠标控制原理上很简单,无论是鼠标控制的8个布尔按钮,还是MYDAQ采集到的面包板上8个按键,输出的都是一个1D的长度为8的布尔数组,通过对布尔数组的每一位做检索,为1则发声,为0则不发声。程序框图如图2.1图2.1 鼠标控制发声的结构图中显示的是把鼠标控制的八个布尔按钮(
9、实际鼠标可以控制13个按钮,但因为机械按键只有8个,这里只说八个)集中到一个簇中,在转换为布尔数字,检索布尔数组每一位,如果为1则发出对应频率的声,此处我们查询了音调和频率对应表,如图2.2,得出下面对印关系Duo re mi fa suo na xi dou+261.63 293.66 329.63 349.23 392 440 493.88 523.25 (HZ)图2.2 八度音阶与频率对应关系那么当我们按下DUO按钮时,布尔数组第一个值为真,控制发出261.63Hz的声音,同理按下NA按钮时,布尔数组第六个值为真,控制发出440Hz的声音,如此,实现了鼠标控制;测试鼠标控制发音正常。
10、216; 并行结构的好处:为什么我们要按这种并行检测每一位然后分别播放的结构?实际上是为了解决多个按钮同时按下的时候,能两个音同时发出的需求。u 机械按键控制机械按键控制与鼠标控制的后面发声部分完全一样,只是前面的簇改为了DAQ助手,DAQ助手选用的是端口采样PORT0,外围硬件接线很简单,用共阳极结构,将MYDAQ的PORT的8个端口分别接面包板上八个按钮的一端,8个按钮另一端接+5V电压高电平,此处没有图。因此,DAQ助手输出的是十进制数,将其转换为2进制数后,后续操作同上。程序如图2.3图2.3 机械按键控制发声Ø 机械按键控制的问题机械按键的发声测试播放波形时,效果正常;但是
11、播放文件时,由于DAQ助手采样很快,所以按下按钮时,WAV文件会播放很多次,导致声音混叠,我们的解决方法时采用延迟一小段时间的方法,播放文件条件分支里用的是层叠结构,在后面的帧里设置延迟0.1秒,如图2.4图2.4 播放波形条件分支中的延迟至此不算扩展功能,我们的基本功能已经实现。n 图形界面模块前面提及了基本发音及控制,为了实现扩展功能,必须把程序的大体结构和前面板的界面作介绍,前面板如图3.1图3.1 前面板前面板结构:左边是曲谱的提示部分;中上是选择控制部分;右上是提示面板(演奏时才有变化);右下是鼠标控制的布尔按钮(设置快捷键之后可以键盘控制)前面板以蓝色为背景,黑白为主色,其他颜色为
12、辅色做提示,整个布局提示在左,操作在右,控制在上,钢琴按键的制作只需将布尔按钮拉长之后用工具选板做变色处理,简单但美观。后面板介绍演奏方式控制模块:对应前面板的演奏方式按钮,控制是否自动播放,以及鼠标/键盘控制,还是机械按钮控制。如图3.2图3.2 演奏方式控制歌曲选择控制模块:对应前面板的歌曲选单,决定演奏/自动播放那首歌 如图3.3图3.3 歌曲选择控制曲目演奏主模块,包括打分主程序,颜色提示主程序,演奏时的变量控制如图3.4图3.4 曲目演奏主模块自动播放模块,自动播放的实现程序,如图3.5图3.5 自动播放模块以及之前提到的播放声音模块,如图3.6图3.6 播放声音模块曲谱文件的读取模
13、块,如图3.7图3.7 文件读取模块这里只对每一个模块做一个说明,对应到具体的扩展应用时,再将具体的结构加以说明,下面将介绍扩展功能的实现n 曲谱练习(扩展)曲谱练习模块的基本原理就是选择完曲目后,程序会从TXT文件里面读取相应的曲谱,读取到的内容输出为字符串,每弹奏一次时,把弹奏的按键对应的数与曲谱中即将弹奏的音对应的数作比较,如果为真,加1分,如果为假,不加分,同时用一个变量记录剩余曲谱的长度,剩余曲谱长度为0时,把总的得分除以曲谱的长度,得到最终的得分。由于程序太过庞大,无法展示所有的条件分支下面以一个流程说明程序的工作 程序运行后选择以下控制方式选择鼠标控制,钢琴音,歌曲练习,歌曲选“
14、我的歌声里”那么歌曲谱变量内容变为“我的歌声里”,如下图4.1:图4.1 歌曲谱的改变此时先从TXT中读取字符串,歌曲列表为0时(对应下拉框选择第一个选项“我的歌声里”),把已经读取的字符串送入歌曲谱,那么界面左边的歌曲谱发生了改变,同时做了图4.2的初始化,包括即将演奏音阶的读取,前面板进度条总长度的自适应,歌曲谱送入剩余歌曲谱,即将演奏的第一个音为“3”,长度为“99”。图4.2 选择歌曲后的初始化 按下乐谱的一个音“1”(举例为“1”也可为其他)那么程序先判断是否按下按下时,比较的结果为假,把“1”送入当前演奏音阶和演奏记录接下来把剩余曲谱中的第一个音“3”送入当前乐谱音阶剩余乐谱减一建
15、议后的剩余乐谱第一个送入即将演奏音阶接着作比较“1”和“3”比较,不相等,于是正确数目不加1,否则加1图4.1 加分的判断 提示按键的变色由于之前比较“1”和“3”,沿线演奏错误,于是把红色属性(代表错误)送到“1”对应的前面板中右上角键盘“1”对应按键的属性节点-颜色 中 实现变色,延迟0.5秒后,把白色属性重新送入该按键、 之后,把黄色属性(代表下一个音)送到即将演奏音阶对应的按钮中,等到下一次按键判断完后,恢复白色如此循环,直到把谱子中所有音阶演奏完后,做判断,弹窗提示你的得分 这就是一个大致的流程。Ø 谱子系统,变色系统刚才提到了许多关于“1”“3”变色等内容,他们属于我们定
16、义的规则,那么接下来把谱子系统变色系统作介绍19:分别代表duo,re,mi,fa,suo,na,xi,duo+,re+;S:suo- ; N:na- ;X:xi-;M:mi+;回车:延迟0.4秒空格:延迟0.15秒“-”:延迟0.05秒变红色:演奏错误变黄色:此音阶时下一个要演奏的音阶变绿色:演奏正确变白色:默认颜色其实单单一个流程远没有把,程序框图中的每个部分都介绍到,由于要考虑到程序的完整性,细节处理很多,此处提一个比较重要的细节处理空格处理:在计算得分的时候,我们用演奏正确的数目除以总长度,此处的总长度并非为曲谱长度,而是去除了空格回车之后的曲谱长度因此要做如下图的处理,即将演奏为“默认”时空格个数加1,“默认”表示非音阶字符串。最后除以的是谱子长度与空格个数只差。 下面
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度民间融资担保人合同标准文本2篇
- 2024年度学校小卖部商品质量保证协议3篇
- 2024年度保险合同保险标的及保险条款3篇
- 2024年度体育赛事特邀表演演员聘用合同2篇
- 2024年度学校五四青年节主题活动承包合同3篇
- 2024年度绿色制造车间租赁合同范本下载2篇
- 2024年度企业资源规划(ERP)系统实施合同3篇
- 2024年度版权质押合同著作权描述与质押权3篇
- 2024年度劳动合同标的及员工权益保障具体规定2篇
- 2024年度汽车品牌质押贷款合同范本3篇
- 《中华民族共同体概论》考试复习题库(含答案)
- 复变函数论与运算微积智慧树知到课后章节答案2023年下哈尔滨工业大学(威海)
- 02-6 0-36月龄儿童中医药健康管理方案.
- 技师、高级技师管理办法
- AD15封装详细说明
- 电气误操作事故的分析及防范
- 印染厂定型安全生产注意事项
- 国家开放大学《流通概论》章节测试参考答案
- MJS工法施工技术及控制要点
- 养殖户粪污污染情况整改报告2篇
- 2022年营配贯通项目背景,相关系统及工作内容介绍
评论
0/150
提交评论