基於《十三機兵防衛圈》的音訊整合設計理念及工程分享
導言
1f U C4N R34D 7H15 , 7H3N F1X UR OWN DA4N COM9U73R ( う-´)づ︻╦̵̵̿╤── \(˚☐˚”)/
如果你可以第一時間理解上面的這堆亂碼(visual anolog), 或許你對心裡聲學的現象也不會那麼陌生。人的大腦中每時每刻都在發生著十分複雜運算來解析客觀世界中的資料。所以,我們在實現遊戲音訊設計理念前,需要先了解我們的聽覺。
在本文中,我將與大家分享日本知名遊戲音訊設計師金子老師參與的《十三機兵防衛圈》中的設計思路給我帶來的啟發,並試圖探索從已知的人體生理心裡科學現象中來引導遊戲聲音設計的方向。希望以此來引出更多的技術上的探討。
# All You Need is Sound——十三機兵防衛圈音訊製作分享原文 #
與此同時,我將我理解中的相關心理聲學知識對遊戲音訊的需求進行結合,並羅列出幾點我個人認為有建設性意義的理論。
那麼,什麼是“金子昌晃式”的整合思路呢?
從我的角度觀察金子老師的此次分享,最突出的就是他對素材整理分類的邏輯思路與細緻程度。而這套思路源於他對於聽覺的理解。
聽覺系統
從外耳傳入的聲音首先進入中耳並帶動三個鼓膜震動,而震動的能量被放大後隨即被轉化為激勵刺激(stimuli)傳送到內耳中。在內耳中,聲音先傳入控制身體平衡感知的半圓形的扁管腔體。而後便傳入耳蝸。
”啥?中二?“ ”no 中耳!”
由於在內耳中聲音訊號是在液體中傳播,而液體中的傳導能耗要大大高於空氣。因此中耳的主要作用就是對聲音訊號進行放大。
中耳的結構是由三個人體最小的聽小骨織組成:malleus,incus和stapes。在拉丁語中,他們的意思分別是錘子,鐵砧,攪拌機。而我們的身體中最小的肌肉 stapedius muscle 也在其中(被攪拌機半包圍著),其作用是伸張緊縮的方式來保護“攪拌機“連線內耳處的薄膜。
中耳除了有傳遞並放大聲音的作用,還可以調節腦壓與外界氣壓的關係。在中耳的底部有一根連線呼吸系統的腔體,叫做咽鼓管(Eustachian tube)。當你用力憋氣或打哈欠時,咽鼓管就會被開啟。
這時它會和呼吸系統中的另一腔體形成對流並中和氣壓,但這個對流過程也會對中耳的聽覺傳導產生影響。這就是為什麼我們打哈欠時會隱約的”聽見”一些底噪。
耳蝸的構造可以說的上是鬼斧神工。它的名字源於拉丁語cochlea,意思是蝸牛殼。而其內部結構也十分的有趣。耳蝸的主體由三個不同的蝸管腔體組成,而這三種蝸管裡含有兩種液體。這兩種液體的震動可以和基底膜(basilar membrane)產生共鳴。而在連線基底膜的柯蒂氏器(organ of corti)上可以發現不同長度的毛細胞(hair cells)。
我們的內耳中由大概3500根內毛細胞和12000根外毛細胞組成。外毛細胞的反覆地通過一種正負雙極激勵的方式來再次放大聲音訊號,而內毛細胞則是讀取放大後的訊號。在蝸管底部的內毛細胞長度較短且硬度較高,而頂部的則長軟。如果毛細胞又短又硬,這就意味著這些毛細胞對應著高頻能量居多的聲音較靈敏,反之亦然。
這些毛細胞上附著著神經元去極化(depolirazation)所需的化學物質,然而這種物質積攢到了一定的程度便會轉化成動作電位,傳輸給大腦。我們的聽覺範圍(20hz-22000hz)也是由這些內毛細胞而決定的。
而正是由於這種毛細胞的構造,我們的聽覺才會表現出如下文中介紹的一系列的現象。
理論引導
1、心理聲學
在金子老師給我們帶來的分享中,有一張圖對於職業音訊的小夥伴們來說肯定不會陌生。
equal loudness contour等響曲線
對,就是Fletcher-Munson 曲線,aka等響曲線, aka“ISO266”。其寓意在於表示人對不同頻段聲音的感知在聲壓的不同的情況下是不相同的。
聲壓越大時,我們對中頻資訊就越不靈敏。
舉個例子:假如你在開車時聽到一個歌,當音樂音量很小時候你覺得還不錯,所以你加大音量。當你聽到了更多的高音和低音時,覺得更飽滿更好聽。於是便繼續增加音量,直到有些使你覺得不舒服的變數出現。這也是為什麼絕大多數的音樂製作人在製作混音時的音量普遍高於平均聽眾的收聽音量。
對於做遊戲音訊也是如此,我們無法替玩家調節音量,但是如果遊戲聲音在音量較小(我們的聽覺集中在中頻)的時候表現出色,那麼音量增加時我們聲音的表現也會更好。
我在閱讀Harvey Fletcher的資料時,發現了他的很多有趣的故事。
他的父親在55歲時突發耳鳴,而這是註定他一生經歷的重要源頭。
他是第一個芝加哥大學畢業的summa cum laude 校友。他在和他的導師Robert A. Millikan的“油滴實驗中”取到了決定性的的作用。(沒錯,Fletcher的研究奠定了真空二極體的理論基礎)博士畢業之後他來回到了他的母校任教,而貝爾實驗室的前身紐約西部電子公司連續五年請他出山。直到第六年,他才決定去任職。
當時的貝爾實驗室為了節省電話直接訊號傳輸的成本,需要找到一個對訊號處理的取捨方案,而Fletcher的工作就致力於此。他的成果在起初並不受關注,直到機緣巧合,他幫助聽力不好的托馬斯愛迪生設計了一款電子助聽器。
他的研究也為眾多領域奠定了基石。他也是一個酷愛音樂的交響粉絲。在1933年,他和利奧波德·斯托科夫斯基完成了世界上首個立體聲交響樂的錄播。flecther 在1981 年與他的故鄉猶他州去世,享年97歲。
出處:https://historytogo.utah.gov/fletcher-harvey/
偉大的科學家,立體聲之父 Henry Fletcher
總而言之,身為遊戲聲音設計師的我們在聲音方面應該有著這樣一個目標:
讓玩家儘可能的的把聲音加大到我們監聽製作時的音量。
我們可以用一張圖來模擬這個過程(純屬個人觀點):
當玩家在點A時(聲音極小),此時遊戲音量很低,聲音根本聽不清。
所以我們加大聲音來到點B(聲音資訊傳遞完全),從等響曲線中我們獲得的結論是如果這時我們加大音量會感受到更有力的低頻和更細膩的高頻。那麼我們在監聽環境允許的情況下肯定會這樣做。
於是我們便繼續加大音量到達或超過點C。此時我們的聲音或許已經超過舒適監聽的範圍,且低頻資訊越發強勢並遮擋住中頻資訊。
那麼,這時我們如果再繼續增加音量來到點D就會導致更多的中頻資訊被掩蓋,那麼我們的體驗就必定會下降。而在這裡就涉及到了Henry Fletcher 提出的一系列衍生理論(遮掩效應)
2、遮掩效應
遊戲中的各種聲音出現的時間是不可預期的,而所有聲音又佔用著同一個動態餘量的空間。如何使用技術手法讓更重要的音效突出和不重要的音效避讓就成為了較大的課題。而如何配置避讓引數,我們就需要了解遮掩效應。
在上文中我們瞭解了等響曲線及其廣義的結論。
如果我們要玩家分別感知兩個同時產生的聲音,我們應如何設計這兩個聲音呢?
通過Fastl 和 Zwicker的研究我們可以將遮掩現象總結為下圖所示:
在左圖中,存在著兩個聲音:
一組由綠點代表的聲壓較弱的被遮掩的聲音,和一個由紅點代表的聲壓較強的遮掩聲音。
而綠線擬合的就是這樣一組資料:
在有一個1000hz遮掩聲音時,被遮掩的聲音的頻率和聲壓最高可以多高才不會被我們的聽覺感知到。在這裡我們可以觀察到一個明顯的現象。當被遮掩的聲音的頻率臨近遮掩聲音的頻率時, 被遮掩的聲音需要更少的聲壓差就可被遮掩。
換句話說,對比頻率相差很少,如果一個聲音想要遮掩一個和其頻率相差很多的另外一個聲音,那麼這個遮掩聲音就需要更多的能量。
在右圖中,我們可以觀察到另外一個現象:當兩個聲音的聲壓同時增加10db。供遮掩聲音低頻和高頻的能量雖然是同時增加,但低頻的增幅遠遠小於高頻的增幅。
也就是說:在高頻頻帶中聲音之間的遮掩現象比低頻中的要誇張的多。
那麼把兩種結論總結一下,我們可以將遮掩效應理解為:
如果A聲音遮掩B聲音,那麼:
(1)A與B的頻率越相近;
(2)在高聲壓下,B的頻率越高, 遮掩效應就越明顯。
舉個例子:
如果一個槍械射擊聲A的音量只需要比另一個基頻相近的射擊聲B的音量大一點,就可以形成遮掩B的效應。
而如果射擊聲A要同樣遮掩某個低頻能量較多的爆炸聲C的話,那麼C對比B的音量要小很多。如果增加音量,那麼ABC中的高頻資訊上的遮掩效果會比低頻中的更明顯。
接下來,我們來分析時域的遮掩效應。請看下圖:
那麼,這個圖告訴我們什麼呢。
如果有兩個聲音:聲壓較大的A遮掩聲音和聲壓較小的B被遮掩聲音。綠色曲線表示A在發聲後的上限200毫秒都會遮掩B的聲音的感知,而紅色曲線表示A在發聲前的20毫秒會遮掩B。
換句話說,遮掩效應中遮掩聲音A甚至可以在不同時發聲情況下遮掩B,彷彿遮掩音A長出了一個能被聽覺感知而又不存在的音頭和音尾(音頭上限20毫秒音尾上限200毫秒)。
在這個現象上,研究還發現我們的時域解析度temporal resolution,在高頻時比較好(隱形音頭音尾上限較短)。
3、音高的感知
在遊戲音訊中我們為了優化效能,會在素材的音高上加以隨機變化來增加多樣性。
如果我們遵循對音高感知的理論引導,那麼我們的遊戲音訊會更具有帶入感。因此,我們在音高的引數設定方面,應該注意哪些呢?
人耳對音高的感知是一個十分複雜的運算過程,而其中不僅僅包括對基頻的感知。其他影響音高感知的因素還有諧波,音量,頻域頻寬等。
首先,在音量大幅度變化的時候,我們對音高的感知會產生變化。
當聲音由高頻資訊居多時,音量的劇增會感到同一個聲音的音高也隨之增高。
當聲音由低頻資訊居多時,音量的劇增會感到同一個聲音的音高也隨之降低。
4、最小可覺差(just noticeable difference)
音高上的最小可覺差是指在我們能感知出兩個在不同時間發聲的聲音,它們的音高之間的差值調節要達到的最小值。
具體曲線如下圖所示:
在這裡我們使用200,202,204hz來示範:
雖然只有2hz的區別,但是我們卻可以很清楚的辨別200和204直接的音高差。但200和202卻不易識別。
5、臨界效應
臨界效應源於Fletcher的研究,其意義在於告訴我們人的耳蝸就像是一組濾波器。
當兩個聲音的頻率十分接近時,那麼就會有一個濾波器被兩個聲音所佔據而導致這兩個聲音之間互相影響。經過研究,我們可以發現臨界效應的可以幫助我們判定兩個同時發聲的聲音的頻率需相差多少才能讓我們覺得這是兩個不同的聲音。
具體曲線如下圖所示:
從這幾個研究的觀察中,我們就可以對音高的在整合工程中的實際應用有更深一層的理解。
舉一個例子:我們在腳步聲的整合過程中,通常會使用隨機音高範圍來增加腳步的多樣化。
但是根據腳步擊打的表面材質的不同,我們的腳步聲可能帶有突兀的音高資訊。
如果擊打表面是高頻資訊居多金屬板,那麼在此加上過多的音高隨機化可能會讓玩家覺得每一步都是一個音符在發聲。在這種情況下,由於耳蝸的生理結構影響,導致玩家感知到了不應該被感知到的音高。所以我們要酌情在中介軟體中做出調整。
諧波的完整性對音高的感知有著正面影響,如果我們將一個150hz的聲音的鋸齒波的前9個諧波去掉,我們還是可以感知到音高的。
頻域的頻寬對音高感知也有著影響。
我們將白噪做頻域塌陷處理後以生成頻寬為30,60,150,200,300,500,700,1000,1500,2000,3000hz。可以在這裡發現頻域越窄,我們就越容易感知到音高。
實際操作
關於心理聲學的知識,我在上面儘量使用通俗的語言表述了一些基本理論和公認的結論。如果您想深入一步瞭解,本文的最後羅列有所有的相關參考文獻。
那麼裝備了一些理論基礎,我們下面就開始照葫畫瓢,嘗試模仿大師的製作理念並自己捏一個adx2 工程,其大略步驟如下:
- 在素材層將音樂素材分類並拆分。
- 將影響音樂素材的其他素材型別分類。
- 匯入至CriAtomCraft並設定類別。
- 除錯REACT。
1、在宿主軟體中對音樂素材拆分
開啟宿主軟體,這裡我使用的是REAPER6。
我使用VST外掛製作了一個loop interactive_music-001和interactive_music-002。
其中Interactive_music-001_instrumentation包含吉他掃弦,吉他琶音,軍鼓,踩鑔。Interactive_music-002_instrumentation包含底鼓,合成器pad,鋼琴,貝斯。
我們在這裡需要選擇如何分割音樂。
如果按照配器的方式來分割,那麼我們這在創作音樂時就需要分“高頻樂器”和“低頻樂器”來製作,混音,縮軌. 如果按照頻譜能量來分割,那麼我們需要找到一個臨界頻段,並在這個頻段上方塌陷所有的高頻資訊來得到高頻音軌,而低頻音軌則反之。
要注意的是,我們在選擇臨界頻段時要確保分割後得到的兩個軌道盡量保持大部分時間dbFS值接近。如果臨界頻段過高,那麼我們需要用更多的數字增益彌補,從而產生高低頻動態範圍和動態餘量不均勻的現象。
比較這兩種方法,配器分割方式的結果並不純粹。
也就是說,所謂的“低頻樂器”的高頻諧波還是會被分割到低頻音軌裡,而“高頻樂器”也會載入它們本來的基頻資訊。但相比較更純粹的頻譜塌陷,這種方式可以使兩個分軌在整合工程中被單獨使用,也同時避免了動態範圍不均勻的問題(極端情況下我們才會識別出現動態範圍不均勻的聲音,所以這裡在一個軌道上少許的數字增益並無大礙)。
出於演示目的,我使用的是頻譜能量來分割的辦法。
2、將其他影響音樂的素材進行分類
影響音樂的素材可以根據低頻資訊量來分類。
比如爆炸聲和低頻較多的音效可以被分為一類,高頻較多的音效可以被分為一類,而對話和旁白也可以被分為一類。如果有不同場景,那麼可以以場景為單獨分類標準進行細分。
3、將素材匯入CriAtomCraft並開始構建工程
其大略結構如下:
總體設定>分類>分類組>建立分類
Vo,
Sfx_firearms,
High_fq_music,
Low_fq_music,
Sfx_explosion,
Sfx_high_fq_generic
總體設定>REACT>建立REACT
sfx_firearms_on_high_fq_music,
Sfx_firearms_on_low_fq_music,
Sfx_high_fq_generic_on_high_fq_music,
Sfx_explosion on low_fq_music,
Vo_on_high_fq_music,
Vo_on_low_fq_music
4、編輯每一個REACT
觸發類別和變化類別的關係:當一個觸發cue被啟用時,如果沒有任何限制發生的條件發生(多重播放禁止時間), 那麼變化類別就會根據我們設計的邏輯進行變化。
如圖中所示,當被劃分至槍械類的音效sfx_firewarms被啟用時,高頻音樂high_fq_music的音量就會被降低至原始值的70%。這裡需要注意的幾個選項有:
a) REACT型別:
Ducker型別是直接對變化cue的音量產生變化,而AISAC型別則是AISAC調製觸發器通過播放觸發目標,產生AISAC調製。(對於“使用AISAC,僅在播放某個Cue期間更改特定Cue的音高”這樣的用途,REACT應使用Ducker而不是AISAC調製觸發器。AISAC要以調製,One Shot和Key來驅動。如果變化的引數在變化開始時和結束時值不相同,可能會在播放時聽不到聲音。)
b) 變化時間:
在判定生成REACT之後,對指定變化cue音量降低所需時間。
c) Hold 型別:
“播放中” 是指只要觸發cue在播放中,那麼變化cue就一直不會被釋放;“固定時間”指觸發cue被觸發後指定時間內,變化cue就會被釋放。
如果一個型別中只有一個音效或者型別中的音效的時長和包絡很接近,那麼hold型別可以使用固定時間。這樣做的意義在於增加音效與音效之間變化的穩定性。
例如一個禮花爆炸的音效中的音尾包含小爆竹爆炸的高頻資訊,在不拆分禮花音效素材的情況下我們可以通過計算禮花爆炸的低頻能量衰減的大概時間來設定hold固定時間。這樣做就相當於將低頻能量多的禮花爆炸作為觸發而忽略高頻的爆炸。
d) Hold時間:
“播放中”下的Hold時間指被觸發cue播放完畢後的一段等待時間。在等待時間過後,變化cue才會開始恢復到原始音量。“固定時間”下的Hold時間指觸發cue開始觸發REACT的一瞬間後的一段等待時間時間。等待時間過後,效果同“播放中”一樣。
e) 返回時間:
變化cue回到原始音量所需時間。
f) 變化引數:
“音量電平”指變化cue被影響的目標是音量。或者選中任意AISAC控制器 作為變化引數。
g) 變化電平值:
在“音量電平”下,此數值值域0-1,代表原始音量的百分比。在AISAC控制器中,此數值代表返回目標AISAC控制器中的函式值。例如:
如果變化電平值輸入的是0.2, 那麼AISAC控制器 此時的變化應該是:音量調製原始值的2倍(音量aisac圖表起點為1值域為0-2)。這麼一來,我們的變化引數是AISAC控制器的REACT就會增加了不少的靈活性。
h) 在特殊的cue中使用塊和action track
在重要且播放邏輯複雜的cue上可以加入塊和action track,例如樣板工程中玩家增加經驗值的音效。
如果使用action track,我們的可以在不同階段的聲音(加速,勻速,減速)cue上繫結引數action來控制目標音軌的引數。
i) 在反覆出現的cue上設定多重播放禁止時間
結合心理聲學理論,我們可以對多重播放禁止時間做調整。
由於在高聲壓下頻域高的音效之間的遮掩效果好,那麼我們可以在高頻域的音效上使用較短的多重播放禁止時間。而低頻資訊居多的音效可以設定較長的多重播放禁止。
金子老師的教給我們的一個小竅門是將射速很快的槍聲音效放入一個連擊邏輯的cue中兩次。這樣做的話可以完美控制第一發後槍聲的大小,還可以確保第一擊音效的完整。
j) 各種音效對音樂的react
由於爆炸聲的低頻能量較多,那麼它對對低頻音樂的REACT效果也應該強。
從理論角度來看,我們只需要用小量的變化時間和返回時間就可以避免時域遮掩。
但我使用了較長的返回時間,而在爆炸REACT高頻音樂使用了更短的返回時間。這樣錯開兩個同類的REACT的釋放其意義在於避免音量大幅度變化導致聽覺對音高產生變化。
k) 爆炸音效
同樣道理,我在樣板工程中使用一個高頻資訊較多的power up 音效,在這裡這個音效應該是對高頻音樂的REACT 效果強於對低頻音樂。
在語言類的聲音對音樂方面,我認為人類的語言中子音(consonant)中的高頻資訊有可能會被音效的高頻資訊遮掩。所以在語音對應音樂的REACT中,我設定了較強的高頻閃避效果來給這些子音留有更多的動態餘量空間。
最後,我們可以通過Session來測試我們的聲音。在這裡,我們可以手動播放一系列音效來模擬遊戲執行中的聲音效果:
尾聲
本次的分享就到此結束了,希望可以為大家帶來一些啟發。
您可以在此進行以上樣例工程的下載:
連結:https://pan.baidu.com/s/16xXjz9G3PG_SNDtHPtcH9A
提取碼:ADX2
本工程由CRI Atom Craft Ver.3.44.17 建立
此外,需要注意的是,本樣例工程僅作展示使用,因此使用的音訊素材樣本量較少。在實際的工程運用當中,可能會有大量的素材需要批量匯入及編輯。
在後續一月份的ADX2版本更新中,馬上將會上線新功能“Robot”,它可以編輯指令碼,快速匯入大量檔案,減輕聲音設計師的負擔。
新SDK釋出的同時,我們也會同步更新Robot的使用方法,即使是沒有接觸過程式語言的設計師朋友也可以輕鬆上手,敬請期待!
您也可以加入我們的官方QQ交流群,與我進一步的交流:
相關文章
- 從《十三機兵防衛圈》看遊戲的群像敘事設計遊戲
- CRIWARE TechSummit 《十三機兵防衛圈》部分採訪整理MIT
- 《十三機兵防衛圈》:青春群像劇外皮下的硬科幻核心
- 《十三機兵防衛圈》用好的方法講了一個好故事
- 愛與幻想的虔誠讚歌:《十三機兵防衛圈》隨感
- 《十三機兵防衛圈》:由不同時空的 13 名主角交織而成的科幻冒險
- 音訊設計經驗分享:聲音功能的設計與創意表現音訊
- Spring Cloud Alibaba | Sentinel: 分散式系統的流量防衛兵初探SpringCloud分散式
- SpringBoot整合FastDFS+Nginx整合基於Token的防盜鏈Spring BootASTNginx
- 《硬核機甲》(Hardcore Mecha)的音訊設計音訊
- 防呆設計/防呆處理
- 基於TRIZ理論優化設計杏核開口機優化
- 《十三機兵》能救AVG遊戲市場嗎?遊戲
- 基於工程經驗的『RESTful介面設計規範』REST
- 阿里 雙11 同款,流量防衛兵 Sentinel go 原始碼解讀阿里Go原始碼
- 阿里雙11同款,流量防衛兵 Sentinel go 原始碼解讀阿里Go原始碼
- 基於TRIZ理論的筷子儲存盒設計
- 《硬核機甲》(Hardcore Mecha)的音訊設計 - Part2音訊
- iOS音訊程式設計之實時語音通訊(對講機功能)iOS音訊程式設計
- 關於迴圈主鍵的設計
- 2.2.1 處理機排程的概念及層次
- 基於Android的音樂播放器的設計與實現Android播放器
- 基於WebSocket的實時訊息傳遞設計Web
- 針織毛衫的概念及設計
- 騰訊天美GDC分享:《王者榮耀》8年音訊設計回顧音訊
- 高效的音訊製作與槍和車的音訊設計方案音訊
- ICLR 2020 Oral | 基於計算約束下的有用資訊的資訊理論ICLR
- 基於訊飛語音,百度語音,圖靈機器人樹莓派的智慧語音機器人mic圖靈機器人樹莓派
- 139【畢設課設】基於微控制器音訊放大器聲控燈控制電路設計音訊
- 基於TRIZ理論設計新型立體車庫
- 音訊處理音訊
- 基於 BDD 理論的 Nebula 整合測試框架重構(上篇)框架
- 基於 BDD 理論的 Nebula 整合測試框架重構(下篇)框架
- Java實驗——基於GUI的網路通訊程式設計JavaGUI程式設計
- 基於react的錄音及音訊曲線繪製的元件開發React音訊元件
- Python進階學習分享之迴圈設計Python
- ui設計教程分享:關於Logo設計要素UIGo
- 基於微控制器的無線語音遙控智慧車設計