- 問題背景與介紹
振動是自然界最普遍的現(xiàn)象之一,也是所有物體發(fā)聲的來源,可以說振動與我們的
生活息息相關(guān)。一直以來,科研人員在振動領(lǐng)域投入了大量研究,對振動過程和機理的
認(rèn)識也日益深化,使振動能夠趨利避害。振動力學(xué)是關(guān)于機械振動的一門重要學(xué)科,它
為合理解決工程中遇到的各種振動問題提供了理論依據(jù),本問主要內(nèi)容就是借助振動力學(xué)來研究弦振動方程去探究小提琴琴弦的振動特性,以及與之密切相關(guān)影響的其它因素,通過MATALB仿真進行實現(xiàn)。
基礎(chǔ)樂理知識介紹
標(biāo)準(zhǔn)音:目前國際通用的標(biāo)準(zhǔn)高度是每秒鐘振動 440 次的 a 音,即以小字一組的 a 為 “標(biāo)準(zhǔn)音”。樂音體系中的各音級,其高度都有一定的標(biāo)準(zhǔn)。
八度就是指音程關(guān)系。在音樂中,相鄰的音組中相同音名的兩個音,包括變化音級,稱之為八度。
十二平均律:將一個純八度(如 c1-c2)分成十二個均等的部分。
用十二平均律構(gòu)成的七聲音階如表1.1:
- 任務(wù)要求
已知小提琴的鋼質(zhì)E弦(小提琴最細(xì)的弦) ,其空弦基頻為660Hz。試根據(jù)細(xì)弦橫向振動的知識和結(jié)論,完成下列任務(wù)的仿真程序。(分析過程中,只考慮弦的橫向振動。)
從以下幾個方面進行分析,并通過MATlab進行仿真和驗證。
1、小提琴的高八度A音(2×440Hz)時,弦長是多少,拉力多大?
2、小提琴的音準(zhǔn)受哪些因素影響,各因素影響的大小分別是多少(用相對誤差關(guān)系來表示)?
3、用MATLab仿真其發(fā)音,檢驗自己在發(fā)生多大的設(shè)計誤差時能聽得出來。
4、在程序設(shè)計中,時間序列取值間隔應(yīng)注意哪些問題,為什么?
- 設(shè)計原理
弦振動方程的確立與求解
首先,我們來分析一根琴弦的振動。一根均勻柔軟的弦受到一個垂直于弦方向的擾動以后開始作小振幅的振動,取繃緊弦的位置為平衡位置, 振動的方向垂直于弦的平衡 位置,這樣的振動稱為橫振動。 假設(shè)弦的平衡位置為 x 軸,取振動中的一段弦元 AB,設(shè)弦的線密度是p,兩端受到的張力為 T,作用在單位質(zhì)量上的外力是 f(x,t),方向沿著 y 軸,弦的初始位移和初始速度分別用 φ(x)和表示,弦元偏離平衡位置的距離是 。
演奏小提琴比較常見的一種技法是撥弦[1]。 撥弦把琴弦撥離平衡位置,使其振動發(fā)聲。 這相當(dāng)于在x處把弦拉高到高度h,然后松開,使其自由振動,即弦振動的初始位移不為零而初速度為零。
由數(shù)學(xué)物理知識可得,小提琴可轉(zhuǎn)化為物理實際問題弦振動問題的定解問題。可以列出下列方程組:
本文只考慮了初值條件為無初速度有初位移的情況,在真實的復(fù)雜情況可能初值不一樣,結(jié)果可能造成了誤差。
小提琴振動發(fā)音原理
在研究小提琴的振動之前,有必要了解一下小提琴的發(fā)音原理。小提琴就是靠演奏者施加拉力,這個力通過弓作用在琴弦上,使琴弦產(chǎn)生振動,弦的振動施加力給琴碼,琴碼通過兩只碼腳把琴弦的橫向力轉(zhuǎn)變?yōu)轵?qū)動力,施加給面板,而背板和面板通過音柱相連接,這樣面板和背板都產(chǎn)生振動,從而使小提琴琴身產(chǎn)生振動發(fā)出聲音,聲音又通過空氣傳給人耳。
小提琴的發(fā)音:取決它的木質(zhì)和相應(yīng)的結(jié)構(gòu),取決于木材的振動頻率和它對弦振動的反應(yīng),優(yōu)質(zhì)的小提琴能將每個音符的基音和泛音都同樣靈敏地傳播出去。本文只研究琴弦的橫振動,所以發(fā)音效果會有一定的誤差。
橫振動[2](transverse? vibration)。將弦挑離其平衡位置再放掉,弦就開始作一個扁
紗錠型的振動,它的振幅限制在兩條明確的曲線之內(nèi)。弦的橫振動頻率,可以用泰勒公式來表達,即
???????????????????????????????????????????????????
?????????????????????????
式中 f 為弦的振動頻率,依次為弦的密度、截面積、張力和長度。且可
以看出橫振動頻率與弦長成反比,與張力的平方根成正比,與弦的密度、截面積的平方
根成反比。
為了方便計算且與前面弦振動方程傳播系數(shù)a2量綱保持一致,故采取,這里的是弦的線密度即:
琴弦的橫振動只考慮當(dāng)小提琴水平放,琴弦上下來回振動如圖3.2所示。
由頻率公式可以得出頻率與弦長之間的關(guān)系,進而得出與七聲音階之間的關(guān)系,如表2.1
琴弦材料參數(shù)確定
通過查詢琴弦生產(chǎn)公司PIRASTRO官網(wǎng),我們選擇如表2.2的E(小提琴最細(xì)的琴弦)琴弦材料參數(shù)。
在此我們定弦長L=328mm=0.328m(注:此處我們選用的是4/4M尺寸的小提琴,即成人常用小提琴)
弦的密度為,E弦直徑為0.276mm則半徑為0.138mm=0.000138m,由公式線密度=密度x琴弦的橫截面積得,E弦的線密度是。
對張力F進行調(diào)整,利用泰勒公式已知空弦時基頻為660Hz,利用振動弦長,弦密度可解得拉力F=86N。
至此小提琴參數(shù)確定為:
- 問題求解
問題一
提琴的高八度A音(2×440Hz)時,弦長是多少,拉力多大?
由前面介紹的樂理知識,可知當(dāng)小提琴發(fā)A音即對應(yīng)為la,高八度時頻率為2x440hz
此時利用前面泰勒定理公式(3.12)
?????????????????????????????????????????????????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
?????? 則第一問已解。
問題二
小提琴的音準(zhǔn)受哪些因素影響,各因素影響的大小分別是多少(用相對誤差關(guān)系來表示)?
音準(zhǔn)是由頻率決定的所以理論上講音準(zhǔn)受弦長、拉力與線密度影響。
????????
即問題二解出各因素對音準(zhǔn)的影響關(guān)系得解。
問題三
用MATLab仿真其發(fā)音,檢驗自己在發(fā)生多大的設(shè)計誤差時能聽得出來。
由已知八度音振動發(fā)聲的頻率如表4.1
表4.1 各音節(jié)的振動發(fā)聲頻率表
音名 |
do |
re |
mi |
fa |
so |
la |
si |
do(高八度) |
頻率(Hz) |
261.6 |
293.7 |
329.6 |
349.2 |
392 |
440 |
493.9 |
523.3 |
基于表4.1,在matlab中進行仿真,對于該題無論你改變哪個量,始終影響這的是頻率f的改變,通過改變各音節(jié)每次減少或增加的頻率數(shù),通過雙層循環(huán),每次輸出八度音,測試自己的誤差,得出下表4.2:
音節(jié) |
頻率界值(Hz) |
do |
200-275 |
Re |
280-310 |
mi |
315-340 |
fa |
345-370 |
so |
380-420 |
la |
425-460 |
si |
480-510 |
表4.2 頻率誤差表
則。
問題四
在程序設(shè)計中,時間序列取值間隔應(yīng)注意哪些問題,為什么?
我們對弦振動方程進行matlab仿真模擬,基于現(xiàn)實中小提琴琴弦振動的情況,從最開始振動位移很大,到慢慢衰減到最后一直位移為0才停止下來,我們選擇小提琴E弦為基礎(chǔ)在matlab中進行仿真,畫出對比圖4.1:
圖4.1 弦振動仿真圖對比
圖4.1中下圖才是真正現(xiàn)實振動波形圖
所以對于時間序列的取值,倘若時間序列太長,則振動時間會加長,無衰減的情況下,琴弦發(fā)出的聲音會一直保持,聲音與現(xiàn)實有點差距,所以為了更加真實的模擬現(xiàn)實小提琴的聲音,選擇稍微短點的時間序列或者在發(fā)聲函數(shù)上加一個衰減函數(shù)來達到現(xiàn)實中的弦振動,但時間序列的取值也不能太短,為人耳可聽頻率為20Hz-20KHz,因此,經(jīng)試驗時間長度必須大于等于0.002秒才可以聽出不同聲音。
至于采樣頻率,它當(dāng)然越高越好,因為離散點越密集越像連續(xù)圖像真實性越高,當(dāng)然那樣運算量也越大,經(jīng)測驗5kHz的采樣率僅能達到人們講話的聲音質(zhì)量。11kHz的采樣率是播放小段聲音的最低標(biāo)準(zhǔn),是CD音質(zhì)的四分之一。22kHz采樣率的聲音可以達到CD音質(zhì)的一半,目前大多數(shù)網(wǎng)站都選用這樣的采樣率。
- 總結(jié)
本文基于對小提琴發(fā)聲的背景下,對琴弦振動進行了深入分析,從振動力學(xué)角度入手,給出了在橫振動的情況下,建立了弦振動方程并進行了求解,選擇合適的小提琴E琴弦,并在matlab中進行了仿真,仿真出了真實音效八度音節(jié)和振動位移圖,同時也進行也來誤差分析,從仿真圖的結(jié)果上體現(xiàn)加上衰減函數(shù)的發(fā)聲函數(shù)與現(xiàn)實琴弦振動更加貼合。
綜上所述,所得結(jié)果較好的體現(xiàn)了現(xiàn)實真實琴弦振動的情況,但仿真數(shù)據(jù)的誤差與現(xiàn)實仍有差距。
參考文獻
[1]李韻,郭怡文,呂郁文.基于Matlab環(huán)境的弦振動方程的圖像與音效模擬[J].科協(xié)論壇(下半月),2009(07):74-75.
[2]賈雄. 小提琴弦振動與琴體腔諧振研究[D].華南理工大學(xué),2013.
[3]張承忠. 小提琴振動機理及聲學(xué)品質(zhì)研究[D].華南理工大學(xué),2014.
[4]呂林波. 小提琴音響品質(zhì)評估與優(yōu)化[D].上海交通大學(xué),2011.
代碼
八度音階代碼(可調(diào))
%循環(huán)發(fā)聲八度音來檢測自己的聽力誤差,通過調(diào)整參數(shù)檢驗上限和下限
function qing
fs=100000;??????????????????????????????????????????????? %采樣頻率
shijianxulie=1/fs:1/fs:1;??????????????????????????????? %時間序列
fqiduyin_a=[261.6,293.7,329.6,349.2,392,440,493.9,523.3];%八度音節(jié)對應(yīng)的頻率
for a=0:1:10 ????????????????????????????????????????????%外循環(huán)
??? fqiduyin_a=fqiduyin_a-5;???????????????????????????? %每次將頻率減少的值
??????? for i=1:1:8?????????????????????????????????????? %內(nèi)循環(huán)
??????? fasheng(1,:)=sin(2*pi*shijianxulie*fqiduyin_a(1,i));???? %發(fā)聲函數(shù)轉(zhuǎn)化為離散信號
??????? sound(fasheng.*exp(-shijianxulie),fs);???????????????????????????????? %讓振動發(fā)聲
??????? delay(2);?????????????????????????????????????? %延遲時間
??????? end
end
function delay=delay(n)
tic;?????????????????? %啟動秒表計時器
for t=0.001:0.001:n??? %按秒算
??? while toc<t??????? %當(dāng)秒表小于時間
??? end
end
end
弦振動圖文章來源:http://www.zghlxwxcb.cn/news/detail-458376.html
clc
clear;
F=86;????????????????????????????????????????????????????????????? %初始張力?????????????????????????????????????????????????????????
P_string=4.67e-4;??????????????????????????????????????????????? ???%鋼弦密度???????????????????????????????????????????????
h=0.01;???????????????????????????????????????????????????????????? %彈弦高度
V=(F/P_string)^(0.5);?????????????????????????????????????????????? %傳播常數(shù)
Length_string=0.325;?????????????????????????????? ?????????????????%振動弦長
f=V/(2*Length_string);????????????????????????????????????????????? %頻率計算公式
x=0.5*Length_string;??????????????????????????????????????????????? %彈琴弦位置
z=0;zn=0;
fs=10000;??????????????????????????????????????????????????????????? %采樣頻率
t=0:1/fs:5;????????????????????????????????????????????????????????? %時間序列
for n=1:10?????????????????????????????????????????????????????????? %設(shè)置疊加次數(shù)
????? zn=32*h/pi^3*(1/(2*n+1)^3)*cos((2*n+1)*pi*V/...??
????????? Length_string*t)*sin((2*n+1)*pi*x/Length_string);???????? %弦振動方程
?????? z=z+zn;?????????????????????????????????????????????????????? %疊加
end
subplot(2,1,1)
plot(t,z);????????????????????????????????????????????????????????? %畫圖無衰減
title('弦振動疊加圖');xlabel('s');ylabel('u(x,t)');
z=z.*(exp(-1*t));?????????????????????????????????????????????????? %乘以指數(shù)衰減
subplot(2,1,2)
plot(t,z);????????????????????????????????????????????????????????? %畫圖衰減
title('弦振動疊加衰減圖');xlabel('s');ylabel('u(x,t)');
音節(jié)圖加音調(diào)逐級遞增?文章來源地址http://www.zghlxwxcb.cn/news/detail-458376.html
clc
clear;
f_tone_0=440;%A調(diào)基頻
Step_half_scale=2^(1/12);%十二節(jié)律
fs=100000;%采樣頻率
t_tone=1/fs:1/fs:1;%時間序列
for i=1:1:13 %根據(jù)樂理知識十二節(jié)律與八度音節(jié)的關(guān)系
Scale_tone(i)=f_tone_0/(Step_half_scale^(10-i));%每個基本唱名與A的關(guān)系式
if i==1%do時與A的關(guān)系
y_tone(1,:)=sin(2*pi*t_tone*Scale_tone(i));%發(fā)音函數(shù)轉(zhuǎn)化為離散信號
x_tone(1)=Scale_tone(i);%do
else if i==3
y_tone(2,:)=sin(2*pi*t_tone*Scale_tone(i));%發(fā)音函數(shù)轉(zhuǎn)化為離散信號
x_tone(2)=Scale_tone(i);%re
else if i==5
y_tone(3,:)=sin(2*pi*t_tone*Scale_tone(i));%發(fā)音函數(shù)轉(zhuǎn)化為離散信號
x_tone(3)=Scale_tone(i);%mi
else if i==6
y_tone(4,:)=sin(2*pi*t_tone*Scale_tone(i));%發(fā)音函數(shù)轉(zhuǎn)化為離散信號
x_tone(4)=Scale_tone(i);%fa
else if i==8
y_tone(5,:)=sin(2*pi*t_tone*Scale_tone(i));%發(fā)音函數(shù)轉(zhuǎn)化為離散信號
x_tone(5)=Scale_tone(i);%so
else if i==10
y_tone(6,:)=sin(2*pi*t_tone*Scale_tone(i));%發(fā)音函數(shù)轉(zhuǎn)化為離散信號
x_tone(6)=Scale_tone(i);%la
else if i==12
y_tone(7,:)=sin(2*pi*t_tone*Scale_tone(i));%發(fā)音函數(shù)轉(zhuǎn)化為離散信號
x_tone(7)=Scale_tone(i);%si
else if i==13
y_tone(8,:)=sin(2*pi*t_tone*Scale_tone(i));%發(fā)音函數(shù)轉(zhuǎn)化為離散信號
x_tone(8)=Scale_tone(i);%高八度do
end
end
end
end
end
end
end
end
end
figure(1)%創(chuàng)建圖窗窗口
hold on;%保留圖
xlabel('\bf音節(jié):(cdefgabc)');%x坐標(biāo)
ylabel('\bf音節(jié)音頻:(Hz)');%y坐標(biāo)
title('\bf8度音節(jié)音頻示意圖(A:4400Hz');%圖題
x_sub=1:1:8;%離散序列x坐標(biāo)值
Sub_stem=zeros(1,8);%離散序列
stem(x_sub,Sub_stem);%繪制離散序列圖示
xlim([0,8]);%x的刻度
ylim([0,600]);%y的刻度
for i=1:1:8%循環(huán)八次
time_pause=1.2;%時間暫停1.2s
if i==8%發(fā)高八度do時
time_pause=2.4;%暫停2.4s
end
stem(i,x_tone(i),'fill');%繪制離散序列,并創(chuàng)建一個針狀圖并填充終止每個針狀圖的圓
sound(y_tone(i,:),fs);%循環(huán)發(fā)聲
pause(time_pause);%暫停函數(shù)
end
hold off
到了這里,關(guān)于MATLAB小提琴仿真與代碼實現(xiàn)(數(shù)學(xué)物理方程)大作業(yè)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!