張 建 榮
(上海大學上海電影學院 上海 200072 )
基于KSP腳本引擎的VR聲音對象樂器設計
張 建 榮
(上海大學上海電影學院 上海 200072 )
VR音頻(Spatial Audio)涉及到聲源和聲場這兩個概念以及頭部相關傳輸函數HRTF(head-related transfer function)等技術手段,而最基本的元素是聲音對象。本文探索以聲音對象制作需求為出發點,以自定義虛擬場景為例,利用Kontakt音頻采樣器強大的腳本引擎,通過腳本代碼的編輯運行,設計與制作一款特定的虛擬樂器。應用于VR音頻前期制作中聲音對象的同步錄制,是計算機音頻采樣技術的一種應用嘗試。
虛擬現實 聲音對象 KSP腳本引擎 虛擬樂器
自從聲音進入電影以來,影院還音最開始從單聲道還音,到立體聲,接著是包括模擬環繞聲還音和數字5.1或7.1等還音制式的環繞聲時期,直到現在以杜比全景聲為代表的沉浸式還音系統[1]。聲音伴隨著視覺畫面的體驗效果,越來越得到了大眾的認可與業界的廣泛重視。特別是近年來VR(虛擬現實)技術與內容快速升溫,向人們預示著理想化的前景。一款VR頭戴顯示設備結合顯示刷新率、視場角、分辨率以及頭部追蹤技術,能為你提供逼真的沉浸感[2],以獲得極致的感官體驗。Jaunt 的音頻首席工程師 Adam Somers 在接受 THE VERGE 采訪時這樣描述:“在沉浸感這件事上面,聽覺占了五成,視覺占剩下五成[3]。”當然, VR音頻作為“關鍵性技術節點”之一,就是空間音頻技術。在今天,人們更愿意叫它 3D 音頻[4],VR 需要有 3D 音頻才能產生更真實的沉浸感。這就涉及到聲源和聲場這兩個概念以及頭部相關傳輸函數(HRTF)等技術手段。
本文僅從VR音頻最基本的元素—— “聲源”出發,以自定義虛擬場景為例,利用Kontakt音頻采樣器強大的腳本引擎,通過腳本代碼的編輯運行,探索設計與制作一款特定的虛擬樂器,以方便VR音頻前期制作中聲音對象的同步匹配錄制,也是計算機音頻采樣技術的一種應用嘗試[5]。
1.1 基本功能
Kontakt采樣器音色插件是由德國NI公司開發的虛擬樂器。Kontakt Script Processor (KSP)腳本引擎是其中的一個工作流模塊,其腳本代碼本質上是一種基于C語言的編程語言。這個獨特的功能模塊通過對腳本語言的編輯形成一個基于Kontakt樂器級別之上的運算程序,對于虛擬樂器(采樣音色插件)制作者來說可以把它作為一個效果器或是一個具有強大功能的可自由組合的工具[6]。
當有觸發信息時,KSP將處理腳本中一個特定的部分,從上到下一行一行地“執行”腳本,即讀出腳本語言并按照命令進行運算操作,這個過程稱作回調。若干個回調結合系統參數及變量的設置,可以產生自定義類型的高級功能,為樂器高級面板的界面設計與控制參數分配創造無限的可能。
1.2 應用前景
Kontakt采樣器音色插件是一個兼容Windows及MAC多系統平臺的應用程序,有多種格式支持,如VST、RTAS、AU,在絕大多數主流音序器宿主軟件中使用。使用者可以調用預置腳本代碼或自由編輯設計,使得制作的樂器的表現力更豐富,使用上更便捷。
本文將詳細介紹自主開發設計的一種基于KSP腳本引擎的VR聲音對象虛擬樂器的制作過程。同時展示KSP腳本代碼的編寫內容和測試結果,以供分享。
2.1 目標設定及設備配置要求
從事過為視頻畫面或游戲配音效工作的應該都有這樣的經驗:作為音效的聲音對象在特定的情景下的表現效果不是一成不變的,光有一個素材樣本無法滿足要求,而在制作合成軟件中逐個添加效果器進行處理,操作上十分繁瑣,幾乎是不可能的。這就需要開發一種集合多個同類題材聲音樣本、又具備實時錄入與效果參數控制功能的虛擬樂器[7],連接外部MIDI鍵盤和控制器操作;同時,它既可以獨立運行,也可以作為主流音頻工作站都支持的音色插件使用。
本例將制作一款命名為“My VR Audio Objects Instrument”的虛擬樂器。設定為一個槍戰現場的場景,包含了手槍、自動步槍、狙擊步槍和輕重機關槍的聲音樣本,以及單兵移動、隊列行進和涉水等各種地面材質下的腳步聲樣本。硬件配置為:一臺PC主機及一個多通道音頻接口,通過MIDI線連接外部一臺帶有MIDI控制器的MIDI鍵盤。軟件采樣器為Kontakt5。
預期目標:樂器面板界面美觀整齊、直觀便捷;鍵位分配及控制旋鈕(推子)操作便捷;實時回放響應迅速、延時低;瞬態響應佳和加載方便。
2.2 實例中運用的KSP的腳本代碼
為了方便閱讀,這里先對本實例中運用到的一些腳本代碼含義作簡單的介紹,下文中就不另行釋義了。
? on init…end on指初始化回調,用來當腳本成功運行時進行初始化。它是一開始就執行的命令,包含了全部的初始化命令、變量的聲明、UI元素以及更多內容;并且初始化回調是只執行一次的。
? UI control variable是指用戶操作界面控件變量。它是用戶自定義變量中的一種類型,在初始化回調中創建并必須要被 “聲明”(declare)。例如本例創建一個UI旋鈕的元素,語法為:declare ui_knob
? “:=”是一個分配符號,將定義一個分配值。這個符號將會把它右側的數值分配給其左側的變量。
? _set_engine_par(
2.3 虛擬樂器的制作
2.3.1 制作流程
虛擬樂器的制作流程如圖1所示。

圖1 制作流程圖
2.3.2 自建樂器規劃及采樣樣本整理
按照預先設計的目標要求,根據現有采樣的聲音樣本情況,對樂器作一個規劃:由于本樂器只含有兩種類型的聲音對象,聲音樣本共14個,所以只需要分兩個編組(每個編組7個)即可。另外,MIDI鍵盤超過了25鍵,就不需要在鍵位映射時做分層的鍵位控制了。用常規的數字音頻編輯軟件對聲音樣本進行剪輯等處理,有規律地命名保存待用。
2.3.3 樂器初步制作(映射編輯)
首先,運行Kontakt5,新建一個樂器,命名為“My VR Audio Objects Instrument”。然后,進入樂器編輯模式,在編組編輯器中添加兩個編組,分別命名為:“ Gunfight group”和“Footsteps group”,如圖2所示。

圖2 編組編輯器界面
最后,將兩種類型的聲音樣本分別映射兩個編組(每個編組7個)所對應的MIDI鍵盤鍵位上。分別為槍聲組樣本分配到C1-B1鍵位, 腳步聲組樣本分配到 C2-B2鍵位,如圖3所示。

圖3 樣本映射編輯器界面
經過測試,對應的鍵位就已經可以觸發樣本聲音了。為了使各種不同類型的聲音特性有很好的真實聽感,可以適當調整調制功能,如在放大器模塊上添加包絡控制功能以及外部調制源分類中的力度調制功能等。這樣,一個簡易的虛擬樂器已經制作完成。
2.3.4 高級面板腳本編寫
在高級樂器面板上設計6個參數控制旋鈕,分別是:第一編組音量(VolumeG1)、第二編組音量(VolumeG2)、編組低通濾波器的臨界頻率(CutFreq)、樂器插入效果器第一索引位上延時效果器的時間(Delaytime)、樂器插入效果器第二索引位上混響效果器的房間大小(Size)和樂器插入效果器第三索引位上環繞聲效果器的聲像角度(Angle)。
打開腳本編輯器,寫入如下代碼:
on init
declare ui_knob $VolumeG1 (0,1000000,1000000) {聲明用戶操作界面控件變量(旋鈕)的名稱為VolumeG1(最小值,最大值,單步可變數值),下同}
declare ui_knob $VolumeG2 (0,1000000,1000000)
declare ui_knob $CutFreq (0,1000000,50)
declare ui_knob $Delaytime (0,1000000,3500)
declare ui_knob $Size (0,1000000,1000000)
declare ui_knob $Angle(0,3600000,10000)
set_knob_unit($CutFreq,$KNOB_UNIT_HZ) {制定要用系統變量來進行控制CutFreq參數,定義單位為赫茲,下同} set_knob_unit($Delaytime,$KNOB_UNIT_MS) set_knob_unit($Size,KNOB_UNIT_PERCENT)
make_perfview{為各腳本激活高級樂器面板功能}
$VolumeG1 :=500000 {為變量分配一個默認值}
$VolumeG2 :=500000
$Size :=50
$Angle :=0
end on
應用執行腳本后就創建了6個旋鈕,并且名稱和刻度單位也通過腳本定義后已經顯示。這樣,添加了我們所設定的控制旋鈕后,如果直接退出樂器編輯模式,那么,這些旋鈕會被隱藏,操作上顯示不是很直觀。為了在這個樂器的高級樂器面板中看到所聲明的旋鈕,我們必須在初始化回調中加入以下代碼:“ make_perfview”(指為各自的腳本激活高級樂器面板功能)。這樣,一款具備高級面板的樂器就制作完成,如圖4所示。

圖4 自定義高級樂器面板
2.3.5 效果器參數控制設定
為了使觸發的聲音樣本賦予變化,如發聲的遠近、空間位置、混響度、延時度等,以契合當前情景的要求,在使用操作時能進行實時操控參數量,這里必須先添加4個效果器。分別是編組模塊上的低通濾波器、樂器插入效果器模塊第一索引位上延時效果器、樂器插入效果器模塊第二索引位上混響效果器和樂器插入效果器模塊第三索引位上環繞聲效果器。然后使用“_set_engine_par”控制參數自動化功能的語法,按照系統變量代碼定義的要求,編寫如下腳本代碼,去分配和定義高級樂器面板上各旋鈕的參數控制功能。
on ui_control ($VolumeG1) {定義旋鈕控制的自動化參數,下同}
_set_engine_par ($ENGINE_PAR_VOLUME,$VolumeG1,0,-1,-1) {控制變量VolumeG1的音量自動化參數,變量值,所在編組索引號,所在模塊索引號效果方式。下同}
end on
on ui_control ($VolumeG2)
_set_engine_par ($ENGINE_PAR_VOLUME,$VolumeG2,1,-1,-1)
end on
on ui_control ($CutFreq)
_set_engine_par ($ENGINE_PAR_CUTOFF,$CutFreq,0,0,-1)
end on
on ui_control ($Delaytime)
_set_engine_par ($ENGINE_PAR_DL_TIME, $Delaytime,-1,0,1)
end on
on ui_control ($Size)
_set_engine_par ($ENGINE_PAR_RV_SIZE, $Size,-1,1,1)
end on
on ui_control ($Angle) _set_engine_par($ENGINE_PAR_SP_OFFSET_AZIMUTH, Angle,-1,2,1)
end on
應用執行腳本后就可以操作面板上的旋鈕去控制對應的效果參數了。
2.4 創建外部控制器的自動化參數分配
在實際使用操作時,為了脫離在虛擬樂器界面上用鼠標操作的手法,而使用外部的MIDI鍵盤與MIDI控制器這樣的硬件設備進行操作,就必須把虛擬樂器高級面板上按鈕與硬件設備上的按鈕(或推子)進行MIDI參數自動化控制的分配。
創建分配的方法是:先找到硬件設備上按鈕(或推子)所對應的控制器號,然后按照將MIDI控制器[8]的控制器號分配給要控制的參數上,以創建自動化參數分配。如圖5所示。

圖5 控制器號分配信息
本例中,我們把0號控制旋鈕(CC0)分配給Delaytime參數,我們把2號控制旋鈕(CC2)分配給CutFreq參數,以此類推。
這樣,一款具有各鍵位對應不同的聲音對象、可通過MIDI控制器實時調節自動化參數的虛擬樂器就制作完成。
3.1 應用領域
這款以特定的虛擬樂器可普遍應用于支持VST插件標準的音頻工作站上。可以按照上述方法創建具有獨特個性風格類型的音頻制作工具,應用于配音配樂行業,特別是VR游戲的配音及聲音設計領域。
3.2 運行測試結果
我們將My VR Audio Objects Instrument在其他安裝了Kontakt5的音頻工作站上進行測試,應用環境如圖6所示。

圖6 虛擬樂器應用示意圖
第一種以獨立運行軟件的形式,加載方便,使用正常。鍵位分配及控制旋鈕(推子)操作便捷、響應迅速,達到預期要求。
第二種以音色插件的形式加載于cubase、sonar、magix musicmaker等主流音樂制作軟件,同樣達到預期效果。
通過設計與制作這款以特定聲音對象為元素,基于KSP腳本引擎強大功能的虛擬樂器,為VR游戲與電影等視頻內容進行實時配音效的制作方法提供了一種新的手段。我們可以以此方案設計制作各種各樣情景需要的音效類虛擬樂器,結合MIDI鍵盤和控制器等硬件設備,使聲音設計工作再也不會是聽得見摸不著了。
[1] 王巖明.試論VR電影還音制式的未來發展趨勢——從電影聲音的空間定位方式談起[J].現代電影技術,2016(5):29-35.
[2] 許津瑋.VR音頻探秘之一:什么是 VR 音頻?[OL].Midifan,2016-09-16.http://www.midifan.com/modulearticle-detailview-5490.htm.
[3] 深藍Deeperblue.為什么說VR回春關鍵在于3D音頻技術?[OL].虎嗅網,2016-09-18.https://www.huxiu.com/article/164088.html.
[4] 王劍.數字化環境下的影視配樂新方式[J].北方音樂,2015(8):165.
[5] 孫文杰.全能采樣器Kontakt從入門到精通[M].北京:清華大學出版社,2012.
[6] 宋倩雯.信息技術下的校園音樂樂器教學素材開發[J].電子測試,2015(1):148.
[7] 潘溯源.基于LeapMotion體感技術的MIDI控制器制作與特性探討[J].中國傳媒科技,2014(4):128-129.
DESIGNOFVRSOUNDOBJECTINSTRUMENTBASEDONKSPSCRIPTENGINE
Zhang Jianrong
(SchoolofFilm,ShanghaiUniversity,Shanghai200072,China)
VR Spatial Audio involves two concepts: sound source and sound field, as well as head-related transfer function (HRTF), and the most basic element is the sound object. To sound object production requirements as a starting point, with custom virtual scene as an example, using Kontakt audio sampler powerful script engine, we design and make a specific virtual instrument through the script code editing and running. The design can be applied to VR audio pre-production sound object synchronous recording, and it is an application attempt of computer audio sampling technology.
Virtual reality Sound object KSP script engine Virtual instrument
TP312
A
10.3969/j.issn.1000-386x.2017.09.035
2016-11-08。2016年度上海大學電影高峰學科成果。張建榮,實驗師,主研領域:數字音頻處理,計算機音樂制作與實驗管理。