專利名稱:一種基于五線譜的音樂數(shù)字化方法
技術(shù)領(lǐng)域:
本發(fā)明屬于單片機(jī)技術(shù)領(lǐng)域,尤其涉及單片機(jī)的一種基于五線譜的音樂數(shù)字化方法。
背景技術(shù):
五線譜中分為高音部記號和低音部記號。單片機(jī)中是通過中斷實(shí)現(xiàn)這兩部分記號 的,但是在單片機(jī)中主要是實(shí)現(xiàn)高音部記號中音符實(shí)現(xiàn)的。和弦也是通過中斷實(shí)現(xiàn)的。如 果在高音部和低音部同時(shí)有幾個(gè)音符需要一起演奏,那么就需要幾個(gè)中斷。由于單片機(jī)的 中斷限制,大多數(shù)情況下只用一個(gè)中斷來實(shí)現(xiàn)高音部記號里面的音符所表達(dá)的音樂,音樂 的主音是記錄在高音部中的音符。如果中斷比較多的話可以實(shí)現(xiàn)和弦音,即用另一個(gè)中斷 來實(shí)現(xiàn)低音部記號里面音符所表達(dá)的音樂,低音部為輔音。采用適當(dāng)?shù)恼`差補(bǔ)償,利用單片 機(jī)定時(shí)中斷的方法能在寬音域范圍產(chǎn)生準(zhǔn)確穩(wěn)定的音頻信號。 世界上多數(shù)國家和地區(qū)以及大部分樂器通用五線譜記錄音高。五線譜的高音譜表 (Treble Staff)(即G譜表,譜號從G開始)和低音譜表(Bass Staff)(即F譜表,譜號從 F線始)連在一起,中間有一條線即中央C (c'),這種把兩個(gè)五線譜的高低音譜表連在一起, 加上中間的實(shí)際上存在的一條線,也稱i^一線譜表或大譜表(Great Staff)。
鋼琴的鍵盤有很多音,就是數(shù)組的音名的連續(xù),自鋼琴的正中央的C音向右方的 七音,用小字母加數(shù)字1的,稱之為"小字一組七音"或"基礎(chǔ)七音"?;A(chǔ)七音向右的(或更 高的) 一組,加數(shù)字2的,稱之為"小字二組七音"。又基礎(chǔ)七音向左的(或更低的) 一組, 沒有加小數(shù)字的,稱之為"小字七音"。小字七音向左的(或更低的) 一組,用大寫字母,稱 之為"大字七音"。這是世界共同的樂譜規(guī)則?;A(chǔ)七音的C,名曰"中央C",它即在鍵盤的 中央,又在譜表上的中央,即大譜表中高音部譜表與低音部譜表的中央所夾的加線上。故大 譜表底各線與各間,也有規(guī)定的音名。大譜表上方的高音部譜表記錄右手所彈的或高聲部 所唱的音,下方的低音部譜表記錄左手所彈的或低聲部所唱的音。 音程是描述兩個(gè)音的音高之間的距離,在音樂上可以用"度"表示,或用半音、全音 來表示;在音樂聲學(xué)上,音程還可用頻率比或音分來表示。音程每高八度,發(fā)聲體的振動(dòng)頻 率增高為兩倍。也即al = 440Hz, a2 = 880. OOHz, a = 220. OOHZ等等。對應(yīng)于實(shí)際情況, 弦的長度或管的長度每縮短一半,頻率就是原先的兩倍,這樣就把音程與頻率比聯(lián)系起來 了 。用半音或全音表示音程其最小單位是半音,這個(gè)間距太大了 ,在鍵盤樂器上暫就定了 , 在弦樂和管樂演奏上已經(jīng)感到不夠,而在樂器制造、音律學(xué)研究及音樂聲學(xué)的其他方面的 研究上,就理更不夠了。于是,把一個(gè)八度音程按等比分成1200份,每份叫做一音分。兩個(gè) 頻率為H.f2的音。 十二平均律是作為音樂學(xué)和電子學(xué)中間的橋梁。通過十二平均律可以把音樂學(xué)中 音階、音調(diào)、音節(jié)、音程等等轉(zhuǎn)化為電子學(xué)中可以應(yīng)用的頻率和周期。 按照國際標(biāo)準(zhǔn),音樂學(xué)中基礎(chǔ)七音的a1頻率為440Hz,從此音開始,比之高半 音的音,其頻率是此音的頻率乘^^4.05946,比它低半音的音,其頻率是此音的頻率乘1/^^=0. 943874,余次類推,可以得到其他所有各律的頻率。 基于上述的分析,可以得出,利用單片機(jī)有限的資源通過功放電路也能夠?qū)崿F(xiàn)音 效穩(wěn)定準(zhǔn)確悅耳音樂曲子。而現(xiàn)有技術(shù)中,還沒有一種方法可以在單片機(jī)上實(shí)現(xiàn)理想的音 樂曲子。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種基于五線譜原理利用單片機(jī)對音樂數(shù)字化播放的方法。
本發(fā)明的技術(shù)方案是,一種基于五線譜的音樂數(shù)字化方法,在判斷為音樂程序指 令后作程序的初始化設(shè)置,查表給各個(gè)音樂頻率賦值,查表給頻率設(shè)置時(shí)間賦值,查表給單 片機(jī)音樂端口通斷賦值。 在音樂程序未初始化且音樂未結(jié)束時(shí),判斷同一頻率運(yùn)行時(shí)間是否大于等于頻率
設(shè)置時(shí)間,若是則進(jìn)行程序的初始化設(shè)置,若不是則判斷單片機(jī)音樂端口是否通斷。 若單片機(jī)音樂端口開通則打開單片機(jī)該端口 ,若非通,則關(guān)閉單片機(jī)該音樂端口 。 本發(fā)明的方法實(shí)現(xiàn)了用單片機(jī)有限資源通過功放電路對音樂的準(zhǔn)確和諧悅耳的
模擬和播放,豐富了單片機(jī)儀器設(shè)計(jì)中的整體使用效果。
圖1是本發(fā)明 一實(shí)施例中方法流程圖
具體實(shí)施例方式
如圖1所示,本發(fā)明的具體實(shí)施方式
是基于五線譜的音樂數(shù)字化方法,在判斷為 音樂程序指令后作程序的初始化設(shè)置,查表給各個(gè)音樂頻率賦值,查表給頻率設(shè)置時(shí)間賦 值,查表給單片機(jī)音樂端口通斷賦值。在音樂程序未初始化且音樂未結(jié)束時(shí),判斷同一頻率 運(yùn)行時(shí)間是否大于等于頻率設(shè)置時(shí)間,若是則進(jìn)行程序的初始化設(shè)置,若不是則判斷單片 機(jī)音樂端口是否通斷。若單片機(jī)音樂端口開通則打開單片機(jī)該端口 ,若非通,則關(guān)閉單片機(jī) 該音樂端口。 當(dāng)在單片機(jī)中用一個(gè)中斷產(chǎn)生音級,另一個(gè)中斷產(chǎn)生音長。推而廣之,如果單片機(jī) 中中斷比較多,可以利用幾個(gè)中斷產(chǎn)生出幾個(gè)音級,包括高音部和低音部,可以用幾個(gè)中斷 表出幾個(gè)音長,利用程序控制曲譜的輸出。就可以產(chǎn)生旋律了。 要產(chǎn)生音頻信號,只要算出某一音頻的周期(頻率的倒數(shù)),將此周期除以2即為 半周期的時(shí)間,利用定時(shí)器計(jì)時(shí)此半周期時(shí)間,計(jì)時(shí)到后取反輸出,重復(fù)此過程即得到此頻
率的聲音信號。 定時(shí)器TO工作在定時(shí)方式l,產(chǎn)生不同的音頻頻率。必須考慮到中斷響應(yīng)時(shí)間 的影響,尤其在高音部分,若忽略中斷響應(yīng)時(shí)間,會使音頻頻率比標(biāo)準(zhǔn)值低幾十Hz,相當(dāng)于 1/4音程,很容易聽出來,對低音部分影響不大。 一般中斷響應(yīng)時(shí)間為3 6個(gè)機(jī)器周期,經(jīng) 過反復(fù)試驗(yàn)取5個(gè)機(jī)器周期作為校正最為恰當(dāng)。另外,為避免T1中斷可能引起雜音,應(yīng)將 定時(shí)器T0中斷設(shè)為高優(yōu)先級。這樣編寫出來的程序播放的音與標(biāo)準(zhǔn)音叉進(jìn)行差頻校音,非 常準(zhǔn)確和諧。 每個(gè)音符使用兩個(gè)字節(jié)。低位字節(jié)(偶地址)代表音級,需要有寄存器(如00H)表示不發(fā)音(休止符),需要有寄存器(如01H 30H)依次表示的音級為c、 #c、 d、 #d、 e、 f、……a3、fe3、b3等等。高位字節(jié)(奇地址)代表音符的時(shí)值(拍數(shù)),有寄存器(00H OFH)依次表示拍數(shù)為1/8拍(0. 10s) 8拍(6. 40s)。 定時(shí)器Tl工作在定時(shí)方式l,定時(shí)時(shí)間為O. lOs左右,作為音符節(jié)拍的最小時(shí)間單 位,即1/8拍,該時(shí)間要求不必很準(zhǔn)確,該時(shí)間越短,音樂播放節(jié)奏就越快。時(shí)間取O. 10s時(shí)。 其它的音符節(jié)拍都是1/8拍的整數(shù)倍,借助軟件計(jì)數(shù),允許中斷的次數(shù)就是倍數(shù)。例如,要 得到l拍的延時(shí),只要中斷8次即可。 要編寫的樂譜按要求以音符字節(jié)數(shù)據(jù)表的形式存放在程序中,改變樂曲就是通過 改變該數(shù)據(jù)表的內(nèi)容來實(shí)現(xiàn)的。主程序的任務(wù)是按順序讀取數(shù)據(jù)表中的字節(jié),根據(jù)情況調(diào) 用音級子程序和音長子程序,啟動(dòng)定時(shí)器T0;根據(jù)定時(shí)器T1應(yīng)中斷的次數(shù),啟動(dòng)定時(shí)器T1。 數(shù)據(jù)表讀完后,根據(jù)所設(shè)置的循環(huán)演奏次數(shù)決定是否結(jié)束程序。音級子程序的任務(wù)是取出 字節(jié)中的音級部分,分析寄存器(如THO和TLO中)應(yīng)送入何值,送給寄存器(如R3、R2)。 音長子程序的任務(wù)是取出字節(jié)中的音長部分,分析確定定時(shí)器Tl應(yīng)中斷的次數(shù),次數(shù)送寄 存器(如R4)中,同時(shí)啟動(dòng)定時(shí)器T1,直到完成所需拍數(shù)。定時(shí)器TO的中斷服務(wù)程序任務(wù) 是取反單片機(jī)音樂端口輸出產(chǎn)生方波,重新為寄存器(TH0,TL0)送初值。定時(shí)器T1的中斷 服務(wù)程序任務(wù)是判斷節(jié)拍數(shù)完成否,關(guān)閉定時(shí)器T0、T1中斷。
權(quán)利要求
一種基于五線譜的音樂數(shù)字化方法,其特征在于,在判斷為音樂程序指令后作程序的初始化設(shè)置,查表給各個(gè)音樂頻率賦值,查表給頻率設(shè)置時(shí)間賦值,查表給單片機(jī)音樂端口通斷賦值。
2. 如權(quán)利要求1所述的基于五線譜的音樂數(shù)字化方法,其特征在于,在音樂程序未初始化且音樂未結(jié)束時(shí),判斷同一頻率運(yùn)行時(shí)間是否大于等于頻率設(shè)置時(shí)間,若是則進(jìn)行程序的初始化設(shè)置,若不是則判斷單片機(jī)音樂端口是否通斷。
3. 如權(quán)利要求2所述的基于五線譜的音樂數(shù)字化方法,其特征在于,若單片機(jī)音樂端口開通則打開單片機(jī)該端口 ,若非通,則關(guān)閉單片機(jī)該音樂端口 。
全文摘要
本發(fā)明涉及一種基于五線譜的音樂數(shù)字化方法,其特征在于,在判斷為音樂程序指令后作程序的初始化設(shè)置,查表給各個(gè)音樂頻率賦值,查表給頻率設(shè)置時(shí)間賦值,查表給單片機(jī)音樂端口通斷賦值。在音樂程序未初始化且音樂未結(jié)束時(shí),判斷同一頻率運(yùn)行時(shí)間是否大于等于頻率設(shè)置時(shí)間,若是則進(jìn)行程序的初始化設(shè)置,若不是則判斷單片機(jī)音樂端口是否通斷。若單片機(jī)音樂端口開通則打開該單片機(jī)端口,若非通,則關(guān)閉該單片機(jī)音樂端口。單片機(jī)音樂端口和功放電路音樂端口通過電路相連接。本發(fā)明的方法實(shí)現(xiàn)了用單片機(jī)有限資源通過功放電路對音樂的準(zhǔn)確和諧悅耳的模擬和播放,豐富了單片機(jī)儀器設(shè)計(jì)中的整體使用效果。
文檔編號G10H7/00GK101740015SQ20091020041
公開日2010年6月16日 申請日期2009年12月22日 優(yōu)先權(quán)日2009年12月22日
發(fā)明者楊鳳生 申請人:上海精密科學(xué)儀器有限公司