基于LabVIEW的便携式按键钢琴

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

虚拟仪器技术及应用

--基于LabVIEW的便携式按键钢琴

班级:

姓名:

学号:

成绩:

一、设计要求:

基本功能要求:便携式按键钢琴

思路: 利用myDAQ的8个数字I/O通道作为琴键输入,通过LabVIEW编程合成出所需频率的声音,经过D/A变换后通过Audio Out端口放大输出。程序中通过设置不同的谐波组合可以最终混合出不同乐器的音色。

说明:除了数字I/O的信号采集和模拟信号输出之外,这个题目的主要工作在软件方面的数字信号处理与合成(比如,如果同时按下两个按键,出来的效果应该是两个音的叠加;同时还要考虑针对不同乐器不同音色所对应增加的谐波比例)。软件上还可以增加其他功能,例如可以选择将PC音频输出的音乐通过myDAQ的Audio In端采集后增加混音或重低音效果等然后再通过Audio Out端播放出来。在硬件方面,可以扩展的一些工作包括琴键输入开关的毛刺滤除电路设计、音频输出后再做一级放大电路等。由于myDAQ只有8个数字I/O端口,因此只能做一个八音阶。

衍生功能要求:便携式曲目练习器

思路:播放一首歌曲的同时,在PC界面上显示乐谱(或者当前的音阶和拍长),练习者需要按下对应的按键,这些按键连接到myDAQ的数字I/O端口,从而计算机可以判断是否正确,乐曲结束后根据按键的正确性和节奏的正确性给于相应评分。

说明:本题目硬件与上一题目基本相同,在练习时可以播放原有旋律,同时记录练习者的按键顺序和时长,合成成乐声在练习结束后播放,并与原旋律比较。相比上一题目,需要在软件中记录数字键输入的顺序和时长。此外,可以设置不同的难度级别。

本程序功能规划:

根据已有的功能要求,我们需要制定一下我们电子琴程序的方向,究竟要做到什么地步,要做哪些功能,经过小组内的讨论,以及与指导老师的交流,再就是根据我们目前对MyDaq以及LabView的掌握情况,我们制定了如下的具体要求:

1.图形界面模块:一个非常形似电子琴的图形界面,做到界面整洁美观,有区分度,交互通俗易懂

2.发声模块:电子琴的基本发声功能,做到不同音调,音色,音量

3.控制方式模块:做到能用鼠标,键盘和基于MYDAQ的机械按键控制

4.扩展模块:

①曲目练习器模块:考虑到现有设备的局限性以及知识的局限性,我们现在把曲目练习模块简化为:通过文件IO读取歌曲TXT曲谱,根据曲谱控制钢琴的按键的变色从而作为演奏提示,最后不考虑节奏只考虑曲谱声调的正确率做打分。

②自动播放模块:该模块做到根据TXT曲谱来自动演奏钢琴乐。

③除此之外,由于涉及曲目练习,我们还要做歌曲的曲谱以及声音文件。

二、模块实现:

在做本次程序之前,我们进行了充分的调研工作,包括:

●LabVIEW图形界面系列-色彩搭配;

●八度音阶频率关系对应表;

●乐器音色的原理;

●钢琴音色的制作;

●曲目曲谱的设计及制作;

●LabVIEW文件IO及属性节点的使用;

●MYDAQ设备的基本使用及设备可实现功能;

下面将按搭建顺序一一介绍每一个模块的具体实现,最后介绍每个模块之间是如何联系起来的。

⏹发声模块

◆播放正弦波

要做电子琴,理所当然我们第一步想的就是如何发声,想到以前在《数字信号处理》课程中做过语音信号的处理相关编程,知道播放固定频率的正弦波可以发出声音,再查看LabVIEW所支持的函数,定下了初步的思路,即:首先产生一定频率的正弦波,设置好采样频率以及时长,送播放波形函数,如下图1.1:

图1.1 播放正弦波图1.2 播放三角波

于是,我们马上做了一个布尔按钮做测试,利用条件结构(布尔变量为真送一个数字,如266,到正弦波产生函数的输入参数-频率中)实现了发声,但有两个问题:

①音质很差(主要因为音色)

②有很强的尾音(声音突然停止产生的刺耳噪声)

但无论如何我们成功实现了发声。

◆播放三角波

为了解决第一个问题,之后查阅了相关内容,知道:不同音色是由某一基频的正弦波叠加上一定比例的谐波成分实现;

于是我们做了如下处理:

如图1.2,先同样方法产生一定频率的三角波,再通过低通滤波器,我们知道周期的三角波一定可以分解为基波和谐波相加,经过低通滤波器滤除高频后,出来的声音与正弦波是不同的音色

结果正如我们所想,出来的音色不同,音色更像电子音,但尾声仍存在。

◆播放公式波形

为了解决尾声的问题,我们想如果能让音的尾部音量变小就好了,于是找到了公式波形,将正弦波的幅度随时间改变,开始和末尾的幅度偏小,中间幅度最大,用了如下的公式:

sin(w*t)*sin(m*t);

幅度A(t)= sin(m*t),使

π/m = 采样数/ 采样频率

我们设计的采样数为5000,采样率为11025,那么差不多m = 2π;于是设计的第三种音色如图1.3:

图1.3 播放公式波形图1.4 播放WAV文件

效果比之前两个都好,音色像管弦乐器,尾音更小。

播放文件

公式波形仍然不能满足我们对完美音色的要求,于是我们决定用另外一种发声机制-播放文件,在网上找了很久没有发现好的八度音阶音色后,我们开始了自己制作相关的音色,还好本组同学中之前有对音乐软件的了解,用

++ =

制作出了所需的WAV文件。

我们并用如图1.4的结构实现了WAV播放,由于是外部音,所以效果很好,只是第一次载入有些慢。

至此,我们实现了四种音色,接下来就要讨论如何控制发声

⏹控制模块

由于调试的需要(调试时基本都用鼠标),以及DAQ设备的抢手,我们最初只做了两种控制模式,鼠标控制,以及机械按钮控制。

◆鼠标控制

原理上很简单,无论是鼠标控制的8个布尔按钮,还是MYDAQ采集到的面包板上8个按键,输出的都是一个1D的长度为8的布尔数组,通过对布尔数组的每一位做检索,为1则发声,为0则不发声。程序框图如图2.1

图2.1 鼠标控制发声的结构

图中显示的是把鼠标控制的八个布尔按钮(实际鼠标可以控制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)

相关文档
最新文档