基于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.

基于LabVIEW的虚拟电子琴设计相关推荐

  1. 用labview设计jk触发器_基于LabVIEW的基本触发器设计.doc

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspLabview 基于LabVIEW的基本触发器设计.doc15页 ...

  2. 基于Labview的信号发生器的设计 [转】

    基于Labview的信号发生器的设计 目录 1 .引    言... 2 1.1 Labview开发平台... 4 1.1.1  程序前面板... 5 1.1.2  框图程序... 5 1.1.3  ...

  3. 基于Labview的信号发生器的设计

    目录 1 .引    言... 2 1.1 Labview开发平台... 4 1.1.1  程序前面板... 5 1.1.2  框图程序... 5 1.1.3  图标/连接器... 5 1.1.4  ...

  4. 基于LabView的虚拟仪器实现频率稳定度的测量(图)

    2006-04-27 21:45:55 基于LabView的虚拟仪器实现频率稳定度的测量(图) align=right marginWidth=0 marginHeight=0 src="h ...

  5. labview虚拟心电监测系统_基于LabVIEW的虚拟心电记录系统研制

    基于 LabVIEW 的虚拟心电记录系统研制 李喆 ; 卢广文 ; 莫莉 ; 余学飞 [期刊名称] <微计算机信息> [年 ( 卷 ), 期] 2007(023)031 [摘要] 利用具有 ...

  6. unity 陶瓷质感_一种基于Unity3D的虚拟陶瓷设计方法与流程

    本发明涉及虚拟现实领域,特别涉及一种基于Unity3D的虚拟陶瓷设计方法. 背景技术: 陶艺工艺制作环境要求严格:不仅在拉坯成型需要利用旋转机器,在烧制过程则需要窑炉锻造,如何将陶瓷制作工艺与虚拟现实 ...

  7. 简易电子琴c语言程序,基于单片机的简易电子琴设计(C语言编程).docx

    单片机课程设计报告 基于单片机的简易电子琴设计 摘 要 电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器.它在现代音乐 扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经 ...

  8. 基于STM32的微型电子琴设计

    基于STM32的微型电子琴设计 第一章 总体设计 1.1 系统功能 1.2 主要技术性能指标 第二章硬件设计 2.1 整体硬件图 2.2 按键模块 2.3 扬声器模块 2.4 显示模块 2.5 主控模 ...

  9. 基于AT89C51单片机的电子琴设计与仿真

    点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87848430?spm=1001.20 ...

最新文章

  1. Hash+哈希表+HashMap+HashSet
  2. flutter 按钮_flutter好用的轮子推荐二-点赞按钮动画
  3. 消息模式在实际开发应用中的优势
  4. openwrt 格式化_OPENWRT扩展系统到U盘
  5. python基础函数式编程(十七)
  6. html 放到底部,html – 将元素放在页面底部
  7. Hibernate映射组件属性为集合(二)
  8. 2 分支语句——《Swift3.0 从入门到出家》
  9. 一个能拖动,能调整大小,能更新bind值的vue指令-vuedragx
  10. SMILES的基本规则
  11. 常用软件过程模型-快速原型模型,快速原型模型有哪几种?各有何特点?
  12. iOS界面调试工具Reveal
  13. R语言使用min函数获得向量数据的最小值
  14. vulhub nginx insecure-configuration
  15. 利用python实现微信自动回复群发等操作(不需要登录网页版微信)
  16. Delphi 汉字转拼音
  17. 服务器怎样创建多台虚拟主机,服务器是如何实现多台虚拟主机
  18. About Dfc environment
  19. mpd无法启动的案例及解决
  20. python利用ElementTree读写xml

热门文章

  1. JAVA工厂模式(手写Spring IOC案例)
  2. Matlab高光谱遥感、数据处理与混合像元分解
  3. 穿越火线击杀图标下载_穿越火线击杀图标替换器下载_766火线魔盒
  4. DevExpress GridView 选中单元格文本内容当失去焦点又获得焦点时保持原来的文本选中内容
  5. 关于DNS迭代递归及区域复制
  6. 为什么你夸奖得越多,别人觉得越虚伪
  7. NFC协议分析之nci相关缩写
  8. 如何同时将多个 PDF 文档批量转为 Word、PPT、Epub 等其它格式
  9. javascript工具_适用于JavaScript开发人员的10个有用工具
  10. windows下安装wget进行远程下载