本文為下篇,將對(duì)混響的具體參數(shù)調(diào)整以及選擇 ADI 的 DSP 設(shè)計(jì)合理算法進(jìn)行深入解析。關(guān)于混響的類型、主要幾大類 DSP 混響的實(shí)現(xiàn)原理,可參考上篇《如何在 ADI DSP 中設(shè)計(jì)一個(gè)合理的混響 (上) 》。
混響的常見(jiàn)參數(shù)
在上篇文章中,我們提及了混響的類型和基本實(shí)現(xiàn)原理。目前做一個(gè)專業(yè)級(jí)混響需要設(shè)置許多參數(shù),有些參數(shù)是必備的,而有些是在特定需求下慢慢增加起來(lái)的。專業(yè)的效果器一般包含了如下圖 (圖1) 所示的一些參數(shù):
圖1 混響的相關(guān)參數(shù)
混響時(shí)間:能夠逼真地模擬自然混響的數(shù)碼混響器上都有一套復(fù)雜的程序,其中雖然有很多技術(shù)參數(shù)可調(diào),然而對(duì)這些技術(shù)參數(shù)的調(diào)整都不會(huì)比原有的效果更為自然,尤其是混響時(shí)間 (取決于預(yù)延遲時(shí)間以及衰減速率和收斂的判定)。
預(yù)延遲時(shí)間:在混響效果器上的眾多參數(shù)中,預(yù)延遲時(shí)間 (Predelay) 是一個(gè)比較重要的點(diǎn)。所謂預(yù)延遲時(shí)間,指的是進(jìn)入人耳的直達(dá)聲和第一次反射聲之間的時(shí)間間隔。在混音中,預(yù)延遲時(shí)間的選擇與我們的基準(zhǔn)時(shí)間有著一定的關(guān)聯(lián)性。而基準(zhǔn)時(shí)間的計(jì)算方式一般來(lái)說(shuō)就是拿 60 秒除以音樂(lè) BPM 的值 (取決于直達(dá)聲之后做的延遲時(shí)間以及 FIR 的時(shí)間)。
高頻滾降:此項(xiàng)參數(shù)用于模擬自然混響中,空氣對(duì)高頻的吸收效應(yīng),以產(chǎn)生較為自然的混響效果。一般高頻混降的可調(diào)范圍為 0.1~1.0。此值較高時(shí),混響效果也較接近自然混響;此值較低時(shí),混響效果則較清澈 (取決于低通濾波器的階數(shù)以及截至頻率的設(shè)計(jì))。
擴(kuò)散度:此項(xiàng)參數(shù)可調(diào)整混響聲陣密度的增長(zhǎng)速度,可調(diào)范圍為 0~10,其值較高時(shí),混響效果比較豐厚、溫暖;其值較低時(shí),混響效果則較空曠、冷僻 (取決于 Comb Filter 的 D 值選取以及回聲密度遞增數(shù)值)。
聲陣密度:此項(xiàng)參數(shù)可調(diào)整聲陣的密度,其值較高時(shí),混響效果較為溫暖,但有明顯的聲染色;其值較低時(shí),混響效果較深邃,器聲染色也較弱 (取決于 Comb Filter 的數(shù)量)。
頻率調(diào)制:這是一項(xiàng)技術(shù)性參數(shù),因?yàn)?a target="_blank">電子混響的聲陣密度比自然混響稀疏,為了使混響的聲音比較平滑、連貫,需要對(duì)混響聲陣列的延時(shí)時(shí)間進(jìn)行調(diào)制。此項(xiàng)技術(shù)可以有效消除延時(shí)聲陣列的段裂聲,可以增加混響聲的柔和感 (取決于 Comb Filter 的延時(shí)時(shí)間)。
混響類型:不同房間的自然混響聲陣列差別也較大,而這種差別并不是一兩項(xiàng)參數(shù)就能表現(xiàn)的。在數(shù)碼混響器當(dāng)中,不同的自然混響需要不同的程序。它的可選項(xiàng)一般有小廳 (S-Hall)、大廳 (L-Hall)、房間 (Room)、隨機(jī) (Random)、反混響 (Reverse)、鋼板 (Plate)、彈簧 (Spring) 等。其中小廳、大廳、房間混響屬自然混響效果;鋼板、彈簧混響則可以模擬早期機(jī)械式混響的處理效果。
干濕比:干聲信號(hào)和混響信號(hào)的比例,調(diào)節(jié)直達(dá)聲以及混響信號(hào)的分量比重。
從這些后續(xù)發(fā)展出來(lái)的參數(shù)不難看出,涉及的調(diào)節(jié)選擇變得越來(lái)越多,那么對(duì)于設(shè)計(jì)者來(lái)講,如何挑選合適的參數(shù)和類型去搭建自己想要的產(chǎn)品就變得非常重要。
DSP 和混響類型的選擇
在實(shí)際的生產(chǎn)應(yīng)用中,選擇混響的類型并不是直接去選一個(gè)最完善的類型就好了。實(shí)際上很多時(shí)候應(yīng)用達(dá)不到這個(gè)條件,越完善的混響類型意味著它對(duì) DSP 的內(nèi)存空間以及算力大小都是有需求的。然而在很多成本預(yù)算不是那么充足,或者工作環(huán)境對(duì)功耗等方面都有需求的產(chǎn)品中,我們無(wú)法選擇那么一個(gè)較高復(fù)雜度的混響。
舉個(gè)很簡(jiǎn)單的例子,比如 A 用戶需要做一個(gè)輕量級(jí)的吉他拾音器,拾音器主要的目的就是拾音,當(dāng)然為了豐富一些效果,可能我們需要調(diào)節(jié)高中低頻的 EQ,加一個(gè)混響。在這個(gè)時(shí)候,選擇一個(gè) ECHO 類的混響要比選擇 MOORER 類的混響好太多。
從控制成本和功耗的角度上來(lái)講,雖然 ECHO 類并不如 Moorer 類的好,但是在演奏中已經(jīng)夠用,復(fù)雜的可以通過(guò)拾取后送到效果器或者功放中去實(shí)現(xiàn)。在選擇時(shí),建議都要根據(jù)自己的產(chǎn)品類型合理地從成本、封裝體積大小,以及功耗上選擇最為合適的產(chǎn)品。
ADI DSP 在 ECHO 類算法的基本實(shí)現(xiàn)
眾所周知,ADI 在音頻的 DSP 上相當(dāng)有競(jìng)爭(zhēng)力,從 Sigma 到 Sharc 類的 DSP 均運(yùn)用于各類音頻電子產(chǎn)品中。如下圖 (圖2) 所示為 ADI SigmaDSP 產(chǎn)品選型對(duì)比表:
圖2 SigmaDSP 的產(chǎn)品選型對(duì)比表
下圖 (圖3) 為 ADI SharcDSP 產(chǎn)品選型對(duì)比表:
圖3 SharcDSP 的產(chǎn)品選型對(duì)比表
ADI SigmaDSP 的產(chǎn)品是定點(diǎn)的數(shù)字信號(hào)處理器,而 SharcDSP 即全浮點(diǎn)的數(shù)字信號(hào)處理器。全浮點(diǎn)的 DSP 可以處理復(fù)雜度比較高的混響,SigmaDSP 一般用于處理一些簡(jiǎn)單一點(diǎn)的混響。
以下將展示一些 ECHO 類混響在 DSP 上的應(yīng)用實(shí)現(xiàn),目前混響主要對(duì)內(nèi)存的空間需求是比較多的,存在著很多 Delay。ECHO 類混響在 ADAU1701 和 ADAU1761中 的實(shí)現(xiàn)如下圖 (圖4) 所示:
圖4 ECHO 類混響在 ADAU1761 中的實(shí)現(xiàn)
從圖中可以看出,直達(dá)聲直接作為干音傳到輸出端,將音源的左右通達(dá)合成一路用來(lái)減少內(nèi)存空間和算力的消耗,用三個(gè)延時(shí)線創(chuàng)造混響空間,傳到后端進(jìn)行低通濾波,實(shí)現(xiàn)高頻滾降。這樣做能夠得到一定量的混響的效果,但是由于回聲密度不夠,增益調(diào)節(jié)以及擴(kuò)散度和頻率調(diào)制是無(wú)法實(shí)現(xiàn)的,適合一些輕量化的產(chǎn)品應(yīng)用。我們?cè)?SharcDSP 中一般直接通過(guò)代碼來(lái)實(shí)現(xiàn),例如下方的 ECHO 類回聲的實(shí)現(xiàn):
創(chuàng)建一個(gè) DSP 混響的效果器。以下圖 (5) 是一個(gè)使用 Python 和 NumPy 庫(kù)實(shí)現(xiàn)簡(jiǎn)單 DSP 混響效果的示例代碼:
圖5 Python 實(shí)現(xiàn) DSP 混響效果 (橫版)
如上圖 (圖5) 所示的代碼實(shí)現(xiàn)了一個(gè)基本的 DSP 混響效果,包括延遲線和低通濾波器。我們可以根據(jù)需要調(diào)整延遲時(shí)間和截止頻率來(lái)改變混響的效果。需要注意的是,這個(gè)示例使用了 Python 的 NumPy 庫(kù)來(lái)處理數(shù)字信號(hào),并且需要在支持音頻播放的環(huán)境中運(yùn)行 (例如 Jupyter notebook 或 Python 腳本)。
圖6 ECHO 類混響效果用 C 語(yǔ)言實(shí)現(xiàn) (橫版)
如上圖 (圖6) 所示的代碼是一個(gè)簡(jiǎn)單的 DSP 混響效果實(shí)現(xiàn),它使用了 C 語(yǔ)言進(jìn)行編程。代碼主要有以下操作:
定義了一些常量,如采樣率、幀大小、通道數(shù)、延遲長(zhǎng)度和衰減時(shí)間等;
定義了一個(gè)名為 DelayBuffer 的結(jié)構(gòu)體,用于實(shí)現(xiàn)延遲緩沖區(qū);
創(chuàng)建了一個(gè)名為 create_delay_buffer 的函數(shù),用于創(chuàng)建延遲緩沖區(qū);
定義了一個(gè)名為 destroy_delay_buffer 的函數(shù),用于銷毀延遲緩沖區(qū)。
在 main 函數(shù)中,首先創(chuàng)建了一個(gè)延遲緩沖區(qū),然后進(jìn)入了一個(gè)循環(huán),模擬了信號(hào)的輸入、處理和輸出過(guò)程。在每次循環(huán)中,信號(hào)被輸入到混響效果處理中,處理后的信號(hào)被輸出,同時(shí)衰減時(shí)間也在不斷衰減。最后當(dāng)延遲時(shí)間達(dá)到最大值時(shí),循環(huán)結(jié)束,延遲緩沖區(qū)被銷毀。
在 ADI Sharc 平臺(tái)上,當(dāng)我們跑通 Framework 之后,導(dǎo)入這一部分代碼,將音頻流導(dǎo)入進(jìn)去就可以得到一個(gè) ECHO 類的混響效果。如果需要更高級(jí)好用的 Schroeder & Moorer 類混響系統(tǒng)時(shí),可以通過(guò)開源框架 Sox,F(xiàn)reeverb 和 Tonic 去獲取,完整的算法會(huì)比較長(zhǎng),需要大家在線下去參考。
總結(jié)
本文簡(jiǎn)要概述了混響的相關(guān)類型和實(shí)現(xiàn)方式,通過(guò)對(duì)產(chǎn)品的需求分析,可以在 ADI DSP 中去實(shí)現(xiàn)合適的算法。ADI DSP 在各類混響的算法都能夠?qū)崿F(xiàn),同時(shí)也支持大家進(jìn)行相應(yīng)的產(chǎn)品選擇。
審核編輯:劉清
-
dsp
+關(guān)注
關(guān)注
553文章
7998瀏覽量
348941 -
低通濾波器
+關(guān)注
關(guān)注
14文章
474瀏覽量
47412 -
FIR
+關(guān)注
關(guān)注
4文章
146瀏覽量
33174 -
BPM
+關(guān)注
關(guān)注
0文章
24瀏覽量
8085
原文標(biāo)題:如何在 ADI DSP 中設(shè)計(jì)一個(gè)合理的混響 (下)
文章出處:【微信號(hào):駿龍電子,微信公眾號(hào):駿龍電子】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論