国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

利用MATLAB合成音樂的函數(shù)模擬實(shí)現(xiàn)與比對(duì)

2018-08-06 01:19宋曉婷
關(guān)鍵詞:樂音高音音程

宋曉婷

(山西建筑職業(yè)技術(shù)學(xué)院,山西 太原 030619)

MATLAB 是一種用于算法開發(fā)、符號(hào)運(yùn)算、數(shù)據(jù)可視化、數(shù)據(jù)分析以及數(shù)值運(yùn)算的高級(jí)技術(shù)計(jì)算語(yǔ)言和交互式環(huán)境.它的應(yīng)用范圍非常廣,包括信號(hào)和圖像處理、仿真、通訊、控制系統(tǒng)設(shè)計(jì)、測(cè)量和測(cè)試、建模和分析以及計(jì)算生物學(xué)等眾多應(yīng)用領(lǐng)域.它還被稱為矩陣實(shí)驗(yàn)軟件,可以進(jìn)行矩陣運(yùn)算、繪制函數(shù)和數(shù)據(jù)、實(shí)現(xiàn)算法、創(chuàng)建用戶界面、連接其他編程語(yǔ)言的程序等.可以編寫程序或調(diào)用存儲(chǔ)函數(shù)解決數(shù)學(xué)問題,如初等數(shù)學(xué)的代數(shù)計(jì)算、三角函數(shù)求值;高等數(shù)學(xué)中的微積分計(jì)算;線性代數(shù)求解行列式、矩陣、線性方程組;微分方程求通解、特解;進(jìn)行拉普拉斯變換,傅里葉級(jí)數(shù)的計(jì)算;還可以進(jìn)行數(shù)據(jù)的篩檢、對(duì)數(shù)據(jù)進(jìn)行插值擬合、對(duì)未來(lái)數(shù)據(jù)的估測(cè)、給出誤差分析等等多方面的應(yīng)用,可以說(shuō)是涉及面廣,功能強(qiáng)大.

1 相關(guān)知識(shí)

先介紹一下樂理方面的相關(guān)知識(shí),關(guān)于簡(jiǎn)譜和琴鍵的對(duì)應(yīng)關(guān)系:基本音階(是以全音、半音以及其他音程順次排列的一串音)為C調(diào)大音階,在鋼琴上彈奏時(shí)全用白鍵,中央C是小字一組的do,也有D調(diào)、F調(diào)等.音階分為“大音階”和“小音階”,即“大調(diào)式”和“靶〉魘”.大音階由7個(gè)音組成,其中第3,4(即mi和fa)音之間和第7,8(即xi和高音do)音之間是半音程,其他音之間是全音程.小音階第2,3(即re和mi)音之間和5,6(即so和la)音之間為半音程.這里不同的音高決定不同的聲音頻率,在軟件中用不同的數(shù)值體現(xiàn),起到調(diào)節(jié)音調(diào)的作用,經(jīng)過數(shù)學(xué)公式調(diào)整可以模仿出原唱的效果.

2 曲譜的公式化

本文在MATLAB中表示樂音所用的抽樣頻率為fs=22 050 Hz,也就是所1 s鐘內(nèi)有22 050個(gè)點(diǎn),根據(jù)抽樣點(diǎn)數(shù)的多少就可表示出每個(gè)樂音持續(xù)時(shí)間的長(zhǎng)短.給每個(gè)樂音定義存儲(chǔ)對(duì)應(yīng)的抽樣點(diǎn),再用sound函數(shù)播放即可.

選編歌曲《阿拉木汗》部分簡(jiǎn)譜

1=F 4/4

圖1 琴鍵與簡(jiǎn)譜的對(duì)應(yīng)

如圖,4/4分母的4表示曲譜以四分音符為一拍,分子的4表示每小節(jié)4拍.利用MATLAB編寫樂音需要區(qū)別每個(gè)音的節(jié)拍,確定其震動(dòng)時(shí)間,數(shù)字下兩橫表示這個(gè)音是四分之一拍,4個(gè)這樣的音為一拍;數(shù)字下一橫表示這個(gè)音是二分之一拍,即半拍,兩個(gè)這樣的音為一拍;數(shù)字下方無(wú)橫線表示這個(gè)音是一拍.數(shù)字之間的點(diǎn)代表半拍,這樣可知每小節(jié)各個(gè)音節(jié)均為四拍.1=F表示小字一組的f1對(duì)應(yīng)do的音,依次向前向后類推得表1.

表1 常用琴鍵調(diào)高、音高、頻率的關(guān)系

注:1)頻率是由公式f=440×2(p-69)/12根據(jù)p的值用MATLAB計(jì)算得到的.

2)由于mi與fa、高音mi與fa均是半音程,b1降1 和b2降1表示該鍵左側(cè)上方的黑鍵,音高只相差1.雖然低音xi與do的音高也只相差1,但在琴鍵上此處正好分別位于e1和f1的位置,它們正好也是半音程,所以無(wú)需降1.

3)表格只列出需要音高的數(shù)據(jù),可根據(jù)實(shí)際向前或向后適當(dāng)擴(kuò)展.

3 函數(shù)模擬音樂效果比對(duì)

利用MATLAB的m文件編寫音調(diào)和節(jié)拍程序如下,這里將低音so到高音so每個(gè)音調(diào)的一拍、半拍和四分之一拍給出定義,這個(gè)范圍可以包括大多數(shù)歌曲的使用.若想保證所有曲譜的編寫,只需將琴鍵上各個(gè)組別的音調(diào)類比給出定義即可.

編寫m文件如下[1]:

3.1 有敲擊聲音,沒空拍

function g=key(p,n,fs)

t=0∶1/fs∶4/n;

g=(sin(2*pi*fre(p)*t));

plot(g); %畫出函數(shù)圖像

function f=fre(p)

f=440*2^((p-69)/12).

3.2 有敲擊聲音,有空拍

由于每小節(jié)之間停頓的時(shí)間不同,要使歌曲聽起來(lái)更逼真,就需要將此部分也考慮上.在前段程序中加入條件語(yǔ)句if和else,給空拍增加定義,且不能簡(jiǎn)單地定義為0,它的時(shí)間受節(jié)拍的控制,因此表達(dá)式與時(shí)間t有關(guān),用0去乘之后,既有音調(diào)的無(wú)聲體現(xiàn),又涵蓋相應(yīng)的時(shí)間延續(xù),控制每個(gè)樂音持續(xù)的時(shí)間要符合節(jié)拍,在歌曲播放出來(lái)時(shí)就會(huì)有空拍了.

function g=key(p,n,fs)

t=0∶1/fs∶4/n;

if p==-1 %定義空拍

g=0*(sin(2*pi*fre(p)*t));

else

g=(sin(2*pi*fre(p)*t));

end

plot(g)

function f=fre(p)

f=440*2^((p-69)/12);

3.3 指數(shù)函數(shù)對(duì)音樂的影響效果

消除敲擊聲音這是由于相位不連續(xù)產(chǎn)生了高頻分量[2].這里可以類比實(shí)際中鐵軌的彎道和直線銜接處,如果直接相連則會(huì)產(chǎn)生曲率的突變,導(dǎo)致火車側(cè)翻或出軌,通常使用一個(gè)和軌道長(zhǎng)度及曲率半徑相關(guān)的三次函數(shù)來(lái)銜接,使曲率由0逐漸增大至彎道值再相連,這樣就不會(huì)有危險(xiǎn).我們可以采用指數(shù)衰減的包絡(luò)修正每個(gè)樂音,以保證在樂音的鄰接處信號(hào)幅度為0.給每個(gè)樂音加一個(gè)指數(shù)衰減的包絡(luò),使聲音有個(gè)減弱的過程,音調(diào)的清晰度增加,似有回聲效果.

function g=key(p,n,fs)

t=0∶1/fs∶4/n;

tt=4/n∶-1/fs∶0;

g=(sin(2*pi*fre(p)*t)).*exp(tt);

plot(g);

function f=fre(p)

f=440*2^((p-69)/12).

3.4 傅里葉技術(shù)對(duì)音樂的影響效果

利用傅里葉技術(shù)在音樂中增加一些諧波分量[2],幅度要小于基波,不能掩蓋住主體的音樂聲調(diào),需要加強(qiáng)聲音的連貫程度.各個(gè)音結(jié)束時(shí)都有相對(duì)拉長(zhǎng)的一個(gè)減弱過程,尾部音尤其明顯.添加后聲音比較渾厚,圓潤(rùn)飽滿,在不會(huì)彈鋼琴的情況下也能自己譜曲,享受一下自己的勞動(dòng)果實(shí).

function g=key(p,n,fs)

t=0∶1/fs∶4/n;

tt=4/n∶-1/fs∶0;

if p==-1

g=0*(sin(2*pi*fre(p)*t)+0.2*sin(6*pi*fre(p)*t)).*exp(tt);

else

g=(sin(2*pi*fre(p)*t)+0.2*sin(6*pi*fre(p)*t)).*exp(tt);

end

plot(g);

function f=fre(p)

f=440*2^((p-69)/12).

如果聲音還比較尖銳,有些許刺耳,可能是選擇的基波頻率不合適,或者可以再加入另一種頻率的諧波,變換他們的系數(shù)進(jìn)行調(diào)試可達(dá)到良好的效果.

3.5 定義各音符頻率、節(jié)拍、音調(diào)及空拍

fs=22 050; %每秒振動(dòng)次數(shù),即頻率

t=0∶1/fs∶0.5; %每拍時(shí)間

c1-4=key(60,4,fs); %低音so一拍

c1-8=key(60,8,fs); %低音so半拍

c1-16=key(60,16,fs); %低音so四分之一拍

d1-4=key(62,4,fs); %低音la一拍

d1-8=key(62,8,fs); %低音la半拍

d1-16=key(62,16,fs); %低音la四分之一拍

e1-4=key(64,4,fs); %低音xi一拍

e1-8=key(64,8,fs); %低音xi半拍

e1-16=key(64,16,fs); %低音xi四分之一拍

f1-4=key(65,4,fs); %do一拍

f1-8=key(65,8,fs); %do半拍

f1-16=key(65,16,fs); %do四分之一拍

g1-4=key(67,4,fs); %re一拍

g1-8=key(67,8,fs); %re半拍

g1-16=key(67,16,fs); %re 四分之一拍

a1-83=key(69,8/3,fs); %mi 一拍半

a1-4=key(69,4,fs); %mi 一拍

a1-8=key(69,8,fs); %mi 半拍

a1-16=key(69,16,fs); %mi 四分之一拍

b1-4=key(70,4,fs); %fa 一拍

b1-8=key(70,8,fs); %fa 半拍

b1-16=key(70,16,fs); %fa 四分之一拍

c2-4=key(72,4,fs); %so 一拍

c2-8=key(72,8,fs); %so 半拍

c2-16=key(72,16,fs); %so四分之一拍

d2-4=key(74,4,fs); % la一拍

d2-8=key(74,8,fs); % la半拍

d2-16=key(74,16,fs); %la四分之一拍

e2-4=key(76,4,fs); %xi一拍

e2-8=key(76,8,fs); %xi半拍

e2-16=key(76,16,fs); %xi四分之一拍

f2-4=key(77,4,fs); %高音do一拍

f2-8=key(77,8,fs); %高音do半拍

f2-16=key(77,16,fs); %高音do四分之一拍

g2-4=key(79,4,fs); %高音re一拍

g2-8=key(79,8,fs); %高音re半拍

g2-16=key(79,16,fs); %高音re四分之一拍

a2-83=key(81,8/3,fs); %高音mi一拍半

a2-4=key(81,4,fs); %高音mi一拍

a2-8=key(81,8,fs); %高音mi半拍

a2-16=key(81,16,fs); %高音mi四分之一拍

b2-4=key(82,4,fs); %高音fa一拍

b2-8=key(82,8,fs); %高音fa半拍

b2-16=key(82,16,fs); %高音fa四分之一拍

c3-4=key(84,4,fs); %高音so一拍

c3-8=key(84,8,fs); %高音so半拍

c3-16=key(84,16,fs); %高音so四分之一拍

k-4=key (-1,4,fs); %空一拍

k-8=key (-1,8,fs); %空半拍

k-16=key (-1,16,fs); %空四分之一拍

3.6 合成音樂

part1=[c2-16 c2-16 c2-16 c2-16 c2-8 b1-8 a1-83 f2-8];%第十一部分重復(fù)

part2=[e2-16 d2-16 a2-16 g2-16 f2-16 d2-16 e2-8 f2-8 k-8 k-4];

part3=[c1-16 f1-16 f1-16 f1-16 e1-16 f1-16 g1-8 a1-83 f2-8];

part4=[e2-16 d2-16 c2-16 b1-16 a1-16 f1-16 g1-8 f1-4 k-4];%第十部分重復(fù)

part5=[k-8 c2-16 c2-16 c2-8 d2-8 f2-16 f2-16 f2-8 k-4];

part6=[k-4 f2-16 f2-16 f2-8 d2-16 f2-16 d2-16 c2-16 c2-8 k-4];

part7=[k-8 f2-16 f2-16 f2-8 f2-8 d2-16 f2-16 d2-16 c2-16 c2-8 a1-8];

part8=[k-8 c2-16 c2-16 a1-8 a1-8 g1-16 g1-16 a1-8 k-4];

part9=[c1-16 f1-16 f1-16 f1-16 f1-8 g1-8 a1-83 f2-8];

part12=[e2-16 d2-16 a2-16 g2-16 f2-16 d2-16 e2-8 f2-4 k-4];

part13=[c2-16 c2-16 c2-16 c2-16 c2-8 b1-8 a2-83 f2-8];

part14=[e2-16 f2-16 g2-16 a2-16 g2-16 d2-16 e2-8 f2-4 k-4];

line1=[part3 part4 part3 part4 part5 part6 part7 part8 part9 part4];

line2=[part1 part12];

line3=[part13 part14];

legend=[line1 line2 line3];

sound(legend,fs)

4 頻譜分析

圖2 fs=1000波形振動(dòng)圖像

頻率可適當(dāng)調(diào)整,圖2是當(dāng)fs=1 000臨界值時(shí)的波形振動(dòng)圖像.頻率越大圖像越密,聲音越流暢,更接近原聲,通常取8 000,14 400等;頻率取值越小圖像分割越粗糙,聲音不流暢,間隔明顯,聽起來(lái)與原聲相差甚遠(yuǎn).如fs=200則出錯(cuò),低于1 000為無(wú)效的樣本率.利用clear sound命令可以隨時(shí)停止音樂播放.

5 總結(jié)

本設(shè)計(jì)用MATLAB構(gòu)建的音樂合成程序簡(jiǎn)單易懂,可靈活多變,成功地實(shí)現(xiàn)了音樂的簡(jiǎn)單合成、音樂的降噪處理以及音樂的加傅里葉變換諧波處理,使得生澀的音樂逐步調(diào)整為優(yōu)美動(dòng)聽的聲音.利用軟件的強(qiáng)大功能實(shí)時(shí)給出相應(yīng)頻率分析圖像,更清晰地顯示曲子的頻率與曲調(diào)的關(guān)系.我們可以充分發(fā)揮自己的創(chuàng)新能力,通過選取不同的加工算法,對(duì)音樂分別處理,抑制噪聲,改善音樂質(zhì)量,便于人們欣賞品鑒.

猜你喜歡
樂音高音音程
如何區(qū)分樂音和噪聲
早春
城市音樂“奏起高音”
那一刻
作文成功之路·作文交響樂——學(xué)生展現(xiàn)心靈樂音的舞臺(tái)
音程循環(huán)向音列循環(huán)的擴(kuò)展及其理論構(gòu)建
簡(jiǎn)析音程聽辨中的各環(huán)節(jié)及要?jiǎng)?wù)
音樂藝考生需要牢記的五大考試戰(zhàn)術(shù)
音樂游戲玩起來(lái)
論大、小調(diào)體系中特性音程的調(diào)式特征