基于MATLAB的数字电子琴设计
基于MATLAB的音乐电子琴制作

基于MATLAB的音乐电子琴制作简述:电子琴的每个音阶均对应一个特定频率的信号,通过调用数字信号发生器产生一系列指定的频率的声音,从而达到虚拟的电子琴的功能。
本次设计是基于MATLAB GUI 程序实现的一个音乐键盘仿真系统。
1 功能介绍总体设计框图如下图所示,其包括单音键盘发音模块,音效长短的选择模块,包络的选择模块,实现键盘代替鼠标输入模块,双音多频模块,演奏音乐模块,播放歌曲,视频模块包括对文件播放的暂停,停止和复位,多键盘输入对输入后统一播放模块和画图模块。
Matlab的数据采集工具箱(DAT)提供了一系列的函数和命令来实现实时模拟信号的输出, 通过调用这些函数和命令可以直接控制声卡输出虚拟信号。
只需要一台带有普通多媒体声卡并安装了Matlab 软件的计算机就可以满足要求实现虚拟信号的输出, 系统结构简单方便。
交互界面如图1所示:图1 程序的交互界面1)单音键盘发音模块设计一个带参子函数实现键盘的发音功能,当实现需要实现音阶的播放时,只要调用这个子函数,并根据不同音阶、不同音调的频率改变子函数的参数即可。
2) 音效长短的选择模块制作一个button group的组控件分别选择不同的控件实现不同的音效长短,音效的长短是通过改变播放一个音阶的时间长短来实现的。
3)包络的选择模块制作一个button group的组控件分别选择不同的控件实现不同的包络,在模块一的基础上,设置选中不同的控件分别对应不同的包络,x为不同包络(如正弦波、三角波、指数等)的表达形式,将x与模块一中实现单音键盘发音的函数相乘时便可实现不同形式的衰减,实现音型的改变。
4)实现键盘代替鼠标输入模块根据计算机键盘上的不同按键对应不同的ASCII码的值,利用函数get()获取当前所按下的数字键对应的ASCII码的值,根据 ASCII码的值判断对应是按下键盘的值。
并执行相应音阶的功能键。
5)双音多频模块通过设置一个radio button 来实现双音多频的功能,设置一个全局变量,当选中该控件时,全局变量的值改变,即在带参的子函数中增加它的频率分量。
基于matlab的数字电子琴的完全指导手册

1.概述伴随计算机软硬件技术旳发展, 越来越多现实物品旳功能可以由计算机实现。
信号发生器原本是模拟电子技术发展旳产物, 到后来旳数字信号发生器也是通过硬件实现旳, 本文将给出旳则是通过计算机软件实现旳数字信号发生器。
目前有许多功能强仿真软件(如LabView、EWB)提功了多种模拟信号发生器旳功能, 从而并没有多少人专门去开发数字信号发生器软件, 虽然是特殊功能旳信号发生器也是基于仿真软件完毕旳, 不过数字信号发生器旳软件模块可以用来开发某些别旳软件, 如数字电子琴。
数字电子琴旳编程实现已经有许多人已经做过了(例如基于BASIC旳模拟电子琴[1]), 也出现了诸多功能较强大旳模拟电子琴软件, 如HappyEO、MidiPiano等。
2.软件设计2.1.软件旳功能软件旳功能由数字信号发生器和数字电子琴两部分构成。
(1)数字信号发生器旳功能可以产生正弦波、方波、三角波等常见旳波形旳数字信号, 并且提供了图形界面用于选择波形、频率、幅值与相位。
可以根据顾客指定旳波形和参数产生对应旳数字信号, 然后将数字信号写入声卡旳缓冲区, 最终由声卡播放出对应旳声音。
(2)数字电子琴旳功能数字电子琴旳功能是基于数字信号发生器旳, 通过调用数字信号发生器产生一系列指定旳频率旳声音, 从而到达虚拟旳电子琴旳功能, 界面中包括A.B.…、O 共15个琴键, 鼠标按下时即发声, 松开时发声停止。
2.2.设计原理数字信号发生器旳功能就是将数字信号通过D/A转换变成所需要旳模拟信号。
由于声卡自身具有D/A转换旳功能, 从而可以运用声卡在计算机了模拟信号发生器。
声卡旳D/A转换机理是定期将声卡缓冲区中旳内容转换成模拟信号并输出, 因此软件所做旳即是向声卡缓冲区中写数据。
以正弦信号为例, 其模拟信号计算公式如下为了实现数字信号旳发生, 在程序中先根据式(2)计算出需要寄存到缓冲区旳数据, 以数组旳形式寄存, 然后将数据放入声卡旳缓冲区。
MATLAB在电子琴制作与编程中的应用指南

MATLAB在电子琴制作与编程中的应用指南随着科技的不断发展,电子琴已经逐渐成为了一种受欢迎的音乐工具。
由于不限于传统的乐器结构,电子琴不仅可以模拟各种声音,还可以通过编程来实现更多的功能。
在电子琴的制作与编程过程中,MATLAB是一种常用且强大的工具。
本文将探讨MATLAB在电子琴制作与编程中的应用指南。
一、MATLAB简介与基本知识MATLAB是一种矩阵实验室,主要用于数学计算、数据处理、图像处理和建模等领域。
它提供了丰富的函数和工具箱,使得它成为了电子琴制作与编程的理想选择。
在使用MATLAB进行电子琴编程之前,我们需要对MATLAB有一定的了解与掌握。
首先,MATLAB具有强大的计算功能,可以进行各种复杂的数学运算。
这为电子琴的声音合成和信号处理提供了基础。
其次,MATLAB具有友好的图形界面和直观的编程语言,使得编写和调试电子琴的代码变得更加简单和高效。
最后,MATLAB还提供了广泛的工具箱,包括音频信号处理、数字滤波器设计等,这些工具箱可以方便地应用于电子琴的制作中。
二、电子琴声音合成与波形生成在电子琴制作中,声音合成和波形生成是其中的关键步骤。
使用MATLAB,我们可以通过编程来生成各种不同的声音效果。
首先,我们可以利用MATLAB中的信号处理工具箱来设计并生成特定频率的音调。
例如,使用MATLAB的sine函数可以生成正弦波,而使用square函数可以生成方波。
可以根据实际需求自定义音调,并根据自定义的频率生成相应的波形。
这使得我们能够根据不同的琴键来生成不同的音调,从而实现电子琴的声音合成。
此外,通过在波形中引入不同的参数变化,如振幅、频率、相位等,我们还可以模拟琴键按下和弹奏的过程中产生的音效,使得电子琴的音乐更加真实和生动。
这些参数可以根据实际需求进行调整,从而实现不同的音效变化。
三、电子琴控制与界面设计除了声音合成和波形生成,电子琴还需要实现用户与乐器之间的良好交互。
在电子琴的制作中,我们可以通过MATLAB来设计和实现电子琴的控制与界面。
基于MATLAB数字电子琴的音乐喷泉控制系统设计

基于MATLAB数字电子琴的音乐喷泉控制系统设计作者:陈禄洪邵群英蔡伟强来源:《魅力中国》2018年第46期摘要:本设计是以MATLAB为出发点,STM32F103系列作为硬件支撑,并且搭载音乐喷泉效果的控制系统,通过软硬件结合,设计出友好的人机交互GUI界面,實现了基于MATLAB数字电子琴的音乐喷泉控制系统。
关键词:MATLAB;数字电子琴;音乐喷泉一、引言电子琴是艺术与现代电子技术融合的产物,是新时代乐器的骄子,它不但可以帮助我们的音乐老师进行传统音乐文化的教育教学工作,而且它又具备现代音乐,特别是电子音乐、电脑音乐的基本结构、特征,因而使我们的教师在音乐教学中更直接、更简便[1],对培养学生的音乐感受力,开发学生的想象力,加深学生对音乐的记忆力及提高学生的听辨力和鉴赏力都有积极作用。
而一部真正好的电子琴,是让学习者能更好融入到电子琴中。
基于此种情况,我们提出了基于MATLAB数字电子琴的音乐喷泉控制系统设计,本设计利用MATLAB的GUI界面来进行信号处理程序设计仿真出电子琴,并结合单片机实现音乐喷泉音响的视觉效果和听觉盛宴,更加激发学习者对学习电子琴的兴趣与耐心。
二、软件设计此部分设计大部分在MATLAB的GUI界面中完成,在界面设计之前弄清楚了不同音阶对应的不同频率的关系(如图1)。
在GUI界面设计中,用画图工具把电子琴的框架设计出来后,在每个琴键的回调函数中添加对应音阶的代码,编译运行后,能实现每个琴键可鼠标控制,且发出对应音阶的声音。
音阶代码如图2(以do为例)三、硬件设计此数字电子琴的音乐喷泉控制系统的硬件部分,主要是实现以硬件也能弹奏和喷泉的功能。
本设计的芯片采用STM32F103系列,外接12个直插轻触按键来模拟对应的琴键,控制12个音符喷头的启动,形成动感喷泉效果。
如图3(一)外接12个直插轻触按键来模拟对应的琴键,形成一个小型的直接按键弹奏的电子琴,来直接控制喷泉的触发。
简易智能电子琴的设计

简易智能电子琴的设计摘要:本文介绍了一种基MCU的智能电子风琴的简单设计。
作为本工作主要控制核心的是STC89C52芯片,14个按键、无源扬声器、单片机复位系统等模块构成本作品的核心主控模块。
其中14个按键为2*7矩阵按键形式对应音符高音、中音的1、2、3、4、5、6、7,利用定时器去调节输出的脉冲频率,让蜂鸣器实现高音、中音的1、2、3、4、5、6、7的发音且与此同时让LED发出亮光。
本文其中硬件原理图是用Altium-designer绘制的,软件的编程是通过KeiluVision4对电子琴所编程,再通过proteus绘制仿真图并进行仿真调试,后将准确无误的程序烧录到STC89C52芯片中。
关键词:STC89C52单片机;简易电子琴;矩阵键盘;蜂鸣器第一章总体方案1.1系统设计要求本系统由两个部分构成,一个是自动演奏音乐,另一个手动按键弹奏音乐。
本作品是用C语言对单片机进行编程,使得扬声器能发出14个所需音阶,利用之中的定时器可实现此功能,再将音符所对应的频率存储在程序定义的表中。
具体要求如下:1.能正常演奏和弹奏音乐。
2.14个按键需对应音乐之中高音、中音的1、2、3、4、5、6、7的发音。
3.设置七个红色的LED指示灯,当按键按发声部件发声时需伴随指示灯的变化。
4.按键要按一定顺序摆放,需要与音阶一一对应.5.能自由切换弹奏功能与演奏功能1.2系统总体框图此系统通过14个按键输入所需要的音符,作为电平信号传达给主控核心,主控核心通过辨认,用特定方法将其转换为输出信号,输入至扬声器使其发出目标声音,就此达到能够弹奏不同音符的目的。
本系统主要由电源电路、最小单片机系统、发声模块、LED显示模块和按键模块等所构成,其中用两个按键去实现弹奏和播放功能切换。
上图为此作品系统框架图,主控模块用的是STC89c51最小单片机系统,用9个I/O口作2*7矩阵式按键的接口,用9个I/O口作LED指示灯的接口,扬声器需占用一个I/O口作接收信号作用。
基于MATLAB的数字电子琴设计

*****************实践教学*******************题目:基于MATLAB的数字电子琴设计专业班级:姓名:学号:指导教师:成绩:摘要本次课设的任务是基于MATLAB设计一个数字电子琴,首先实现数字信号发生器的设计。
数字信号发生器是一种基于软硬件实现的波形发生器,可以实现各种基本波形的产生。
在工程的各种复杂信号是由这些基本信号叠加产生,因此它在工程分析和实验教学中有着广泛的应用,可用MATLAB实现。
MATLAB是一个数据分析和处理功能十分强大的工程实用软件,它的数据采集工具箱为实现数据的输入和输出提供了十分方便的函数和命令,在数字信号处理方面方便实用。
本文首先详细介绍了基于MATLAB的数字发生器的设计过程,实现了简单波形(正弦波、方波、三角波、锯齿波、白噪声、脉冲、阶跃)信号的具体实现方法。
其次介绍了利用该数字信号发生器产生的正弦波信号和声卡设计的简易电子琴。
关键词:MATLAB;数字信号发生器;简易电子琴目录前言 (1)一、数字信号发生器 (2)1.1图形用户界面的简介 (2)1.2设计流程 (2)1.3波形实现的基本原理 (3)二、电子琴的实现 (5)2.1简易数字电子琴的简介 (5)2.2实现原理 (5)三、基于MATLAB的仿真及结果分析 (6)3.1 GUI界面 (6)3.2编写M文件 (7)总结 (14)参考文献 (14)附录 (15)致谢 (22)前言MATLAB(矩阵实验室)是Matrix Laboratory的缩写,是一种用于算法开发、数据可视化、数据分析以及数值计算的高级计算机语言和交互式环境。
MATLAB 可以进行矩阵运算、绘制函数图像和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
Matlab环境下的图形用户界面(GUI)是由窗口、光标、按键、菜单、文字说明等对象构成的一个用户界面,可在图形用户界面内根据需要搭建图形,并对控件的回调函数进行编写,完成最完整的GUI界面编辑即可运行。
钢琴键设计与实现基于matlab的开题报告

钢琴键设计与实现基于matlab的开题报告钢琴键设计与实现基于Matlab的开题报告一、研究背景钢琴是一种传统音乐乐器,其键盘设计和制造一直是科技和艺术的结合体。
钢琴键盘由黄铜锤和带有缝隙的木质键盘组成。
钢琴键可以控制琴弦之间的间隔和弦的音高,通过键盘发出声音。
对于钢琴键盘的设计,不仅需要考虑键盘的外形美学,还要确保声学效果的高品质。
因此,设计和制造钢琴键盘需要考虑多种条件,如材料、形状、重量、弹力等,这些因素将直接影响到钢琴的品质和声音。
二、研究目的本项目旨在设计并实现基于Matlab的钢琴键盘。
研究将深入挖掘钢琴键盘的设计和制造方法,借助Matlab软件结合先进的计算和仿真技术来设计和构建高品质的钢琴键盘。
本研究期望实现以下目标:1.分析钢琴键盘的设计和制造要素,确定各种参数的规范范围。
2.结合Matlab的计算机仿真技术,对钢琴键的材料、形状、重量、弹力进行建模和仿真。
3.设计并实现基于Matlab的钢琴键盘,验证仿真结果。
三、研究内容1. 钢琴键盘的设计和制造要素分析通过对钢琴键盘形状、材料、重量、弹力等关键参数进行详尽的分析和研究,确定了钢琴键盘设计和制造的规范范围和要素。
由此,为后续的模拟和仿真提供了依据。
2. 基于Matlab的钢琴键建模和仿真使用Matlab软件进行钢琴键建模,模拟钢琴键弹力、材料、形状等关键参数进行仿真,评估不同参数下的钢琴键的声音品质。
通过建模和仿真,预测键盘的性能表现、调整参数,从而满足音乐家和录音工程师的实际需求。
3. 基于Matlab的钢琴键盘实现在通过建模和仿真分析之后,基于Matlab设计实现钢琴键盘。
并对实现结果进行实验验证和分析。
四、研究意义本研究将结合Matlab的计算机仿真技术和音乐乐器软件系统设计和制造出高品质的钢琴键盘。
此外,本研究的第一阶段将分析键盘设计和制造方面的关键要素,为其他音乐乐器的键盘设计和制造奠定基础。
五、研究计划1.确定钢琴键盘的设计范围。
基于MATLAB的音乐电子琴制作

基于MATLAB的音乐电子琴制作简述:电子琴的每个音阶均对应一个特定频率的信号,通过调用数字信号发生器产生一系列指定的频率的声音,从而达到虚拟的电子琴的功能。
本次设计是基于MATLAB GUI 程序实现的一个音乐键盘仿真系统。
1 功能介绍总体设计框图如下图所示,其包括单音键盘发音模块,音效长短的选择模块,包络的选择模块,实现键盘代替鼠标输入模块,双音多频模块,演奏音乐模块,播放歌曲,视频模块包括对文件播放的暂停,停止和复位,多键盘输入对输入后统一播放模块和画图模块。
Matlab的数据采集工具箱(DAT)提供了一系列的函数和命令来实现实时模拟信号的输出, 通过调用这些函数和命令可以直接控制声卡输出虚拟信号。
只需要一台带有普通多媒体声卡并安装了Matlab 软件的计算机就可以满足要求实现虚拟信号的输出, 系统结构简单方便。
交互界面如图1所示:图1 程序的交互界面1)单音键盘发音模块设计一个带参子函数实现键盘的发音功能,当实现需要实现音阶的播放时,只要调用这个子函数,并根据不同音阶、不同音调的频率改变子函数的参数即可。
2) 音效长短的选择模块制作一个button group的组控件分别选择不同的控件实现不同的音效长短,音效的长短是通过改变播放一个音阶的时间长短来实现的。
3)包络的选择模块制作一个button group的组控件分别选择不同的控件实现不同的包络,在模块一的基础上,设置选中不同的控件分别对应不同的包络,x为不同包络(如正弦波、三角波、指数等)的表达形式,将x与模块一中实现单音键盘发音的函数相乘时便可实现不同形式的衰减,实现音型的改变。
4)实现键盘代替鼠标输入模块根据计算机键盘上的不同按键对应不同的ASCII码的值,利用函数get()获取当前所按下的数字键对应的ASCII码的值,根据 ASCII码的值判断对应是按下键盘的值。
并执行相应音阶的功能键。
5)双音多频模块通过设置一个radio button 来实现双音多频的功能,设置一个全局变量,当选中该控件时,全局变量的值改变,即在带参的子函数中增加它的频率分量。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
*****************实践教学*******************题目:基于MATLAB的数字电子琴设计专业班级:姓名:学号:指导教师:成绩:摘要本次课设的任务是基于MATLAB设计一个数字电子琴,首先实现数字信号发生器的设计。
数字信号发生器是一种基于软硬件实现的波形发生器,可以实现各种基本波形的产生。
在工程的各种复杂信号是由这些基本信号叠加产生,因此它在工程分析和实验教学中有着广泛的应用,可用MATLAB实现。
MATLAB是一个数据分析和处理功能十分强大的工程实用软件,它的数据采集工具箱为实现数据的输入和输出提供了十分方便的函数和命令,在数字信号处理方面方便实用。
本文首先详细介绍了基于MATLAB的数字发生器的设计过程,实现了简单波形(正弦波、方波、三角波、锯齿波、白噪声、脉冲、阶跃)信号的具体实现方法。
其次介绍了利用该数字信号发生器产生的正弦波信号和声卡设计的简易电子琴。
关键词:MATLAB;数字信号发生器;简易电子琴目录前言 (1)一、数字信号发生器 (2)1.1图形用户界面的简介 (2)1.2设计流程 (2)1.3波形实现的基本原理 (3)二、电子琴的实现 (5)2.1简易数字电子琴的简介 (5)2.2实现原理 (5)三、基于MATLAB的仿真及结果分析 (6)3.1 GUI界面 (6)3.2编写M文件 (7)总结 (14)参考文献 (14)附录 (15)致谢 (22)前言MATLAB(矩阵实验室)是Matrix Laboratory的缩写,是一种用于算法开发、数据可视化、数据分析以及数值计算的高级计算机语言和交互式环境。
MATLAB 可以进行矩阵运算、绘制函数图像和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。
Matlab环境下的图形用户界面(GUI)是由窗口、光标、按键、菜单、文字说明等对象构成的一个用户界面,可在图形用户界面内根据需要搭建图形,并对控件的回调函数进行编写,完成最完整的GUI界面编辑即可运行。
本文主要利用MATLAB的图形用户界面设计数字信号发生器,在数字信号发生的基础上实现简易电子琴的设计。
信号发生器又称信号源或振荡器,是一种能提供各种频率、波形和输出电平电信号的仪器,数字信号发生器只是信号发生器的一种,在生产实践和科技领域中有着广泛的应用。
信号发生器按信号波形可分为正弦信号、函数(波形)信号、脉冲信号和随机信号发生器等四大类。
能够产生多种波形,如正弦波、三角波、锯齿波、矩形波(含方波)、阶跃信号、脉冲信号的电路被称为函数信号发生器。
本文设计了一种基于MATLAB图形用户界面的可以产生正弦波、方波、三角波、锯齿波、白噪声、脉冲信号、阶跃信号的虚拟数字信号发生器。
一、数字信号发生器1.1图形用户界面的简介图形用户界面即Graphical User Interface,简称GUI,又称图形用户接口。
Matlab环境下的图形用户界面(GUI)是由窗口、光标、按键、菜单、文字说明等对象构成的一个用户界面。
用户通过一定的方法(如鼠标或键盘)选择、激活这些图形对象,使计算机产生某种动作或变化,比如实现计算、绘图等。
MATLAB的用户,在指令窗中运行demo 打开那图形界面后,只要用鼠标进行选择和点击,就可产生丰富的内容。
对图形用户界面的操作一般有两个部分,首先按照设计的原理、要求,根据需要选择适当的图形对象搭建合理的GUI界面;然后对每个控件的回调函数在M文件内进行编写,使搭建的GUI界面能够运行。
数字信号发生器的设计所使用的工具即GUI界面,用到的图形对象有pushbutton、Aexs、Slider、Static Text、Edit Text。
模拟了七种信号:正弦波、方波、三角波、阶跃信号、斜波信号、锯齿波以及白噪声信号。
具体的实现原理如下。
1.2设计流程根据设计的要求分析出数字信号发生器的GUI界面构图,然后在MATLAB 的workplace界面中输入guide,打开GUI界面。
在GUI界面中搭建好具体的数字信号发生器的界面,并对每个控件的回调函数进行编写、保存M文件。
运行,若结果正确,再同一个GUI界面中搭建好电子琴的GUI界面,利用数字信号发生器产生的正弦波,对电子琴每个控件的回调函数进行编写、保存M文件。
运行,观察仿真结果。
若数字信号发生器的仿真结果不正确,检查控件的回调函数,修改并保存M文件,再次运行观察仿真结果。
具体的设计流程图如下:1.3波形实现的基本原理1.3.1正弦波的实现正弦信号的数学表达式如下:)2sin()sin(ϕπϕ+=+=ft A wt A y (1.1)其中:A 为幅值;f 为频率;φ为相位。
在MATLAB 中,由于处理对象均是离散的数字信号,将时间变量离散化并构造成一个一维数组用0.1:/1:0s f t = 其中:fs 为采样频率。
但s f 的值不能太大,否则波形显示会很慢。
相应的正弦波信号的数字信号表达式为)2sin()(ϕπ+∆=∆t fn A t n y (1.2)幅值、频率、相位参数可以由用户界面上的滑动条或编辑框输入。
在分别得到t 与y 的离散值后,用plot 作图函数即可获得相应波形显示。
1.3.2方波信号的实现方波信号的数学表达式为),(duty t square y = (1.3)该式可直接生成一个周期为2π,峰值为1±,占空比为duty 的方波信号,duty 的默认值为50%。
在MATLAB 中可得到幅值、频率、相位可调的方波信号函数)2(ϕπ+=ft Asquare y (1.4)1.3.3三角波信号的实现在MATLAB 中,可以用函数sawtooth 直接生成一个三角波信号,该函数可生成一个周期为2π,峰值为1±,最大值出现在2width π⨯位置的三角波。
利用该函数,可得到幅值、频率、相位可调的三角波信号函数)2(ϕπ+=ft Asawtooth y (1.5)1.3.4锯齿波信号的实现由于锯齿波信号与三角波信号相似,所以将sawtooth 函数中的width 参数值设为1,可得到锯齿波。
该函数得到的幅值、频率、相位可调的锯齿波信号函数)1,2ϕπ+=ft Asawtooth y ( (1.6)1.3.5脉冲信号的实现由于脉冲信号与方波信号波形相似,用方波信号函数square 函数为基础,将其函数值加1,可得到最大值为2,最小值为0的脉冲波形,原函数的duty 参数可用来调节脉冲的宽度。
用该函数,得到幅值、频率、相位可调的脉冲信号函数2/)1)1,2(++=ϕπft square A y (。
(1.7)1.3.6阶跃信号的实现由于阶跃信号比较特殊,可用函数直接表示,其函数表达式为)}()(0{00t t A t t y >+<= (1.8)1.3.7白噪声信号的实现白噪声信号是指功率谱密度在整个频域内均匀分布的噪声。
白噪声的实现可借助于MATLAB 中的randn 函数,它的功能是产生一个均值为0,标准差为1的随机数列或矩阵函数,可得到一个均值为0,标准差为a 的fs 维的随机矩阵。
二、电子琴的实现2.1简易数字电子琴的简介在设计界面中包含A、B、C、D、E、F、G共7个琴键,由于低音频率区分不是很明显,此次课设选择的是中音频率,其中每个按键对应一个频率的正弦波信号,各按键对应的信号频率分别为392、440、494、523、587、659、698、784Hz。
当用鼠标按下相应的键时发声,松开时发声停止,然后将数字信号写入声卡的缓冲区,由声卡播放出相应的声音。
当用鼠标按下对应的键时即可发出相应频率的声音。
2.2实现原理电子琴的实现基于之前设计的数字信号发生器,选择数字发生器产生的正弦波信号作为发声及显示波形,由回调函数和数字信号发生器结合起来,实现对波形的调用。
每个键对应一定的频率,在各个键的回调函数中设置好频率及频谱显示,实现每个键有自己特定频率的功能,为了使最终仿真结果更好,选择音阶中音调高的频率作为调试频率。
当键按下的时候,首先由相应的键和数字信号关联起来,随后将数字信号写入声卡的缓冲区,由声卡发出相应频率的声音,并显示波形及对应频率的频谱图,当键松开时声音即停止。
此次电子琴的设计实现了正弦波显示、频谱显示以及发声的功能,从而实现虚拟电子琴的模仿功能。
具体的实现流程图如下:开始打开MATLAB搭建电子琴的GUI界面执行并观察仿真结果结束图2.1 电子琴的实现流程图三、基于MATLAB的仿真及结果分析3.1 GUI界面3.1.1搭建数字信号发生器的GUI界面搭建的GUI界面如下图3.1:图3.1 数字信号发生器的GUI界面3.1.2电子琴的GUI界面。
搭建的数字电子琴GUI界面如图3.2所示:图3.2 数字电子琴的GUI界面G该界面主要由琴键组成,每个按键对应一定的频率,模拟电子琴的发声功能,它的波形显示及频谱图在数字信号发生器中。
3.2编写M文件3.2.1数字信号发生器的M文件(1)正弦信号的实现由正弦信号的数学表达式可知在程序中用到的具体表达式为ftpia=(3.1)y+*q*sin())/360*2(将时间变量离散化并构造成一个一维数组,要求采样频率不能太大,否则波形显示会很慢(2)方波信号的实现用square函数直接生成一个方波信号,程序中使用的具体函数为)50,***2*t f pi square A y (= (3.2) (3)三角波的实现函数sawtooth 直接生成一个三角波信号,程序中用到的具体实现函数为)5.0,***2(*t f pi sawtooth A y = (3.3) (4)锯齿波信号的实现具体的函数实现形式为)1,***2(*t f pi sawtooth A y = (3.4) (5)脉冲信号的实现抽样频率为8000,时间范围为[0,1],坐标抽为[0,a+1]。
得到的幅值、频率、相位可调的脉冲信号函数。
具体的函数2/)11),360/*(**2(*++=q t f pi square a y ( (3.5)(6)阶跃信号的实现0t 取1,A 取1,t 取[0,2π],时间间隔为π/100。
阶跃信号的函数表达式为)}()(0{00t t A t t y >+<= (3.6)(7)白噪声信号的实现白噪声是指功率谱密度在整个频域内均匀分布的噪声。
白噪声的实现可借于MATLAB 中的randn 函数,产生一个均值为0,标准差为1的随机数列或矩阵该函数可得到一个均值为0,标准差为a 的fs 维的随机矩阵。
)5.0,***2(*t f pi sawtooth A y = (3.7)3.3仿真结果数字信号发生器的仿真结果如下: (1)正弦波的仿真结果图3.3 数字信号发生器的正弦波波形(2)方波信号的仿真结果图3.4 方波信号的波形(3)三角波信号仿真结果图3.5 三角波信号的波形(4)阶跃信号仿真结果图3.6 阶跃信号的仿真结果(5)斜波信号图3.7 斜波信号的仿真结果(6)锯齿波信号的仿真结果图3.8 阶跃信号的仿真结果(7)白噪声仿真结果(1)按键A的仿真结果图3.10 按下A键,电子琴演奏时的效果(2)按键B的仿真结果图3.11 按下B键,电子琴演奏时的效果(3)按键C的仿真结果图3.12 按下C键,电子琴演奏时的效果总结本次的课程设计的任务是基于MATLAB设计一个数字电子琴,首先设计一个数字信号发生器。