一個揚聲器裡面的一個單元,是如何同時播放音頻的多種聲音的?
比如說多軌的音頻,同時能夠聽到多個軌道的聲音,是如何驅動揚聲器來使其振動準確達到多個軌疊加的聲音的?
首先指出一個概念錯誤,多路音頻的疊加並不是在揚聲器這部分完成的,而是在音效卡(請原諒我還在使用這個過時的概念)的數字電路部分就已經完成了。揚聲器只不過是在聲音輸出的模擬電流驅動下震動空氣而已,驅動揚聲器的模擬電流中已經包含所有的音頻信息了,不需要揚聲器做任何加工了(音染不算)。然後你的大腦通過聽覺感受到這種空氣震動,再識別出已經混合在一起的不同聲音。如果你在聽音樂的同時還能聽到你媽喊你吃飯,就具備這個基本功能。
至於音效卡是怎麼把不同的音軌混合在一起呢?假設現在有一個狗叫的wave音軌,一個貓叫的wave音軌,要一起播放出來,就像有一隻狗和一隻貓同時在叫一樣。其實只要把狗叫和貓叫的波形疊加起來一起播放就行了,具體可以參考高中物理的相關知識。因為wave是已經數字化的音頻記錄,忽略採樣率之類的細節,可以簡單理解把兩個波形加起來就可以了,是純粹的數字運算。原先是音效卡的DSP干這個事情,自從Intel弄出AC97下了Creative的崗之後,這個活就交給CPU幹了。
最後題主問到的多音軌的問題,比如我只有2.1的音箱怎麼聽5.1的音軌,或者7.1的音箱聽立體聲怎麼辦等,其實就是一個多對多映射的問題。原先玩過DVDrip的人應該都接觸過AC3Filter,貼一張它的混音器設置圖,學過工程數學了解矩陣的人應該一看就懂了。
沒學過也沒關係,最上面橫著的一排代表輸入,"L"是左聲道,"C"是中置(後略),最右邊豎的一列代表輸出,"L"還是左聲道,"C"還是中置(後略),中間的表格代表映射規則,"1"就表示乘以1,原樣輸出,"0"就表示乘以0,不輸出,可以取各種中間值,就不細解了。說白了就是多聲道的輸入,通過這個表設置映射到多聲道的輸出。這樣就完美解決了多聲道對多聲道的映射問題。當然這個純數學運算的體力活也是CPU乾的。
再多的軌疊加後,對於揚聲器來說相當於只有一個軌
除了振膜不同區域能更有準對性的發出不同頻率的聲音,最後你聽到的樂器定位、包括聲場之類,都是基於你自身多年的經驗,通過聲音的音色、兩耳的時差等等去判斷。
音頻電信號變化速率快於人腦對於單獨音頻頻率的識別速度,因此大腦就欺騙了你,聽起來像是同一時間發出的聲音。
以上是一段鋼琴的波形放大。你可以看到,你聽到的多個音符,實際上並非是多個音符。這個波形會被你的大腦分離出各個頻段的分量
這是你大腦轉換後的樣子,注意左側是一排鋼琴鍵盤,把頻率量化了。
本來聲波就像圖4一樣,但是你的大腦處理成了圖5。
你聽到的聲音你大腦分離出來的。
陽光過三稜鏡還是彩虹呢,太陽是怎麼同時發的七種顏色?
推薦閱讀:
※如何選購適合自己的耳機?
※蘋果耳機插到電腦上完美去掉演唱保留伴奏如何辦到的?
※一千元買魔聲 Beats Solo,值得嗎?
※長時間戴耳機對耳朵的影響怎樣?不同類型的耳機(入耳式、頭戴式等)影響是否不同?
※Beat音效、杜比音效、Dirac HD Sound 對比怎麼樣?