基于LabVIEW的便携式按键钢琴

合集下载

基于Labview压力电子琴的设计

基于Labview压力电子琴的设计

基于Labview压力电子琴的设计作者:杜鸣笛何淑珍来源:《科技资讯》2017年第17期摘要:该文采用Labview软件设计了压力电子琴。

利用惠斯通电路原理设计外部压力系统,对输出电压进行放大,采用DAQ数据采集通道来采集该系统所感应压力机械信号成比例的电压信号。

采集的数据在内部进行处理后,实现压力的变化引起输出音调的变化。

关键词:电子琴压力惠斯通中图分类号:TP216 文献标识码:A 文章编号:1672-3791(2017)06(b)-0097-03Labview是一种较先进的工业标准图形化用于编程的工具,是1986年美国国家仪器公司提出的一个概念,是计算机辅助测试(CAT)行业的一项非常重要的技术。

同时它也有一些强大的基本功能,包括一些程序调试工具,如单步执行等。

运用虚拟仪器技术设计,思路清晰,编程、调试和功能十分简单。

关于电子琴的发展,不同的科研人员采用不同的方法。

如:付梦婷用VHDL语言设计了一个产生88个电子琴琴音的数字电路。

王江伟设计了一种激光虚拟电子琴的工作原理和制作过程,通过红外手指定位技术来确定按键,控制音响部分发出相应的声音。

钟秀媚设计采用硬件电路与软件程序相结合的方式,设计的思路是采用一个模拟键盘,由超声波来测定手的位置,测定后数据反馈给FPGA处理模块,内部处理结束后输出对应的频率,再由扬声器进行播放。

王杰等采用嵌入式开发板设计了一个电子琴,电子琴采用触摸式液晶屏按键,由按键来控制脉冲宽度调制波形进行演奏,不同的音符会使得LED灯有不同的闪烁方式,另外还能播放预置歌曲。

王洋设计以AT89S52单片机作为系统核心控制器,通过外部硬件电路的实现和软件的设计,最终实现电子琴的演奏、播放功能。

张国华采用软件的方式,设计的思路是采用前面板设计模拟琴键,程序则负责在有琴键按下的时候,播放对应频率的音乐。

1 压力电子琴程序流程压力电子琴程序流程图如图1所示。

首先电压信号产生和放大;再采用DAQ采集放大的电压信号;然后就是一个多重判断,根据电压大小所在的范围来给y赋不同的值。

基于LabVIEW的乐曲声音文件的制作

基于LabVIEW的乐曲声音文件的制作

基于LabVIEW的乐曲声音文件的制作蒋萍花【摘要】计算机音乐目前已进入到物理模型阶段,可不采用任何乐器或声音的波形样本生成乐曲.LabVIEW是一种强大的图形化的编程语言.针对乐谱制作计算机音乐,提出了采用LabVIEW来模拟乐器的演奏,生成可直接播放的乐曲声音文件.采用LabVIEW中VI的技术和设计思路,首先实现了ADSR包络,然后用ADSR包络对粗糙的信号源进行调制,实现单个音符的声音的产生.对于乐谱,提出了其高音部分和低音部分相叠加的模块图设计思路.最后给出了声音文件写出的LabVIEW模块图的设计.实验结果表明用LabVIEW来制作乐曲声音文件是可行的,其乐曲即可保持传统旋律,又可由具有计算机音乐的各种特殊效果,有很好的应用前景.【期刊名称】《电声技术》【年(卷),期】2016(040)001【总页数】5页(P73-77)【关键词】LabVIEW;ADSR包络;信号源;调制;模块图【作者】蒋萍花【作者单位】青岛远洋船员职业学院,山东青岛266071【正文语种】中文【中图分类】TP29计算机音乐的发声技术到目前为止经历了电子模拟、数字模拟、采样回放和物理模型4个发展阶段,物理模型阶段的技术采用数学公式和数据就可产生各种声音[1]。

LabVIEW(Laboratory Virtual Instrument Engineering Workbench)出现于上世纪80年代,是随着虚拟仪器技术的发展而发展起来的。

它既是一个功能完善的软件开发环境,同时也是一种功能强大的编程语言[2]。

从设计之初,LabVIEW编程就是图形化的,用controls,indicators,nodes和VIs,通过wires连接,最终创建block diagram。

最近几年的LabVIEW又集成了一系列的信号处理和声音信号处理功能,如今LabVIEW已经发展成一个完整的强大的编程环境。

本文要用计算机合成一首乐曲,不采用任何乐器或声音的波形样本,LabVIEW是最佳的选择。

基于LabVIEW可弹奏电子琴的设计

基于LabVIEW可弹奏电子琴的设计

基于LabVIEW可弹奏电子琴的设计【摘要】本文主要阐述利用LabVIEW软件实现可弹奏电子琴的设计,通过对声音的频率设置,以及LabVIEW中的常用编程控件,来实现电子琴发声,本设计能实现电子琴基本演奏功能,调试效果较好。

【关键词】LabVIEW;可弹奏电子琴;生成安装软件LabVIEW是由美国国家仪器公司(NI)创立的一种功能强大而又灵活的仪器和分析软件应用开发工具,它是一种基于图形化的、用图标代替文本行创建应用程序的计算机编程语言,通常称为G语言。

LabVIEW采用的是数据流编程方式,程序框图中节点之间的数据流向决定了程序的执行顺序。

[1]目前市场上的电子琴都比较昂贵,利用LabVIEW编程能够简单又方便地实现其弹奏功能,当然本设计对于实现高真电子琴模拟还有一段距离。

1.可弹奏电子琴的原理音乐是由音符和节拍组成,而不同的音符是由相应的频率振动产生。

本次设计的电子琴是由36个琴键所构成,包含有高音、中音、低音的音阶以及半音阶共同组成,也就是所谓的黑键跟白键。

基于LabVIEW的可弹奏电子琴主要以软件实现弹奏功能:每按下一个琴键,扬声器播放对应频率声音。

bVIEW介绍在一个虚拟仪器VI的开发过程中,主要利用模板创建和运行程序。

操纵模板共有三类:工具模板、控件模板和函数模板。

创建一个完整的VI程序主要分为以下三步:(1)创建前面板。

前面板模仿了实际仪器的操作面板,它主要由控件构成,是程序与用户交流的窗口,用于设置输入数值和观察输出量。

(2)创建程序框图。

程序框图由函数节点、端口和数据连线组成。

从前面板切换到程序框图窗口,会看到与前面板对象对应的端口,根据需要在函数模板中找到所需的节点,并将节点图标放置到框图程序窗口。

用数据连线将这些端口和节点的图标连接起来,形成一个完整的框图程序。

(3)创建图标。

一个虚拟仪器的图标/连接端口就像一个图形(表示某一虚拟仪器)的参数列表。

这样,其它的虚拟仪器才能将数据传输给子仪器。

基于LabVIEW的多功能电子琴设计

基于LabVIEW的多功能电子琴设计

设计制作数码世界 P.150基于LabVIEW的多功能电子琴设计黄俊华 刘富成 西北农林科技大学摘要:本文研究设计了一种基于LabVIEW的多功能电子琴,该虚拟电子琴有四个主要的功能:鼠标点击虚拟琴键演奏、键盘控制演奏、显示电子琴谱和播放钢琴曲,文中阐述了这四个功能的设计思路与编程实现。

关键词:LabVIEW 电子琴 多功能引言LabVIEW软件是由美国国家仪器公司(NI)开发的一种功能强大的虚拟仪器和数据处理分析软件,它采用图形化的编程语言——G 语言。

LabVIEW采用数据流的编程方式,程序的执行顺序由数据流向决定,它自带的函数库可用于数据采集、串行设备的控制、数据分析和显示等。

目前市场上的电子琴种类繁多、功能强大,但价格比较高昂,另外,电子琴的体积较大,占用空间较多,而利用LabVIEW编程设计的虚拟电子琴操作简单、使用方便,不占用室内空间,可在一定程度上满足人们对音乐弹奏的需求,供人们娱乐。

一、电子琴概述电子琴,又称电子合成器,属于电子乐器类,其发音音量可以自由调节,音域较宽,和声多样,表现力极其丰富。

电子琴还可以模仿多种音色,甚至可以奏出常规乐器所无法发出的声音(如合唱声,风雨声等)。

另外,电子琴在独奏时,还可随意配上类似打击乐音响的节拍伴奏,适合于演奏节奏性较强的现代音乐。

目前,电子琴主要分为玩具型电子琴、家庭型电子琴和演奏型电子琴。

二、系统设计本文研究设计的基于LabVIEW的电子琴是由36个琴键所构成,包含高音、中音、低音的音阶以及半音阶,也就是人们常称的白键和黑键。

该设计满足了人们对电子琴音阶的基本需求,能演奏绝大多数的歌曲。

参考实际的电子琴的功能,拟设计的基于LabVIEW的电子琴由四个主要的功能模块组成,它们分别是:虚拟电子琴键(鼠标点击)、虚拟电子琴键(键盘控制)、电子琴谱、播放钢琴曲。

根据设计的功能规划,得到系统结构如图1所示。

图1 系统结构图根据设计的基于LabVIEW的电子琴的功能规划,设计好后的电子琴的前面板如图2所示。

基于Labview和ARM的便携多功能电子技术基础实验箱设计

基于Labview和ARM的便携多功能电子技术基础实验箱设计
对于教师和学生来说,在使用实验箱时,如果 采用USB的模式,需要配合相应的驱动程序。使用声 卡采集,考虑到在绝大多数计算机系统中,都具备声 卡,有非常强的便携性。用户只需要将信号的输出线 直接接入声卡即可实现采集,不需要额外操作。
综合采样方式,控制方式和便携性的考虑,实验 箱采用声卡采集,在保证采用效果的同时更大地提高 便携性,同时节省成本。
74
2011年4月
2011年第7期 总第119期
关心如何得到声卡采集的数据,只需调用声卡信号采
集模块即可获取相应数据。
由于声卡上有可能引入来自计算机内部的干扰
信号,故在分声道后各接入一个带通滤波器,对信号
进行滤波,以获取有用信号的较好波形,最后再接以
显示模块进行显示。声卡采集模块的采样频率设为
44100Hz,而由于声卡本身主要用于声音的输入输出
2011年4月
ISSN1672-1438 CN11-4994/T
系统采样采用计算机声卡输入,同时可以采样2 路信号。由于声卡对信号幅度和频率有要求,系统也 做了处理,以保证实际使用的需要。
2.2.5 成本低廉 相对于专业的示波器和信号发生器,本系统采用 计算机上位软件的虚拟示波器,成本大大减少。系统 最主要的两部分,MCU和信号发生模块的成本估计在 100元左右。 2.2.6 独立编写的驱动程序 MCU与计算器通过USB串行口通信时,需要有驱 动程序支持。针对系统的功能,独立开发了系统的驱 动程序,并封装成DLL动态链接库文件。驱动程序优 点在于可以根据功能的需求进行更改,DLL文件也可 以轻松地被VC,Matlab,Labview等主流的开发工具 调用。 2.2.7 软件界面友好 计算机上位软件采用NI公司的Labview软件开 发。基于Labview的大量组件,软件调用通信、滤波 器、显示器等模块,对于操作者界面友好。

基于LabVIEW的乐器数字调音系统

基于LabVIEW的乐器数字调音系统

基于LabVIEW的乐器数字调音系统作者:胡奕明黄志刚肖雷蕾徐瑞阳来源:《现代电子技术》2013年第06期摘要:该系统采用虚拟仪器思想,利用基于图形化的编程软件LabVIEW开发了乐器数字调音系统。

主要内容包括模拟钢琴,钢琴及吉它音频的基频检测,音频的采集和存储、音频的参数测量、音频的谱分析及图形化显示等内容。

该系统利用LabVIEW中NI模块通过搭积木式编程方法实现了对钢琴和吉它2种乐器的音准调音。

实现钢琴模拟调律过程,满足实际吉它调音的需要。

关键词: LabVIEW;虚拟仪器;模拟钢琴;乐器调音;基频检测中图分类号: TN919⁃34; TM935 文献标识码: A 文章编号: 1004⁃373X(2013)06⁃0141⁃040 引言钢琴和吉它是人们喜闻乐见的乐器,其共同的特点是它们的琴弦都具有金属的延展性,使用过一段时间后其音准会发生变化,从而要周期性地对钢琴和吉它进行调律(调音)。

此类乐器特别是钢琴的调音,传统上都是由专业调音师来完成的。

随着电脑技术的发展,寻求一种科学的,普通人可以掌握的调音工具已经受到广泛的关注。

本文应用EPMC⁃505C嵌入式平台,设计的乐器数字调音系统可以使钢琴和吉他的调音变得简单而有趣。

通过该系统用户可以准确地判断出音准是否有偏差,快速完成调音。

另外,本设计作品参加了2012全国大学生电子设计竞赛嵌入式大赛(获三等奖),为了满足现场演示需要,系统中还设计了模拟钢琴,用以模拟钢琴调音的全过程。

1 系统组成与功能1.1 系统组成本乐器数字调音系统可实现钢琴模拟调律过程,并可完成实际吉它调音的任务。

1.2 系统功能1.2.1 模拟钢琴(1)按键发音(音高可调);(2)琴键变色;(3)声卡、音箱输出。

1.2.2 音频信号处理(1)音阶校准功能:提取信号基音频率,与标准音阶信号对比,实现音阶校准。

并通过表头显示差别;(2)频谱分析图功能;(3)示波器功能。

2 基音频率检测原理乐器调音系统的核心问题是乐音信号的基音频率检测(基频检测),通过检测乐音的基频,比对标准频率,从而判断钢琴和吉它的音准。

基于LabVIEW的电子琴设计

基于LabVIEW的电子琴设计

基于LabVIEW的电子琴的设计摘要随着电子计算机的不断发展,以及软件开发技术的日新月异,电子计算机在数据的实时分析和处理,现实存贮等方面的优势与传统仪器相比越来越明显,随着计算机性价比的不断提升,传统仪器价格又高居不下,加上传统仪器的功能单一,发展虚拟仪器已经成为一个不可阻挡的历史潮流。

在20世纪80年代,美国国家仪器公司(NI)最早提出了虚拟仪器的概念,引发了传统仪器领域的一场重大变革,使得计算机网络技术得以长驱直入仪器领域,和仪器技术结合起来,从而开创了“软件即是仪器”的先河。

而虚拟仪器的设计,需要图形化的开发环境LabVIEW。

本文讲解了基于LabVIEW的电子琴的设计,通过对声音的频率设置,以及LabVIEW中的常用编程控件,来实现电子琴发声,本程序能实现电子琴基本演奏功能,还有音乐播放功能。

关键词:虚拟仪器,LabVIEW,电子琴Electric Piano Design Based on LabVIEWAbstractWith the rapid development of computer technology and software development technology, the advantagement of the computer in analyzing, processing, displaying, storing the data becomes more and more obvious. At the same time, developing virtual instrument has become an irresistible trend of history along with high cost performance of computer, high price of traditional instruments and the single function of the traditional instruments. In this environment, the American NI company firstly began to the study of the virtual oscilloscope; and then launched a plat for the LabVIEW.This thesis designs a set of virtual oscilloscope based on the basic structure of the virtual instrument and related knowledge of signal processing in author's procession. It analyzes the definition, structures and trend of development of the virtual instrument. It introduces the basic knowledge related with virtual oscilloscope, which is Fourier transform. Virtual instrument is composed of hardware and software in two parts. This thesis introduces the hardware simply, but studies the software at full length. Based on the study of the two parts of the virtual instrument, the author designs the spectrum analysis module, memory module, display module and measurement module.Key Words: Virtual Instrument, LabVIEW, Electronic piano目录第1章绪论 (1)1.1 电子琴的特色 (1)1.2 电子琴的构成 (1)1.3 电子琴的发展 (1)1.4 产品优势 (2)1.5 电子琴的意义 (2)第2章系统软件的开发平台LabVIEW简介 (2)2.1 LabVIEW的基本概述 (3)2.2 LabVIEW的模板分析 (5)2.2.1工具模板 (5)2.2.2 控件选板 (7)2.2.3 函数选板 (7)第3章电子琴的软件设计 (9)3.1 设计任务 (9)3.2 单按键发声 (9)3.3 电子琴设计 (11)3.4 播放声音文件 (13)第4章打包生安装文件 (16)总结 (25)参考文献 (26)致谢 (27)第1章绪论1.1 电子琴的特色电子琴又称作电子键盘,属于电子乐器,发音音量可以自由调节。

基于labview的电子琴程序设计

基于labview的电子琴程序设计

LabVIEW技术与应用课程设计报告题目:基于LabVIEW的电子琴程序设计学院:专业班级:学生姓名:学号:指导教师:日期:一、设计题目及要求题目:基于LabVIEW的电子琴程序设计要求:使用LabVIEW设计一个运行于计算机的电子琴软件,电子琴是由36个琴键所构成,包含有高音、中音、低音的音阶以及半音阶共同组成也就是所谓的黑键跟白键。

软件实现弹奏功能。

其中弹奏功能:每按下一个琴键,扬声器播放对应频率声音。

二、前面板设计电子琴是由36个琴键所构成,包含有21个白键和15个黑键,在前面板中利用“确定按钮”作为琴键,白键和黑键的属性设置分别如下图所示:图1 白键属性设置图2 黑键属性设置把设置好的36个琴键按次序排布为电子琴的样子,从左到右白健依次是低音、中音、高音的1 2 3 4 5 6 7,黑键也是依次是低音、中音、高音的半音阶,如下图所示:图3 设置后的电子琴按键三、程序框图设计按以下步骤设计程序框图:1.在本设计中,电子琴需要能连续弹奏,因此要把整个发声程序放在一个while循环中。

2.每个按键发声都是一个事件,所在在程序框图中需要把他们放在事件结构中,在事件结构中对每个按键发声进行设置。

具体做法如下:在程序中选择事件结构,添加新的事件分支,事件源为某琴键按钮,然后将本分支所处理的琴键按钮放入该分支页面中,由于电子琴的琴键通常需要按下去才会发出声音,所以本分支出发的条件就设置为当鼠标按下时触发。

事件结构设置如下图所示:图4 事件结构的设置3.要电子琴能发出声音,得用播放声音之类的控件,本设计选用了播放波形的控件,原因是因为波形的频率容易设置,能让声音听起来更接近。

具体做法如下:通过路径“信号处理-波形生成-仿真信号”选择仿真信号控件,并选择仿真的信号为正弦波,同时创建一个输入控件,输入相应的频率值,该输入控件与仿真信号控件的频率相连。

然后通过路径“图形与声音-声音-输出-播放波形”选择播放波形控件,将仿真信号控件的输出与播放波形控件的输入相连,如下图所示:图5 发声程序如此类推,每个琴键设计一个对应的发声程序,并把该发声程序放入对应的事件结构中,如下图所示:图6 电子琴的程序框图另外,每个按键对应的频率如下图所示:图7 各个音阶对应的频率4.最后,要为循环结构配置一个停止按钮。

  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)图2.2 八度音阶与频率对应关系那么当我们按下DUO按钮时,布尔数组第一个值为真,控制发出261.63Hz的声音,同理按下NA按钮时,布尔数组第六个值为真,控制发出440Hz的声音,如此,实现了鼠标控制;测试鼠标控制发音正常。

➢并行结构的好处:为什么我们要按这种并行检测每一位然后分别播放的结构?实际上是为了解决多个按钮同时按下的时候,能两个音同时发出的需求。

◆机械按键控制机械按键控制与鼠标控制的后面发声部分完全一样,只是前面的簇改为了DAQ 助手,DAQ助手选用的是端口采样PORT0,外围硬件接线很简单,用共阳极结构,将MYDAQ的PORT的8个端口分别接面包板上八个按钮的一端,8个按钮另一端接+5V电压高电平,此处没有图。

因此,DAQ助手输出的是十进制数,将其转换为2进制数后,后续操作同上。

程序如图2.3图2.3 机械按键控制发声➢机械按键控制的问题机械按键的发声测试播放波形时,效果正常;但是播放文件时,由于DAQ助手采样很快,所以按下按钮时,WAV文件会播放很多次,导致声音混叠,我们的解决方法时采用延迟一小段时间的方法,播放文件条件分支里用的是层叠结构,在后面的帧里设置延迟0.1秒,如图2.4图2.4 播放波形条件分支中的延迟至此不算扩展功能,我们的基本功能已经实现。

图形界面模块前面提及了基本发音及控制,为了实现扩展功能,必须把程序的大体结构和前面板的界面作介绍,前面板如图3.1图3.1 前面板前面板结构:左边是曲谱的提示部分;中上是选择控制部分;右上是提示面板(演奏时才有变化);右下是鼠标控制的布尔按钮(设置快捷键之后可以键盘控制)前面板以蓝色为背景,黑白为主色,其他颜色为辅色做提示,整个布局提示在左,操作在右,控制在上,钢琴按键的制作只需将布尔按钮拉长之后用工具选板做变色处理,简单但美观。

后面板介绍演奏方式控制模块:对应前面板的演奏方式按钮,控制是否自动播放,以及鼠标/键盘控制,还是机械按钮控制。

如图3.2图3.2 演奏方式控制歌曲选择控制模块:对应前面板的歌曲选单,决定演奏/自动播放那首歌如图3.3图3.3 歌曲选择控制曲目演奏主模块,包括打分主程序,颜色提示主程序,演奏时的变量控制如图3.4图3.4 曲目演奏主模块自动播放模块,自动播放的实现程序,如图3.5图3.5 自动播放模块以及之前提到的播放声音模块,如图3.6图3.6 播放声音模块曲谱文件的读取模块,如图3.7图3.7 文件读取模块这里只对每一个模块做一个说明,对应到具体的扩展应用时,再将具体的结构加以说明,下面将介绍扩展功能的实现曲谱练习(扩展)曲谱练习模块的基本原理就是选择完曲目后,程序会从TXT文件里面读取相应的曲谱,读取到的内容输出为字符串,每弹奏一次时,把弹奏的按键对应的数与曲谱中即将弹奏的音对应的数作比较,如果为真,加1分,如果为假,不加分,同时用一个变量记录剩余曲谱的长度,剩余曲谱长度为0时,把总的得分除以曲谱的长度,得到最终的得分。

由于程序太过庞大,无法展示所有的条件分支下面以一个流程说明程序的工作①程序运行后选择以下控制方式选择鼠标控制,钢琴音,歌曲练习,歌曲选“我的歌声里”那么歌曲谱变量内容变为“我的歌声里”,如下图4.1:图4.1 歌曲谱的改变此时先从TXT中读取字符串,歌曲列表为0时(对应下拉框选择第一个选项“我的歌声里”),把已经读取的字符串送入歌曲谱,那么界面左边的歌曲谱发生了改变,同时做了图4.2的初始化,包括即将演奏音阶的读取,前面板进度条总长度的自适应,歌曲谱送入剩余歌曲谱,即将演奏的第一个音为“3”,长度为“99”。

图4.2 选择歌曲后的初始化②按下乐谱的一个音“1”(举例为“1”也可为其他)那么程序先判断是否按下按下时,比较的结果为假,把“1”送入当前演奏音阶和演奏记录接下来把剩余曲谱中的第一个音“3”送入当前乐谱音阶剩余乐谱减一建议后的剩余乐谱第一个送入即将演奏音阶接着作比较“1”和“3”比较,不相等,于是正确数目不加1,否则加1图4.1 加分的判断③提示按键的变色由于之前比较“1”和“3”,沿线演奏错误,于是把红色属性(代表错误)送到“1”对应的前面板中右上角键盘“1”对应按键的属性节点-颜色中实现变色,延迟0.5秒后,把白色属性重新送入该按键、之后,把黄色属性(代表下一个音)送到即将演奏音阶对应的按钮中,等到下一次按键判断完后,恢复白色如此循环,直到把谱子中所有音阶演奏完后,做判断,弹窗提示你的得分这就是一个大致的流程。

➢谱子系统,变色系统刚才提到了许多关于“1”“3”变色等内容,他们属于我们定义的规则,那么接下来把谱子系统变色系统作介绍1~9:分别代表duo,re,mi,fa,suo,na,xi,duo+,re+;S:suo- ;N:na- ;X:xi-;M:mi+;回车:延迟0.4秒空格:延迟0.15秒“-”:延迟0.05秒变红色:演奏错误变黄色:此音阶时下一个要演奏的音阶变绿色:演奏正确变白色:默认颜色其实单单一个流程远没有把,程序框图中的每个部分都介绍到,由于要考虑到程序的完整性,细节处理很多,此处提一个比较重要的细节处理空格处理:在计算得分的时候,我们用演奏正确的数目除以总长度,此处的总长度并非为曲谱长度,而是去除了空格回车之后的曲谱长度因此要做如下图的处理,即将演奏为“默认”时空格个数加1,“默认”表示非音阶字符串。

相关文档
最新文档