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