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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

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

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

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

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

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

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

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

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

9、出其他樂音的頻率,類推計算出各樂音對應的頻率見表 1-1 部分樂音對應的頻率:表 1-1 部分樂音對應的頻率樂音樂音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 部分樂音對應的時間:表 1-2 部分樂

10、音對應的時間樂音樂音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鐘內有8000個點,抽樣點數(shù)的多少就可表示出每個樂音的持續(xù)時間的長短。用一個行向量來存儲這段音樂對應的抽樣點,在用sound函數(shù)播放即可。根據以上分析在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; %各個樂音對應的頻率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)產生抽樣數(shù)據,num表示樂音編號 t=1/fs:1/fs:time(num)/fs; %產生第num個樂音的抽樣點east(n:n+time(num)-1)

12、=sin(2*pi*f(num)*t);%抽樣點對應的幅值 n=n+time(num);endsound(east,8000);%播放音樂基于 MATLAB 的簡單音樂合成- - 7 - - 7 -2 設計與實現(xiàn) 2.1 簡單的音樂合成2.1.1 原理分析根據兩只老虎片段的簡譜和“十二平均律”計算出該片段中各個樂音的頻率,在 MATLAB 中生成幅度為 1、抽樣頻率為 8000kHz 的正弦信號表示這些樂音。請用 sound 函數(shù)播放每個樂音,聽一聽音調是否正確,最后用這一系列樂音信號拼出兩只老虎片段,注意控制每個樂音持續(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; %各個樂音對應的頻率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)產生抽樣數(shù)據,num 表示樂音編號 t=1/fs:1/fs:time(num)/fs; %產生第 num 個樂音的抽樣點ea

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

15、種衰減方法使用的是相同速度的衰減,但是發(fā)現(xiàn)噪音并1.5te沒有完全消除,播放的音樂效果不是很好,感覺音樂起伏性不強。于是采用不同速度的衰減,根據樂音持續(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; %各個樂音對應的頻率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ù)%各個樂音對應的頻率N=length(time); %這段音樂的總抽樣點數(shù)xio=zeros(1,N); %用 east 向量來儲存抽樣點n=1;for num=1:N%利用循環(huán)產生抽樣數(shù)據,num 表示樂音編號 t=1/fs:1/fs:(time(num)/fs;%產生第 num 個樂音的抽樣點 P=zeros(1,time(num);%P 為存儲包絡數(shù)據的向量L=(time(num)*0 1/5 3/8 5/8 1;%包絡線端點對應的橫坐標 T=0 1.5 1 1 0;%包絡線端點對應的縱坐標 s=1; b=1:1:time(n

17、um);%產生包絡線抽樣點 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);%包絡線直線方程通式 s=L(k+1); end laohu(n:n+time(num)-1)=sin(2*pi*f(num)*t).*P(1:time(num);%給第 num 個樂音加上包絡 n=n+time(num);endsound(laohu,8000);plot(laohu);基于 MATLAB 的簡單音樂合成- - 9 - - 9

18、 -wavwrite(laohu, laohu 2)2.2.3 運行結果分析播放后可以聽出噪音已經消除,同時因為不同時長的樂音衰減的快慢不一樣,音樂聽起來更有起伏感,如圖為 2-1 波形圖。圖 2-1 laohu1 加包絡波形圖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、個樂音對應的頻率基于 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ù)%各個樂音對應的頻率N=length(time);%這段音樂的總抽樣點數(shù)xio=zeros(1,N);%用 east 向量來儲存抽樣點n=1;for num=1:N%利用循環(huán)產生抽樣數(shù)據,num 表示樂音編號 t=1/fs:1/fs:(time(num)/fs;%產生第 num 個樂音的抽樣點 P=zeros(1,time(num);%P 為存儲包絡數(shù)據的向量L=(time(n

20、um)*0 1/5 3/8 5/8 1;%包絡線端點對應的橫坐標 T=0 1.5 1 1 0;%包絡線端點對應的縱坐標 s=1; b=1:1:time(num);%產生包絡線抽樣點 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);%包絡線直線方程通式 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 個樂音加上包絡 laohu (n:n+time(num)-1)=sin(2*pi*f(num)*t).*P(1:time(num);%給第 num 個樂音加上包絡 n=n+time(num);endsound(laohu,8000);plot(laohu);wavwrite(laohu, laohu 3)基于 MATLAB 的簡單音樂合成- - 11 - - 11 -2.3.2 運行結果分析音樂中加上二、三、四次諧波,基波幅度為 1,高次諧波幅度分別為0.2、0.3、0.1,如圖為 2-2 波形圖。 圖 2-1 laohu2 加諧波波形圖基于 MATLAB 的簡單音樂合成- - 12 - - 12 -3 總結與體會總結與體會通過這次的課程設計,加深了我們對數(shù)字信號處理所學知識的了解,增強了我

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論