51DIY音乐频谱显示
以前,每當看到家里的音箱功放上的幾排小燈,隨著播放的音樂如波浪般跳躍,或者在電腦上打開千千靜聽這個音樂播放軟件時,看到那動感的頻譜跟隨音樂節奏優美的舞動著時,不禁思緒萬千,要是自己某天能親手用普通的單片機 DIY 這么一個東東,那將是多么有成就感的事情,至少對我們電子愛好者來說,這是許多人曾經夢想過的。伴隨音箱里傳來的美妙音樂,原本只能“聽”的音樂,現在卻還能“看”,給人帶來視覺上的炫酷享受。
本文將帶領你動手探究其中的奧秘,讓我們給音樂賦予一個完美的視聽極限。
一、理論篇
(一)理論基礎概述
1)什么是頻譜?什么是頻譜顯示?
說到“頻譜”這個詞,它好像是一種很神秘的東西,究竟什么是“頻譜”?這便要從波形本身的來源說起。我們知道,一切聲音都是由振動產生的。聲音之所以千變萬化各不相同,是因為它們的振動各不相同。看看琵琶,吉他或者其他的弦類樂器,可以發現它的每一根琴弦的直徑都是不一樣的。琴弦越細,音調也就越高。反之則越低。顯然粗的弦就不如細的弦振動得快或者說是振動的頻率高。產生音調高低的不同,就是由于振動的頻率不同。很顯然頻率越高,音高也就越高。
頻率的單位是赫茲(簡寫為 Hz),赫茲 (1857-1894),是德國物理學家,他發現了電磁波,為了紀念他,人們用它的名字來做為頻率的單位。所謂的一赫茲,就是一秒鐘振動一次。那么 440Hz 呢,當然就是每秒振動 440 次,這個聲音就是音樂中的標準 A 音,是樂器定音的標準。而鋼琴中央 C 的頻率則是 261.63Hz。
我們人的耳朵能夠聽到的頻率范圍,是 20Hz 到 20000Hz。低于這個頻率范圍的聲音叫次聲波,而高于這個頻率范圍的聲音叫做超聲波。所以我們能聽到的音樂的頻率,即都在人耳可聽到的這個范圍之內,約從 20Hz 到 20KHz。
比如,下面的表格中是我們常見的一些人聲的基頻范圍
? 男低音 80-320Hz
? 男中音 96-387Hz
? 男高音 122-488Hz
? 女低音 145-580Hz
? 女高音 259-1034Hz
根據傅立葉分析,任何聲音可以分解為數個甚至無限個正弦波,而它們往往又包含有無數多的諧波分量。而它們又往往是時刻在變化著。所以一個聲音的構成其實是很復雜的。將聲音的頻率分量繪制成曲線,就形成了頻譜。
對頻譜進行分析的儀器就是頻譜分析儀,早期頻譜儀都是模擬分析的。頻譜儀的原理就是將聲音以信號通過一系列不同中心頻率的模擬帶通濾波器。每個帶通濾波器相當于一個共振電路,其特性由中心頻率(步進的)、頻帶寬度及響應時間表示。在聲音信號通過濾波器后,經過平方檢波器,并進行平均之后,在每個頻率上測定所傳輸的功率,從而得到信號的頻譜。然而,傳統的頻譜儀受到濾波器性能的制約,因為模擬電路本身的特性所局限,濾波器的帶寬和響應時間成反比,也就是說模擬濾波器的頻率分辨力與時間分解能力之間存在矛盾。因為頻譜儀所測量的往往都是非穩態聲,一般來說,都是使用若干個濾波器來覆蓋整個頻率范圍,并將信號同時并聯地輸入到這些濾波器上去。或者使用中心頻率能夠從低到高連續變化的濾波器。
隨著科學技術的不斷進步,現在我們所使用的基本不再是那些笨重而不準確的模擬儀器的頻譜儀,取而代之的是基于處理器的軟件分析法。它分析的數據來源其實是經過了 ADC(模數轉換器件)轉換后得出的數字信號,所以頻譜儀軟件所測量的信號準確度,很大程度取決于數模轉換電路的性能。比起模擬濾波器,數字濾波器應該要更加迅速和精確。
2) 什么是均衡器和音樂頻譜顯示?在我們欣賞音樂的過程中有什么樣的作用?
對于錄音棚等專業級別的音樂制作來說,通常都需要對錄制的音頻信號進行頻譜分析來輔助音頻的加工制作。當然對于我們普通的愛好者來說,不需要那么精確的頻譜分析,我們更多的是用來略顯音樂節奏,美化環境,增添氣氛。于是,大多數的音樂播放軟件(如圖一),手機,mp3,高檔的音箱設備等,都有了音樂頻譜顯示。
圖一 千千靜聽播放音樂時的頻譜顯示
當高級組合音響在工作時,你可以看到其中有一個部件上有一排一、二十個高高低低的推式調紐按頻率高低自左而右排列,顯示一種頻率分布圖;或者是還有一、二十個高高低低的光柱在不斷地上下跳,時而中間起一個高峰,時而并排突起兩、三個高峰,而且與音樂的高低和強度同步,高音越是強,高峰就偏右邊;低音越強,高峰就偏左邊,這就是均衡器及其聯結的頻譜顯示。有時,也用一排色彩不同的條紋來顯示,條紋的色彩亮度隨聲音的強弱而同步地改變。
我們知道,實際上每一種音樂聲,包括哪怕是一個人的獨唱,一件樂器的獨奏,都包括了一系列從低到高不同頻率的聲波,更不要說是樂隊演奏了。如果聲音中低頻成分多,聽起來就較厚實;如果是高音成分多,聽起來就比較明亮。有的人喜歡聽低音成分多些,有些人喜歡聽高音成分多些,各不相同。因此,以前的收錄機上就有一個調節高低音的旋鈕。把旋鈕指向高音部位,高音就比較強;把旋鈕指向低音部位,低音就比較強,這就是一個簡單的均衡器。
好的聲音效果,其各段頻率成分應該有一定的比例,錄音的時候,錄音師操作調音臺就可以使各段頻率的成分得到調整。由于各種樂器的基頻高低是不同的,所以,也可以使各種樂器之間的聲音比例得到調整,常見的是把頻率由低至高分成 5 段或 7 段、10 段或 15 段,有經驗的錄音師或音樂家能聽出哪里(哪個頻率段)“空”了,即這個頻段弱。哪里“鼓了個包”,即這個頻段過強。通過均衡器可以把這些予以彌補。又因為每個人對音樂中頻率分布的欣賞標準是不同的,因此,各位錄音師掌握的尺度也不同,顯示出各自的風格。
錄音師也可以在錄音時做些“手腳”,例如,有的錄音機低音部分不太好,于是在錄音時就把低音部分加強,這樣,在這臺錄音機上播放時,低音就得到了補嘗,因此,你播放購買收錄機隨機奉送的“試機帶”時,聽起來常常總是非常動人的,但在播放正常的磁帶時,往往就不行了。所以在正式試驗整機和評比設備、磁帶、唱片時,是不準用均衡器而且要用標準試機帶的。由于每個人的欣賞和愛好的不同,有人喜歡低音“濃”些,有人則崇尚自然,也有人有時要強調某種樂器。因此在高級的放音設備上也有均衡器,可以根據每人不同的愛好去隨心所欲地調整頻率響應。同時,這也可以彌補錄音帶質量上的某些缺陷,例如,除了頻響不平衡外,可以抑制某個頻段上突出的噪聲等。
3) 制作音樂頻譜顯示需要用到什么基礎知識
首先,我們采用是基于微處理器的軟件分析法,微處理器是本制作的核心部分,因此,選擇一個合適的性能與配置的微處理器是關鍵,我選擇增強型的 8051 單片機便能夠滿足本次制作的要求。軟件上的分析法核心是快速傅立葉算法,簡稱 FFT。
4) 什么是 FFT?
FFT(Fast Fourier Transform)即離散傅立葉變換的快速算法。在數字信號處理中常常需要用到離散傅立葉變換(DFT),以獲取信號的頻域特征。盡管傳統的 DFT 算法能夠獲取信號頻域特征,但是算法計算量大,耗時長,且要求相當大的內存,不利于計算機實時對信號進行處理,限制了DFT 的應用。直到 Cooley& Tukey 在1965 年提出的快速離散傅立葉計算方法被發現,快速傅立葉變換算法才在實際的工程中得到廣泛應用。需要強調的是,FFT 并不是一種新的頻域特征獲取方式,而是 DFT 的一種快速實現算法,可用來將一個信號從時域變換到頻域。多數的復雜信號在進行頻域變換之后,變換的目的實際上是從頻域里來看同一個信號,從而容易分析出其信號的特性。這也是很多信號分析采用 FFT 變換的一個重要原因。另外,
FFT 能將一個信號的頻譜提取出來,這在頻譜分析方面也是經常使用的。
5) 如何使用 FFT?
首先,我們用 ADC 去采樣一個模擬信號之后,使之變為數字信號。根據采樣定理,因音頻信號的最高頻率約為 20Khz,若 adc 的采樣頻率設置為 40Khz,既有采樣頻率大于信號頻率的兩倍,就能基本滿足要求。其次,將采樣得到的數字信號,送入 FFT 進行變換處理。通常,若我們取 N 個采樣點,經過 FFT 運算之后,就可以得到 N 個點的 FFT 結果。但通常為了方便進行 FFT 運算,通常 N 取 2 的整數次
方。設 Fs 為 ADC 的采樣頻率,N 為傅立葉變換的點數.則有最小分辨頻率 f=Fs/N,因此頻譜顯示的最低頻率就是 f Hz,以后每向右移一個點,頻率值將增加 f Hz. 由于 FFT 結果的對稱性,通常只使用前 N/2 個采樣點的結果。
簡而言之,使用 A/D 轉換器對輸入的音頻信號進行采樣以后,經過 FFT 變換,然后取某些頻率項的幅值,量化顯示,驅動 LED 點陣,點亮相應的 LED 燈。
關于采樣點數的選擇,要根據自己選擇單片機的實際資源情況。比如STC12A32S2 單片機,只有 1280B RAM,我們取 64 點的 FFT 就可以滿足要求,還達到更好的視覺效果,更高的刷新頻率,以及為以后軟件擴展留下余地。
(二)電路原理圖
雙音頻插孔設計,不影響正常的音頻輸出,省去了音頻分線器;
去掉音頻輸入處理的電平移動電路,簡化電路,并加入軟自動增益控制,實現自動根據音樂的聲音大小調節顯示幅度;
采用食人魚 LED 來顯示,不僅特別的亮,而且比用普通的草帽狀 LED 效果更美,耐電流也更大,還省去了部分限流電阻,食人魚 LED 有四個引腳,便于手工焊接,大量減少跳線
圖二 MCU 部分的原理圖
圖三 點陣驅動電路圖
(三)編程思路
在主函數中,單片機通過 AD 對音頻數據采樣,然后存放到數據緩存區進行預處理,完成 AD 濾波處理,自動增益控制信息掃描以及其他信息處理。接著,將緩存區數據送入 快速傅立葉變換(FFT)處理子函數進行運算。處理完后,從緩存區取出運算結果,根據得到幅值計算出點陣的顯示數據,并存儲到顯示緩存區。
在中斷函數中,根據顯示緩沖區的內容對點陣顯示屏進行實時刷新點亮。
(四) 程序流程圖
總結
以上是生活随笔為你收集整理的51DIY音乐频谱显示的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 基于AT89C52单片机的数字电压表设计
- 下一篇: catia安装问题求解决