Matlab课程设计报告MATLAB GUI音乐键盘仿真.docVIP

Matlab课程设计报告MATLAB GUI音乐键盘仿真.doc

此“教育”领域文档为创作者个人分享资料,不作为权威性指导和指引,仅供参考
  1. 1、本文档共14页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Matlab课程设计报告MATLAB GUI音乐键盘仿真

《 MATLAB 实践 》 课程设计 目 录 1.设计目的…………………………………………………3 2.题目分析…………………………………………………3 3.总体设计…………………………………………………4 4.具体设计…………………………………………………4 5.结果分析…………………………………………………15 6.心得体会…………………………………………………15 设计目的: 运用MATLAB实现MATLAB的GUI程序设计。 2、题目分析: 课程设计题目: MATLAB GUI的音乐键盘仿真 课程设计的基本要求: 1)熟悉和掌握MATLAB 程序设计方法。 2)掌握MATLAB GUI 程序设计。 3)学习音乐合成基本知识。 设计分析: 这次使用的设计软件是MATLAB的GUI模块,要设计一个音乐键盘要知道一个最简单的键盘本身要有36个发音键,既21个音阶和15个辅音阶。于是就要在界面上画出36个pushbutton键,再根据其他要求的功能设计出其他相应的模块。 模拟键盘发音是使用音频函数soundsc将不同频率的函数以声音的模式表现出来,而每个音阶相差频率f=440*2^2/12;音阶与相应的辅音阶相差频率f=440*2^1/12。有了音乐合成的这些基本知识后便可根据自己需要设计界面根据功能编写相应的回调函数。 课程设计的内容: 学习MATLAB GUI程序设计,设计和实现一个音乐键盘仿真系统。要求:按照软件工程方法,根据需求进行程序的功能分析和界面设计,给出设计详细说明。然后按照自己拟定的功能要求进行程序设计和调试。 1)设计音乐键盘GUI界面,实现单音键盘的发声。 2)实现键盘的双音多频,即每个键盘对应低音频组的一个频率和高音频组的一个频率,实现按键的发出双音。 3)能改变音乐包络形式,实现音型的改变。 4)能够演奏一段音乐。 5)改变键盘的音色,给基音加上泛音序列,模拟不同的乐器演奏。 6)选作:根据节奏节拍,根据简谱自动演奏一段音乐。 3、总体设计 其中琴键区域实现按键发声,可用鼠标点击,也可以用键盘实现;显示屏区域实现声音波形的实时显示;控制区域实现对整个系统的控制,包括音乐播放、暂停、停止,视屏播放,乐器切换,节拍切换和谐波切换。 4、具体设计 外板设计图如下: 4.1 琴键区域设计 界面设计 单个按键函数设计 该琴键设计为C调,1对应频率为261.63Hz,相邻两键为一个半音,频率比为:2^1/12,因此后面频率类推,如2对应293.67Hz。 单个按键函数如下: function pushbutton1_Callback(hObject, eventdata, handles) f=261.63; if get(handles.radiobutton3,Value)==1; N=8000; end; if get(handles.radiobutton4,Value)==1; N=2000; end; if get(handles.radiobutton5,Value)==1; N=25000; end; if get(handles.radiobutton9,Value)==1; T=1; end; if get(handles.radiobutton10,Value)==1; T=0.5; end; if get(handles.radiobutton11,Value)==1; T=0.25; end; n=0:1/N:T; x=exp(-2*n); if get(handles.radiobutton14,Value)==1; ft=x.*sin(f*2*pi*n); end if get(handles.radiobutton13,Value)==1; ft=x.*sin(f*2*pi*n)+0.2*sin(f*2*2*pi*n); end if get(handles.radiobutton12,Value)==1; ft=x.*sin(f*2*pi*n)+0.2*sin(f*2*2*pi*n)+0.3*sin(f*3*2*pi*n); end voice=get(handles.voice,Value) sound(ft*voice,8000); plot(n,ft); axis tight; 实现结果: 可以根据按下不同的键,发出不同音调的声音,且没有失真。 4.2显示屏区域设计 (1)界面设计 (2)函数设计 改模块主要功能是用来实现声音波形实时显示,因此只需要要在每个按键函数里面添加波形显示函数即可: plot(n,ft); axis tight; (3)功能实现 钢琴,1/2节拍

文档评论(0)

bokegood + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档