? ? 電子琴設(shè)計(jì)原理
樂(lè)曲都是由一連串的音符組成,按照樂(lè)曲的樂(lè)譜依次輸出這些音符所對(duì)應(yīng)的頻率,就可以在揚(yáng)聲器上連續(xù)地發(fā)出各個(gè)音符的音調(diào)。為了準(zhǔn)確地演奏出一首樂(lè)曲,僅僅讓揚(yáng)聲器能夠發(fā)出聲音是遠(yuǎn)遠(yuǎn)不夠的,還必須準(zhǔn)確地控制樂(lè)曲的節(jié)奏,即每個(gè)音符的持續(xù)時(shí)間。由此可見(jiàn),樂(lè)曲中每個(gè)音符的發(fā)音頻率以及音符持續(xù)的時(shí)間是樂(lè)曲能夠連續(xù)演奏的兩個(gè)關(guān)鍵因素。
樂(lè)曲的12平均率規(guī)定:每2個(gè)八度音之間的頻率要相差1倍,比如簡(jiǎn)譜中的中音2與高音2。在2個(gè)八度音之間,又可分為12個(gè)半音。另外,音符A(簡(jiǎn)譜中的低音5)的頻率為392Hz,音符E到F之間、B到C之間為半音,其余為全音。由此可以計(jì)算出簡(jiǎn)譜中從低音
1至高音1之間每個(gè)音符的頻率。簡(jiǎn)譜音名與頻率對(duì)應(yīng)關(guān)系如圖2-1所示:
產(chǎn)生各音符所需的頻率使用一分頻器來(lái)實(shí)現(xiàn),由于各音符對(duì)應(yīng)的頻率多為非整數(shù),而分頻系數(shù)又不能為小數(shù),所以必須將計(jì)算得到的分頻數(shù)四舍五入取整數(shù)。若分頻器時(shí)鐘頻率過(guò)低,則由于分頻系數(shù)過(guò)小,四舍五入取整數(shù)后的誤差較大;若時(shí)鐘頻率過(guò)高,雖然誤差變小,但分頻數(shù)將會(huì)變大。在實(shí)際的設(shè)計(jì)中應(yīng)綜合考慮這兩方面的因素,在盡量減小頻率誤差的前提下取合適的時(shí)鐘頻率。實(shí)際上,只要各個(gè)音符間的相對(duì)頻率關(guān)系不變,演奏出的樂(lè)曲聽(tīng)起來(lái)都不會(huì)走調(diào)。
設(shè)計(jì)的音樂(lè)電子琴選取12MHZ的系統(tǒng)時(shí)鐘頻率。在數(shù)控分頻器模塊,首先對(duì)時(shí)鐘頻率進(jìn)行12分頻,得到1MHZ的輸入頻率,然后再次分頻得到各音符的頻率。由于數(shù)控分頻器輸出的波形是脈寬極窄的脈沖波,為了更好的驅(qū)動(dòng)揚(yáng)聲器發(fā)聲,在到達(dá)揚(yáng)聲器之前需要均衡占空比,從而生成各音符對(duì)應(yīng)頻率的對(duì)稱(chēng)方波輸出。這個(gè)過(guò)程實(shí)際上進(jìn)行了一次二分頻,頻率變?yōu)樵瓉?lái)的二分之一即0.5MHZ。
因此,分頻系數(shù)的計(jì)算可以按照下面的方法進(jìn)行。以中音1為例,對(duì)應(yīng)的頻率值為523Hz,它的分頻系數(shù)應(yīng)該為:
至于其他音符,可由上式求出對(duì)應(yīng)的分頻系數(shù),這樣利用程序可以很輕松地得到相應(yīng)的樂(lè)聲。
各音名對(duì)應(yīng)的分頻系數(shù)如圖2-2所示:
音符的持續(xù)時(shí)間須根據(jù)樂(lè)曲的速度及每個(gè)音符的節(jié)拍數(shù)來(lái)確定。因此,要控制音符的音長(zhǎng),就必須知道樂(lè)曲的速度和每個(gè)音符所對(duì)應(yīng)的節(jié)拍數(shù)。如果將全音符的持續(xù)時(shí)間設(shè)為1s的話(huà),那么一拍所應(yīng)該持續(xù)的時(shí)間為0.25秒,則只需要提供一個(gè)4HZ的時(shí)鐘頻率即可產(chǎn)生四分音符的時(shí)長(zhǎng)。
至于音長(zhǎng)的控制,在自動(dòng)演奏模塊,每個(gè)樂(lè)曲的音符是按地址存放的,播放樂(lè)曲時(shí)按4HZ的時(shí)鐘頻率依次讀取簡(jiǎn)譜,每個(gè)音符持續(xù)時(shí)間為0.25秒。如果樂(lè)譜中某個(gè)音符為三拍音長(zhǎng),那又該如何控制呢?其實(shí)只要在3個(gè)連續(xù)地址存放該音符,這時(shí)就會(huì)發(fā)三個(gè)0.25秒的音長(zhǎng),即持續(xù)了三拍的時(shí)間,通過(guò)這樣一個(gè)簡(jiǎn)單的操作就可以控制音長(zhǎng)了。
2.2.1分頻模塊設(shè)計(jì)方法
方法一:使用加法計(jì)數(shù)器。在計(jì)數(shù)器值小于分頻系數(shù)值時(shí),保持分頻的時(shí)鐘信號(hào)不變,當(dāng)計(jì)數(shù)器加到分頻系數(shù)值時(shí),令分頻時(shí)鐘信號(hào)發(fā)生跳變,同時(shí)將零設(shè)為此時(shí)的計(jì)數(shù)器值,這樣分頻時(shí)鐘信號(hào)就會(huì)再次發(fā)生跳變。但是這種占空比不等于50%的信號(hào)是無(wú)法驅(qū)動(dòng)實(shí)驗(yàn)板上的揚(yáng)聲器發(fā)聲的。
方法二:使用減法計(jì)數(shù)器,計(jì)數(shù)器的數(shù)值由分頻系數(shù)值向下遞減,在減為零時(shí)跳變并重新賦值,原理與第一種類(lèi)似。
方法三:先對(duì)時(shí)鐘脈沖進(jìn)行分頻得到1MHZ的脈沖,然后按照輸入的分頻系數(shù)對(duì)1MHZ的再次分頻,得到所需的音符頻率,最后在音調(diào)輸出時(shí)再進(jìn)行二分頻,將脈沖展開(kāi)能夠直接得到占空比為50%的分頻信號(hào),將脈沖展寬,使揚(yáng)聲器有足夠發(fā)生功率。在思索一番后,最終確定了這一個(gè)方案,相比較與以上兩種實(shí)現(xiàn)方法,這種方法的好處在于能夠直接得到占空比為50%的分頻信號(hào)。
評(píng)論