音乐电子琴matlab设计报告材料
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实用标准文案
《 MATLAB 实践》
课程设计
学生:谢冬云
学号:110900735
专业班级:09级信通(3)班
指导教师:晓明
二○一二年六月二十日
目录
一、设计目的 (2)
二、题目分析 (2)
2.1 课程设计的基本要求 (2)
2.2 课程设计的容 (2)
三、总体设计 (2)
3.1总体设计框架 (2)
3.2 功能模块 (3)
四、具体设计 (4)
4.1单音键盘发音模块 (4)
4.2 音效长短的选择模块 (5)
4.3包络的选择模块 (5)
4.4实现键盘代替鼠标输入模块 (6)
4.5 双音多频模块 (9)
4.6 演奏音乐模块 (9)
4.7 播放歌曲,视频模块 (11)
4.8 多键盘输入对输入后统一播放模块 (14)
4.9 画图模块 (15)
五、结果分析 (15)
六、心得体会 (16)
七、参考书目: (17)
一、设计目的
运用MATLAB实现MATLAB的GUI的信号处理程序设计。做一个基于MATLAB GUI 的音乐键盘。
二、题目分析
2.1 课程设计的基本要求
1)熟悉和掌握MATLAB 程序设计方法。
2)掌握MATLAB GUI 程序设计。
3)学习音乐合成基本知识。
2.2 课程设计的容
学习MATLAB GUI程序设计,设计和实现一个音乐键盘仿真系统。要求:按照软件工程方法,根据需求进行程序的功能分析和界面设计,给出设计详细说明。然后按照自己拟定的功能要求进行程序设计和调试。
1)设计音乐键盘GUI界面,实现单音键盘的发声。
2) 能改变音的长短,即可以实现音的缩短,延长。
3)实现键盘的双音多频,即每个键盘对应低音频组的一个频率和高音频组的一个频率,实现按键的发出双音。
4)能改变音乐包络形式,实现音型的改变。
5)能够演奏一段音乐。
6)为界面添加背景音乐,实现wav格式的声音的播放,同时可以用本软件播放视频,但是matlab不支持画音同步的功能,但是可以看到没有声音的视频。7)能够实现对键盘的输入按键进行存储,等到输入结束后统一播放刚才输入的键盘按键相对应的声音。
三、总体设计
3.1总体设计框架
总体设计框图如下图所示,其包括单音键盘发音模块,音效长短的选择模块,包络的选择模块,实现键盘代替鼠标输入模块,双音多频模块,演奏音乐模块,播放歌曲,视频模块包括对文件播放的暂停,停止和复位,多键盘输入对输入后统一播放模块和画图模块。
3.2 功能模块
1)单音键盘发音模块
设计一个带参子函数实现键盘的发音功能,当实现需要实现音阶的播放时,只要调用这个子函数,并根据不同音阶、不同音调的频率改变子函数的参数即可。
2) 音效长短的选择模块
制作一个button group的组控件分别选择不同的控件实现不同的音效长短,音效的长短是通过改变播放一个音阶的时间长短来实现的。
3)包络的选择模块
制作一个button group的组控件分别选择不同的控件实现不同的包络,在模块一的基础上,设置选中不同的控件分别对应不同的包络,x为不同包络(如正弦波、三角波、指数等)的表达形式,将x与模块一中实现单音键盘发音的函数相乘时便可实现不同形式的衰减,实现音型的改变。
4)实现键盘代替鼠标输入模块
根据计算机键盘上的不同按键对应不同的ASCII码的值,利用函数get()获取当前所按下的数字键对应的ASCII码的值,根据 ASCII码的值判断对应是按下键盘的值。并执行相应音阶的功能键。
5)双音多频模块
通过设置一个radio button 来实现双音多频的功能,设置一个全局变量,当选中该控件时,全局变量的值改变,即在带参的子函数中增加它的频率分量。就可以实现双音多频功能。
6)演奏音乐模块
通过设置一个push button键来实现,按下该键时,可以选择事先自己编好的txt的文档,通过这个文档就可以播放音乐。
7)播放歌曲,视频模块
根据matlab提供的函数,视频时首先对文件的名字和路径进行提起,直接对文件的播放。音乐的则是首先对文件的名字和路径进行提起,得到名字和路径后就对该文件进行采样,使其离散化。最后实现对文件的播放。
8)多键盘输入对输入后统一播放模块
该功能实现先对键盘输入容进行存储,当输入完成后就可以按播放键对刚才
的存储容进行播放,本功能通过radio button键实现的键盘输入的存储,当该建被选中时,则会不断的扫描键盘是否有键盘按下,并对按下键进行存储,直到该键没有被选中为止,同时设置一个push button键对存储的信息进行播放,播放完成后自动清除存储的容,以便下一次存储。
9)画图模块
该模块的功能是根据播放每一个音符的数组画出每一个音符的波形,使我们对播放的音型可以一目了然,便于观察与分析。
四、具体设计
4.1单音键盘发音模块
(1)GUI界面的设计
根据要求,首先利用push button键作为单音键盘的发音键。1~7七个音阶对应高中低三种不同的音调共21个键,还有15个辅音,共36个按键。如图所示,白色的按键代表音调键,前7个是低音的七个音阶,中间7个是中音的七个音阶,后面7个是高音的七个音阶,黑色的代表辅音。
(2)程序设计
查阅相关资料可知,发音频率对应的表达式为f=440*2^((s-49)/12),当所发音为低音时s的取值为31~37,发中音时s的取值为40~46,发高音时s的取值为49~55。为了程序设计简化目的,设计一个名为gangqin(s)的子函数,程序如下:
function gangqin(s) % 演奏音符
global r;
global n;
global ff;
global T;
global p;
f=440*2^((s-49)/12); %各音阶的频率
n=0:1/8000:T; %各音阶的长短
if p==1 %选用包络
x=exp(-3*n);
elseif p==2
x=exp(-3*n).*sawtooth(2*pi*50*n);
elseif p==3