ImageVerifierCode 换一换
格式:DOCX , 页数:12 ,大小:366.91KB ,
资源ID:5773027      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5773027.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(matlab电子琴说明书.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

matlab电子琴说明书.docx

1、matlab电子琴说明书基于MATLAB的数字电子琴设计日期:2011-3-25姓名:王之海、郑俊超、张楠、杜坤组号:第一组1. 目标与范围 随着计算机软硬件技术的发展,越来越多现实物品的功能能够由计算机实现。也就是我们经常所说的将硬件设备软件化,这样做的好处很多,比如说将成本降低,易于实现,修改容易并且可以进行仿真。现在比较成熟的这类软件有很多,比如说LABVIEW。基于这样的考虑我们进行了数字电子琴的模拟仿真实验。这样一个实验的进行会为以后的学习工作中奠定一定的基础。2. 信号处理原理数字信号发生器的功能就是将数字信号通过D/A转换变成所需要的模拟信号。由于声卡本身具有D/A转换的功能,从

2、而可以利用声卡在计算机了模拟信号发生器。声卡的D/A转换机理是定时将声卡缓冲区中的内容转换成模拟信号并输出,所以软件所做的即是向声卡缓冲区中写数据。以正弦信号为例,其模拟信号计算工时如下 为实现数字信号的发生,在程序中先根据公式计算出需要存放到缓冲区的数据,以数组的形式存放,然后将数据存放入声卡的缓冲区。对于方波,y=sign(sin(2*pi*f*t+p)对于其它波形,可以用类似方法实现。 软件的流程图如图所示 数字电子琴的流程图3. 系统的功能分析软件的功能由数字信号发生器和数字电子琴两部分组成。(1) 数字信号发生器的功能 能够产生正弦波、方波、三角波等常见的波形的数字信号,并且提供了图

3、形界面用于选择波形、频率、幅值与相位。能够根据用户指定的波形和参数产生相应的数字信号,然后将数字信号写入声卡的缓冲区,最后由声卡播放出相应的声音。(2)数字电子琴的功能 1)数字电子琴的功能是基于数字信号发生器的,通过条用数字信号发生器产生一系列指定的频率的声音,从而达到虚拟的电子琴的功能,界面中包含do/rai/mi共16个琴键,鼠标按下时即时发声0.5秒;并可通过键盘敲击按键进行琴音播放。 2)可播放wav格式文件; 3)进行图形绘制;4)进行背景色的更换;5)添加(去除)网格、边框功能;6)退出程序。4. 系统的界面设计根据软件的功能需求,可设计如图所示的操作界面电子琴的GUI界面主要包

4、括三个部分:第一为波形控制区,可进行波形等各种参数设置;第二是按键控制区,用于对各种按键进行操作;第三是绘图命令区,用于手动输入命令进行绘图,可以编制多种复杂命令追溯原音频率。第四是琴键区,包括从do到#do共16个音键;第五为背景颜色调整区,为下拉菜单,可对背景颜色进行选择。5. 系统的模块设计 模块化就是把程序划分成独立命名且可独立访问的模块,每个模块完成一个子功能,把这些模块集成起来构成一个整体,可以完成指定的功能满足用户需求。根据人类解决一般问题的经验,如果一个问题由两个问题组合而成,那么它的复杂程度大于分别考虑每个问题时的复杂程度之和,也就是说把复杂的问题分解成许多容易解决的小问题,

5、原来的问题也就容易解决了。这就是模块化的根据。对GUI的模块进行如图所示的模块划分:数字电子琴的模块划分5.1键盘模块设计后台程序设计对每个对象进行回调函数的设计,首先介绍do#do按钮的设计,先进行回调函数设计,满足在按下相应按钮时输入对应的频率。16键盘模块的设计是在GUI的界面上,把键设计出来后,激活后自动生成的,只需要按照D/A要求进行代码的转换。例如对do键的程序设置为:function do_Callback(hObject, eventdata, handles) 根据回到函数找到do键的主函数位置,然后由difsound函数来进行编写,其格式为:difsound(handles

6、.option,264,handles.A,handles.phase);其它键程序程序的编写都是基于这一原理进行编写的。在这里不在一一介绍。5.1控制模块设计控制模块的设计为在大模块的基础上进行波形、频率、幅值、相位以及默认值、开始按钮的添加,其原理与键的原理是一样的,也是通过callback函数来进行函数的编写。例如对波形的编写,可由callback来找到程序的位置,其程序为:function option_Callback(hObject, eventdata, handles)然后由get函数进行函数参数的调取为:handles.option=get(hObject,Value);gu

7、idata(hObject,handles);同样也是用这样的方法对频率、幅值、相位进行编写。 而对默认值的编写则是比较麻烦的,通过set函数来对默认值进行设置。其程序为:set(handles.option,Value,1);set(handles.f,String,10);set(handles.A,String,20);set(handles.phase,String,0);handles.option=1;handles.f=10;handles.phase=0;handles.A=20;guidata(hObject,handles);5.2波形选择功能本程序是通过difsound函

8、数来驱动声卡进行发音的,然后再通过switchcaseend语句来调取不同的波形,从而发出不同的声音。其程序为:function difsound(option,A,phase,f)Fs=44100;t=0:1/Fs:0.5;switch optioncase 1 y=A*sin(2*pi*f*t+phase); case 2 y=A*sign(sin(2*pi*f*t+phase); case 3 y=A*sawtooth(2*pi*f*t+phase,0.5);case 4 y=A*sawtooth(2*pi*f*t+phase);case 5 y=A*(2*rand(size(t)-1)

9、; otherwise errordlg(please choose another one or set to the defalt first);endplot(t,y);axis tight;wavplay(y,Fs);5.3键盘关联功能的实现除了界面键盘区可以用鼠标点击操作来实现按键功能,我们还设计了用电脑键盘按键来实现触发动作。使用的对应按键从Z至L程序如下:function figure1_KeyPressFcn(hObject, eventdata, handles)switch get(hObject,CurrentKey)case z do_Callback(hObject,

10、eventdata,handles);case s udo_Callback(hObject,eventdata,handles);case x rai_Callback(hObject,eventdata,handles);case d urai_Callback(hObject,eventdata,handles);case c mi_Callback(hObject,eventdata,handles);case f umi_Callback(hObject,eventdata,handles);case v fa_Callback(hObject,eventdata,handles);

11、case g ufa_Callback(hObject,eventdata,handles);case b so_Callback(hObject,eventdata,handles);case h uso_Callback(hObject,eventdata,handles);case n la_Callback(hObject,eventdata,handles);case j ula_Callback(hObject,eventdata,handles);case m xi_Callback(hObject,eventdata,handles);case k uxi_Callback(h

12、Object,eventdata,handles);case , updo_Callback(hObject,eventdata,handles);case l uudo_Callback(hObject,eventdata,handles);otherwiseerrordlg(z to , are C# , s to l are D#);end5.4背景颜色菜单函数(以红色为例)我们还设置了一个改变背景颜色的功能!程序如下:function red_Callback(hObject, eventdata, handles)set(gcbf,Color,r);set(gcbo,Checked,

13、on);set(handles.yellow,Checked,off);set(handles.green,Checked,off);5.5绘图控制函数function paint_Callback(hObject, eventdata, handles)com=get(handles.hedit,String);if isempty(com) eval(com); end5.6 playwav函数播放wav格式的文件也是我们加入的一个特色文件!程序如下:function playwav_Callback(hObject, eventdata, handles)FileName,PathNam

14、e=uigetfile(*.wav,选择WAV文件);y,Fs,bits=wavread(FileName); sound(y,Fs,bits);6. 系统运行情况演示键盘弹奏波形图绘图-正弦波波形图示例加上网格线红色背景绿色背景播放wav格式功能7. 结论与展望本项目由王之海、郑俊超、张楠、杜坤协作完成,其中由王之海、张楠来完成程序的研发和调试以及实验报告的书写,郑俊超、杜坤两人来完成电子琴GUI界面的设计与绘制。在学习工程信号分析这门课的过程中,通过伍老师布置的MATLAB实践性作业,使我们在很短时间内学到了MATLAB基础性编程和GUI界面设计,以及对MATLAB强大功能的了解,对我们以

15、后工作和学习打下了良好的铺垫。项目完成后四人共同对本项目进行讨论交流,已达到互相学习,共同进步的效果,以实现本项目的真正目的。但毕竟第一次接触到MATLAB,入门到提高还有很长的路要走,尤其是对于MATLAB的一些指令学的还不够到位,还需继续努力,继续学习。通过对电子琴此程序的研究与设计,对我们以后论文的书写打下了坚实的基础,同时也使思想提前进入了对论文的思考,这些无疑是给我们提供了一个很好的平台。8.不足之处在整个过程中由于时间仓促,有些崇高的理想破灭了,如在按键放下后自动停止声音的播放,在播放wav格式音乐的时候还没有找到更快捷的图形显示算法,导致电脑运行缓慢故没有添加应用该程序,同时也未

16、能实现播放高清视频与上网浏览并在线听音乐自动下载乐谱及歌词功能等。但我们团队会为了这美好的理想而坚持走下去! 9.参考文献1 刘保柱,苏彦华,张宏林. MATLAB7.0从入门到精通(修订版) 北京:人民邮电出版社,2010.5(第2版)2 郑君里,应启衔,杨为理. 信号与系统 【M】.2版.北京:高等教育出版社,2000.3 张志涌 等 精通MATLAB【M】6.5版 .北京:北京航空航天大学出版社,2003,34 董霖. MATLAB使用详解基础、开发及工程应用 北京:电子工业出版社,2009.15 Abell M L, Braselton J P. Maple.Academic Press, 1999CA, 1社0 _6 Chapman S J. MATLAB Programming for Enginerrs. Brooks/Cole. CA,2002.7 蔡旭辉,刘卫国,蔡立燕. MATLAB基础与应用教程 北京:人民邮电出版社,2009.8

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1