利用命令扩展改进工作流程

Wwise 技巧和工具

持续改进工作流程 

您是不是一直在努力优化任务的工作流程?为了不断改进工作流程,首先要识别单调重复的任务,然后自己想办法或者找别人帮忙加以优化。在这个过程中,工作会越来越省力。这些您都已经知道了?那有没有付诸实践呢?
在工作当中,我们经常会用到不同的工具。其中有些工具是允许自定义的。自定义便是改进工作流程的一种方式。这也是本文要讲的重点。
正如前面所说,我们可以通过各种方式来自定义 Wwise。有些比较简单,有些需要修改文件,还有些要求具备一定的编程知识。今天,我们就来说说如何采用不同的方法来自定义 Wwise。

插入命令扩展

在 Wwise 中,用户可请求运行一系列可执行代码片段,以此向软件程序发送相应的命令。命令的触发方式有很多,包括:
  • 键盘快捷方式(详请转到 Project > Keyboard Shortcuts)
  • 上下文菜单和主菜单
  • 控制器
  • Wwise Authoring API (WAAPI):使用 ak.wwise.ui.commands.execute
自 Wwise 2018.1 起,我们提供了 200 多项内置命令供用户使用。您可以在 Keyboard Shortcuts(键盘快捷方式)对话框中查看这些命令,其中大部分都已列在此处
在 Wwise 2018.1.2 中,我们推出了命令扩展。命令扩展方便用户创建自定义命令,并将其添加到 Wwise 中。简单来说,就是现在可以通过 Wwise 执行外部程序。为此,可使用以下属性来定义命令扩展:
  • id:为命令定义用户可读的唯一 ID。
  • displayName:定义用户界面中显示的名称。
  • program:定义执行命令时要运行的程序或脚本。
  • args:定义用于启动程序的参数。
  • cwd:定义用于执行程序的当前工作目录。
  • defaultShortcut:定义此命令默认使用的快捷方式。
  • startMode:指定在 Wwise 用户界面中执行多选时如何扩展参数字段中的变量。
  • contextMenu:定义上下文菜单。
  • mainMenu:定义主菜单。
另外,我们还定义了一系列内置变量,方便用在 args 属性中。比如,您可以检索选定对象的 ID、名称、路径或原始 WAV 文件路径,并将其作为参数传给要执行的程序。如此一来,便可在 Wwise 中执行自定义代码时轻松结合上下文。对此,我们将在后文进一步说明…

添加 WAV 外部编辑器 – 全新方式

您可能已经知道了 Wwise 中的 External Editor(外部编辑器)功能 (Project > User Preferences > External Editors),它允许在电脑上选择最常使用的 WAV 文件编辑器,然后直接通过 Wwise 来启动。这种 Wwise 自定义方式非常好用,可以方便快速地在无需切换工作环境的情况下修改 WAV 文件。
保持单一工作环境对优化工作流程来说至关重要。在不同工作环境之间频繁切换会增加很多不必要的麻烦。试想一下,假如不使用 External Editor,编辑 WAV 文件需要哪些步骤?
  1. 在 Windows 的“开始”菜单中查找最常使用的 WAV 编辑器
  2. 使用 WAV 编辑器中的“打开文件”功能
  3. 在 Wwise Project 文件夹中浏览 WAV 文件(可能会相当枯燥而耗时)
  4. 编辑文件
  5. 保存
利用 External Editor 功能,可以省掉前 3 个步骤,免去打断工作流程的繁琐操作:查找和浏览。这些操作需要用户频繁地切换工作环境,会耗费大量的时间和精力。如果能专注于主要任务(编辑文件),就可以避免很多不必要的麻烦。
接下来,我们进一步讲讲前文所说的命令扩展。命令扩展不仅能实现与外部编辑器相同的功能,而且还拥有更大的灵活性。不过,它需要稍微设置一下。为此,请参考以下逐步说明:
首先,创建目录结构:
  1. Windows:转到 %appdata%\Audiokinetic\Wwise
    Mac:转到 ~/Library/Application Support/Wwise2018/Bottles/wwise/drive_c/users/crossover/Application Data/Audiokinetic/Wwise
  2. 创建 Add-ons 目录
  3. 创建 Commands 目录

然后,自由选用时下任何文本编辑器。我个人使用的是 Visual Studio Code,它可以很好地支持 JSON 编辑。为此,请在 Commands 目录下创建一个新的文件。将其命名为 mycommands.json,并复制粘贴以下内容:
{
   "commands":[
       {
           "id":"ak.open_in_wavosaur",
           "displayName":"Edit in Wavosaur",
           "defaultShortcut":"W",
           "program":"c:\\portable\\Wavosaur.1.1.0.0-x64(en)\\Wavosaur.exe",
           "args":"${sound:originalWavFilePath}",
           "cwd":"",
           "contextMenu":{
                   "visibleFor":"Sound"
               },
           "mainMenu":{
                   "basePath":"Edit/WAV Editors"
               }
                   
       }    
   ]
}
 
接着,修正 exe 的路径。在本例中,我选择使用免费便携的 Wavosaur。注意不要在 JSON 文件中使用单个反斜线字符。也就是说,每次都要使用两个反斜线。在 Mac 上,则要使用单个正斜线字符。另外,我将此命令的键盘快捷键设为了 W。您可以根据需要进行修改。比如,使用组合键 Ctrl+Alt+W。请注意,假如按键已被用作 Wwise 键盘快捷方式,则系统将忽略您所定义的按键。另外,有必要说明一下 "args":"${sound:originalWavFilePath}" 的用法。Wwise 会使用与选中项关联的实际 WAV 文件路径自动替换此变量。假如选中了多个对象,则 Wwise 将把该变量自动扩展为空格分隔的路径。您可以通过设置 startMode 来更改此行为。如需详细了解可用模式,请参阅相关文档。现在,我们重新启动 Wwise,来试一试。在右键单击时,上下文菜单中应会显示新的条目。
 

在命令中触发 WAAPI

既然已经学会了如何通过 Wwise 启动外部程序,那么我们不妨试着自己编写程序。接下来,我会详细地予以说明。在本练习中,我们将结合 Python 来使用 WAAPI。
如需详细了解 WAAPI,请点击此处
如需详细了解 WAAPI Python 客户端,请点击此处
如需克隆或下载整个工程,请转到 github
 
Python 代码包含在 offset_property.py 中。首先,脚本会处理各项参数。在执行这部分代码时,将向脚本传递一系列 Wwise 对象 ID (GUID)。这些 ID 由 Wwise 中所选对象决定。
接着,脚本会使用 WAAPI 连接 Wwise。该操作会在创建 WaapiClient 对象时自动完成:
# Connect (default URL)
client = WaapiClient()
然后,会检索作为参数传递的 Wwise 对象的当前音量。为此,将使用 WAAPI 查询来请求返回每个指定对象的音量和对象 ID:
# Retrieve the volume and id for the selected objects
如需详细了解 WAAPI 查询,请点击此处
最后,会针对每个对象调用 setProperty,并重新设为计算得出的音量。
# Set new volumes
for object in result['return']:
   if '@Volume' in object:
       args = {
           'object': object['id'],
           'property': 'Volume',
           'value': object['@Volume'] + 1
       }
       client.call("ak.wwise.core.object.setProperty", args)
如需查看完整脚本,请点击此处

接下来,我们需要通过 Wwise 使用命令扩展来调用上述脚本。在此,请确保使用 Wwise 2018.1.2 或更高版本:
1. 确保已在所用电脑上安装 Python 3
2. 克隆或下载 github 上提供的工程
3. 将 offset_property_commands.json 文件复制到以下位置:
          a. Windows: %appdata%\Audiokinetic\Wwise\Add-ons\Commands
          b. Mac: ~/Library/Application Support/Wwise2018/Bottles/wwise/drive_c/users/crossover/Application                                                           Data/Audiokinetic/Wwise/Add-ons/Commands
4. 编辑文件并修正 offset_property.py 的路径(将其设为电脑上实际存放 github 工程的路径)
5. 重新启动 Wwise
6. 选择对象并使用 - 或 = 键来减小或增大音量。

设置用来执行脚本的控制器

接下来,我们进一步讲讲如何使用控制器来执行脚本。在此,我们将使用老式的 MIDI 控制器来触发刚刚创建的命令。利用它上面的按钮,可以逐级调整属性,操作起来会很有意思。
1. 添加设备并连接到 Control Surface(控制器)设备列表 (Project > Control Surfaces):
Picture1
2. 打开 Control Surface Bindings(控制器绑定)视图,并编辑 Default Control Surface Session(默认控制器会话)。
3. 添加 Global commands(全局命令)类型的全局绑定:
Picture3
4. 在命令列表中搜索 volume(按下 Ctrl+F3 搜索),并选择 Increase Volume(增大音量)。单击 OK(确定)。
Picture4
5. 按下控制器上的按钮:
Picture5
6. 针对 Decrease Volume(减小音量)命令重复以上步骤
最终设置应如下图所示:
Picture6
现在,您就可以在 Wwise 中的任意位置使用控制器了。所有对象都会对控制器触发的命令做出响应。

结语

本文仅阐述了有关如何使用命令扩展的部分示例。它所能实现的操作其实还有很多很多。比如,您可以:
  • 在最常使用的文本编辑器中编辑 Work Unit(工作单元)文件
  • 通过 Event(事件)触发游戏引擎
  • 针对 Sound Voice(语音)触发语音合成
  • 针对 WAV 文件执行母带制作效果器链处理
  • 使用选定对象的名称搜索 JIRA
  • 将对象的备注复制到剪贴板
  • 自动创建复杂的 Wwise 结构
  • 将生成的 SoundBank(音频包)文件复制到游戏目录
  • 针对 Work Unit 触发 git 命令
 
您还有哪些允许自定义的工具?您会编写简单的程序或者编辑配置文件吗?当然,您可以请求团队其他成员帮忙,也可以自学一些基本的编程知识。另外,还可以利用网络资源轻松获取帮助。
那么,这周您准备怎么改进工作流程呢?

伯纳德 罗德里格 (Bernard Rodrigue)

开发总监

Audiokinetic

伯纳德 罗德里格 (Bernard Rodrigue)

开发总监

Audiokinetic

Bernard Rodrigue 是 Audiokinetic 的开发总监。他自 2005 年加入 Audiokinetic 后,一直积极参与 Wwise 的基础研发。现在,Bernard 仍在带领团队从事 Wwise 的提升和扩展研发,比如 Interactive Music 等等。

 @decasteljau

评论

留下回复

您的电子邮件地址将不会被公布。

更多文章

Wwise 工程文件的版本控制

很多游戏开发商会利用版本控制系统来存储工程文件,藉此为多人团队协作提供便利。那么,在本文中我们就来解答如下问题:Wwise 工程文件夹内哪些文件应当存储在版本控制系统中? 巧用...

5.6.2018 - 作者:纪尧姆·雷诺 (GUILLAUME RENAUD)

关于结合 Wwise 在 UE4 中运用音频工具的尝试:利用 Spline Based Audio Emitter 创建自定义形状

大家好!我计划撰写一系列短文来探讨关于结合 Wwise 在 Unreal Engine 4...

3.6.2019 - 作者:特罗尔斯.尼加德(TROELS NYGAARD)

声音设计师如何利用PD+Heavy进行DSP插件的开发 - Part 1

背景...

9.9.2019 - 作者:侯晨钟

关于音频复用和高效利用的几点经验分享

大家好,“如何对音频资源做有节制、更高效的利用”,应该是大家工作中都会考虑的问题。...

30.12.2019 - 作者:胡正伟

Wwise八个易忘小操作

大家好,我是来自深圳创梦天地乐逗的音频设计师洪伟森,主要负责自研部门的游戏音效设计与制作,和Wwise项目整合工作。...

2.3.2020 - 作者:洪伟森

在Wwise中进行大批量音频管理的思路分享

在我的日常音频工作中,经常会遇到需要做大批量语音文件导入、配置的情况,由此产生的批量化处理需求大致可分为三种:...

11.5.2020 - 作者:葛鑫

更多文章

Wwise 工程文件的版本控制

很多游戏开发商会利用版本控制系统来存储工程文件,藉此为多人团队协作提供便利。那么,在本文中我们就来解答如下问题:Wwise 工程文件夹内哪些文件应当存储在版本控制系统中? 巧用...

关于结合 Wwise 在 UE4 中运用音频工具的尝试:利用 Spline Based Audio Emitter 创建自定义形状

大家好!我计划撰写一系列短文来探讨关于结合 Wwise 在 Unreal Engine 4...

声音设计师如何利用PD+Heavy进行DSP插件的开发 - Part 1

背景...