王 ,姚竹亭,顧秀江
(中北大學 機械工程與自動化學院,山西 太原 030051)
鋼琴調律俗稱調音,簡單地說,就是要通過調整琴弦的松緊程度,使其達到國際標準音的目的。鋼琴調律是一個較復雜的工作,傳統的鋼琴調音是通過鋼琴調律師來實現的,但鋼琴的音高最終由聽覺生理及聽覺心里的滿足感所確定[1],所以,鋼琴調音師會受到周圍環境和心理因素的干擾。如果能在音頻信號識別的理論基礎之上,從琴音特性著手研究,利用現代嵌入式技術設計一款便攜式的鋼琴調律裝置,就能夠避免上述干擾因素,實現高效精準的調律。
該儀器總體包括3部分:信號采集模塊、信號處理模塊及主控制模塊,如圖1所示。該儀器將ARM作為主處理器, 完成人機界面、通信和控制等任務;采用內核源碼開放的Linux的操作系統與ARM處理器相結合,可以發揮Linux系統支持各種協議及存在多進程調度機制的優點,從而使開發周期縮短,擴展性增強;而以DSP作為協處理器完成各種算法的實現過程,以發揮其數字信號處理的獨特優勢。
該儀器的工作原理是通過麥克風采集音頻信號,經過音頻解碼芯片轉換為便于DSP處理的信號;然后在DSP中進行傅里葉變換,通過對鋼琴音基頻的判斷及處理,得到所輸入音頻信號在鋼琴上所對應的鍵以及調音結果;最后將調音波形和結果顯示于液晶屏上。

圖1 鋼琴調律器總體結構
調律儀的音頻信號采集模塊采用了音頻編解碼器TLV320AIC23(以下簡稱AIC23),它是TI公司推出的一款高性能、集成有模擬功能的立體聲音頻Codec芯片。它能以數字和模擬電壓運行,而且這些電壓與TMS320C54x DSP的I/O電壓兼容,能與C54x DSP的McBSP端口實現無縫連接;支持MIC和左右聲道LINEIN兩種輸入方式,且對輸入和輸出都具有可編程增益調節,無須外部再加功放;它的內部ADC和DAC轉換模塊帶有完整的數字濾波器[2]。該模塊的作用是實現信號的采集,并對信號進行放大、濾波以及A/D轉換。
該模塊采用了TI公司的定點高性價比DSP處理器TMS320VC5402,具有先進的多總線結構(3條16位數據存儲器總線和一條程序存儲器總線);含兩個多通道緩沖串行口,一個8位并行與外部處理器通信的HPI口,2個16位定時器以及6通道DMA控制器;具有低功耗,適合電池供電設備等特點[3]。其中兩個多通道緩沖串行接口McBSP0和McBSP1,可與AIC23實現無縫連接,并分別通過McBSP1和McBSP0實現對AIC23的初始化與數據收發。該模塊的主要功能是對采集的音頻信號進行算法處理應,并用開發板上的外部存儲器對采集信號進行存儲。
主控制模塊采用三星公司的S3C2410A處理器,它是基于ARM920T內核的16/32位RISC嵌入式微處理器,它具有獨立的16kB指令Cache和16kB數據Cache、MMU、支持STN 和 TFT的LCD控制器、64MB的NAND Flash、3路UART、4路帶PWM的Timer、豐富的I/O口、8路10位ADC、Touch Screen接口、IICBUS接口以及2個USB主機和1個USB設備等,完整的通用外圍設備極大的減少了為其配置附加外圍部件的麻煩[4]。ARM處理器對其他模塊的控制則是通過底層驅動來實現。Jtag接口用來燒寫啟動BIOS,網絡接口可以用來下載嵌入式Linux系統鏡像;利用TFT真彩LCD顯示友好的圖形人機界面,通過連接USB鼠標和I/O口鍵盤方便地操作圖形界面;MMC卡可以解決嵌入系統外存的不足,Flash用于系統代碼的存儲,SDRAM用于存放執行的數據。這里,鑒于輸入操作并不復雜,為簡化外圍設備采用帶觸摸屏的TFT型LCD模塊TD035STEBl作為顯示外設。
利用HPI口實現ARM處理器與DSP之間的數據傳輸。數據總線為HD0-HD15;HPI有3個寄存器;地址寄存器、數據寄存器、控制寄存器,它們是通過將5402的HCNTL0、HCNTL1和2410的地址線A2和A3相連并設置A2和A3的值來選擇的;由于2410沒有HR/W信號,所以選用了地址線A4和HPI口的HR/W相連,作為讀寫寄存器的控制信號; 2410A的OE、WE和GCS0分別連接到HPI口的HDS1、HDS2和HCS,這3個信號通過內部邏輯運算組成數據閘門信號,用于數據選通;5402的HINT和2410A的外部中斷輸入信號端EINT0相連,用于中斷ARM主機;HRDY用于HPI接口數據就緒信號,HBIL為字識別控制信號線。HPI連接如圖2所示。

圖2 HPI連接
本設計以ARM處理器作為平臺,運行Linux操作系統,將DSP運算的結果發送給用戶程序進一步處理,然后提供給圖形化友好的人機交互環境完成數據分析功能。ARM處理器通過DSP的HPI接口與DSP進行連接,DSP部分提供完整的HPI驅動程序(DSP部分)及通信協議,通過增加相應數據處理控制算法程序,利用HPI并行接口與主機ARM通信進行數據交換,數據交換流程如圖3所示。

圖3 ARM與DSP數據交換流程
該儀器工作的軟件流程圖如圖4所示。首先初始化McBSP,配置AIC23,然后啟動AIC23的A/D轉換,將對麥克風輸入的模擬音頻信號進行采樣,對連續信號進行傅里葉變換,通過頻譜圖,得到信號基頻信號的頻率,對應鋼琴音的基頻進行信號的分類再處理,最后就是對結果進行判斷并顯示。

圖4 軟件流程框圖
3.1.1 A/D采樣頻率、樣本位數及樣本大小
鋼琴音基頻范圍為27.5~4186.0Hz,根據采樣定理的要求和AIC23提供的采樣頻率(8~96kHz)[2],選用48 kHz的采樣頻率可以認為是比較合適的;本設計中選用的樣本位數是16位,即把音頻信號的大小分為65536個量化等級;本設計中樣本的大小為1024×32點,可為信號的再處理提供足夠的樣本點數,采樣時間為0.683s,而鋼琴音足以提供0.683s的音頻信號。
3.1.2 音頻編解碼器TLV320AIC23的配置
AIC23提供了11個16位映像寄存器,必須通過對這些寄存器進行設置以達到配置AIC23的目的。以下就是用軟件開發工具Code Composer Studio編寫的寄存器配置程序:
word 0x1e00h; 復位AIC23
word 0x0017h; 左聲道輸入取消靜音,音量0dB
word 0x0217h; 右聲道輸入取消靜音,音量0dB
word 0x04f9h; 左聲道耳機音量0dB
word 0x06f9h; 右聲道耳機音量0dB
word 0x0812h; 禁止模擬音頻旁路,選擇DAC輸出
word 0x0a04h; 數字音頻通道控制,缺省設置
word 0x0c00h; 打開所有電源,關閉省電設置
word 0x0ea3h; AIC23設為主模式,數據位DSP格式
word 0x1020h; 時鐘為正常模式,過采樣率為256fs
word 0x1201h; 激活數字接口
3.1.3 采樣端點的判斷
在實際中,電路帶來的噪聲是不可避免的,而且在采集信號時周邊環境還會存在噪聲,所以在設計中采用了信號短時平均能量來確定采樣的起始點和終點,從而保證了系統的高識別率。n時刻信號x(n)的短時平均能量定義為[5]:

式中w(n)為窗函數(如矩形窗、漢寧窗、哈明窗),N為窗長。令h(n)= w2(n),則有:

可見,窗口加權短時平均能量E,相當于將樂音平方信號的通過一個線形濾波器的輸出,該濾波器的單位取樣響應為h(n)。
式中w(n)選用哈明窗,雖然哈明窗主瓣很高(帶寬大),但旁瓣很低(通帶外的衰減大),可以有效地克服泄露現象,具有較好的低通特性,能使短時平均能量更好的反應音頻信號的幅度變化。當樂音信號的能量增大到某一數值時,說明輸入信號為需要采集的聲音信號,由此來判斷需要采集信號的起始點和結束點。
信號的處理主要包括:基音的提取、基頻范圍的確定和信號的分類處理。設計中采用的是對基頻的判斷,鋼琴音的基頻范圍為27.5~4186.0Hz[8],所以如果采用單一的采樣頻率必然不能滿足采樣分辨率的要求,在設計中采用分類處理的方法提高采樣分辨率,在預處理時確定基頻范圍,與鋼琴音的基頻對比,實現分類。
3.2.1 基音周期的提取
實際上影響從自相關函數中正確提取基音周期的最主要的因素就是聲道響應部分。當基音的周期性和共振峰的周期性混疊在一起時,被檢測出來的峰值就會偏離原來峰值的真實位置。為了提高基音周期檢測的可靠性,需對原始信號進行預處理,方法有中心削波處理和濾波。本設計中采用的是中心削波的方法[6],其輸入輸出函數為:

為了減少自相關計算的乘法運算量,可以把上述中心削波以后的信號{y(n)}的自相關用信號{y(n)}和{y′(n)}的互相關代替,其中{y′(n)}是對{y(n)}進行三電平量化產生的結果:

顯然y′(n)只有-1,0,1等3種可能的取值,因而這里的互相關計算只需做加減法,而這個互相關序列R(k)的周期性與{y(n)}的自相關序列是相同的。基音周期即為使R(k)取最大值Rmax時的位置的k值。
3.2.2 基頻范圍的確定
離散傅里葉變換(DFT)的公式如式(5)所示,為了進行快速傅里葉變換,采取時間抽?。―IT)基2FFT算法[7]:

對N點音頻信號進行FFT變換,公式(5)可知對應到頻域上也為N點,設頻域上對應第k點的頻率為 fk,則由計算公式為(6),其中 fs為音頻信號的采樣頻率,為歸一化頻率,的計算公式為(7)。因此,由公式(6)、(7)可以得到頻譜圖上每個采樣點對應的實際頻率值。

在設計中采樣率為48kHz,采樣點數為1024×16點,首先通過對前1024點進行傅里葉變換,得到基頻頻率值與鋼琴音的基頻進行比較,然后進行分類再處理。對于時域分析來說,如果FFT變換點數N很小,則它等效于很窄的低通濾波器,樂音信號通過時,反映波形細節的高頻部分被阻礙,短時能量隨時間變化很小,不能真實地反映樂音信號的幅度變化;反之,點數FFT變換N太大時,濾波器的帶通變寬,短時能量隨時間有急劇的變化,不能得到平滑的能量函數。因此,設計中采用的傅里葉變換點數為1024點。
3.2.3 信號分類處理
功率譜圖的頻率范圍和分辨率取決于采樣速率和采樣點數,即頻率分辨率 Δf =fsN ,其中fs表示采樣頻率,N表示采樣點數。鋼琴音基頻跨越很廣,相隔兩個音基頻有的相差2Hz左右,有的相差230Hz左右,如果單一滿足采樣分辨率,那么采樣率過小,會出現混疊現象;如果采樣率在不發生混疊的情況下,頻率分辨率也會不能滿足鋼琴調音的精度要求。設計中采用的采樣率轉換的方法使得在不發生混疊的基礎上盡量提高采樣分辨率,將低頻信號和高頻信號分開處理。采樣率轉換器運用的是信號的抽取,即在M個點中抽取一個,組成一個新的序列y(n)=x(Mn),經過快速傅里葉變換后,實現了 fs的減少M倍的變換[7]。
經過前1024點傅里葉變換的預處理之后,判斷得到采集到音頻信號的范圍,在采樣不發生混疊的前提下,盡可能提高頻率分辨率,所以把信號分為4部分進行再處理。如表1所示。

表1 信號分類處理
3.2.4 調音判斷
3.2.5 結果顯示
在本儀器中,人機交互功能是由S3C2410A內部LCD控制器和液晶顯示模塊完成的,其軟件設計主要包括LCD顯示程序的設計和觸摸屏控制程序設計。S3C2410A觸摸屏控制器采用X/Y位置獨立轉換模式;而LCD顯示程序的設計的步驟為:首先要將GPIO初始化為LCD端口;再在RAM的不可Cache區申請FrameBuffer;然后根據LCD屏的邏輯和時序初始化LCD控制寄存器,包括LCD的時序參數、分辨率、顯示模式、掃描頻率及FrameBuffer的大小和起始地址等的設置;LCD初始化以后就可以通過直接修改FrameBuffer的內容實現顯示。
本設計中人機交互軟件實現除了在Linux 環境下進行了LCD顯示與觸摸屏控制的軟件設計以外,還應該包括設備驅動程序開發,Linux為所有的設備文件提供統一的操作函數接口,以下是對FrameBuffer的操作的結構體封裝:

該儀器的液晶屏顯效果見圖5:

圖5 屏顯效果
以下實驗數據是對信號發生器發出的正弦信號測試后得出的數據,由于此項實驗的條件趨于理想狀態,避免了麥克風的聲電信號的轉換,采集的波形也沒有諧波分量,所以噪聲均來自硬件電路。該測試主要實現信號采集以及后續處理的功能性驗證。根據國家標準對調音頻率的要求[10]:調音裝置準確度應該在±1音分(相鄰兩音的標準頻率差的1/100是1個音分)。對比標準信號頻率,可以實現允許誤差范圍內的測試。測試數據及相應允差范圍如表2所示。

表2 部分測試數據(單位均為Hz)
本設計采用了ARM和DSP構架,充分地發揮了各處理器的長處,較傳統的用PC實現方式,在性能、體積、成本方面有一定的優勢。本文在軟件部分重點介紹了應用DSP實現鋼琴調音的算法,包括了基頻的提取、基頻范圍的確定和采樣率自適應變換,通過不同的采樣率滿足鋼琴音基頻跨度大的特點,在采樣不發生混疊的情況下,使得采樣分辨率盡可能提高,以滿足調音的精度要求。
[1] 吳紅江.鋼琴調律與物理聲學、聽覺生理學及聽覺心理學之關系[J].樂器,2006,(3):17-19.
[2] 丁祥,余小清,萬旺根.音頻編解碼器TLV320AIC23及其與DSP接口設計[J].單片機與嵌入式系統應用,2002.(6):35-37,47.
[3] 汪安民.TMS320C54xxDSP實用技術[M].北京:清華大學出版社,2002:17-25.
[4] Samsung Electronics Co., Ltd. S3C2410A-200MHz & 266MHz 32-Bit RISC Microprocessor User's Manual (Revision 1.0) [Z]. Yongin-City, Gyeonggi-Do, Korea: Samsung Electronics, 2004.
[5] 馮康,時慧餛.一種參考短時平均能量和平均幅度差函數的基音檢測方法[J].淮南師范學院學報,2005,5(21):9-11.
[6] 陳曉磊.基音周期的提取[J].大眾科技,2009,(9):47-49.
[7] 徐天成.基2 FFT的二進制理論分析[J].南京理工大學學報:自然科學版,2000(2):160-163.
[8] 李濤. 鋼琴音響的樂律學研究初探[M]. 上海:上海音樂學院出版社,2007.
[9] 孫天澤,袁文菊,張海峰.嵌入式設計及Linux驅動開發設計-基于ARM9處理器[M].北京:電子工業出版社,2005.
[10] GB 3451-82 標準調音頻率[S].國家標準局,1982.