信號(hào)處理大作業(yè)軟1110高志遠(yuǎn)201192222_第1頁(yè)
信號(hào)處理大作業(yè)軟1110高志遠(yuǎn)201192222_第2頁(yè)
信號(hào)處理大作業(yè)軟1110高志遠(yuǎn)201192222_第3頁(yè)
信號(hào)處理大作業(yè)軟1110高志遠(yuǎn)201192222_第4頁(yè)
信號(hào)處理大作業(yè)軟1110高志遠(yuǎn)201192222_第5頁(yè)
已閱讀5頁(yè),還剩17頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、Matlab合成一首吉他曲科目 信號(hào)處理 姓名 高志遠(yuǎn) 班級(jí) 軟1110 學(xué)號(hào) 201192222 日期 2013年11月10日 1 目的完成運(yùn)用matlab進(jìn)行音樂(lè)合成的小實(shí)驗(yàn),了解并掌握音樂(lè)合成的基本過(guò)程,學(xué)會(huì)用一定幅度和采樣頻率的正弦信號(hào)表示相關(guān)的樂(lè)音,并將這些樂(lè)音信號(hào)賦予一定的持續(xù)時(shí)間連續(xù)起來(lái)變成一段簡(jiǎn)單的曲子,并學(xué)會(huì)去除由于信號(hào)相位不一致而產(chǎn)生的高頻分量的噪音,更改音樂(lè)的音階以及向信號(hào)中添加諧波分量來(lái)改變信號(hào)音色等簡(jiǎn)單的音樂(lè)合成處理方法;此外,更深入一些的,還要學(xué)會(huì)運(yùn)用傅里葉級(jí)數(shù)來(lái)分析音樂(lè),用wavread 和resample函數(shù)來(lái)去除樂(lè)曲中的非線性諧波和噪聲,學(xué)會(huì)分析樂(lè)曲屬于哪個(gè)基

2、頻和音調(diào),以及它的諧波分量是什么。2 原理1.相關(guān)背景知識(shí)十二平均律:世界上通用的把一組音(八度)分成十二個(gè)半音音程的律制,各相鄰兩律之間的振動(dòng)數(shù)之比完全相等。十二平均律是指將八度的音程(二倍頻程)按頻率等比例地分 成十二等份,每一等份稱為一個(gè)半音即小二度。一個(gè)大二度則是兩等份。 將一個(gè)八度分成12等份有著驚人的一些湊巧。它的純五度音程的兩個(gè)音的頻率比(即 2 的 7/12 次方)與 1.5 非常接近,人耳基 本上聽(tīng)不出“五度相生律”和“十二平均律”的五度音程的差別。 樂(lè)音及其基本特征:發(fā)音物體有規(guī)律地振動(dòng)而產(chǎn)生的具有固定音高的音稱樂(lè)音。 樂(lè)音有三個(gè)主要特征:即響度(又稱音強(qiáng)),音調(diào)(又稱音高

3、)和音色,稱為樂(lè)音三要素。響度:描述的是聲音的響亮程度 ,與聲源的振幅有關(guān) 與聽(tīng)者的距離有關(guān) 。 音調(diào):聲音頻率的高低叫做音調(diào)。音調(diào)主要由聲音的頻率決定。對(duì)一定強(qiáng)度的純音,音調(diào)隨頻率的升降而升降;對(duì)一定頻率的純音、低頻純音的音調(diào)隨聲強(qiáng)增加而下降,高頻純音的音調(diào)卻隨強(qiáng)度增加而上升。 音色:指聲音的感覺(jué)特性。不同的發(fā)聲體由于材料、結(jié)構(gòu)不同,發(fā)出聲音的音色也就不同,可以通過(guò)音色的不同去分辨不同的發(fā)聲體音色是聲音的特色。音樂(lè)波形包絡(luò):樂(lè)音的波形包絡(luò)指樂(lè)音演奏(彈、吹、拉,撥)每一音符時(shí),單個(gè)樂(lè)音振幅起始和結(jié)束的瞬態(tài),也就是波形的包絡(luò)。有些樂(lè)器,在彈、吹、拉、撥的開(kāi)始一瞬間,振幅馬上達(dá)到最大值,然后振幅

4、逐步衰減,有的樂(lè)器則相反,在開(kāi)始的瞬間振奮較小,然后逐漸加大,再逐漸衰減。這些波形包絡(luò)變化也影響樂(lè)器的音色。2. 運(yùn)用到的一些原理主要相關(guān)函數(shù):waveread函數(shù):a,fs,nbit=wavread('wo.wav'),前面三個(gè)參數(shù)中a是語(yǔ)音信號(hào),fs是指語(yǔ)音信號(hào)的采樣頻率,請(qǐng)問(wèn)nbit指采樣精度。 resample函數(shù):對(duì)模擬信號(hào)進(jìn)行抽取采樣,是抽取decimate和插值interp的兩個(gè)結(jié)合。repmat函數(shù):復(fù)制和平鋪矩陣 (B = repmat(A,m,n) %將矩陣A復(fù)制m×n塊,即B由m×n塊A平鋪而成)。analyse函數(shù):用于分析音調(diào)頻率。

5、floor函數(shù):向負(fù)方向舍入。傅里葉變換時(shí)域分析3 所需軟件及文件軟件:Matlab2013相關(guān)文件:fmt.wav,Guitar.MAT參考資料:音樂(lè)合成.PDF,百度4 過(guò)程步驟及結(jié)果1. 用matlab進(jìn)行電子音樂(lè)合成1.1由已經(jīng)掌握的相關(guān)電子音樂(lè)信號(hào)的背景知識(shí),以東方紅的某一片段的簡(jiǎn)譜為例,計(jì)算出該片斷中各個(gè)樂(lè)音的頻率,在MATLAB 中生成幅度為1 、抽樣頻率為8kHz 的正弦信號(hào)表示這些樂(lè)音。用sound 函數(shù)播放每個(gè)樂(lè)音,檢查音調(diào)是否正確。最后用這一系列樂(lè)音信號(hào)拼出東方紅片斷,控制每個(gè)樂(lè)音持續(xù)的時(shí)間要符合節(jié)拍,用sound 播放自己合成的音樂(lè)。已知F調(diào)唱名與音名之對(duì)應(yīng)關(guān)系如下:音

6、1對(duì)應(yīng)的是F,頻率是4402412=349.23Hz 音2對(duì)應(yīng)的是G,頻率是4402212=392.00Hz 音5對(duì)應(yīng)的是C,頻率是4402312=523.25Hz 音6下面加了點(diǎn),對(duì)應(yīng)的是D還要降一階,頻率是4402512+1=293.67Hz 對(duì)于東方紅的前四小節(jié):可以列表表示每個(gè)音的頻率與持續(xù)時(shí)間如下:樂(lè)音55621162頻率/Hz523.25 523.25 587.33 392.00 349.23 349.23 293.67 392.00 持續(xù)時(shí)間/s0.50.250.2510.50.250.251運(yùn)行文件first.m播放音樂(lè),聽(tīng)起來(lái)只是在調(diào)子上符合了能聽(tīng)出來(lái)這是東方紅的調(diào)子,但是整

7、體聽(tīng)起來(lái)還是有些刺耳,沒(méi)有曲調(diào)應(yīng)有的圓潤(rùn)的連接性和優(yōu)美感。代碼如下:first.mf=8000;T=1/f;t8=0:T:1*0.25;t4=0:T:2*0.25;t2=0:T:4*0.25;t1=0:T:8*0.25;part1=sin(2*pi*523.25*t4);part2=sin(2*pi*523.25*t8);part3=sin(2*pi*587.33*t8);part4=sin(2*pi*392.00*t2);part5=sin(2*pi*349.23*t4);part6=sin(2*pi*349.23*t8);part7=sin(2*pi*293.66*t8);part8=si

8、n(2*pi*392.00*t2);total=part1,part2,part3,part4,part5,part6,part7,part8;sound(total);1.2剛才提到在1.1中聽(tīng)到的曲子有一點(diǎn)刺耳,連貫性不是很好,整體感覺(jué)比較生硬,這是因?yàn)槊總€(gè)音由于相位的不一致性而產(chǎn)生了高頻分量,也就是我們聽(tīng)到的“呲呲”的雜音,這種雜音可以通過(guò)加包絡(luò)來(lái)消除。最簡(jiǎn)單的包絡(luò)為指數(shù)衰減。最簡(jiǎn)單的指數(shù)衰減是對(duì)每個(gè)音乘以因子,在實(shí)驗(yàn)中首先加的是的衰減,這種衰減方法使用的是相同速度的衰減,但是發(fā)現(xiàn)噪音并沒(méi)有完全消除,播放的音樂(lè)效果不是很好,感覺(jué)音樂(lè)起伏性不強(qiáng)。于是采用不同速度的衰減,根據(jù)樂(lè)音持續(xù)時(shí)間的長(zhǎng)

9、短來(lái)確定衰減的快慢,樂(lè)音持續(xù)時(shí)間越長(zhǎng),衰減的越慢,持續(xù)時(shí)間越短,衰減的越快。在1.1程序的基礎(chǔ)上加上包絡(luò),編寫(xiě)如下程序:second.mf=8000; t=0:1/f:4-1/f; t1=t(1:0.5*f); t2=t(0.5*f+1:0.75*f); t3=t(0.75*f+1:1*f); t4=t(1*f+1:2*f); t5=t(2*f+1:2.5*f); t6=t(2.5*f+1:2.75*f); t7=t(2.75*f+1:3*f); t8=t(3*f+1:4*f); voice1=exp(-2*t1).*sin(2*pi*523.25*t1); voice2=exp(4*(0.5

10、-t2).*sin(2*pi*523.25*t2); voice3=exp(4*(0.75-t3).*sin(2*pi*587.33*t3); voice4=exp(1*(1-t4).*sin(2*pi*392*t4); voice5=exp(2*(2-t5).*sin(2*pi*349.23*t5); voice6=exp(4*(2.5-t6).*sin(2*pi*349.23*t6); voice7=exp(4*(2.75-t7).*sin(2*pi*293.66*t7); voice8=exp(1*(3-t8).*sin(2*pi*392*t8); voice=voice1,voice2

11、,voice3,voice4,voice5,voice6,voice7,voice8; sound(voice);這樣,運(yùn)行后發(fā)現(xiàn)調(diào)子聽(tīng)起來(lái)好像不像剛才那么刺耳了,變得更加圓潤(rùn)渾厚了,這是因?yàn)榘j(luò)消除了信號(hào)中的一些高頻分量,并且因?yàn)椴煌瑫r(shí)長(zhǎng)的樂(lè)音衰減的快慢不一樣,音樂(lè)聽(tīng)起來(lái)節(jié)奏感更加強(qiáng)烈了。下圖就是所用的包絡(luò):1.3接下來(lái)將去噪后的音樂(lè)再分別升高和降低8度,最后再升高半個(gè)音階。由老師給的音樂(lè)合成PDF文檔資料我了解到了“十二平均律”,一個(gè)八度平均分成十二等份,每等分稱為半音 (原來(lái)鋼琴就是依據(jù)這個(gè)設(shè)計(jì)的,看來(lái)歷史很久遠(yuǎn)了),間隔八度的音的頻率是2倍關(guān)系,在合成聲音時(shí),在正弦信號(hào)內(nèi)添加系數(shù)改變其

12、頻率,這樣可到升高和降低八度的音樂(lè)。升高半個(gè)音階:即將頻率變?yōu)樵瓉?lái)的(1.06)倍,可以利用resamlpe函數(shù)對(duì)原來(lái)的數(shù)據(jù)點(diǎn)進(jìn)行重采樣來(lái)實(shí)現(xiàn)east=resample(east,100,106);代碼如下:升高八度f(wàn)=8000; t=0:1/f:4-1/f; t1=t(1:0.5*f); t2=t(0.5*f+1:0.75*f); t3=t(0.75*f+1:1*f); t4=t(1*f+1:2*f); t5=t(2*f+1:2.5*f); t6=t(2.5*f+1:2.75*f); t7=t(2.75*f+1:3*f); t8=t(3*f+1:4*f);voiceice1=exp(-4*t

13、1).*sin(4*pi*523.25*t1); voiceice2=exp(8*(0.5-t2).*sin(4*pi*523.25*t2); voiceice3=exp(8*(0.75-t3).*sin(4*pi*587.33*t3); voiceice4=exp(2*(1-t4).*sin(4*pi*392*t4); voiceice5=exp(4*(2-t5).*sin(4*pi*349.23*t5); voiceice6=exp(8*(2.5-t6).*sin(4*pi*349.23*t6); voiceice7=exp(8*(2.75-t7).*sin(4*pi*293.66*t7)

14、; voiceice8=exp(2*(3-t8).*sin(4*pi*392*t8); voiceice=voiceice1,voiceice2,voiceice3,voiceice4,voiceice5,voiceice6,voiceice7,voiceice8; sound(voiceice);降低八度f(wàn)=8000; t=0:1/f:4-1/f; t1=t(1:0.5*f); t2=t(0.5*f+1:0.75*f); t3=t(0.75*f+1:1*f); t4=t(1*f+1:2*f); t5=t(2*f+1:2.5*f); t6=t(2.5*f+1:2.75*f); t7=t(2.7

15、5*f+1:3*f); t8=t(3*f+1:4*f); voiceice1=exp(-4*t1).*sin(pi*523.25*t1); voiceice2=exp(8*(0.5-t2).*sin(pi*523.25*t2); voiceice3=exp(8*(0.75-t3).*sin(pi*587.33*t3); voiceice4=exp(2*(1-t4).*sin(pi*392*t4); voiceice5=exp(4*(2-t5).*sin(pi*349.23*t5); voiceice6=exp(8*(2.5-t6).*sin(pi*349.23*t6); voiceice7=e

16、xp(8*(2.75-t7).*sin(pi*293.66*t7); voiceice8=exp(2*(3-t8).*sin(pi*392*t8); voiceice=voiceice1,voiceice2,voiceice3,voiceice4,voiceice5,voiceice6,voiceice7,voiceice8; sound(voiceice);1.4最后,再向音樂(lè)中加入一些諧波分量,改變音調(diào)的音色,使其更加生動(dòng)。代碼如下:last.mf=8000; t=0:1/f:4-1/f; t1=t(1:0.5*f); t2=t(0.5*f+1:0.75*f); t3=t(0.75*f+1

17、:1*f); t4=t(1*f+1:2*f); t5=t(2*f+1:2.5*f); t6=t(2.5*f+1:2.75*f); t7=t(2.75*f+1:3*f); t8=t(3*f+1:4*f); p1=523.25; p2=523.25; p3=587.33; p4=392; p5=349.23; p6=349.23; p7=293.66; p8=392; voiceice1=exp(-4*t1).*(sin(2*pi*p1*t1)+0.2*sin(4*pi*p1*t1)+0.3*sin(6*pi*p1*t1); voiceice2=exp(8*(0.5-t2).*(sin(2*pi*

18、p2*t2)+0.2*sin(4*pi*p2*t2)+0.3*sin(6*pi*p2*t2); voiceice3=exp(8*(0.75-t3).*(sin(2*pi*p3*t3)+0.2*sin(4*pi*p3*t3)+0.3*sin(6*pi*p3*t3); voiceice4=exp(2*(1-t4).*(sin(2*pi*p4*t4)+0.2*sin(4*pi*p4*t4)+0.3*sin(6*pi*p4*t4); voiceice5=exp(4*(2-t5).*(sin(2*pi*p5*t5)+0.2*sin(4*pi*p5*t5)+0.3*sin(6*pi*p5*t5); voi

19、ceice6=exp(8*(2.5-t6).*(sin(2*pi*p6*t6)+0.2*sin(4*pi*p6*t6)+0.3*sin(6*pi*p6*t6); voiceice7=exp(8*(2.75-t7).*(sin(2*pi*p7*t7)+0.2*sin(4*pi*p7*t7)+0.3*sin(6*pi*p7*t7); voiceice8=exp(2*(3-t8).*(sin(2*pi*p8*t8)+0.2*sin(4*pi*p8*t8)+0.3*sin(6*pi*p8*t8); voiceice=voiceice1,voiceice2,voiceice3,voiceice4,voi

20、ceice5,voiceice6,voiceice7,voiceice8; sound(voiceice); 1.5自選一首其他歌曲進(jìn)行音樂(lè)合成,我選的是茉莉花。代碼如下:1=D 4/4曲調(diào)為C,因此可以得到每個(gè)樂(lè)音對(duì)應(yīng)的頻率分別為:1(高音)356104665978488012345262.63293.66329.63349.23392每小節(jié)有四拍,一拍的時(shí)間是0.5s,因此各樂(lè)音的持續(xù)時(shí)間為:樂(lè)音33561165時(shí)間0.50.50.50.50.50.50.50.5樂(lè)音565時(shí)間0.50.51代碼如下:molihua.mclear;clc;fs=8000; f=659 659 784 880

21、 1046 1046 880 784 784 880 784; time=fs*1/2,1/2,1/2,1/2,1/2,1/2,1/2,1/2,1/2,1/2,1;N=length(time); east=zeros(1,N); n=1;for num=1:N t=1/fs:1/fs:time(num)/fs; G=zeros(1,time(num); G(1:time(num)=exp(1:(-1/time(num):1/8000); east(n:n+time(num)-1)=sin(2*pi*f(num)*t).*G(1:time(num); n=n+time(num);Endsound

22、(east,8000); plot(east);包絡(luò)后的圖像:2. 用傅里葉級(jí)數(shù)分析音樂(lè)2.1載入fmt.wav并播放利用wavread函數(shù)載入,用sound函數(shù)播放,程序如下:wave=wavread('fmt.wav');sound(wave)這段音樂(lè)聽(tīng)起來(lái)比之前合成的音樂(lè)更加真實(shí),因?yàn)槔镞吅胸S富的諧波。2.2 載入文件Guitar.mat,處理原始數(shù)據(jù)realwave載入文件Guitar.mat,分析wave2proc是怎么由realwave得到的。利用load Guitar.mat;載入并用plot函數(shù)將realwave、wave2proc分別畫(huà)出,得到以下兩幅圖可以

23、看到,wave2proc比realwave的周期性好得多,去掉了非線性諧波和噪聲。在時(shí)域做,從圖上可以看到,realwave的數(shù)據(jù)大約是10個(gè)周期的共243個(gè)數(shù)據(jù),因此可以用resample函數(shù)對(duì)realwave進(jìn)行重新采樣,將采樣點(diǎn)提高到250個(gè),那么重采樣后每個(gè)周期有25個(gè)點(diǎn),將這25個(gè)點(diǎn)對(duì)應(yīng)相加求平均值后得到一個(gè)周期的值,因?yàn)檫M(jìn)行了平均,減小了非線性諧波和噪音,然后將這25個(gè)數(shù)據(jù)延托成十個(gè)周期即250個(gè)點(diǎn),在利用resample函數(shù)對(duì)得到的函數(shù)重新采樣將采樣點(diǎn)數(shù)恢復(fù)到243個(gè)。根據(jù)以上分析,編寫(xiě)實(shí)現(xiàn)這個(gè)思路的程序如下:clear;clc;load Guitar.mat;wave=resa

24、mple(realwave,250,243); w=zeros(1,25);for i=1:25 for k=0:9 w(i)=w(i)+wave(25*k+i); endendw=w/10; wave2=repmat(w,1,10); wave2=resample(wave2,243,250); hold on,plot(wave2,'r'),hold off; hold on,plot(wave2proc); 運(yùn)行后的結(jié)果為:2.3分析wave2proc的基波和諧波為了分析wave2proc的基波和諧波,可以對(duì)wave2proc進(jìn)行傅里葉變換,得到wave2proc的幅值譜

25、,在頻譜圖上的第一個(gè)突出的波峰對(duì)應(yīng)的頻率即為wave2proc基頻,利用help fft學(xué)習(xí)了MATLAB中快速傅里葉變換函數(shù)fft的用法,編寫(xiě)了如下程序:clear;clc;load Guitar.mat;fs=8000; NFFT = 2nextpow2(length(wave2proc); Y = fft(wave2proc,NFFT)/length(wave2proc);g = fs/2*linspace(0,1,NFFT/2+1);plot(g,2*abs(Y(1:NFFT/2+1)運(yùn)行后得到的結(jié)果為雖然從圖上可以大概看出包絡(luò),但是非常不明顯,假如提高頻域的抽樣頻率,例如將抽樣頻率由

26、NFFT = 2nextpow2(length(wave2proc)改為NFFT = 8nextpow2(length(wave2proc)得到的結(jié)果如下;由圖可見(jiàn)雖然頻域的抽樣頻率提高了很多,但是得到的包絡(luò)依然不精確,這是因?yàn)閣ave2proc是周期函數(shù),但是現(xiàn)在的wave2proc只有243個(gè)數(shù)據(jù)點(diǎn),并不能非常明顯的體現(xiàn)出其周期性,因此它的幅值譜的離散化程度不高,雖然提高了頻域的抽樣頻率,但是wave2proc數(shù)據(jù)點(diǎn)的周期性并沒(méi)有增加,所以要顯示出離散化程度高的幅值譜,就要增加wave2proc的周期性,即讓wave2proc在時(shí)域重復(fù)多次后在進(jìn)行傅里葉變換。利用repmat函數(shù)可以將wa

27、ve2proc在時(shí)域重復(fù)。將程序修改為clear;clc;load Guitar.mat;fs=8000; wave2proc =repmat(wave2proc,20,1);NFFT = 2nextpow2(length(wave2proc); Y = fft(wave2proc,NFFT)/length(wave2proc);g = fs/2*linspace(0,1,NFFT/2+1);plot(g,2*abs(Y(1:NFFT/2+1)運(yùn)行后得到的幅值譜為可以看出幅值譜的離散化程度已經(jīng)非常高了。由圖讀出wave2proc的基頻為329.1Hz,幅值為0.05401,高次諧波幅值分別為:

28、諧波23456789幅值0.076760.048410.051900.0057090.019230.0067410.0073262.4自動(dòng)分析fmt.wav的音調(diào)和節(jié)拍思路分析:將fmt.wav導(dǎo)入后得到的是一個(gè)向量,它包含了這段音樂(lè)的所有信息,要自動(dòng)分析這段音樂(lè)的音調(diào)就需要將每個(gè)音調(diào)對(duì)應(yīng)的點(diǎn)進(jìn)行傅里葉變換得到其幅值譜,在幅值譜上找到第一個(gè)幅值較大的極大值點(diǎn),該點(diǎn)對(duì)應(yīng)的就是該音調(diào)的基頻,得到基頻后就可以得到高次諧波的幅值。為了使對(duì)每個(gè)音調(diào)進(jìn)行傅里葉變換后得到的幅值譜離散程度高,應(yīng)該將每個(gè)音調(diào)的數(shù)據(jù)在時(shí)域上重復(fù)多次,由于這些點(diǎn)都是直接采集的為做處理的點(diǎn),因此其重復(fù)次數(shù)應(yīng)該足夠大才能體現(xiàn)出較強(qiáng)周期

29、性,本實(shí)驗(yàn)采用重復(fù)1000次,雖然重復(fù)次數(shù)越多越好,但是次數(shù)太大,程序運(yùn)行的速度會(huì)大大降低。這里邊還有兩個(gè)關(guān)鍵點(diǎn):第一,在從幅值譜上找基頻時(shí),因?yàn)閳D上的極大值點(diǎn)很多,怎么能讓程序自動(dòng)確定出準(zhǔn)確的基頻。第二,在程序找到了基頻之后,再由基頻去獲取高次諧波的幅值時(shí)需要有一定的容錯(cuò)能力,例如若基頻為200Hz,幅值為1,那么對(duì)應(yīng)的二次諧波的頻率為400Hz,但是很可能恰好幅值譜上400Hz處的幅值為0.01,但是401Hz處的幅值為0.2,這時(shí)實(shí)際上的二次諧波應(yīng)該為401Hz,但是若沒(méi)有給基頻一個(gè)容錯(cuò)范圍,顯然找到的二次諧波的幅值是不正確的。針對(duì)以上提出的兩個(gè)關(guān)鍵點(diǎn),我找到了兩條有針對(duì)性的解決辦法。對(duì)

30、于第一點(diǎn),因?yàn)榉底V上極大值點(diǎn)的幅值足夠大才能將其定位基頻,因此在分析了幾個(gè)音調(diào)后發(fā)現(xiàn)基頻處的幅值都在0.025以上,因此將基頻處的限定條件改為幅值大于0.025的,但是在運(yùn)行后發(fā)現(xiàn),有幾個(gè)音調(diào)沒(méi)有分析出來(lái),說(shuō)明它們的基頻幅值小于0.025,其實(shí)可以觀察一下fmt.wav的波形就會(huì)發(fā)現(xiàn),有幾段的整體幅值很小,因此基頻幅值小,于是又在加上限定條件,若所有點(diǎn)的幅值都小于0.02,那么再用0.015作為幅值的限定條件繼續(xù)找,這樣就將剩下的音調(diào)基頻也確定出來(lái)了。對(duì)于上述的第二點(diǎn),可以將確定出的基頻的誤差設(shè)為+-1Hz,例如程序確定的基頻為200Hz,實(shí)際的基頻應(yīng)該在(200-1)到(200+1)之間,

31、那么k次諧波對(duì)應(yīng)的頻率范圍是k*(200-1)到k*(200+1),在這個(gè)區(qū)間中繼續(xù)找幅值的極大值點(diǎn)就是k次諧波對(duì)應(yīng)點(diǎn)。根據(jù)以上思路,下面開(kāi)始編寫(xiě)用于分析一個(gè)音調(diào)頻率的函數(shù)analysis。在取諧波幅值時(shí),幅值小于基波幅值5%的諧波認(rèn)為其幅值為0,最終諧波的幅值用歸一化后的數(shù)據(jù)表示。analysis.mfunction y1 y2=analysis(w,a)fs=a; y1=zeros(1,7);y2=zeros(1,7);NFFT = 2nextpow2(length(w); Y = fft(w,NFFT)/length(w);g = fs/2*linspace(0,1,NFFT/2+1);

32、p=2*abs(Y(1:NFFT/2+1);plot(g,p)d=floor(NFFT/fs);for k=2:length(p)-1if (p(k)>0.02)&&(p(k)>p(k-1)&&(p(k)>p(k+1) y1(1)=g(k); y2(1)=p(k); breakelseif (p(k)>0.015)&&(p(k)>p(k-1)&&(p(k)>p(k+1) y1(1)=g(k); y2(1)=p(k); endendfor t=2:7for i=t*(k-d):t*(k+d) if

33、 (p(k)>0.02)&&(p(i)>0.05*p(k)&&(p(i)>p(i-1)&&(p(i)>p(i+1) y2(t)=p(i)/y2(1); y1(t)=g(i); break elseif (p(k)>0.015)&&(p(i)>0.05*p(k)&&(p(i)>p(i-1)&&(p(i)>p(i+1) y2(t)=p(i)/y2(1); y1(t)=g(i); end endend在編寫(xiě)完分析函數(shù)analysis后即可編寫(xiě)自動(dòng)分析的主程序

34、。首先在Coool Edit中手動(dòng)標(biāo)定音調(diào)交界處的時(shí)間節(jié)點(diǎn),得到了time向量time=floor(0.096 0.267 1.767 2.234 2.706 3.146 3.606. 4.056 4.520 5.030 5.749 5.978 7.015 7.709 7.923. 8.028 8.490 8.959 9.454 9.852 10.125 10.356. 10.565 10.822 11.292 11.741 12.284 12.741.13.269 13.758 14.315 14.939 15.432/16.384*N);/16.384*N中16.384是fmt.wav的總

35、長(zhǎng)度,N為fmt.wav數(shù)據(jù)點(diǎn)的總數(shù),這一項(xiàng)是為了將時(shí)間轉(zhuǎn)換成對(duì)應(yīng)的數(shù)據(jù)點(diǎn)數(shù),由于點(diǎn)的個(gè)數(shù)必須是整數(shù),因此用floor函數(shù)進(jìn)行取整。在得到了對(duì)應(yīng)音調(diào)交接處的點(diǎn)后就可以進(jìn)行編程了,用循環(huán)一個(gè)一個(gè)音調(diào)分析。程序如下:clear;clc;wave=wavread('fmt.wav');N=length(wave);time=floor(0.096 0.267 1.767 2.234 2.706 3.146 3.606. 4.056 4.520 5.030 5.749 5.978 7.015 7.709 7.923. 8.028 8.490 8.959 9.454 9.852 10.1

36、25 10.356. 10.565 10.822 11.292 11.741 12.284 12.741.13.269 13.758 14.315 14.939 15.432/16.384*N); fs=N/16.384;n=length(time);for k=1:n; if k=1 temp=wave(1:time(k)-1); else temp=wave(time(k-1):time(k)-1); end temp=repmat(temp,1000,1);F(k,1:7) U(k,1:7)=analysis(temp,fs); end運(yùn)行后的結(jié)果f:基頻2次3次4次5次6次7次音調(diào)00

37、00000-162.9181325.7904488.7619651.6571814.6057971.90860約為F-1219.6264437.9168656.208881.1751101.4691320.4270約為A0199.58110596.6377796.2189993.698100約為G194.862400777.3018970.020300約為G218.9598437.9234654.6288873.5886000約為A0220.0432440.0864657.9018880.17271102.3981315.8490約為A1190.6357381.2714569.66780001

38、334.454約為G-1171.566343.128200000約為F-1171.936343.8721513.83210000約為F-1173.7938346.20670001048.2750約為F-1161.9415323.8678485.8284644.1727806.118968.05950約為E-1163.7096326.3817489.0556651.72960980.18460約為E-1328.6266655.9525983.31261310.65601973.0422299.101約為E0170.9442341.8732512.8174683.7616000約為F-1165.2

39、832330.5817495.8649660.965826.4465991.72970約為E-1220.3026440.6052658.7486883.36941101.5131321.8150約為A0199.1539398.3040794.4908991.493201389.832約為G-1220.0012439.9414658.0009877.998401316.0020約為A0216.07970645.72910000約為A0203.125406.250808.593801222.6560約為bA-1262.4969525.0015787.49851050.0031312.51570.8

40、310約為C0262.6266525.2533787.87991050.5071313.0341575.760約為C0287.3116574.6078001432.8351727.6120約為D0131.3896262.6648392.0517523.4451652.6871784.1072917.6178約為C-1245.4262490.8409734.0279979.4541231.6361474.8121713.482約為B-1146.5607291.1263436.6894583.25732.8014877.3671026.918約為D-1174.4785347.0821521.575

41、9694.1833868.66761046.9040約為F-1173.4695346.939100000約為F-1164.6156327.4384492.0292656.6772819.5038982.33030約為E-1164.0129326.4332490.4461652.8664824.8405985.66820約為E-1191.23840573.70000約為G-1199.58110.01015800.0579280.0501110.12692100194.86240.010493000.1247490.06690900218.95980.01160.2727460.1399910.0

42、62002000220.04320.0205350.6410080.0738940.0502470.050220.0648180190.63570.0171570.0599480.0731850000.05504171.5660.0127730.25513900000171.9360.0106530.0616470.0620840000173.79380.015720.0559720000.0601510161.94150.0103480.0547650.1874380.0558690.0838230.0650510163.70960.0105790.0874260.0870860.23415

43、600.0585190328.62660.0117930.0546220.1764070.08694100.0709020.110216170.94420.0137760.0859240.0851090.076761000165.28320.020761.0537680.0669080.0530990.3314870.1073940220.30260.0318960.5224910.1480910.1282550.0667720.0803530199.15390.0108830.06656500.0880350.09336200.05355220.00120.0123590.0545770.6

44、714650.08424200.2409370216.07970.01530700.1098930000203.1250.0111770.62905300.18835500.0504160262.49690.0135770.230660.2837110.2210180.0797410.0656690262.62660.0118840.0512080.3874530.5507130.0528350.1751920287.31160.0119170.063939000.0631010.0715110131.38960.0129270.0559980.072110.9534420.0644610.1

45、065740.052956245.42620.0165640.113990.0742860.1383470.0525330.0505790.055313146.56070.0207630.46440.0501270.1299050.1067590.0706520.051874174.47850.0130810.05660.0809760.0677390.0595620.1178240173.46950.0191020.19836900000164.61560.0112360.0581930.0578780.0795020.1256260.0882450164.01290.0134350.0516640.1354160.1161660.0600760.0939530191.23840.02452200.08807800002.5基于傅里葉級(jí)數(shù)的合成音樂(lè)最后,用演奏fmt.wav 的吉他合成出一段東方紅。聽(tīng)一聽(tīng)是否像演奏fmt.wav 的吉他演奏出來(lái)的。perfect.mfz=8000;t=0:1/fz:4-1/fz; t1=t(1:0.5*fz); t2=t(0.5*fz+1:0.75*fz); t3=t(0.75*fz+1:1*fz); t4=t(1*fz+1:2*fz); t5=t(2*fz+1:

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論