單片機音樂中音調(diào)和節(jié)拍的確定方法:調(diào)號-音樂上指用以確定樂曲主音高度的符號。很明顯一個八度就有12個半音。A、B、C、D、E、F、G。經(jīng)過聲學(xué)家的研究,全世界都用這些字母來表示固定的音高。比如,A這個音,標(biāo)準(zhǔn)的音高為每秒鐘振動440周。 升C調(diào):1=#C,也就是降D調(diào):1=BD;277(頻率)升D調(diào):1=#D,也就是降E調(diào):1=BE;311升F調(diào):1=#F,也就是降G調(diào):1=BG;369升G調(diào):1=#G,也就是降A(chǔ)調(diào):1=BA;415升A調(diào):1=#A,也就是降B調(diào):1=BB。466,C 262 #C277 D 294 #D(bE)311 E 330 F 349 #F369 G 392 #G415A 440. #A466 B 494 所謂1=A,就是說,這首歌曲的“導(dǎo)”要唱得同A一樣高,人們也把這首歌曲叫做A調(diào)歌曲,或叫“唱A調(diào)”。1=C,就是說,這首歌曲的“導(dǎo)”要唱得同C一樣高,或者說“這歌曲唱C調(diào)”。同樣是“導(dǎo)”,不同的調(diào)唱起來的高低是不一樣的。各調(diào)的對應(yīng)的標(biāo)準(zhǔn)頻率為: 單片機演奏音樂時音調(diào)和節(jié)拍的確定方法 經(jīng)常看到一些剛學(xué)單片機的朋友對單片機演奏音樂比較有興趣,本人也曾是這樣。在此,本人將就這方面的知識做一些簡介,但愿能對單片機演奏音樂比較有興趣而又不知其解的朋友能有所啟迪。 一般說來,單片機演奏音樂基本都是單音頻率,它不包含相應(yīng)幅度的諧波頻率,也就是說不能象電子琴那樣能奏出多種音色的聲音。因此單片機奏樂只需弄清楚兩個概念即可,也就是“音調(diào)”和“節(jié)拍”。音調(diào)表示一個音符唱多高的頻率,節(jié)拍表示一個音符唱多長的時間。 在音樂中所謂“音調(diào)”,其實就是我們常說的“音高”。在音樂中常把中央C上方的A音定為標(biāo)準(zhǔn)音高,其頻率f=440Hz。當(dāng)兩個聲音信號的頻率相差一倍時,也即f2=2f1時,則稱f2比f1高一個倍頻程, 在音樂中1(do)與 ,2(來)與 ……正好相差一個倍頻程,在音樂學(xué)中稱它相差一個八度音。在一個八度音內(nèi),有12個半音。以1—i八音區(qū)為例, 12個半音是:1—#1、#1—2、2—#2、#2—3、3—4、4—#4,#4—5、5一#5、#5—6、6—#6、#6—7、7—i。這12個音階的分度基本上是以對數(shù)關(guān)系來劃分的。如果我們只要知道了這十二個音符的音高,也就是其基本音調(diào)的頻率,我們就可根據(jù)倍頻程的關(guān)系得到其他音符基本音調(diào)的頻率。 知道了一個音符的頻率后,怎樣讓單片機發(fā)出相應(yīng)頻率的聲音呢?一般說來,常采用的方法就是通過單片機的定時器定時中斷,將單片機上對應(yīng)蜂鳴器的I/O口來回取反,或者說來回清零,置位,從而讓蜂鳴器發(fā)出聲音,為了讓單片機發(fā)出不同頻率的聲音,我們只需將定時器予置不同的定時值就可實現(xiàn)。那么怎樣確定一個頻率所對應(yīng)的定時器的定時值呢?以標(biāo)準(zhǔn)音高A為例: A的頻率f = 440 Hz,其對應(yīng)的周期為:T = 1/ f = 1/440 =2272μs 由上圖可知,單片機上對應(yīng)蜂鳴器的I/O口來回取反的時間應(yīng)為:t = T/2 = 2272/2 = 1136μs這個時間t也就是單片機上定時器應(yīng)有的中斷觸發(fā)時間。一般情況下,單片機奏樂時,其定時器為工作方式1,它以振蕩器的十二分頻信號為計數(shù)脈沖。設(shè)振蕩器頻率為f0,則定時器的予置初值由下式來確定: t = 12 *(TALL – THL)/ f0 式中TALL = 216 = 65536,THL為定時器待確定的計數(shù)初值。因此定時器的高低計數(shù)器的初值為: TH = THL / 256 = ( TALL – t* f0/12) / 256 TL = THL % 256 = ( TALL – t* f0/12) %256 將t=1136μs代入上面兩式(注意:計算時應(yīng)將時間和頻率的單位換算一致),即可求出標(biāo)準(zhǔn)音高A在單片機晶振頻率f0=12Mhz,定時器在工作方式1下的定時器高低計數(shù)器的予置初值為 : TH440Hz = (65536 – 1136 * 12/12) /256 = FBH TL440Hz = (65536 – 1136 * 12/12)%256 = 90H根據(jù)上面的求解方法,我們就可求出其他音調(diào)相應(yīng)的計數(shù)器的予置初值。 音符的節(jié)拍我們可以舉例來說明。在一張樂譜中,我們經(jīng)常會看到這樣的表達式,如1=C 、1=G …… 等等,這里1=C,1=G表示樂譜的曲調(diào),和我們前面所談的音調(diào)有很大的關(guān)聯(lián), 、 就是用來表示節(jié)拍的。以 為例加以說明,它表示樂譜中以四分音符為節(jié)拍,每一小結(jié)有三拍。比如: 其中1 、2 為一拍,3、4、5為一拍,6為一拍共三拍。1 、2的時長為四分音符的一半,即為八分音符長,3、4的時長為八分音符的一半,即為十六分音符長,5的時長為四分音符的一半,即為八分音符長,6的時長為四分音符長。那么一拍到底該唱多長呢?一般說來,如果樂曲沒有特殊說明,一拍的時長大約為400—500ms 。我們以一拍的時長為400ms為例,則當(dāng)以四分音符為節(jié)拍時,四分音符的時長就為400ms,八分音符的時長就為200ms,十六分音符的時長就為100ms。可見,在單片機上控制一個音符唱多長可采用循環(huán)延時的方法來實現(xiàn)。首先,我們確定一個基本時長的延時程序,比如說以十六分音符的時長為基本延時時間,那么,對于一個音符,如果它為十六分音符,則只需調(diào)用一次延時程序,如果它為八分音符,則只需調(diào)用二次延時程序,如果它為四分音符,則只需調(diào)用四次延時程序,依次類推。通過上面關(guān)于一個音符音調(diào)和節(jié)拍的確定方法,我們就可以在單片機上實現(xiàn)演奏音樂了。具體的實現(xiàn)方法為:將樂譜中的每個音符的音調(diào)及節(jié)拍變換成相應(yīng)的音調(diào)參數(shù)和節(jié)拍參數(shù),將他們做成數(shù)據(jù)表格,存放在存儲器中,通過程序取出一個音符的相關(guān)參數(shù),播放該音符,該音符唱完后,接著取出下一個音符的相關(guān)參數(shù)……,如此直到播放完畢最后一個音符,根據(jù)需要也可循環(huán)不停地播放整個樂曲。另外,對于樂曲中的休止符,一般將其音調(diào)參數(shù)設(shè)為FFH,F(xiàn)FH,其節(jié)拍參數(shù)與其他音符的節(jié)拍參數(shù)確定方法一致,樂曲結(jié)束用節(jié)拍參數(shù)為00H來表示。下面給出部分音符(三個八度音)的頻率以及以單片機晶振頻率f0=12Mhz,定時器在工作方式1下的定時器高低計數(shù)器的予置初值 : C調(diào)音符 頻率Hz 262 277 293 311 329 349 370 392 415 440 466 494TH/TL F88B F8f2 F95B F9B7 FA14 FA66 FAB9 FB03 FB4A FB8F FBCF FC0BC調(diào)音符 1 1# 2 2# 3 4 4# 5 5# 6 6# 7頻率Hz 523 553 586 621 658 697 739 783 830 879 931 987TH/TL FC43 FC78 FCAB FCDB FD08 FD33 FD5B FD81 FDA5 FDC7 FDE7 FE05C調(diào)音符 頻率Hz 1045 1106 1171 1241 1316 1393 1476 1563 1658 1755 1860 1971TH/TL FB21 FE3C FE55 FE6D FE84 FE99 FEAD FEC0 FE02 FEE3 FEF3 FF02
上傳時間: 2013-10-20
上傳用戶:哈哈haha
游戲地圖編輯器原理,方向鍵移動視圖,F(xiàn)1,f2選擇刷子
上傳時間: 2014-01-20
上傳用戶:teddysha
浮點數(shù)基本運算 浮點數(shù)的基本運算主要有四則運算、符號處理、大小比較,以及浮點數(shù)分柝等。 包含頭文件 "fn.hpp" #include "fn.hpp" 浮點數(shù)基本運算 浮點數(shù)的基本運算中有加、減、乘、除、取負、絕對值、相等比較等。 加減乘除 加、減、乘、除四個運算極為相似,都是需要兩個參數(shù),結(jié)果當(dāng)然也是浮點數(shù)了。 例子: // 加 減 乘 除 btil::fn::plus<f1, f2>::value // f1+f2 的結(jié)果 btil::fn::minus<f1, f2>::value // f1-f2 的結(jié)果 btil::fn::multiplies<f1, f2>::value // f1*f2 的結(jié)果 btil::fn::divides<f1, f2>::value // f1/f2 的結(jié)果 plus<f1, f2>::value::f_val // f1+f2 的結(jié)果的值 struct one { static const double f_val = 1.0 } // 兩個浮點數(shù) struct two { static const double f_val = 2.0 } minus<two, plus<divides<one, two>::value, one>::value >::value::f_val == 0.5 取負 取負運算就是取一個浮點數(shù)的負數(shù)。
上傳時間: 2014-12-06
上傳用戶:exxxds
自己用C編寫的小游戲,DOS界面哦,可以運行。 浮點數(shù)基本運算 浮點數(shù)的基本運算主要有四則運算、符號處理、大小比較,以及浮點數(shù)分柝等。 包含頭文件 "fn.hpp" #include "fn.hpp" 浮點數(shù)基本運算 浮點數(shù)的基本運算中有加、減、乘、除、取負、絕對值、相等比較等。 加減乘除 加、減、乘、除四個運算極為相似,都是需要兩個參數(shù),結(jié)果當(dāng)然也是浮點數(shù)了。 例子: // 加 減 乘 除 btil::fn::plus<f1, f2>::value // f1+f2 的結(jié)果 btil::fn::minus<f1, f2>::value // f1-f2 的結(jié)果 btil::fn::multiplies<f1, f2>::value // f1*f2 的結(jié)果 btil::fn::divides<f1, f2>::value // f1/f2 的結(jié)果 plus<f1, f2>::value::f_val // f1+f2 的結(jié)果的值 struct one { static const double f_val = 1.0 } // 兩個浮點數(shù) struct two { static const double f_val = 2.0 } minus<two, plus<divides<one, two>::value, one>::value >::value::f_val == 0.5 取負 取負運算就是取一個浮點數(shù)的負數(shù)。
上傳時間: 2014-12-06
上傳用戶:jichenxi0730
求解網(wǎng)絡(luò)中的最短路徑。假設(shè)某個計算機網(wǎng)絡(luò)有n個站點,依次編號為1,2,…,n;有的站點之間有直接的線路連接(即這兩個站點之間沒有其它站點),有的站點之間沒有直接的線路連接。如果用三元組(i,j,f)來表示該網(wǎng)絡(luò)中的站點I和站點j之間有直接的線路連接且它們之間的距離為f 當(dāng)已知該網(wǎng)絡(luò)各站點之間的直接連接情況由m個三元組(i1,j1,f1),(i2,j2,f2),…,(im,jm,fm)確定時,要求計算出對于網(wǎng)絡(luò)中任意一個站點g(1≤g≤n)到其余各站點的最短距離。
標(biāo)簽: 網(wǎng)絡(luò) 最短路徑 站點 計算機網(wǎng)絡(luò)
上傳時間: 2013-12-27
上傳用戶:asdkin
FSK信號發(fā)生器,用于軟件測試.采樣率、波特率,幅度,f1,f2可調(diào),不含wave頭,樣點類型I16,保存為文件
標(biāo)簽: FSK 信號發(fā)生器 軟件測試 波特率
上傳時間: 2014-01-04
上傳用戶:253189838
多目標(biāo)粒子群的matlab程序,文中設(shè)置了兩個目標(biāo),f1和f2,采用加權(quán)求解的方式
標(biāo)簽: matlab 多目標(biāo) 粒子群 程序
上傳時間: 2015-06-14
上傳用戶:yuzsu
設(shè)f(x)=1+x+x2+x5+x27,試分別寫出實現(xiàn)下列移位寄存器的程序: 以f(x)為聯(lián)接多項式的DSR; 以f(x)為聯(lián)接多項式的LFSR。 可供選擇的聯(lián)接多項式: f1(x)=1+x+x4+x6+x30; f2(x)=1+ x3+ x31; f3(x)=1+ x6+ x31; f4(x)=1+ x7+ x31; f5(x)=1+ x13+ x31;
標(biāo)簽: 27
上傳時間: 2015-07-13
上傳用戶:xiaodu1124
L為樁長,r為計算點與樁軸線的水平距離,z為計算點距離地面深度。都取正值 %f1,f2,f3依次是點荷載、均布荷載以及三角形荷載下的Geddes應(yīng)力解函數(shù) %Ip,Ir,It依次是對應(yīng)三個荷載下的應(yīng)力系數(shù),負表示拉,正表示壓
標(biāo)簽:
上傳時間: 2014-05-23
上傳用戶:xuanjie
筆記本的M鍵壞了,編程實現(xiàn)f2鍵代替M鍵.
標(biāo)簽: 筆記本
上傳時間: 2013-11-26
上傳用戶:daguda
蟲蟲下載站版權(quán)所有 京ICP備2021023401號-1