基于LabVIEW的虚拟电子琴设计

基于Labview虚拟电子琴设计

1、设计目的及要求

1.1 设计的目的

电子琴又称为电子键盘,属于一种电子类乐器,音量自由调节,音域较广,表现力及其丰富,应用广泛,深受乐器爱好者的喜爱,但目前市场上电子琴的售价较高。因此本设计的多功能电子琴,是一款基于LabVIEW编程的虚拟电子琴,可通过鼠标点击或键盘操作,简单方便地 标题实现真实电子琴的功能,不占用室内空间,同时能够自动播放音乐,可供使用者休闲娱乐使用。该设计基于LabVIEW的虚拟多功能电子琴在一定程度上满足人们对音乐弹奏的需求。

1.2 课程设计的任务要求

(1)多功能电子琴的界面设计。
(2)多功能电子琴程序设计。
(3)实现鼠标点击电子琴演奏。
(4)实现键盘操作电子琴演奏。

2、方案选择

2.1 系统概述

本次设计基于LabVIEW的虚拟多功能电子琴,有21个黑键,15个白键,共36个琴键,包含高音、中音、低音的音阶以及半音阶,能够在一定程度上满足使用者对电子琴音阶的基本需求,同时也能弹奏大部分歌曲。
通过了解参考实际电子琴的功能和使用方法,该设计的基于LabVIEW的虚拟多功能电子琴主要有三个功能模块,分别为自动播放歌曲模块,鼠标控制虚拟琴键模块。
该基于LabVIEW的虚拟多功能电子琴具有以下特色:
(1)运用鼠标点击琴键发出不同的声音,实现电子琴发声并弹奏歌曲的基本功能。
(2)运用电脑键盘模拟实际琴键,通过敲击键盘指定的按键获得电子琴相应琴键的声音,这种方式更加真实,更接近实际弹奏电子琴。

2.2 系统方案的比较与选定

基于LabVIEW的虚拟多功能电子琴难点主要在于还原真实电子琴的琴声的真实度,所以经过讨论得出的方案有如下两个:
(1)在LabVIEW中利用公式和波形发生器,产生正弦波,进行滤波后得到不同音阶的声音效果。
(2)通过录音设备录下真实电子琴发声音效。

经过验证和讨论,上述两种方案存在以下优缺点:
方案(1):通过LabVIEW中模拟不同频率的发声能够较为真实地还原电子琴琴声, 同时能够充分利用LabVIEW的功能,简单易行,也达到课程设计的目的。
方案(2):采用手机录音设备录下电子琴琴声后,声音会出现部分变化,过程较为复杂,同时因小组成员均没有电子琴,所以成本较高。

综上,基于LabVIEW的虚拟多功能电子琴琴声采用方案(1)通过在LabVIEW中模拟不同频率的发声达到模拟琴声的效果。

2.3 系统子模块规划

通过参考对比真实电子琴的功能设计和结构设计,本设计基于LabVIEW的虚拟多功能电子琴,由三个子模块组成,分别为自动播放歌曲模块,鼠标控制虚拟琴键模块,键盘控制虚拟琴键模块。
其中自动播放歌曲模块,利用LabVIEW中的Activex容器、属性节点、调用节点等实现选择存储在电脑上的WAV格式歌曲自动播放;鼠标控制虚拟琴键模块利用LabVIEW中的事件结构,通过鼠标点击琴键发声;键盘控制虚拟琴键模块利用LabVIEW中的键盘初始化控件、case结构实现通过键盘使琴键发声。
由以上规划,可得系统结构,如图2.3.1所示。

在这里插入图片描述

3、系统设计

3.1 鼠标点击虚拟琴键演奏

3.1.1 确定方案
电子琴由36个琴键组成,每个琴键发出的声音拥有不同的频率,通过在LabVIEW中模拟不同频率的发声达到模拟琴键的效果,通过网上查找资料,每个琴键对应的频率如表3.1.1所示:
在这里插入图片描述
知道每个琴键对应的频率后,先实现单按键发声,可以选用波形产生控件,对波形产生控件的频率进行设置,将波形产生控件与播放波形控件相连,就可以用播放波形控件进行发声。因为要实现按键发声,可以选用LabVIEW中的事件结构,将事件结构触发条件设置为按键的鼠标按下时触发,即可实现单个按键用鼠标按下时,LabVIEW发出固定频率的声音。

实现一个按键的发声后,采用同样的方式即可实现其他35个按键的发声,将每个按键有顺序的在前面板进行排布,并将按键的形状修改为类似于琴键的形状,由于需要不断的点击琴键发声,所以需要将事件结构放入一个while循环控件中,并设置一个关闭按键控制while循环的结束。

需要注意的是,根据采样定理,波形产生控件中的采样频率必须设置为最高声音信号频率的2倍以上,否则会产生错误,这里我们将所有波形产生控件中的采样频率都设置为最高声音信号频率的2倍,在高频率的声音信号中,如果采样频率过高,采样样本过多的情况下,会出现噪声的情况,导致音色变差。 鼠标点击虚拟琴键演奏整体方案如图3.1.1所示:

在这里插入图片描述

3.1.2 VI设计
(1)流程图
流程图如图3.1.2所示,开始运行程序后,即会进入一个while循环,当没有琴键被按下时,则会等待琴键按下,当有琴键被按下,事件结构会判断哪个琴键被按下,从而触发相应的事件,发出相应频率的声音,然后等待下一次琴键按下,直至‘关闭’按钮被按下,跳出while循环,程序结束。

在这里插入图片描述

(2)前面板设计
虚拟电子琴前面板应该要有与电子琴相似的琴键与布局,琴键可以通过修改‘确定’按钮的形状与大小实现,琴键有黑琴键与白琴键两种,如图3.1.3和图3.1.4所示:
在这里插入图片描述

                                  图3.1.3 白琴键

在这里插入图片描述

                                 图3.1.4 黑琴键

白琴键设置高度为220,宽度为39,黑琴键设置高度为160,宽度为30,通过与真实电子琴进行比较,将黑琴键与白琴键按一定的顺序进行排列,整体排列效果图如图3.1.5所示:
在这里插入图片描述

                                图3.1.5 琴键整体布局

琴键从左到右是从低音1到高音7,在左上角加入了一个关闭按钮,可以控制程序结束,也与真实的电子琴相近。

(3)后面板设计
后面板首先要有产生声音与播放声音的控件,波形产生控件可设置声音频率,右击波形产生控件的频率,创建一个输入控件,然后将控件转换为常量,在其中即可输入对应的频率,与播放波形控件按图3.1.6方式进行连接,就能实现声音的产生与播放。
在这里插入图片描述

                             图3.1.6 实现声音的产生与播放

实现按键控制声音,采用事件结构,将按键与波形产生控件、播放波形控件都放入事件结构中,并在事件结构中设置该按钮的鼠标按下时触发,如图3.1.7所示:

在这里插入图片描述

                                      图3.1.7 事件结构

整个程序构成一个循环结构,采用while循环结构,加入布尔按钮控制程序是否停止。整体如图3.1.8所示
在这里插入图片描述

                                   图3.1.8 鼠标点击琴键演奏的后面板

3.2 键盘控制虚拟琴键演奏

3.2.1 确定方案
使用键盘控制虚拟琴键演奏,需要让程序知道是键盘上的哪个按键被按下,在LabVIEW中有专门与键盘建立连接的控件和获取键盘输入的控件,如图3.2.1和图3.2.2所示:
在这里插入图片描述

与键盘进行连接后,获取到键盘的输入,用LabVIEW中的case结构可以对不同的输入运行不同的程序达到控制虚拟琴键演奏的目的,知道如何使用键盘进行琴键控制后,开始对键盘进行划分,确定键盘上键与琴键的对应关系,对照表如下所示

在这里插入图片描述

比如键盘上的‘A’被按下后,case结构判断‘A’键被按下,然后运行‘A’键按下时的程序,也就是中音5.5对应的琴键发声。 由于需要不断的用键盘控制琴键发声,所以需要将事件结构放入一个循环控件中。整体方案如图3.2.3所示:
在这里插入图片描述

3.2.2 VI设计
(1)流程图
流程图如图3.2.4所示,开始运行程序后, 进入到for循环中,将for循环的次数设置为无穷大,循环中先初始化键盘,建立程序与键盘的连接,然后获取键盘的输入,case结构根据判断键盘输入的值,运行相应的程序,发出声音,然后进入到下一个循环直至程序结束。

在这里插入图片描述

(2)前面板设计
前面板设计与鼠标点击琴键演奏相似,唯一的区别是在琴键上写上了对应的键的名称,如图3.2.5所示:
在这里插入图片描述

(3)后面板设计
由于获取键盘输入控件里面的值默认是一个数组,与case结构无法直接相连,所以先将获取键盘输入控件与一个数组坐标控件相连,并将坐标为0的值输出,当键盘上有键按下时,就可以将这个键的值输出,没有键按下时就输出为0,如图3.2.6所示:
在这里插入图片描述

在case结构中,将每个键与对应的程序加入进去,如图3.2.7所示:
在这里插入图片描述

整个程序构成一个循环结构,采用for循环结构,设置循环次数为无数次,由于键盘有时会出现抖动,导致按下键一次会发几次声,所以在for循环中加入一个延时函数,并设置延时为200ms,整体程序图如图3.2.8所示:
在这里插入图片描述

欢迎大家关注微信公众号“柴基”

参考文献
[1] 黄松岭, 吴静. 虚拟仪器设计基础教程[M]. 北京: 清华大学出版社, 2008.
[2] 张国华,朱丽琴. 基于LabVIEW可弹奏电子琴的设计[J]. 电子世界, 2013(12): 123- 124.
[3] 舒景东,刘龙. 基于LabVIEW的简易键盘电子琴设计[J]. 山西电子技术, 2017(04): 66-68.
[4] 杜鸣笛,何淑珍. 基于LabVIEW压力电子琴的设计[J]. 科技资讯, 2017, 15(17): 97- 98+100.
[5] 李晓黎. 试论双排键电子琴上管弦乐音色的模拟[J]. 北方音乐, 2018, 38(22): 243+245.

  • 28
    点赞
  • 212
    收藏
    觉得还不错? 一键收藏
  • 10
    评论
目 录 第一章 概述 1 第二章 总体设计 2 2.1 时钟显示的结构 2 2.2设计总思路 2 第三章 软件设计 3 3.1获取时间的各整型数据 3 3.2提取数字的各位 4 3.3 七段布尔显示控件编码 4 3.4 译码、布尔显示数字 5 3.5 显示时间的区段 5 3.6 闪烁 6 第四章 程序调试 7 总 结 8 附 录 9 程序框图前面板 9 程序面板程序框图 10 第一章 概述 虚拟仪器技术就是利用高性能的模块化硬件,结合高效灵活的软件来完成各种测试、 测量和自动化的应用。灵活高效的软件能帮助您创建完全自定义的用户界面,模块化的 硬件能方便地提供全方位的系统集成,标准的软硬件平台能满足对同步和定时应用的需 求。这也正是NI近30年来始终引领测试测量行业发展趋势的原因所在。只有同时拥有高 效的软件、模块化I/O硬件和用于集成的软硬件平台这三大组成部分,才能充分发挥虚拟 仪器技术性能高、扩展性强、开发时间少,以及出色的集成这四大优势。LabVIEW(Lab oratory Virtual Instrument Engineering Workbench,实验室虚拟仪器集成环境)是一种图形化的编程语言(又称G语言),它是 由美国NI公司推出的虚拟仪器开发平台,也是目前应用最广、发展最快、功能最强的图 形化软件集成开发环境。使用这种语言编程时,基本上不用写程序代码,取而代之的是 程序框图。LabVIEW的特点如下: 编程简单; 开发周期短; 高效性; 开放性; 自定义性; 性价比高,能一机多用。 第二章 总体设计 2.1 时钟显示的结构 本课题要求设计一个数字时钟。通过获取电脑的系统时间,并分离出给数字,在通过 布尔显示显示。数字的显示主要是7个长条的布尔显示组成,原理与7段数码管相似。7段 数码管显示不同的数字主要通过其7个布尔不同的真假值控制,将0- 9对应的7段布尔显示值依次存入一个布尔数组里,只需提取此数组的不同段即可让其显 示不同的值,如显示"0"提取数组的0-6位分别赋值给7段布尔显示。 2.2设计总思路 获取时间的控件可以获取的信息有:年、月、日、星期、天数、时、分、秒、秒小数 等,取得的值为整型数据,利用除数取余即可分离个十位。为了获得更好的显示效果将 背景改为黑色,布尔显示的颜色为绿色。 第三章 软件设计 3.1获取时间的各整型数据 软件中获取日期/时间(秒)控件从计算机系统中自动提取时间,并转换成日期、时 间等,控件图如下: 图3-1 在获取时间后,将数据解除捆绑即分别取得年、月、日、时间等,如下图: 图 3-2 3.2提取数字的各位 通过除10取余便可得到个位,商为十位,以此方法也可求出年的各个数字,如下图: 图3-3 3.3 七段布尔显示控件编码 取出各位数字后,并不可直接显示,要通过统一编码规范显示的格式,这样才能显示 各位数,编码各段如下: 图3-4 A、B、C、D、E、F、G分别对应着七段布尔显示控件,要显示"0"时A~G的赋值分别为:1 1 1 1 1 1 0(1代表真,0为假),显示其他数字也是按此做法的。最后将此70个值串接起来存入一 个布尔数组里,如图3-4右。 3.4 译码、布尔显示数字 要显示数字时,只需将数字乘以7,再将乘积的值作为索引在那存放真值的数组里寻找对 应显示的七个布尔显示控件的值。如显示'2',则从数组的第2*7=14位开始,依次取出7 个(分别代表着七个布尔的真值),其他也同理。最后捆绑成簇,因为七段显示布尔已 做成簇。Labview表达如下: 图 3-5 3.5 显示时间的区段 显示的时间被分成7段,即凌晨、早上、上午、中午、下午、傍晚、晚上,只需通过表达 式节点计算出此时属于哪一段(1- 7),再通过七个布尔文本分别显示即可,布尔显示控件叠加在一起,程序及显示效果如 下图: 图3-6 3.6 闪烁 闪烁时只要判断其是否秒数大于0.5S,大于则显示(为真),小于则熄灭(为假),图 3-7为程序框图,3-8为实际效果: 图 3-7 图 3-8 第四章 程序调试 程序很容易上手,没有C语言那么复杂的语法等,图形界面让人更直观的对各部分进 行操作。此课程设计重点及难点在于布尔显示数字,开始时感觉其数据量非常大,由于 簇的特点使得程序的复杂性大大降低,而且程序更加清晰。显示的主要借助于平时常用 的数码管,它的显示原理就如本课程设计的要求是一样的,主要有统一的编码,显示时 通过解码即可显示出数字。 开始做好7段布尔显示后,不管怎么看都很生硬,完全不是数字时钟的模样,研究了 半天,原来是背景的缘故,当我换背景成黑色,且布尔显示位绿色后,显示效果大不一 样,让人感觉到它就是一个电子手表一样。不过它还是有一点不足:显示的字还是那么 生硬,不生动,字体台统一、死板了。不过由于是布尔

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值