基于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;可弹奏电子琴;生成安装软件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的乐器数字调音系统

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

基于单片机和蓝牙通讯的简易钢琴控制装置设计

基于单片机和蓝牙通讯的简易钢琴控制装置设计

236 •电子技术与软件工程 Electronic Technology & Software Engineering单片机技术• SCM Technology【关键词】简易钢琴 单片机 蓝牙通讯 红外感应1 引言智能机器人是一个集多功能于一体的控制系统,而音乐机器人是通过研发者写入控制程序,能够实现自动演奏音乐的一类仿真机器。

本设计以单片机为控制核心,通过驱动步进电机和电磁铁实现2-3种敲击木琴的演奏模式,即基于传感器的手动即时演奏、基于蓝牙通讯的手机APP 的片段演奏、基于单片机的整曲演奏。

2 装置硬件设计简易钢琴装置的设计需要单片机、步进电机、步进电机驱动、红外传感器模块、蓝牙模块、开关电源、限位开关、电磁铁、继电器模块、小木槌和木琴等器件。

简易钢琴的硬件控制框图如图1所示。

2.1 简易钢琴装置器件的选择(1)根据简易钢琴装置控制系统小巧轻便的特点,考虑到系统控制功能的实现情况,选择STC89C52RC 单片机作为装置的主控芯片。

(2)电机主要用来带动木锤作平行于琴键的定位运动,需要能准确启、停,且要求运行平稳。

本设计根据这些要求选择步进电机42BYG 进行驱动,选用TB6600步进电机驱动器,实现正反转控制和速度控制。

(3)电磁铁在本装置中用来控制木锤的上下敲击动作,选择Makeblock 公司的一款电磁铁;另外还给电磁铁配备了继电器模块实现单片机对电磁铁的控制。

(4)手指检测传感器用来检测到手指落下的位置并能发送给单片机从而驱动木锤敲击实际的键盘,要具有一定的抗干扰能力和较高的灵敏度,选择7组红外单向反射式传感器,有效距离2cm-30cm 可满足设计所需,可通过基于单片机和蓝牙通讯的简易钢琴控制装置设计文/宋雨露 朱清慧调整电位器旋钮改变检测距离。

(5)根据要求要实现通过手机虚拟键盘弹奏钢琴并由蓝牙模块发送给单片机,从而控制钢琴自动演奏。

选择一款常用的HC-05蓝牙模块作为地面通讯站。

基于LabVIEW的简易键盘电子琴设计

基于LabVIEW的简易键盘电子琴设计
收 稿 日期 : 2 0 1 7— 0 7— 2 5
作 者 简介 : 舒 景 东( 1 9 9 6 一) , 男, 湖 南怀 化人 , 本 科在 读 , 研究方向: 物联 网。
第 4期
舒景 东, 等: 基于 L a b V I E W 的 简易键盘 电子 琴设 计
6 7
括 点 、 数 据端 『 j 、 连 线 。节 点 的类 型 包 括 函数 、 子
3 简 易 键 盘 电子 琴 的设 计
电 子琴 发 } f J 的 不 同的声 音是 由不 同频率 波形 经 过放 大 电路 l f 耳 经扬声器后产生的 , 一 定 频 率 的 声 音
琴 的 功能 。
关键词: L a b V I E W; 键盘 ; 电子琴 中 图分类 号 : T P 3 9 1 . 9 文献 标 识码 : A
L a b V I E W 是美国 N I 公 司开 发 的 功能 强 大 的 数 据采 集处 理 软件 , 同时也 是 有效 的通 用 编程 系统 , 提 供 图形 化 的编程 界 面 , 采 用 的 图形 化 程 序 语 言称 为 “ G” 语 言, 类似于 S i mu l i n k , 将 不 同模 块 连 接 起 来 构
摘 要: 本 文主要 论 述 了以 L a b V I E W 为 开发软 件设 计 简 易八 音键 盘 电子琴 的 原理 。播 放 声音
的子 V I 使 用 正 弦波形模 块产 生特 定 频率 的 波 形 输入 到播 放 波形 模 块 , 最后 L a b V I E W 通 过 调 用 电
脑扬声器发 出对应的声音 。将 用于检测“ 键按 下” 的事件 结构放入 Wh i l e 循环结构 中实现循环检 测, “ 键按下” 的事件结构通过搜 索一维数组实现特定按键 的判别 , 调用播放声音的子 V I 实现 电子

用电脑软件自制流行钢琴歌曲音乐

用电脑软件自制流行钢琴歌曲音乐

清华大学基于LABVIEW钢琴界面设计课程名称: LABVIEW程序设计题目: LABVIE钢琴界面设计系统院系:计算机学院组名:张大伟*员:***授课教师:***日期:2018年 6 月10 日本实验是基于LABVIEW软件及mySQL制作的按键钢琴设计内容摘要整个装置可以完成实时弹奏,实时记录弹奏乐谱;还可以按照先前记录下来的乐谱播放钢琴曲。

系统界面采用了拟物化的设计风格,古风字体,后现代化的虚拟按键。

设计总体思想是利用mySQL的8个数字I/O通道作为琴键输入,通过LABVIEW编程合成出波形数据,经过D/A变换后通过Audio Out端口放大输出的。

关键词:LabVIEW mySQL 按键钢琴拟物化第一章虚拟钢琴设计的目的与意义LABVIEW在测控领域的应用非常广泛。

有别于其他编程语言其特点、应用大致可分为如下几个方面:测试测量:LABVIEW最初就是为测试测量而设计的,因而测试测量也就是现在LABVIEW最广泛的应用领域。

经过多年的发展,LABVIE 在测试测量领域获得了广泛的承认。

至今,大多数主流的测试仪器、数据采集设备都拥有专门的LABVIEW驱动程序,使用LABVIEW可以非常便捷的控制这些硬件设备。

同时,用户也可以十分方便地找到各种适用于测试测量领域的LABVIEW工具包。

这些工具包几乎覆盖了用户所需的所有功能,用户在这些工具包的基础上再开发程序就容易多了。

有时甚至于只需简单地调用几个工具包中的函数,就可以组成一个完整的测试测量应用程序。

快速开发:根据笔者参与的一些项目统计,完成一个功能类似的大型应用软件,熟练的LABVIEW程序员所需的开发时间,大概只是熟练的C程序员所需时间的1/5左右[1]。

所以,如果项目开发时间紧张,应该优先考虑使用LABVIEW,以缩短开发时间。

仿真:LABVIEW包含了多种多样的数学运算函数,特别适合进行模拟、仿真、原型设计等工作。

在设计机电设备之前,可以先在计算机上用。

基于LabVIEW的便携式按键钢琴

基于LabVIEW的便携式按键钢琴

虚拟仪器技术及应用--基于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曲谱,根据曲谱控制钢琴的按键的变色从而作为演奏提示,最后不考虑节奏只考虑曲谱声调的正确率做打分。

  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,“默认”表示非音阶字符串。

相关文档
最新文档