版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、姓名:班級(jí):2013級(jí)電子信息工程1班學(xué)號(hào): / 14基于MATLAB的音樂電子琴制作簡(jiǎn)述:電子琴的每個(gè)音階均對(duì)應(yīng)一個(gè)特定頻率的信號(hào),通過調(diào)用數(shù)字信號(hào)發(fā)生器產(chǎn)生一系列指定的頻率的聲音,從而達(dá)到虛擬的電子琴的功能。本次設(shè)計(jì)是基于MATLAB GUI程序?qū)崿F(xiàn)的一個(gè)音樂鍵盤仿真系統(tǒng)。1功能介紹總體設(shè)計(jì)框圖如下圖所示,其包括單音鍵盤發(fā)音模塊,音效長(zhǎng)短的選擇模塊,包絡(luò)的 選擇模塊,實(shí)現(xiàn)鍵盤代替鼠標(biāo)輸入模塊,雙音多頻模塊,演奏音樂模塊,播放歌曲,視頻 模塊包括對(duì)文件播放的暫停,停止和復(fù)位,多鍵盤輸入對(duì)輸入后統(tǒng)一播放模塊和畫圖模 塊。Matlab的數(shù)據(jù)采集工具箱(DAT)提供了一系列的函數(shù)和命令來實(shí)現(xiàn)實(shí)時(shí)模
2、擬信號(hào)的輸出 通過調(diào)用這些函數(shù)和命令可以直接控制聲卡輸出虛擬信號(hào)。只需要一臺(tái)帶有普通多媒體聲 卡并安裝了 Matlab軟件的計(jì)算機(jī)就可以滿足要求實(shí)現(xiàn)虛擬信號(hào)的輸出,系統(tǒng)結(jié)構(gòu)簡(jiǎn)單方便。交互界面如圖1所示:圖1程序的交互界面1.1功能模塊1)單音鍵盤發(fā)音模塊設(shè)計(jì)一個(gè)帶參子函數(shù)實(shí)現(xiàn)鍵盤的發(fā)音功能,當(dāng)實(shí)現(xiàn)需要實(shí)現(xiàn)音階的播放時(shí),只要調(diào)用 這個(gè)子函數(shù),并根據(jù)不同音階、不同音調(diào)的頻率改變子函數(shù)的參數(shù)即可。2)音效長(zhǎng)短的選擇模塊制作一個(gè)button group的組控件分別選擇不同的控件實(shí)現(xiàn)不同的音效長(zhǎng)短,音效的長(zhǎng) 短是通過改變播放一個(gè)音階的時(shí)間長(zhǎng)短來實(shí)現(xiàn)的。3)包絡(luò)的選擇模塊制作一個(gè)button group的
3、組控件分別選擇不同的控件實(shí)現(xiàn)不同的包絡(luò),在模塊一的基 礎(chǔ)上,設(shè)置選中不同的控件分別對(duì)應(yīng)不同的包絡(luò),x為不同包絡(luò)(如正弦波、三角波、指數(shù)等)的表達(dá)形式,將 x與模塊一中實(shí)現(xiàn)單音鍵盤發(fā)音的函數(shù)相乘時(shí)便可實(shí)現(xiàn)不同形式的 衰減,實(shí)現(xiàn)音型的改變。4)實(shí)現(xiàn)鍵盤代替鼠標(biāo)輸入模塊根據(jù)計(jì)算機(jī)鍵盤上的不同按鍵對(duì)應(yīng)不同的ASCII碼的值,利用函數(shù) get()獲取當(dāng)前所按下的數(shù)字鍵對(duì)應(yīng)的 ASCII碼的值,根據(jù) ASCII碼的值判斷對(duì)應(yīng)是按下鍵盤的值。并執(zhí)行相應(yīng) 音階的功能鍵。5)雙音多頻模塊通過設(shè)置一個(gè)radio butt on來實(shí)現(xiàn)雙音多頻的功能,設(shè)置一個(gè)全局變量,當(dāng)選中該控件 時(shí),全局變量的值改變,即在帶參的子
4、函數(shù)中增加它的頻率分量。就可以實(shí)現(xiàn)雙音多頻功 能。6)演奏音樂模塊通過設(shè)置一個(gè)push button鍵來實(shí)現(xiàn),按下該鍵時(shí),可以選擇事先自己編好的txt的文檔,通過這個(gè)文檔就可以播放音樂。7)播放歌曲,視頻模塊根據(jù)matlab提供的函數(shù),視頻時(shí)首先對(duì)文件的名字和路徑進(jìn)行提起,直接對(duì)文件的播 放。音樂的則是首先對(duì)文件的名字和路徑進(jìn)行提起,得到名字和路徑后就對(duì)該文件進(jìn)行采 樣,使其離散化。最后實(shí)現(xiàn)對(duì)文件的播放。8)多鍵盤輸入對(duì)輸入后統(tǒng)一播放模塊該功能實(shí)現(xiàn)先對(duì)鍵盤輸入內(nèi)容進(jìn)行存儲(chǔ),當(dāng)輸入完成后就可以按播放鍵對(duì)剛才的存儲(chǔ) 內(nèi)容進(jìn)行播放,本功能通過radio butt on鍵實(shí)現(xiàn)的鍵盤輸入的存儲(chǔ),當(dāng)該建被
5、選中時(shí),則會(huì)不斷的掃描鍵盤是否有鍵盤按下,并對(duì)按下鍵進(jìn)行存儲(chǔ),直到該鍵沒有被選中為止,同 時(shí)設(shè)置一個(gè)push butt on鍵對(duì)存儲(chǔ)的信息進(jìn)行播放,播放完成后自動(dòng)清除存儲(chǔ)的內(nèi)容,以便 下一次存儲(chǔ)。9)畫圖模塊該模塊的功能是根據(jù)播放每一個(gè)音符的數(shù)組畫出每一個(gè)音符的波形,使我們對(duì)播放的 音型可以一目了然,便于觀察與分析。2功能實(shí)現(xiàn)程序由兩個(gè)部分組成:MATLAB代碼(.m文件)和GUI圖形(.fig)。備注:軟件版本: MATLAB R2011b2.1單音鍵盤發(fā)音模塊根據(jù)要求,首先利用 push butt on鍵作為單音鍵盤的發(fā)音鍵。 17七個(gè)音階對(duì)應(yīng)高中低 三種不同的音調(diào)共 21個(gè)鍵,還有15個(gè)
6、輔音,共36個(gè)按鍵。如圖2所示,白色的按鍵代 表音調(diào)鍵,前7個(gè)是低音的七個(gè)音階,中間 7個(gè)是中音的七個(gè)音階,后面 7個(gè)是高音的七 個(gè)音階,黑色的代表輔音。查閱相關(guān)資料可知,發(fā)音頻率對(duì)應(yīng)的表達(dá)式為f=440*2A(s-49)/12),當(dāng)所發(fā)音為低音時(shí)s的取值為3137,發(fā)中音時(shí)s的取值為4046,發(fā)高音時(shí)s的取值為4955。為了程序設(shè) 計(jì)簡(jiǎn)化目的,設(shè)計(jì)一個(gè)名為gan gqi n(s )的子函數(shù)。有以上帶參的子函數(shù)后則每個(gè)鍵盤下面的程序非常簡(jiǎn)單,然后在每個(gè)push butt on鍵的callback函數(shù)中調(diào)用該子函數(shù)即可,女口 gangqin( 45);廠同音區(qū)中音區(qū)1 (DO37(5114 (F
7、A6 (LA)圖2單音鍵盤發(fā)音模塊具體代碼參見:fun cti ongangqin(s)2.1.1音效長(zhǎng)短的選擇模塊制作一個(gè)butt on group的組控件分別選擇不同的控件實(shí)現(xiàn)不同的音效長(zhǎng)短,該組控件 包括三個(gè)radio button分別對(duì)應(yīng)不同的音效長(zhǎng)短(長(zhǎng),中,短)。音效長(zhǎng)短的改變實(shí)質(zhì)上是改變其音階播放時(shí)間的長(zhǎng)短,定義一個(gè)全局變量T通過改變 T的值來改變音效的長(zhǎng)度,gangqin的子函數(shù)如上面所示。界面如圖3所示:圖3音效長(zhǎng)短的選擇模塊 具體代碼參見:Fun cti onyin xiao Callback (hObject, eve ntdata, han dies)2.2包絡(luò)的選擇模
8、塊制作一個(gè)butt on group的組控件分別選擇不同的控件實(shí)現(xiàn)不同的包絡(luò),該組控件包括 三個(gè)radio butt on分別對(duì)應(yīng)不同的包絡(luò)。如圖4所示,定義了方波、三角波和正弦波三種不同形式的包絡(luò)可供選擇。圖4包絡(luò)的選擇模塊將組合鍵中的 button group鍵的Tag的值設(shè)置為baol ”三個(gè)radio butt on鍵分別對(duì)應(yīng) 指數(shù)波、三角波、正弦波,相應(yīng)的Tag設(shè)“ zhishu ”、” sanjiao ” ” zhengxian ”, def=get(de,tag)獲取三個(gè) Radio Button鍵中Tag的值,設(shè)置一個(gè)全局變量p,用switch函數(shù)實(shí)現(xiàn),當(dāng) case 為zhis
9、hu 時(shí),p 的值 1; case 為sanjiao 時(shí),p 的值 2; case 為zhengxian 時(shí) p的值為3。把p的值反應(yīng)到gangqin( s)的子函數(shù)中,在子函數(shù)中根據(jù)不同的p的值選用不同的包絡(luò),即可實(shí)現(xiàn)不同的包絡(luò),所發(fā)出的音型便不一樣。由于電子琴的實(shí)驗(yàn)結(jié)果是聲 音,難以用文字表達(dá),在下面僅用幾張圖片展示一下結(jié)果。圖5正弦波包絡(luò)圖6方波包絡(luò)圖7三角波 具體代碼參見:Fun cti onbaoluo Callback (hObject, eve ntdata, han dies)2.3實(shí)現(xiàn)鍵盤代替鼠標(biāo)輸入模塊用一個(gè)radio butt on鍵便可實(shí)現(xiàn)該功能,可以根據(jù)不同的鍵盤按鍵
10、發(fā)出不同的音樂。同時(shí)將該鍵的string改為鍵盤”,表示這個(gè)鍵是實(shí)現(xiàn)鍵盤的功能。如圖8所示:圖8鍵盤代替鼠標(biāo)輸入根據(jù)計(jì)算機(jī)鍵盤上不同鍵對(duì)應(yīng)的ASCII碼的值不同,利用函數(shù)get()獲取當(dāng)前所按下的鍵對(duì)應(yīng)的ASCII碼的值,并執(zhí)行相應(yīng)播放音階。具體代碼參見:fun cti onjia npan _KeyPressFc n( hObject, eve ntdata, han dies)2.4雙首多頻模塊通過設(shè)置一個(gè)radio butt on來實(shí)現(xiàn)雙音多頻的功能,當(dāng)選中該按鈕時(shí),則增加它的頻率 分量。使其含有豐富頻率分量。如圖9所示:圖9雙音多頻模塊具體代碼參見:fun cti onduop in
11、_Callback(hObject, eve ntdata, han dies)2.5演奏音樂模塊通過設(shè)置一個(gè) push butt on 鍵來實(shí)現(xiàn),如圖10所示:圖10播放譜曲按下該鍵時(shí),界面會(huì)要求你選擇文檔,可以選擇事先自己編好的文檔,并按打開鍵就可以播放音樂。txt文件的內(nèi)容如圖11所示:txt的文檔,選中該立 1tlF| : IftTtiOj MhVl 科&n合3111 1o -n- 7 7 _y a* 4 4 4 447 1.I45 14-4 14-442 L42 1L40 20i47 .4B .4 & 0.0, 豹0.42 0.47 047 004S 044 44 Q,圖11樂譜內(nèi)容
12、Txt文件代表的意思是如44 1 是表示頻率為 44,延長(zhǎng)的長(zhǎng)度為1。播放音樂不僅需要確定每個(gè)音符,還要確定每個(gè)音符延長(zhǎng)的時(shí)間,音符延長(zhǎng)的時(shí)間是 有n的取值大小所確定的。因此這里就可以調(diào)用子函數(shù)的形式方便的實(shí)現(xiàn)。具體代碼參見:fun cti on qin pu(a,b)fun cti on dakai Callback(hObject, eve ntdata, han dies)2.6播放歌曲,視頻模塊本功能的實(shí)現(xiàn)是通過 push button鍵來實(shí)現(xiàn)的。界面如圖12所示:圖12播放歌曲 視頻模塊通過按下播放歌曲鍵或者播放視頻鍵就可以選擇播放的文件,界面如圖13所示:按打開按鈕就可以播放音樂或
13、視頻。圖13播放視頻視頻時(shí)首先對(duì)文件的名字和路徑進(jìn)行提起,直接對(duì)文件的播放,用的是matlab自帶的函數(shù)implay()。音樂的則是首先對(duì)文件的名字和路徑進(jìn)行提起,得到名字和路徑后就對(duì)該 文件進(jìn)行采樣,使其離散化。最后實(shí)現(xiàn)對(duì)文件的播放。這里不僅可以對(duì)音樂的播放,還可 以對(duì)音樂的暫停,復(fù)位和停止。分別用到matlab自帶的函數(shù):播放play (),暫停pause(),復(fù)位 resume ()和停止 stop ()。具體代碼參見:fun cti onship in _Callback(hObject, eve ntdata, han dles)fun cti oncha ngge_Callback
14、(hObject, eve ntdata, han dles)2.7多鍵盤輸入后統(tǒng)一播放模塊本功能通過radio button鍵實(shí)現(xiàn)的鍵盤輸入的存儲(chǔ),當(dāng)該建被選中時(shí),則會(huì)不斷的掃 描鍵盤是否有鍵盤按下,并對(duì)按下鍵進(jìn)行存儲(chǔ),直到該鍵沒有被選中為止,同時(shí)設(shè)置一個(gè) push butt on鍵對(duì)存儲(chǔ)的信息進(jìn)行播放,播放完成后自動(dòng)清除存儲(chǔ)的內(nèi)容,以便下一次存 儲(chǔ)。界面如圖14所示:圖14多鍵盤輸入后播放該功能實(shí)現(xiàn)先對(duì)鍵盤輸入內(nèi)容進(jìn)行存儲(chǔ),當(dāng)輸入完成后就可以按播放鍵對(duì)剛才的存儲(chǔ) 內(nèi)容進(jìn)行播放,播放完成后對(duì)存儲(chǔ)的內(nèi)容進(jìn)行清空。實(shí)現(xiàn)對(duì)鍵盤的輸入內(nèi)容進(jìn)行存儲(chǔ),并 把存儲(chǔ)的值整合到數(shù)組y內(nèi),push butt o
15、n鍵是對(duì)上述存儲(chǔ)的信息進(jìn)行讀取,識(shí)別并播放。具體代碼參見:fun cti onjia nc_KeyPressFc n( hObject, eve ntdata, han dies)fun cti onbf_Callback(hObject, eve ntdata, han dies)2.8畫圖模塊通過axse控件實(shí)現(xiàn)繪圖,繪出播放每個(gè)音階的波形,并把畫出的波形顯示到axse上,界面如圖15所示:圖15音階的波形該模塊的功能是根據(jù)播放每一個(gè)音符的數(shù)組畫出每一個(gè)音符的波形,并把其顯示在界 面上。具體代碼參見:fun cti onaxes1_CreateFc n( hObject, eve ntda
16、ta, han dies)3程序總結(jié)本程序?qū)崿F(xiàn)簡(jiǎn)單的音頻處理功能及便捷的圖形化交互界面。具有以下特點(diǎn)與缺陷:1、圖形化用戶交互界面簡(jiǎn)潔明了。右側(cè)放置音頻視頻播放的各選項(xiàng)控件,且從上到下 的排布體現(xiàn)操作步驟;上側(cè)顯示音頻文件的數(shù)據(jù)波形。提示信息豐富,方便操作。2、程序可擴(kuò)展性好,方便功能擴(kuò)展。未盡功能:(1)沒有調(diào)節(jié)音量大小的按鈕,可以優(yōu)化。(2)聲音播放時(shí),實(shí)時(shí)的顯示播放進(jìn)度。(3)更為實(shí)際的音頻處理功能待加強(qiáng)。4課程總結(jié)整個(gè)制作和調(diào)試過程都是按模塊進(jìn)行的,對(duì)每一個(gè)模塊功能的實(shí)現(xiàn)的情況下才對(duì)下一 個(gè)功能進(jìn)行制作。剛開始做模塊一時(shí),由于沒有想到后面的一些功能所以就沒有寫子函 數(shù),是在每一個(gè)按鍵下
17、都寫了一個(gè)聲音播放的程序,這樣做不僅量大也很不方便。因此后 面改成了子函數(shù)的形式,這樣的話程序不僅簡(jiǎn)練也很好調(diào)用,非常方便。在調(diào)試過程中先 將函數(shù)gangqin(s)中的全局變量p的不同數(shù)字代表不同的波形表達(dá)式,鼠標(biāo)點(diǎn)擊包絡(luò)組控件 的不同按鈕,選擇不同的包絡(luò),聽起來的效果也相差較大,當(dāng)包絡(luò)為指數(shù)形式時(shí)較符合平 時(shí)聽音樂的習(xí)慣。還有一個(gè)是gangqin( s)中的全局變量 T,不同的值表示不同的音效長(zhǎng)短。播放的時(shí)間是不一樣的,因此聽起來會(huì)有不同的感覺。調(diào)試過程中應(yīng)根據(jù)相關(guān)資料和 自己的感覺不斷改變這兩個(gè)值的數(shù)字,最終選擇一個(gè)聽起來較為合適的取值。上述完成后 就需要做鍵盤代替鼠標(biāo)按鍵的功能,首先需
18、要了解按下鍵盤電腦獲得的是按鍵的ASCII值。所以我們必須把按鍵的ASCII的值對(duì)應(yīng)到播放不同音符的頻率上去,這樣才能靈活的控制每一個(gè)音符,每個(gè)音符要與鍵盤的按鍵形成一一對(duì)應(yīng)關(guān)系,不然的話程序很容易出 錯(cuò)。程序完成后,需要對(duì)程序進(jìn)行調(diào)試,使得每一個(gè)鍵盤的按鈕按下對(duì)應(yīng)的音符會(huì)播放出 來。接下來制作的是鍵盤的存儲(chǔ)功能,即實(shí)現(xiàn)對(duì)鍵盤的多輸入,輸入過程中音符是不會(huì)響 的,當(dāng)輸入結(jié)束后可以控制對(duì)剛才輸入的按鍵對(duì)應(yīng)的音符進(jìn)行播放聲音。剛開始是一直對(duì) 數(shù)字的存儲(chǔ)個(gè)數(shù)會(huì)多很多,后面才知道但你按下鍵時(shí)程序已經(jīng)運(yùn)行了好多遍了,每次按鍵 是當(dāng)然就會(huì)存儲(chǔ)多個(gè)相同的值。改進(jìn)后就一直只能對(duì)最后一次按鍵進(jìn)行存儲(chǔ),前面的被當(dāng)
19、 前的值覆蓋,后面設(shè)置了一個(gè)存儲(chǔ)數(shù)據(jù)的數(shù)組進(jìn)行存儲(chǔ),使得功能才能實(shí)現(xiàn)。本次課程設(shè)計(jì),我花了大量的時(shí)間來做這些功能,但是做完后感覺功能又特別簡(jiǎn)單,而 且做的大部分時(shí)間都是做一些無用的工作,程序一直不夠簡(jiǎn)單,經(jīng)常用一條很長(zhǎng)的程序來 實(shí)現(xiàn)一個(gè)簡(jiǎn)單的功能,做完過后發(fā)現(xiàn)可以用簡(jiǎn)單的程序就可以實(shí)現(xiàn),整個(gè)制作過程中大部 分的時(shí)間都花在這樣的工作上,工作效率很低。同時(shí)感覺到自己對(duì)matlab的編程了解太少,很多基本功能多不了解。完成實(shí)踐后我深深的體會(huì)到了MATLAB功能的強(qiáng)大,它不但可以實(shí)現(xiàn)對(duì)聲音信號(hào)的處理,對(duì)圖像的處理,同時(shí)還可以對(duì)視頻,wav格式歌曲的播放以及還有很多我現(xiàn)在還不知道的很多強(qiáng)大的功能。在實(shí)驗(yàn)
20、過程中,遇到了很多問題。首先是 資料的缺乏,沒能找到老師推薦的信號(hào)與系統(tǒng)一MATLAB綜合實(shí)驗(yàn),所以大部分的參考資料只能上網(wǎng)查找沒有什么權(quán)威性。還有自己對(duì)matlab的了解本來就很淺,很多知識(shí)都不懂,經(jīng)常需要問老師,同學(xué)或者上網(wǎng)查資料。在設(shè)計(jì)剛開始沒有什么明確的思路導(dǎo)致經(jīng)常 改GUI界面,最后實(shí)在無法改了就重新設(shè)計(jì),思路很不明確,希望在以后的學(xué)習(xí)和工作中 能好好利用這次實(shí)踐的經(jīng)驗(yàn),要先想好總體思路,不能到臨時(shí)才改,這樣的話,不僅工作 量大,還耗時(shí)多。本次實(shí)踐使我受益匪淺。附錄(部分程序)fun cti on gangqin(s) %演奏音符global r;global n;global ff
21、;global T;global p;f=440*2A(s-49)/12);%各音階的頻率n=0:1/8000:T;%各音階的長(zhǎng)短if p=1%選用包絡(luò)x=exp(-3* n);elseif p=2x=exp(-3* n).*sawtooth(2*pi*50* n);elseif p=3x=exp(-3* n).*si n(2*pi* n);endif r=1%選用單頻還是多頻ff=x.*si n(f*2*pi* n)+0.2*x.*si n( f*4*pi* n)+0.05*x.*si n(f*8*pi* n);else ff=x.*s in( f*2*pi* n);endaxes1_Cre
22、ateFc n();%畫圖sou ndsc(ff);%播放音符Fun cti on yin xiao_Callback (hObject, eve ntdata, han dies)global T;g=get(ha ndles.yi nxiao,selectedobject);%獲得音效的選中對(duì)象gt=get(g,tag);%把對(duì)象賦給 gtswitch gt%確認(rèn)選中的對(duì)象case dua nyinT=0.3;case zh ongyinT=1;case cha ngyinT=2;EndFun cti on baoluo_Callback (hObject, eve ntdata, han
23、 dles) global T; global n; global p;de=get(ha ndles.baol,selectedobject);%def=get(de,tag);%switch defcase 正弦波x=0:0.001:1;y1=A*si n(2*f*pi*x+c); plot(x,y1);case 三角波x=0:0.001:1;y2=A*sawtooth(2*pi*f*x+c); plot(x,y2);case 方波x=0:0.001:1;y3=A*square(2*f*pi*x+c);plot(x,y3);end function jianpan KeyPressFcn(
24、hObject, eventdata, handles)s=get(ha ndles.jia npan ,value);%if s=0%elseif get(gcf,Curre ntCharacter)=48 ga ngqi n( 28);elseif get(gcf,Curre ntCharacter)=49 ga ngqi n( 29);elseif get(gcf,Curre ntCharacter)=50 ga ngqi n( 30);elseif get(gcf,Curre ntCharacter)=51 ga ngqi n( 31);elseif get(gcf,Curre ntC
25、haracter)=52 ga ngqi n( 32);elseif get(gcf,Curre ntCharacter)=53 ga ngqi n( 33);獲得包絡(luò)選中的對(duì)象把選中對(duì)象的tag賦給def獲得按下鍵的值看radio butt on是否按下elseif get(gcf,Curre ntCharacter)=54ga ngqi n( 34);elseif get(gcf,Curre ntCharacter)=55 ga ngqi n( 35);elseif get(gcf,Curre ntCharacter)=56 ga ngqi n( 36);elseif get(gcf,Cu
26、rre ntCharacter)=57 ga ngqi n( 37);elseif get(gcf,Curre ntCharacter)=65 ga ngqi n( 38);elseif get(gcf,Curre ntCharacter)=66 ga ngqi n( 39);elseif get(gcf,Curre ntCharacter)=67 gangqin (40);elseif get(gcf,Curre ntCharacter)=68 gangqin (41);elseif get(gcf,Curre ntCharacter)=69 ga ngqin( 42);elseif get
27、(gcf,Curre ntCharacter)=70 gangqin (43);elseif get(gcf,Curre ntCharacter)=71 ga ngqin( 44);elseif get(gcf,Curre ntCharacter)=72 gangqin (45);elseif get(gcf,Curre ntCharacter)=73 ga ngqin( 46);elseif get(gcf,Curre ntCharacter)=74 ga ngqin( 47);elseif get(gcf,Curre ntCharacter)=75 gangqin (48);elseif
28、get(gcf,Curre ntCharacter)=76 gangqin (49);elseif get(gcf,Curre ntCharacter)=77 ga ngqi n( 50);elseif get(gcf,Curre ntCharacter)=78 ga ngqi n( 51);elseif get(gcf,Curre ntCharacter)=79 ga ngqi n( 52);elseif get(gcf,Curre ntCharacter)=80 ga ngqi n( 53);elseif get(gcf,Curre ntCharacter)=81ga ngqi n( 54
29、);elseif get(gcf,Curre ntCharacter)=82 ga ngqi n( 55);elseif get(gcf,Curre ntCharacter)=83 ga ngqi n( 56);elseif get(gcf,Curre ntCharacter)=84 ga ngqi n( 57);elseif get(gcf,Curre ntCharacter)=85 ga ngqi n( 58);elseif get(gcf,Curre ntCharacter)=86 ga ngqi n( 59);elseif get(gcf,Curre ntCharacter)=87 g
30、a ngqi n( 60);elseif get(gcf,Curre ntCharacter)=88 ga ngqi n( 61);elseif get(gcf,Curre ntCharacter)=89 ga ngqi n( 62);elseif get(gcf,Curre ntCharacter)=90 ga ngqi n( 63);endfun cti on duop in _Callback(hObject, eve ntdata, han dies) global r;r=get(ha ndles.duop in ,value);%if r=1%選單頻還是多頻ff=x.*si n(f
31、*2*pi* n)+0.2*x.*si n( f*4*pi* n)+0.05*x.*si n(f*8*pi* n);else ff=x.*s in( f*2*pi* n);End多頻的按鈕是否選中fun cti on qin pu(a,b) %度global r;global n;global ff;f=440*2A(a-49)/12);n=0:1/8000:b*0.5;%x=exp(-2* n);if r=1%播放不同延長(zhǎng)音的音符a表示音階的頻率 b表示延長(zhǎng)音的長(zhǎng)延長(zhǎng)不同的長(zhǎng)度選用單頻還是多頻播放ff=x.*si n(f*2*pi* n)+0.2*x.*si n( f*4*pi* n)+0.
32、05*x.*si n(f*8*pi* n); else ff=x.*s in( f*2*pi* n);endaxes1_CreateFc n();%sou ndsc(ff);%畫圖播放音符fun cti on dakai_Callback(hObject, eve ntdata, han dles) n ame,path=uigetfile(*,);%file=spr in tf(%s%s,path ,n ame);de=importdata(file);%for k=1:le ngth(de)qin pu(de(k),de(k+le ngth(de);%end讀取文件讀取文件的數(shù)據(jù)按文件數(shù)據(jù)
33、播放音符fun cti on ship in _Callback(hObject, eve ntdata, han dles)% n ame,path=uigetfile(*,);file=path, name;implay(file);播放視頻程序fun cti on cha ngge_Callback(hObject, eve ntdata, han dles) global yinl;n ame,path=uigetfile(*,);%file=path, name;y,fs,bits=wavread(file);%yinl = audioplayer(y, fs);%play(yi nl);%打開文件對(duì)打開的wav文件進(jìn)行采樣 對(duì)采樣的值進(jìn)行讀取 播放wav格式文件global yi nl;pause( yin l);%暫停fun
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 團(tuán)隊(duì)建設(shè)管理培訓(xùn)40
- 中原地產(chǎn)-拓展客戶與行銷技巧
- 〈〈錢塘湖春行〉課件圖
- 《我要健康成長(zhǎng)》課件
- 《展會(huì)招商的技巧》課件
- 梵高-英文課件(在文輯中配有英文演講稿)
- 低溫預(yù)制食品智能化生產(chǎn)項(xiàng)目可行性研究報(bào)告模板-備案拿地
- 工學(xué)《動(dòng)能 動(dòng)能定理》課件設(shè)計(jì)
- 單位人力資源管理制度品讀匯編十篇
- 單位管理制度展示匯編員工管理十篇
- 小班數(shù)學(xué)《香香的餅干》
- 醫(yī)院工會(huì)經(jīng)費(fèi)使用與管理辦法、制度規(guī)則
- 2022年外交學(xué)院輔導(dǎo)員招聘筆試題庫(kù)及答案解析
- 磁致伸縮液位傳感器KYDM-路線設(shè)置使用
- 收割機(jī)轉(zhuǎn)讓協(xié)議
- 中學(xué)歷史教育中的德育狀況調(diào)查問卷
- 煤礦煤業(yè)掘進(jìn)工作面班組安全確認(rèn)工作記錄表 模板
- 第8期監(jiān)理月報(bào)(江蘇版)
- 建筑工程質(zhì)量管理體系文件
- 乙丙橡膠電力電纜絕緣一步法硅烷交聯(lián)工藝
- 中止施工安全監(jiān)督申請(qǐng)書(范例)
評(píng)論
0/150
提交評(píng)論