夏霏杰,趙檢蒙,張 杰,夏志富,朱仁祥
(寧波工程學(xué)院 電子與信息工程學(xué)院,浙江 寧波 315016)
琴類樂器各個(gè)弦或鍵發(fā)出不同模式、不同音高(或音調(diào))的樂音,這些琴弦、鍵發(fā)的音符合一定的音律,如“純律”、“十二平均律”等。然而,這些琴類樂器各個(gè)弦或鍵經(jīng)常會(huì)偏離應(yīng)有的位置,以致演奏不出應(yīng)有的音樂效果,這就需要定期對這些樂器進(jìn)行校準(zhǔn)。通常,調(diào)音師通過耳朵來判斷每個(gè)弦音是否有偏差,再按一定的音律調(diào)各個(gè)弦或鍵。這種傳統(tǒng)的琴音分析及調(diào)試手段是利用耳的聽覺來完成的,人為影響因素大,不夠精確且效率低下。特別是,對于一些初學(xué)者,其對音準(zhǔn)的判別還沒有達(dá)到能夠調(diào)音的水平。這就需要設(shè)計(jì)專門的工具來完成調(diào)音。
被測信號即琴音信號由麥克風(fēng)采集,經(jīng)過模擬音頻信號處理模塊對信號進(jìn)行放大和整合后送入PIC單片機(jī),對PIC進(jìn)行一系列初始化設(shè)置后由PIC內(nèi)置的A/D轉(zhuǎn)換器進(jìn)行模數(shù)轉(zhuǎn)換,并對轉(zhuǎn)換完的數(shù)字信號進(jìn)行FFT分析。最后在圖形液晶模塊上顯示結(jié)果。系統(tǒng)結(jié)構(gòu)框圖如圖1所示。
圖1 系統(tǒng)總體框
在模擬音頻信號模塊中,音頻信號首先通過麥克風(fēng)采集進(jìn)來。由于麥克風(fēng)信號輸出比較小,必須采用前置放大器進(jìn)行放大[1]??紤]到噪聲的問題,這里用 OP07低噪聲放大器對信號進(jìn)行放大。OP07芯片是一種低噪聲,非斬潑穩(wěn)零的上級行運(yùn)算放大器集成電路[2]。電路如圖2所示。
圖2 前置放大電路
本系統(tǒng)采用的單片機(jī)型號為PIC18F452。該單片機(jī)是帶有10 位A/D的高性能增強(qiáng)型閃存單片機(jī)[3]。
PIC18F452的 A/D轉(zhuǎn)換電路的輸入范圍為0~VREF,為單極性輸入形式。由于采樣的信號為音頻信號,即交流信號。因此需要把雙極性輸入電壓經(jīng)過提升電路轉(zhuǎn)換成單極性[4],然后與 PIC18F452單片機(jī)相連,如圖3所示。
圖3 電壓提升電路
A/D 的設(shè)置首先要考慮的是抽樣頻率。根據(jù)抽樣頻率等于或大于信號最高頻率的奈奎斯特頻率,則信號在頻域中無混疊現(xiàn)象[5]。由于小提琴的弦音頻率范圍大約在1~2 kHz,本系統(tǒng)將系統(tǒng)的A/D采用頻率設(shè)為10 kHz。還有一些其他的相關(guān)設(shè)置,例如:①對模擬引腳/基準(zhǔn)電壓/數(shù)字I/O進(jìn)行配置;②選擇 A/D輸入通道;③選擇 A/D轉(zhuǎn)換時(shí)鐘;④對A/D轉(zhuǎn)換完成標(biāo)志位清0; ⑤對A/D轉(zhuǎn)換中斷使能位置1。
FFT算法的基本原理是把長序列的DFT逐次分解為較短序列的DFT[6]。本系統(tǒng)采用基2、DIT-FFT(按時(shí)間抽取)的方法進(jìn)行數(shù)據(jù)分析。其算法流程圖如圖4所示。
圖4 FFT算法流程
FFT計(jì)算公式[7]:
FFT是離散傅里葉變換的快速算法,在單片機(jī)實(shí)現(xiàn)中,采用蝶形運(yùn)算算法實(shí)現(xiàn) FFT[8],蝶形運(yùn)算單元如圖5所示。圖中左為輸入。中間的黑色實(shí)心點(diǎn)表示加、減運(yùn)算。右上支路為相加后的輸出,右下支路為相減后的輸出。箭頭表示要進(jìn)行相乘運(yùn)算。
圖5 蝶形運(yùn)算流
變址計(jì)算部分代碼如下:
注意:①up,down,produc均為自定義的結(jié)構(gòu)體,表示復(fù)數(shù),這里不給出具體定義;②mul,add,sub三個(gè)函數(shù)分別計(jì)算復(fù)數(shù)的相乘,相加和相減,并保存在第3個(gè)參數(shù)中。
對于FFT信號的分析,較為廣泛的方法是應(yīng)用DSP進(jìn)行數(shù)據(jù)處理。本系統(tǒng)采用較低成本的PIC單片機(jī)進(jìn)行數(shù)據(jù)分析處理[9-12],并且 PIC內(nèi)置了高性能的AD,也省去了AD部分的電路設(shè)計(jì)。整個(gè)系統(tǒng)變得小巧、輕便。該系統(tǒng)的實(shí)際運(yùn)用中得到了良好的效果,可以達(dá)到琴音校準(zhǔn)的目的。但是,該系統(tǒng)對信號的采集做的并不是非常精確,如果要進(jìn)一步提高精確度可以采用成本較高的12位的AD轉(zhuǎn)換器進(jìn)行模數(shù)轉(zhuǎn)換,或者建立了一種模式識別神經(jīng)網(wǎng)絡(luò)模型,在數(shù)字信號處理器中實(shí)現(xiàn)。
[1] 張曉明. 基于 DSP的琴音分析系統(tǒng)[D]. 鄭州: 鄭州大學(xué),2006.
[2] 石飛飛,馬辰.基于 OP07和 LTC1543溫度采集模塊的設(shè)計(jì)[J].電子設(shè)計(jì)工程,2010,18(12):57-59.
[3] 郭其一. PIC18F系列單片機(jī)原理與應(yīng)用[M].北京:中國電力出版社,2010.
[4] 劉和平. PIC18Fxxx單片機(jī)程序設(shè)計(jì)及應(yīng)用[M]. 北京:北京航空航天大學(xué)出版社, 2005.
[7] 陸慧娟.用 FFT測量音頻信號失真度的誤差研究[J].科技通報(bào),1998,14(04):270-275.
[6] 黃正謹(jǐn),徐堅(jiān).CPLD系統(tǒng)設(shè)計(jì)技術(shù)入門與應(yīng)用[M].北京:電子工業(yè)出版社,2002.
[7] 余成波,陶紅艷,楊菁,等. 數(shù)字信號處理及 MATLAB實(shí)現(xiàn)[M]. 北京:北京大學(xué)出版社, 2008.
[8] 伍文平,李永紅,張明,等. 基于單片機(jī)的 FFT算法分析與實(shí)現(xiàn)[J]. 科學(xué)技術(shù)與工程,2009,9(16):4803-4805.
[9] 張莉,張衛(wèi). OFDM信號的頻譜分析及應(yīng)用PCC對系統(tǒng)的改進(jìn)[J].通信技術(shù),2003(12):35-36,39.
[10] 李媛媛,徐巖,王靖岳.對MATLAB實(shí)現(xiàn)數(shù)字信號的QPSK的頻譜分析[J].通信技術(shù),2008,41(12):41-42,81.
[11] 高陽,黃征,徐徹,等.基于高階頻譜分析的音頻篡改鑒定[J].信息安全與通信保密,2008(02):94-96.
[12] 劉慧慧,胡愛群.基于功率譜紋理分析的指紋密鑰算法[J].信息安全與通信保密,2009(12):70-71,74.