




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、MATLAB 實踐課程設(shè)計目 錄1.設(shè)計目的32.題目分析33.總體設(shè)計44.具體設(shè)計45.結(jié)果分析156.心得體會151、 設(shè)計目的:運用MATLAB實現(xiàn)MATLAB的GUI程序設(shè)計。2、題目分析:課程設(shè)計題目:MATLAB GUI的音樂鍵盤仿真 課程設(shè)計的基本要求:1)熟悉和掌握MATLAB 程序設(shè)計方法。2)掌握MATLAB GUI 程序設(shè)計。3)學(xué)習(xí)音樂合成基本知識。設(shè)計分析:這次使用的設(shè)計軟件是MATLAB的GUI模塊,要設(shè)計一個音樂鍵盤要知道一個最簡單的鍵盤本身要有36個發(fā)音鍵,既21個音階和15個輔音階。于是就要在界面上畫出36個pushbutton鍵,再根據(jù)其他要求的功能設(shè)計出
2、其他相應(yīng)的模塊。模擬鍵盤發(fā)音是使用音頻函數(shù)soundsc將不同頻率的函數(shù)以聲音的模式表現(xiàn)出來,而每個音階相差頻率f=440*22/12;音階與相應(yīng)的輔音階相差頻率f=440*21/12。有了音樂合成的這些基本知識后便可根據(jù)自己需要設(shè)計界面根據(jù)功能編寫相應(yīng)的回調(diào)函數(shù)。課程設(shè)計的內(nèi)容:學(xué)習(xí)MATLAB GUI程序設(shè)計,設(shè)計和實現(xiàn)一個音樂鍵盤仿真系統(tǒng)。要求:按照軟件工程方法,根據(jù)需求進(jìn)行程序的功能分析和界面設(shè)計,給出設(shè)計詳細(xì)說明。然后按照自己擬定的功能要求進(jìn)行程序設(shè)計和調(diào)試。1)設(shè)計音樂鍵盤GUI界面,實現(xiàn)單音鍵盤的發(fā)聲。2)實現(xiàn)鍵盤的雙音多頻,即每個鍵盤對應(yīng)低音頻組的一個頻率和高音頻組的一個頻率,
3、實現(xiàn)按鍵的發(fā)出雙音。3)能改變音樂包絡(luò)形式,實現(xiàn)音型的改變。4)能夠演奏一段音樂。5)改變鍵盤的音色,給基音加上泛音序列,模擬不同的樂器演奏。6)選作:根據(jù)節(jié)奏節(jié)拍,根據(jù)簡譜自動演奏一段音樂。3、總體設(shè)計其中琴鍵區(qū)域?qū)崿F(xiàn)按鍵發(fā)聲,可用鼠標(biāo)點擊,也可以用鍵盤實現(xiàn);顯示屏區(qū)域?qū)崿F(xiàn)聲音波形的實時顯示;控制區(qū)域?qū)崿F(xiàn)對整個系統(tǒng)的控制,包括音樂播放、暫停、停止,視屏播放,樂器切換,節(jié)拍切換和諧波切換。4、具體設(shè)計外板設(shè)計圖如下:4.1 琴鍵區(qū)域設(shè)計(1) 界面設(shè)計(2) 單個按鍵函數(shù)設(shè)計該琴鍵設(shè)計為C調(diào),1對應(yīng)頻率為261.63Hz,相鄰兩鍵為一個半音,頻率比為:21/12,因此后面頻率類推,如2對應(yīng)29
4、3.67Hz。單個按鍵函數(shù)如下: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&
5、#39;)=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);endif get(handles.radiobutton13,'Value')=1; ft=x.*sin(f*2*pi*n)+0
6、.2*sin(f*2*2*pi*n);endif 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);endvoice=get(handles.voice,'Value')sound(ft*voice,8000);plot(n,ft);axis tight;(3) 實現(xiàn)結(jié)果:可以根據(jù)按下不同的鍵,發(fā)出不同音調(diào)的聲音,且沒有失真。4.2顯示屏區(qū)域設(shè)計(1)界面設(shè)計(2)函數(shù)設(shè)計改模塊主要功能是用來實現(xiàn)聲音波形實時顯示,因此
7、只需要要在每個按鍵函數(shù)里面添加波形顯示函數(shù)即可:plot(n,ft);axis tight;(3)功能實現(xiàn)鋼琴,1/2節(jié)拍,單音波形敲擊,1/8節(jié)拍,2次諧波波形4.3 節(jié)拍切換設(shè)計(1)界面設(shè)計(2)函數(shù)設(shè)計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.ra
8、diobutton9,'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;(3)功能實現(xiàn)duo音,1/2節(jié)拍:duo音,1/4節(jié)拍:duo音,1/8節(jié)拍:4.4諧波切換設(shè)計(1)界面設(shè)計(2)函數(shù)設(shè)計if get(handles.radiobutton14,'Value')=1;ft=x.*sin(f*2*pi*n);e
9、ndif get(handles.radiobutton13,'Value')=1; ft=x.*sin(f*2*pi*n)+0.2*sin(f*2*2*pi*n);endif 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(3)功能實現(xiàn)duo音,單音諧波:duo音,1次諧波:duo音,2次諧波:4.5音樂播放設(shè)計(1)界面設(shè)計(2)函數(shù)設(shè)計Music:選取音樂function pushbutton35_Ca
10、llback(hObject, eventdata, handles)global yinyue;FileName,PathName=uigetfile('*.wav','Music Play');y,fs,bits=wavread(FileName);yinyue=audioplayer(y,fs)voice=get(handles.voice,'Value')play(yinyue);Pauses:播放暫停function pushbutton38_Callback(hObject, eventdata, handles)global yin
11、yue;pause(yinyue);Stop:播放停止function pushbutton37_Callback(hObject, eventdata, handles)global yinyue;stop(yinyue);Resume:播放恢復(fù)function pushbutton40_Callback(hObject, eventdata, handles)global yinyue;resume(yinyue);(3)功能實現(xiàn)4.6 電影播放設(shè)計(1)界面設(shè)計(2)函數(shù)設(shè)計function pushbutton48_Callback(hObject, eventdata, handle
12、s) name,path=uigetfile('*.*','');file=sprintf('%s%s',path,name);mplay(file,24);(3)功能實現(xiàn)4.7 音量控制設(shè)計(1)界面設(shè)計(2)函數(shù)設(shè)計voice=get(handles.voice,'Value')sound(ft*voice,8000);(3)功能實現(xiàn)能實現(xiàn)對音量的調(diào)節(jié)4.8鍵盤控制發(fā)音設(shè)計(1)界面設(shè)計(2)函數(shù)設(shè)計function figure1_KeyPressFcn(hObject, eventdata, handles)if get(
13、gcf,'CurrentCharacter')=49, %Èç¹û°´ÏµÄÊÇ1 pushbutton10_Callback(hObject,eventdata,handles);endif get(gcf,'CurrentCharacter')=50, %Èç¹û°´ÏµÄÊÇ2 pushbutton15_Callba
14、ck(hObject,eventdata,handles);endif get(gcf,'CurrentCharacter')=51, %Èç¹û°´ÏµÄÊÇ3 pushbutton16_Callback(hObject,eventdata,handles);endif get(gcf,'CurrentCharacter')=52, %Èç¹û°´Ïµ
15、;ÄÊÇ4 pushbutton17_Callback(hObject,eventdata,handles);endif get(gcf,'CurrentCharacter')=53, %Èç¹û°´ÏµÄÊÇ5 pushbutton18_Callback(hObject,eventdata,handles);endif get(gcf,'CurrentCharacter')='C', %
16、0;ç¹û°´ÏµÄÊÇC pushbutton1_Callback(hObject,eventdata,handles); endif get(gcf,'CurrentCharacter')=68, %Èç¹û°´ÏµÄÊÇD pushbutton2_Callback(hObject,eventdata,handles);endif get(gc
17、f,'CurrentCharacter')=69, %Èç¹û°´ÏµÄÊÇE pushbutton3_Callback(hObject,eventdata,handles);endif get(gcf,'CurrentCharacter')=70, %Èç¹û°´ÏµÄÊÇF pushbutton4_Callback(h
18、Object,eventdata,handles);endif get(gcf,'CurrentCharacter')=71, %Èç¹û°´ÏµÄÊÇG pushbutton5_Callback(hObject,eventdata,handles);endif get(gcf,'CurrentCharacter')=65, %Èç¹û°´Ïµ
19、6;ÊÇA pushbutton6_Callback(hObject,eventdata,handles);endif get(gcf,'CurrentCharacter')=66, %Èç¹û°´ÏµÄÊÇB pushbutton7_Callback(hObject,eventdata,handles);end(3)功能實現(xiàn)能通過按下對應(yīng)鍵盤,發(fā)出對應(yīng)聲音。如按下C鍵,發(fā)“duo”音4.9界面美觀設(shè)計:選自己的圖片作為背景(1)界面設(shè)計
20、(2)函數(shù)設(shè)計function figure1_CreateFcn(hObject, eventdata, handles)ha=axes('units','normalized','position',0.583 0.01 0.417 0.984);uistack(ha,'down')II=imread('2.bmp');image(II)colormap grayset(ha,'handlevisibility','off','visible','off&
21、#39;);(3)功能實現(xiàn)4.10樂譜播放設(shè)計(1)界面設(shè)計(2)函數(shù)設(shè)計function qinpu(a,b) f=261.6*2(a/12);n=0:1/8000:b*0.5;x=exp(-2*n); ft=x.*sin(f*2*pi*n)+0.2*sin(f*2*2*pi*n)+0.3*sin(f*3*2*pi*n);soundsc(ft);plot(n,ft);axis tight;function pushbutton49_Callback(hObject, eventdata, handles)name,path=uigetfile('*.*',''); file=sprintf('%s%s',path,name);de=importdata(file);for k=1:length(de) qinpu(de(k),de(k+length(de); pause(0.5)end(3)功能實現(xiàn)播放事先編輯好的樂譜5、結(jié)果分析基本上要求的內(nèi)容都能實現(xiàn),但是也純在一些欠缺:(1)使用鍵盤發(fā)聲時如果彈
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 企業(yè)采購紅酒合同范本
- 吧臺主理人合同范本
- 品牌供貨合作合同范例
- 前臺課程顧問合同范本
- 壓手續(xù)不押車合同范本
- 北京二手房服務(wù)合同范本
- 危險建筑拆除合同范本
- 品牌管理公司合同范例
- 兼職英文編輯合同范例
- 醫(yī)院產(chǎn)品購銷合同范本
- 2025年安徽水利水電職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫(含答案)
- 中國瓶裝水飲用水項目投資可行性研究報告
- 山東省青島市市北區(qū)2024-2025學(xué)年七年級上學(xué)期期末考試英語試題(含答案+解析)
- 餐飲及食品安全管理制度
- 湖北省襄陽市襄州區(qū)2024-2025學(xué)年九年級上學(xué)期期末語文試題(含答案)
- 2025年安徽電氣工程職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫及答案1套
- 2025年房屋交易代持策劃協(xié)議書
- 課題申報參考:“四新”建設(shè)背景下教育創(chuàng)新與課程數(shù)字化實踐研究
- 2025年煙臺汽車工程職業(yè)學(xué)院高職單招職業(yè)適應(yīng)性測試近5年??及鎱⒖碱}庫含答案解析
- 2025年江蘇農(nóng)牧科技職業(yè)學(xué)院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- 2024年長沙衛(wèi)生職業(yè)學(xué)院高職單招職業(yè)技能測驗歷年參考題庫(頻考版)含答案解析
評論
0/150
提交評論