基于MATLAB的簡單音樂合成_第1頁
基于MATLAB的簡單音樂合成_第2頁
基于MATLAB的簡單音樂合成_第3頁
基于MATLAB的簡單音樂合成_第4頁
基于MATLAB的簡單音樂合成_第5頁
已閱讀5頁,還剩8頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、數(shù)字信號處理課程設(shè)計課程設(shè)計說明書說明書 設(shè)計題目:設(shè)計題目: 基于基于 MATLAB 的簡單音樂合成的簡單音樂合成 姓姓 名:名: 專業(yè)年級:專業(yè)年級: 學學 號:號: 指導老師:指導老師: 時時 間:間: 2015 年年 6 月月 25 日日 數(shù)字信號處理課程設(shè)計任務(wù)書題目題目基于 MATLAB 的簡單音樂合成主要主要內(nèi)容內(nèi)容1、自學 Matlab 軟件,了解相關(guān)編譯語句;2、利用 Matlab 完成簡單的音樂合成;3、分析仿真結(jié)果,得出合理結(jié)論。設(shè)計設(shè)計要求要求1、利用 Matlab 實現(xiàn)對自選樂曲的簡單音樂合成,生成 .wav 文件;2、給各個樂音加載包絡(luò),生成.wav,并顯示音樂信號

2、的包絡(luò)圖像;3、在音樂中加上二、三、四次諧波,基波幅度為 1,高次諧波幅度分別為0.388、0.1557、0.2424,并生成.wav 文件。4、按要求完成設(shè)計報告。主要主要儀器儀器設(shè)備設(shè)備1、計算機 1 臺,Matlab 仿真軟件一套。主要主要參考參考文獻文獻1 高西全,丁玉美數(shù)字信號處理(第三版) M西安:西安電子科技大學出版社,20082 程佩青. 數(shù)字信號處理教程(第四版) M北京:清華大學出版社,20133 余成波等.數(shù)字信號處理及 MATLAB 實現(xiàn)(第二版) M北京:清華大學出版社,2008課程設(shè)計進度安排(起止時間、工作內(nèi)容)課程設(shè)計進度安排(起止時間、工作內(nèi)容)單人一組,每組

3、選擇不同樂曲進行音樂合成,每人 1 套實驗環(huán)境。整個課程設(shè)計共 1 周 20 學時,具體安排如下:前期準備工作 4 學時 學習設(shè)計題目相關(guān)知識,查閱資料,掌握實現(xiàn)的原理;計劃內(nèi)上機 14 學時 按要求,完成設(shè)計方案,編寫并調(diào)試仿真程序;計劃內(nèi)上機 2 學時 結(jié)果驗收,并完成課程設(shè)計報告。課程設(shè)計開始日期課程設(shè)計開始日期2015.06.23課程設(shè)計完成日期課程設(shè)計完成日期2015.06.30指導老師(簽名):指導老師(簽名):_福建農(nóng)林大學數(shù)字信號處理課程設(shè)計說明書目目 錄錄1 設(shè)計基礎(chǔ).- 1 -1.1 MATLAB 軟件簡介 .- 1 -1.2 樂曲解析 .- 1 -2 設(shè)計與實現(xiàn).- 2

4、-2.1 簡單的音樂合成 .- 2 -2.1.1 原理分析.- 2 -2.1.2 Matlab 源代碼.- 2 -2.1.3 運行結(jié)果分析.- 2 -2.2 除噪音,加包絡(luò) .- 2 -2.2.1 原理分析.- 2 -2.2.2 Matlab 源代碼.- 2 -2.2.3 運行結(jié)果分析.- 2 -2.3 加諧波 .- 2 -2.3.1 原理分析.- 2 -2.3.2 Matlab 源代碼.- 2 -2.3.2 運行結(jié)果分析.- 3 -3 總結(jié)與體會.- 4 -4 參考文獻.- 5 -基于 MATLAB 的簡單音樂合成- - 4 - - 4 -1 設(shè)計基礎(chǔ)設(shè)計基礎(chǔ)1.1 MATLAB 軟件簡介軟

5、件簡介MATLAB 是 matrix&laboratory 兩個詞的組合,意為矩陣工廠(矩陣實驗室MATLAB 工作界面)。是由美國 mathworks 公司發(fā)布的主要面對科學計算、可視化以及交互式程序設(shè)計的高科技計算環(huán)境。它將數(shù)值分析、矩陣計算、科學數(shù)據(jù)可視化以及非線性動態(tài)系統(tǒng)的建模和仿真等諸多強大功能集成在一個易于使用的視窗環(huán)境中,為科學研究、工程設(shè)計以及必須進行有效數(shù)值計算的眾多科學領(lǐng)域提供了一種全面的解決方案,并在很大程度上擺脫了傳統(tǒng)非交互式程序設(shè)計語言(如 C、Fortran)的編輯模式,代表了當今國際科學計算軟件的先進水平。MATLAB 和 Mathematica、Mapl

6、e 并稱為三大數(shù)學軟件。它在數(shù)學類科技應(yīng)用軟件中在數(shù)值計算方面首屈一指。MATLAB 可以進行矩陣運算、繪制函數(shù)和數(shù)據(jù)、實現(xiàn)算法、創(chuàng)建用戶界面、連接其他編程語言的程序等,主要應(yīng)用于工程計算、控制設(shè)計、信號處理與通訊、圖像處理、信號檢測、金融建模設(shè)計與分析等領(lǐng)域。MATLAB 的基本數(shù)據(jù)單位是矩陣,它的指令表達式與數(shù)學、工程中常用的形式十分相似,故用 MATLAB 來解算問題要比用 C,F(xiàn)ORTRAN 等語言完成相同的事情簡捷得多,并且 MATLAB 也吸收了像 Maple 等軟件的優(yōu)點,使 MATLAB 成為一個強大的數(shù)學軟件。在新的版本中也加入了對 C,F(xiàn)ORTRAN,C+,JAVA 的支持

7、。可以直接調(diào)用,用戶也可以將自己編寫的實用程序?qū)氲?MATLAB 函數(shù)庫中方便自己以后調(diào)用,此外許多的 MATLAB 愛好者都編寫了一些經(jīng)典的程序,用戶可以直接進行下載就可以用。1.2 樂曲解析樂曲解析樂音的基本特征可以用基波頻率、諧波頻率和包絡(luò)波形三個方面來描述,我們用大寫英文字母 CDEFGAB 表示每個音的“音名”(或稱為“音調(diào)”),當指定某一音名時,它對應(yīng)固定的基波信號頻率。圖 1 表示鋼琴的鍵盤結(jié)構(gòu),并注明了每個琴鍵對應(yīng)的音名和基波頻率值。這些頻率值是按“十二平均律”計算導出,下面解釋計算規(guī)則:基于 MATLAB 的簡單音樂合成- - 5 - - 5 -圖 1-1 鋼琴鍵盤和相應(yīng)頻

8、率從圖 1-1 可以看到,靠下邊的 A 鍵稱為小字組 A,它的頻率值 fA0= 220Hz,而靠上面的另一個 A 鍵是小字一組 A,它的頻率值是 fA1= 440Hz。兩者為二倍頻率關(guān)系,即 fA1 相當于 fA0 的二次諧波。也稱為 8 度音或倍頻程 Octave(即我們畫頻響特性圖時所用的術(shù)語“倍頻程”)。根據(jù)兩只老虎簡譜和十二平均律計算出該小節(jié)每個樂音的頻率,在 MATLAB中生成幅度為 1,抽樣頻率為 8000kHz 的正弦信號表示這些樂音,用 sound 播放合成的音樂圖 1-2 樂曲兩只老虎曲譜由圖可知兩只老虎的曲調(diào)定為 C,即 1=C,對應(yīng)的頻率為 261.63Hz,據(jù)此可以計算

9、出其他樂音的頻率,類推計算出各樂音對應(yīng)的頻率見表 1-1 部分樂音對應(yīng)的頻率:表 1-1 部分樂音對應(yīng)的頻率樂音樂音1 12 23 31 11 12 23 31 13 34 4頻率頻率261.63293.66329.63261.63261.63293.66329.63261.63329.63349.23樂音樂音5 53 34 45 5基于 MATLAB 的簡單音樂合成- - 6 - - 6 -頻率頻率392329.63349.23392在確定了各樂音的頻率之后需要確定每個樂音的持續(xù)時間。每小節(jié)有兩拍,一拍的時間是 0.5 此部分樂音的持續(xù)時間見表 1-2 部分樂音對應(yīng)的時間:表 1-2 部分樂

10、音對應(yīng)的時間樂音樂音1 12 23 31 11 12 23 31 13 34 4時間時間0.50.50.50.5 0.50.50.50.50.50.5樂音樂音4 45 53 34 45 5時間時間0.510.50.51而在MATLAB中表示樂音所用的抽樣頻率為fs=8000Hz,也就是所1s鐘內(nèi)有8000個點,抽樣點數(shù)的多少就可表示出每個樂音的持續(xù)時間的長短。用一個行向量來存儲這段音樂對應(yīng)的抽樣點,在用sound函數(shù)播放即可。根據(jù)以上分析在MATLAB中編寫如下程序:sound_1_1.mclear;clc;fs=8000;%抽樣頻率f=261.63293.66 329.63 261.63 2

11、61.63 293.66 329.63 261.63 329.63 349.23 392 329.63 349.23 392; %各個樂音對應(yīng)的頻率time=fs*0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,1,0.5,0.5,1;%各個樂音的抽樣點數(shù)N=length(time); %這段音樂的總抽樣點數(shù)east=zeros(1,N); %用east向量來儲存抽樣點n=1;for num=1:N%利用循環(huán)產(chǎn)生抽樣數(shù)據(jù),num表示樂音編號 t=1/fs:1/fs:time(num)/fs; %產(chǎn)生第num個樂音的抽樣點east(n:n+time(num)-1)

12、=sin(2*pi*f(num)*t);%抽樣點對應(yīng)的幅值 n=n+time(num);endsound(east,8000);%播放音樂基于 MATLAB 的簡單音樂合成- - 7 - - 7 -2 設(shè)計與實現(xiàn) 2.1 簡單的音樂合成2.1.1 原理分析根據(jù)兩只老虎片段的簡譜和“十二平均律”計算出該片段中各個樂音的頻率,在 MATLAB 中生成幅度為 1、抽樣頻率為 8000kHz 的正弦信號表示這些樂音。請用 sound 函數(shù)播放每個樂音,聽一聽音調(diào)是否正確,最后用這一系列樂音信號拼出兩只老虎片段,注意控制每個樂音持續(xù)的時間要符合節(jié)拍,用 sound 函數(shù)播放合成的樂音。2.12 Matl

13、ab 源代碼clear;clc;fs=8000;%抽樣頻率f=261.63293.66 329.63 261.63 261.63 293.66 329.63 261.63 329.63 349.23 392 329.63 349.23 392; %各個樂音對應(yīng)的頻率time=fs*0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,1,0.5,0.5,1;%各個樂音的抽樣點數(shù)N=length(time);n=1;for num=1:N%利用循環(huán)產(chǎn)生抽樣數(shù)據(jù),num 表示樂音編號 t=1/fs:1/fs:time(num)/fs; %產(chǎn)生第 num 個樂音的抽樣點ea

14、st(n:n+time(num)-1)=sin(2*pi*f(num)*t);%抽樣點對應(yīng)的幅值 n=n+time(num);endsound(east,8000);%播放音樂2.1.3 運行結(jié)果分析初步合成的音樂音調(diào)符合曲譜,能聽出兩只老虎的旋律。2.2 除噪音,加包絡(luò)2.2.1 原理分析你一定注意到(1)的樂曲中相鄰樂音之間有“啪”的雜聲,這是由于相位不連續(xù)產(chǎn)生了高頻分量。這種噪聲嚴重影響合成音樂的質(zhì)量,喪失真實感,下面通過加包絡(luò)來消噪音。最簡單的包絡(luò)為指數(shù)衰減。最簡單的指數(shù)衰減是對每個音乘以因子,在實驗te基于 MATLAB 的簡單音樂合成- - 8 - - 8 -中首先加的是的衰減,這

15、種衰減方法使用的是相同速度的衰減,但是發(fā)現(xiàn)噪音并1.5te沒有完全消除,播放的音樂效果不是很好,感覺音樂起伏性不強。于是采用不同速度的衰減,根據(jù)樂音持續(xù)時間的長短來確定衰減的快慢,樂音持續(xù)時間越長,衰減的越慢,持續(xù)時間越短,衰減的越快。2.2.2 Matlab 源代碼clear;clc;fs=8000;%抽樣頻率f=261.63293.66 329.63 261.63 261.63 293.66 329.63 261.63 329.63 349.23 392 329.63 349.23 392; %各個樂音對應(yīng)的頻率time=fs*0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5

16、,0.5,0.5,1,0.5,0.5,1;%各個樂音的抽樣點數(shù)%各個樂音對應(yīng)的頻率N=length(time); %這段音樂的總抽樣點數(shù)xio=zeros(1,N); %用 east 向量來儲存抽樣點n=1;for num=1:N%利用循環(huán)產(chǎn)生抽樣數(shù)據(jù),num 表示樂音編號 t=1/fs:1/fs:(time(num)/fs;%產(chǎn)生第 num 個樂音的抽樣點 P=zeros(1,time(num);%P 為存儲包絡(luò)數(shù)據(jù)的向量L=(time(num)*0 1/5 3/8 5/8 1;%包絡(luò)線端點對應(yīng)的橫坐標 T=0 1.5 1 1 0;%包絡(luò)線端點對應(yīng)的縱坐標 s=1; b=1:1:time(n

17、um);%產(chǎn)生包絡(luò)線抽樣點 for k=1:4 P(s:L(k+1)-1)=(T(k+1)-T(k)/(L(k+1)-L(k)*(b(s:L(k+1)-1)-L(k+1)*ones(1,L(k+1)-s)+T(k+1)*ones(1,L(k+1)-s);%包絡(luò)線直線方程通式 s=L(k+1); end laohu(n:n+time(num)-1)=sin(2*pi*f(num)*t).*P(1:time(num);%給第 num 個樂音加上包絡(luò) n=n+time(num);endsound(laohu,8000);plot(laohu);基于 MATLAB 的簡單音樂合成- - 9 - - 9

18、 -wavwrite(laohu, laohu 2)2.2.3 運行結(jié)果分析播放后可以聽出噪音已經(jīng)消除,同時因為不同時長的樂音衰減的快慢不一樣,音樂聽起來更有起伏感,如圖為 2-1 波形圖。圖 2-1 laohu1 加包絡(luò)波形圖2.3 加諧波2.3.1 原理分析在音樂中加上二、三、四次諧波,基波幅度為 1,高次諧波幅度分別為0.2、0.3、0.1。2.3.2 Matlab 源代碼clear;clc;fs=8000;%抽樣頻率f=261.63293.66329.63261.63261.63293.66329.63261.63329.63349.23 392 329.63349.23392; %各

19、個樂音對應(yīng)的頻率基于 MATLAB 的簡單音樂合成- - 10 - - 10 -time=fs*0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,0.5,1,0.5,0.5,1;%各個樂音的抽樣點數(shù)%各個樂音對應(yīng)的頻率N=length(time);%這段音樂的總抽樣點數(shù)xio=zeros(1,N);%用 east 向量來儲存抽樣點n=1;for num=1:N%利用循環(huán)產(chǎn)生抽樣數(shù)據(jù),num 表示樂音編號 t=1/fs:1/fs:(time(num)/fs;%產(chǎn)生第 num 個樂音的抽樣點 P=zeros(1,time(num);%P 為存儲包絡(luò)數(shù)據(jù)的向量L=(time(n

20、um)*0 1/5 3/8 5/8 1;%包絡(luò)線端點對應(yīng)的橫坐標 T=0 1.5 1 1 0;%包絡(luò)線端點對應(yīng)的縱坐標 s=1; b=1:1:time(num);%產(chǎn)生包絡(luò)線抽樣點 for k=1:4 P(s:L(k+1)-1)=(T(k+1)-T(k)/(L(k+1)-L(k)*(b(s:L(k+1)-1)-L(k+1)*ones(1,L(k+1)-s)+T(k+1)*ones(1,L(k+1)-s);%包絡(luò)線直線方程通式 s=L(k+1); end m=1 0.3 0.2;%波形幅值矩陣 ss=zeros(1,length(t); for i=1:length(m) ss=ss+m(i)*

21、sin(2*i*pi*f(num)*t);%加諧波 endlaohu(n:n+time(num)-1)=ss.*P(1:time(num); %給第 num 個樂音加上包絡(luò) laohu (n:n+time(num)-1)=sin(2*pi*f(num)*t).*P(1:time(num);%給第 num 個樂音加上包絡(luò) n=n+time(num);endsound(laohu,8000);plot(laohu);wavwrite(laohu, laohu 3)基于 MATLAB 的簡單音樂合成- - 11 - - 11 -2.3.2 運行結(jié)果分析音樂中加上二、三、四次諧波,基波幅度為 1,高次諧波幅度分別為0.2、0.3、0.1,如圖為 2-2 波形圖。 圖 2-1 laohu2 加諧波波形圖基于 MATLAB 的簡單音樂合成- - 12 - - 12 -3 總結(jié)與體會總結(jié)與體會通過這次的課程設(shè)計,加深了我們對數(shù)字信號處理所學知識的了解,增強了我

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論