张 建 荣
(上海大学上海电影学院 上海 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年度上海大学电影高峰学科成果。张建荣,实验师,主研领域:数字音频处理,计算机音乐制作与实验管理。