最新使用matlab進(jìn)行簡(jiǎn)單音樂合成_第1頁(yè)
最新使用matlab進(jìn)行簡(jiǎn)單音樂合成_第2頁(yè)
最新使用matlab進(jìn)行簡(jiǎn)單音樂合成_第3頁(yè)
最新使用matlab進(jìn)行簡(jiǎn)單音樂合成_第4頁(yè)
最新使用matlab進(jìn)行簡(jiǎn)單音樂合成_第5頁(yè)
已閱讀5頁(yè),還剩3頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

付費(fèi)下載

下載本文檔

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

文檔簡(jiǎn)介

1、精品文檔信號(hào)與系統(tǒng)綜合實(shí)驗(yàn)之音樂合成(1) 請(qǐng)根據(jù)東方紅片斷的簡(jiǎn)譜和“十二平均律”計(jì)算出該片斷中各個(gè)樂音的頻率,在 MATLAB 中生成幅度為 1 、 抽樣頻率為 8kHz 的正弦信號(hào)表示這些樂音。請(qǐng)用 sound 函數(shù)播放每個(gè)樂音,聽一聽音調(diào)是否正確。最后用這一系列樂音信號(hào)拼出 東方紅 片斷, 注意控制每個(gè)樂音持續(xù)的時(shí)間要符合節(jié)拍, 用 sound播放你合成的音樂,聽起來(lái)感覺如何?代碼如下:f =8000;t2=0:1/f:1;t4=0:1/f:0.5;t8=0:1/f:0.25;omg5=523.35;omg6=587.33;omg2=392;omg1=349.23;omg6l=293.6

2、6;m1=sin(2*pi*omg5*t4);m2=sin(2*pi*omg5*t8);m3=sin(2*pi*omg6*t8);m4=sin(2*pi*omg2*t2);m6=sin(2*pi*omg1*t4);m7=sin(2*pi*omg1*t8);m8=sin(2*pi*omg6l*t8);m9=sin(2*pi*omg2*t2);m=m1 m2 m3 m4 m6 m7 m8 m9;sound(m); 聽的時(shí)候發(fā)現(xiàn)在相鄰樂音之間有雜音,這是由于相位不連續(xù)造成的。你一定注意到 (1) 的樂曲中相鄰樂音之間有“啪”的雜聲,這是由于相位不連續(xù)(2)產(chǎn)生了高頻分量。這種噪聲嚴(yán)重影響合成音樂的質(zhì)

3、量,喪失真實(shí)感。為了消除它,我們可以用圖 1.5 所示包絡(luò)修正每個(gè)樂音,以保證在樂音的鄰接處信號(hào)幅度為零。此外建議用指數(shù)衰減的包絡(luò)來(lái)表示 。精品文檔精品文檔我采用的是指數(shù)衰減的包絡(luò)。代碼如下:f =8000;t2=0:1/f:1;t4=0:1/f:0.5;t8=0:1/f:0.25;omg5=523.35;omg6=587.33;omg2=392;omg1=349.23;omg6l=293.66;m1=exp(-2*t4).*sin(2*pi*omg5*t4);m2=exp(-4*t8).*sin(2*pi*omg5*t8);m3=exp(-4*t8).*sin(2*pi*omg6*t8);m

4、4=exp(-1*t2).*sin(2*pi*omg2*t2);m6=exp(-2*t4).*sin(2*pi*omg1*t4);m7=exp(-4*t8).*sin(2*pi*omg1*t8);m8=exp(-4*t8).*sin(2*pi*omg6l*t8);m9=exp(-1*t2).*sin(2*pi*omg2*t2);m=m1 m2m3 m4 m6 m7 m8 m9; sound(m); 第一次我采用的指數(shù)衰減沒有時(shí)間前面的系數(shù),即每個(gè)都只乘exp(t), 沒有系數(shù);后來(lái)根據(jù)不同節(jié)拍,更改了不同的衰減系數(shù),這樣聲音聽起來(lái)感覺更加圓潤(rùn)。請(qǐng)用最簡(jiǎn)單的方法將(2) 中的音樂分別升高和降低一

5、個(gè)八度。 (提示: 音樂播 放的時(shí)間可以變化) 再難一些, 請(qǐng)用 resample 函數(shù) (也可以用 interp 和 decimate函數(shù))將上述音樂升高半個(gè)音階。 (提示:視計(jì)算復(fù)雜度,不必特別精確)答:最簡(jiǎn)單的方法是直接更改抽樣頻率f。將f從8K改為4K,則升高一個(gè)八度, 并且播放速度增快了一倍;將f從8k改為16k,則降低一個(gè)八度,速度也變慢 了一倍。升高半個(gè)音階,只須在(2)代碼最后加一句resample (m,1000,1059)即可。16000 或者 f =8000;%改為 4000 t2=0:1/f:1;t4=0:1/f:0.5;t8=0:1/f:0.25;omg5=523.3

6、5;omg6=587.33;omg2=392;omg1=349.23; 精品文檔精品文檔omg6l=293.66;m1=exp(-2*t4).*sin(2*pi*omg5*t4);m2=exp(-4*t8).*sin(2*pi*omg5*t8);m3=exp(-4*t8).*sin(2*pi*omg6*t8);m4=exp(-1*t2).*sin(2*pi*omg2*t2);m6=exp(-2*t4).*sin(2*pi*omg1*t4);m7=exp(-4*t8).*sin(2*pi*omg1*t8);m8=exp(-4*t8).*sin(2*pi*omg6l*t8);m9=exp(-1*t

7、2).*sin(2*pi*omg2*t2);m=m1 m2 m3 m4 m6 m7 m8 m9;resample(m,1000,1059);sound(m);試著在 (2) 的音樂中增加一些諧波分量,聽一聽音樂是否更有“厚度”了?注意諧波分量的能量要小,否則掩蓋住基音反而聽不清音調(diào)了。 (如果選擇基波 :3 ,聽起來(lái)像不像象風(fēng)琴?) 02 ,三次諧波幅度幅度為 1 ,二次諧波幅度0代碼如下:f =8000;t2=0:1/f:1;t4=0:1/f:0.5;t8=0:1/f:0.25;omg5=523.35;omg6=587.33;omg2=392;omg1=349.23;omg6l=293.66

8、;m1=exp(-2*t4).*sin(2*pi*omg5*t4)+0.2*exp(-2*t4).*sin(2*pi*2*omg5*t4)+0.3*exp(-2*t4).*sin(2*pi*3*omg5*t4);m2=exp(-4*t8).*sin(2*pi*omg5*t8)+0.2*exp(-4*t8).*sin(2*pi*2*omg5*t8)+0.3*exp(-4*t8).*sin(2*pi*3*omg5*t8);m3=exp(-4*t8).*sin(2*pi*omg6*t8)+0.2*exp(-4*t8).*sin(2*pi*2*omg6*t8)+0.3*exp(-4*t8).*sin(

9、2*pi*3*omg6*t8);m4=exp(-1*t2).*sin(2*pi*omg2*t2)+0.2*exp(-1*t2).*sin(2*pi*2*omg2*t2)+0.3*exp(-1*t2).*sin(2*pi*3*omg2*t2);m6=exp(-2*t4).*sin(2*pi*omg1*t4)+0.2*exp(-2*t4).*sin(2*pi*2*omg1*t4)+0.3*exp(-2*t4).*sin(2*pi*3*omg1*t4);m7=exp(-4*t8).*sin(2*pi*omg1*t8)+0.2*exp(-4*t8).*sin(2*pi*2*omg1*t8)+0.3*e

10、xp(-4*t8).*sin(2*pi*3*omg1*t8);m8=exp(-4*t8).*sin(2*pi*omg6l*t8)+0.2*exp(-4*t8).*sin(2*pi*2*omg6l*t8)+0.3*exp(-4*t8).*sin(2*pi*3*omg6l*t8);m9=exp(-1*t2).*sin(2*pi*omg2*t2)+0.2*exp(-1*t2).*sin(2*pi*2*omg2*t2)+精品文檔精品文檔0.3*exp(-1*t2).*sin(2*pi*3*omg2*t2);m=m1 m2 m3 m4 m6 m7 m8 m9;sound(m);加入諧波分量后,音色有所變

11、化,感覺更加清脆一些(5)自選其它音樂合成,例如貝多芬第五交響樂的開頭兩小節(jié)。我選取的是晴天的第一句代碼如下:f=8000;t2=0:1/f:1;t4=0:1/f:0.5;omg1=392;omg2=440;omg3=493.88;omg7=698.45;omg5l=293.66;m2=exp(-2*t4).*sin(2*pi*omg5*t4);m4=exp(-1*t2).*sin(2*pi*omg1*t2);m6=exp(-2*t2).*sin(2*pi*omg3*t2);m8=exp(-2*t4).*sin(2*pi*omg5*t4);m10=exp(-2*t4).*sin(2*pi*om

12、g1*t4);m12=exp(-4*t8).*sin(2*pi*omg3*t8);m14=exp(-4*t8).*sin(2*pi*omg1*t8);ml m2 m3 m4 m5 m6 m7 m8 m9 m10 milt8=0:1/f:0.25;t=0:1/f:0.125;omg4=523.25;omg5=587.33;omg6=659.25;m0=0;m1=exp(-2*t4).*sin(2*pi*omg5*t4);m3=exp(-2*t4).*sin(2*pi*omg1*t4);m5=exp(-2*t4).*sin(2*pi*omg2*t4);m7=exp(-2*t4).*sin(2*pi

13、*omg5*t4);m9=exp(-2*t4).*sin(2*pi*omg1*t4);m11=exp(-4*t8).*sin(2*pi*omg2*t8);m13=exp(-4*t8).*sin(2*pi*omg2*t8);m15=exp(-2*t2).*sin(2*pi*omg5l*t2);m=m0m12 m13 m14 m15; sound(m); (6) 先用 wavread精品文檔.函數(shù)載入光盤中的fmt.wav文件,播放出來(lái)聽聽效果如何?是精品文檔(7)你知道待處理的wave2proc是如何從真否比剛才的合成音樂真實(shí)多了?);fmt.wav x=wavread( sound(x);實(shí)值

14、realwave中得到的么?這個(gè)預(yù)處理過(guò)程可以去除真實(shí)樂曲中的非線性諧波和噪聲,對(duì)于正確分析音調(diào)是非常重要的。提示:從時(shí)域做,可以繼續(xù)使用resample 函數(shù)。realwave中的波形有十個(gè)周期,要除去其中的噪聲可以采用時(shí)域求均值的方法。 步驟如下:首先用resample函數(shù)將其采樣率增大為十倍,再等分十份取平均, 然后重復(fù)這個(gè)平均后的波形十次,還原其長(zhǎng)度,最后在用resample函數(shù)還原采樣率到1/10。代碼如下:);load( Guitar.MAT wavetemp = zeros(length(realwave), 1);waveresampled =resample(realwave

15、,10,1);n = 1 : 10 for wavetemp = wavetemp + waveresampled(n - 1) * length(realwave)+ 1 : n* length(realwave) / 10; end mywave2proc = repmat(wavetemp, 10, 1); mywave2proc=resample(mywave2proc, 1, 10);figure; subplot(3, 1, 1);plot(realwave);subplot(3, 1,2);plot(wave2proc);subplot(3, 1,3);plot(mywave2p

16、roc);精品文檔.精品文檔0.50-0.50501001502002500.50-0.50501001502002500.50-0.5050100150200250這段音樂的基頻是多少?是哪個(gè)音調(diào)?請(qǐng)用傅里葉級(jí)數(shù)或者變換的方法分(8)析它的諧波分量分別是什么。提示:簡(jiǎn)單的方法是近似取出一個(gè)周期求傅里葉級(jí) 數(shù)但這樣明顯不準(zhǔn)確,因?yàn)槟銘?yīng)該已經(jīng)發(fā)現(xiàn)基音周期不是整數(shù)(這里不允許使用resample函數(shù))。復(fù)雜些的方法是對(duì)整個(gè)信號(hào)求傅里葉變換(回憶周期性信號(hào)的傅里葉變換),但你可能發(fā)現(xiàn)無(wú)論你如何提高頻域的分辨率,也得不到精確的 包絡(luò)(應(yīng)該近似于沖?函數(shù)而不是sinc函數(shù)),可選的方法是增加時(shí)域的數(shù)據(jù)量

17、,即再把時(shí)域信號(hào)重復(fù)若干次,看看這樣是否效果好多了?請(qǐng)解釋之。答:共計(jì)221-2=219個(gè)周期;基因頻率約為 8000 / (219 / 9) = 328.7671Hz.用FFT對(duì)該信號(hào)做DFT變換:);Guitar.MAT load( my_wave2proc = repmat(wave2proc, 25,1);Fs = 8000;Length = length(my_wave2proc);NFFT = 2 人 nextpow2(Length);Y = fft(my_wave2proc, NFFT) / Length;amplitude = 2 * abs(Y(1 : NFFT / 2 +

18、1);精品文檔.精品文檔frequency = Fs / 2 * linspace(0, 1 ,NFFT / 2 + 1);plotfrequency, amplitude);max_rate_of_grade, max_position = max(amplitude(1 : 100);frequency(max_position)0.080.070.060.050.040.030.020.01005001000150020002500300035004000329.1016Hz,和前面通過(guò)周期估算得到的很相近。算得基頻為 。C大調(diào)mi對(duì)照可得,為(9)再次載入fmt.wav ,現(xiàn)在要求你寫

19、一段程序,自動(dòng)分析出這段樂曲的音調(diào)和節(jié)拍!如 果你覺得太難就允許手工標(biāo)定出每個(gè)音調(diào)的起止時(shí)間,再不行你就把每個(gè)音調(diào)的 數(shù)據(jù)都單獨(dú)保存成一個(gè)文件,然后讓 MATLAB對(duì)這些文件進(jìn)行批處理。注意:不允許逐一地手工分析音調(diào)。編輯音樂文件,推薦使用CoolEdit編輯軟件。此問參考了學(xué)長(zhǎng)的版本。看了版本才明白了算法。主要分2個(gè)步驟:1、分割出單個(gè)音符,計(jì)算每個(gè)音符的時(shí)間,2、計(jì)算每個(gè)音符的頻率,把頻率轉(zhuǎn)化為音名。分割音符即將一個(gè)一個(gè)的音符片段從整個(gè)曲子中切下。音符的起始都伴隨時(shí)域上瞬時(shí)能量的激增,即時(shí)域上波形幅度突然變大。利用這一點(diǎn)特征對(duì)音符進(jìn)行提取。選擇小步幅對(duì)fmt.wav進(jìn)行掃描,步幅選為0.0

20、1秒最為適宜。具體方法如下:在0.01精品文檔.精品文檔秒的范圍內(nèi)找極大點(diǎn),而且是后續(xù)能量連續(xù)下降的極大點(diǎn),這個(gè)極大點(diǎn)如果滿足以下三個(gè)條件, 則為有效的音符的起始點(diǎn):1、 這個(gè)極大點(diǎn)比前一段的極大點(diǎn)能量高出80%; Pw1.8*Pwp2、這個(gè)極大點(diǎn)比整個(gè)樂曲的平均能量高;StStp+10003、距前面最近的一個(gè)音符的起始點(diǎn)時(shí)間差1/8秒以上。PwAvg分割的結(jié)果:,0.0.0.0.0.iiTimx 10 一共分割得30個(gè)音,和CoolEdit的分析基本一致。過(guò)度部分每個(gè)音符的持續(xù)時(shí)間Time=diff(StartPoint Len)/8000;用于傅立葉變換的區(qū)間EndPoint=StartP

21、oint(2:Num) Len -200;能量修正(歸一) Power=Power/max(Power);用于傅立葉變換的區(qū)間長(zhǎng)度 STime=Time -200/8000; 計(jì)算頻率并轉(zhuǎn)化對(duì)每個(gè)音符內(nèi)部的一個(gè)區(qū)間(我選這個(gè)音符的起始到結(jié)束前的0.025秒,即StartPoint到EndPoint)做快速傅立葉變換,然后在頻譜中選出基頻。 關(guān)于自動(dòng)尋找基頻:一般的,基波不是幅度最大的頻率,因?yàn)橛泻芏嘁粽{(diào)的諧波,甚至非線性諧波的幅度大于基波。一般來(lái)說(shuō),一次諧波的幅度不太大,不會(huì)大于基波幅度的2倍,這樣,在有可能出現(xiàn)基波的地方,利用每個(gè)點(diǎn)的幅度值除以該點(diǎn)的頻率,也就是每個(gè)點(diǎn)對(duì)于原點(diǎn)的斜率做為判定基

22、波的標(biāo)準(zhǔn),經(jīng)過(guò)這樣的簡(jiǎn)化處理,找到斜率最大的點(diǎn),基本上就能夠判定基波出現(xiàn)在什么 位置。 FO=F_fft./omg;%每個(gè)點(diǎn)的幅度值除以該點(diǎn)的頻率M1 M2=max(FO);%找到斜率最大的點(diǎn),判定為基波Freq(p)=omg(M2)/2/pi;% 記下頻率值Name(p)=Freq2Name(Freq(p);% 把頻率值轉(zhuǎn)化為音名(關(guān)于函數(shù)Freq2Name(Freq):把頻率與十幾個(gè)標(biāo)準(zhǔn)音的頻率作比較,選出最接近的一個(gè),作為 這個(gè)頻率對(duì)應(yīng)的音名。)display(Score : );display(Name);display(Time);%輸出結(jié)果:# # #音名 時(shí)長(zhǎng)時(shí)長(zhǎng)音名 時(shí)長(zhǎng)音名

23、時(shí)長(zhǎng)音名0.4718 0.3890 0.5044 1 -6 -4 0.1676 -6 25 19170.5336 0.2687 -4 -4 -6 1.4866 0.7484 5 26 102180.4627 -7 1.2373 0.4764 -7 4 0.2305 -6 27 31119 0.57717 0.2010 36 0.4591 0.7869 3 28 12420精品文檔. 精品文檔0.6410 29 -6 0.2610 -6 0.2236 21 2 52 0.4584 131.3974 -6 -5 0.4500 0.4713 0.4731 1 3 30 14226 0.4437 -6

24、 -7 0.4728 -5 0.466023 715-42241660.54840.4469CreateMusic 的,僅僅8 0.4979處理并回如此,便完成了樂曲的音調(diào)和節(jié)拍的自動(dòng)分析。把此結(jié)果用函數(shù)有兩個(gè)左右的音符有偏差。放,聽到的音樂是很接近原來(lái)的fmt.wav代碼如下: );fmt=wavread( fmt.wav %sound(fmt, 8000) Len=length(fmt);Avg=norm(fmt)/sqrt(Len);Num=0;Step=80;Pwp=0;Stp=-1000;St=1;n=1:Step:Len-StepSt+Step-11.8*Pwp & StStp+1

25、000 & PwAvgfor M=0;St=n;M=1 &Pw M=max(fmt(St:St+Step-1);ifNum=Num+1;StartPoint(Num)=St;Power(Num)=Pw;Stp=St;endPwp=Pw; endTime=diff(StartPoint Len)/8000;STime=Time-200/8000; EndPoint=StartPoint(2:Num) Len-200;Power=Power/max(Power);plot(fmt); on figure;holdaxis(0 length(fmt) 0 0.6););( ? ? title( );

26、);ylabel(SignalTimexlabel( p=1:Num for );plot(StartPoint(p) StartPoint(p),0 0.6,r*- endFreqLimit=170;精品文檔.精品文檔p=1:Num for f=fmt(StartPoint(p):EndPoint(p)-1);F_fft,t,omg=FastFourier(f);=1e5;omg(floor(STime(p)*(4000-FreqLimit):ceil(STime(p)*(4000+FreqLimit)FO=F_fft./omg;M1 M2=max(FO);Freq(p)=omg(M2)/2

27、/pi;Name(p)=Freq2Name(Freq(p);end);display(Name);display(Time);Score o display(UnknownMusic=Name;Time;Power;); Guitar+Exp,Music=CreateMusic( C ,UnknownMusic, PlayAndPlot(Music);(10) 用 (7) 計(jì)算出來(lái)的傅里葉級(jí)數(shù)再次完成第 (4)題,聽一聽是否像演奏fmt.wav 的吉他演奏出來(lái)的?答:在(7)中計(jì)算出來(lái)的傅里葉級(jí)數(shù)中取前四項(xiàng),后面的諧波并不顯著將其略去?;ê?2、 3、 4 次諧波的系數(shù)為如下,將其歸一后再合成即可。合成的方法參考了學(xué)長(zhǎng)的報(bào)告。music_score = 5 5 6 2 1 1 6 2;0 0 0 00 0 -1 0;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ù)覽,若沒有圖紙預(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論