使用 Wwhisper 连通 REAPER 和 Wwise

Wwise 技巧和工具

大家好,我叫托马斯,是一名来自法国的技术音频设计师,很高兴能在 Audiokinetic 博客上跟大家说说自己开发的 Wwhisper 脚本。

关于 Wwhisper

简单来说,Wwhisper 是个 ReaScript 脚本。它允许 REAPER 使用 Take Marker 和 Automation Lane 向 Wwise 发送命令。

在运行脚本时,REAPER 会进入自定义播放状态。期间会检测标记和自动化点,并根据其名称执行各种操作。藉此,您可以创建并定位游戏对象、发送 Event 或设置 Switch、State 和 RTPC。

开发历程

此前,我跟我的导师文森特•塞尔热 (Vincent Sergent) 就派对游戏的混音技术进行过探讨。这些游戏的音频环境一般都比较乱,尤其是在快节奏和多人分屏模式下。这让我想到,动态混音技术(如 Wwise HDR)应该挺适合处理这种情况。为此,我决定制作一个 Wwise 工程原型。

在我们讨论的时候,我想到了之前看的一些有趣的 YouTube 视频。其中,马克•哈塞尔巴尔赫 (Marc Hasselbalch) 关于使用 Max 为《Hitman》序列重新设计音效的短片就有不少值得借鉴的地方。另外,伯纳德•罗德里格 (Bernard Rodrigue) 和安德鲁•科斯塔 (Andrew Costa) 在 ADC 22 大会上的演讲也很有帮助。

当时还没有可供大家使用的工具,我也不想花几个月时间在 Unreal 中开发框架。于是我就趁安德鲁不忙请教了他几个问题,一番琢磨之后想出了自己的一套解决方案。

如何使用 Wwhisper

Wwhisper 由三部分组成:两个脚本和一个 JSFX 插件。

Wwhisper:负责播放的主脚本。

Wwhisper Assistant:这个脚本不是必需的,不过可以简化流程,能省掉很多麻烦。

kusa_Wwhisper Params:这个 JSFX 插件允许调节 RTPC 并在 3D 空间中对游戏对象进行定位。

安装

SWS Extension for REAPER 外,所有组件均可通过ReaPack 访问。

  • 在 REAPER 中,可依次转到 Extensions/ReaPack/Import repositories...
  • 粘贴 Audiokinetic 存储库的链接:https://github.com/Audiokinetic/Reaper-Tools/raw/main/index.xml
  • 以及我的存储库的链接:https://github.com/TFKusa/kusa_reascripts/raw/master/index.xml 
  • 接下来,可依次转到 Extensions/ReaPack/Browse packages 并安装以下组件:

ReaWwisekusa_Wwhisperkusa_Wwhisper Paramskusa_Wwhisper Assistant

设置

要模拟游戏引擎环境,我们首先得创建听者。事实上,在运行主脚本时,Wwhisper 会在游戏世界的原点 (0,0,0) 创建 Listener 游戏对象。

接下来,我们需要能够自己创建游戏对象。其实,游戏对象就跟 DAW 中的音轨一样。

Wwhisper 会扫描会话中的每一条音轨,并分别为其生成对应的游戏对象。这些游戏对象会沿用音轨的名称。如果多个音轨名称相同,则仅创建一个游戏对象。这样方便高效地管理会话,尤其是在有大量的标记时。

REAPER-Wwhisper

使用 Assistant

通过音轨创建游戏对象

Create new track and item:生成新的音轨,为其添加空媒体项,并插入 JSFX 插件。如果在 REAPER 中导入了视频,可将其选中来确保新建媒体项的长度与视频的时长保持一致。或者,也可以定义一个时间范围。

Wwhisper-Assistant-create-through-tracks-reaper

Sync with Wwise

单击 Sync with Wwise 按钮可从当前 Wwise 工程导入所有 Event、RTPC、Switch 和 State 引用。这些元素将显示在与之对应的字段中以便于访问。

Wwhisper-sync-with-Wwise

使用 Take Marker 创建 Event、State 和 Switch

选择目标媒体项,将播放光标置于要添加标记的位置,选择标记颜色,指定触发类型,选择对应的 Wwise 对象,单击 Create take marker。

 

Select-the-target-item-Wwhisper

管理 RTPC

Automation Lane:在 Assistant 窗口中,将 Type 设为 RTPC,输入 RTPC 名称(或从同步列表中选择),定义 Min Value 和 Max Value(若已同步则自动填充),选择目标音轨/游戏对象,单击 Create RTPC automation lane。

Wwhisper-REAPER-create-automation-lane-RTPC

JSFX RTPC 参数:这些参数的取值范围为 0 ~ 100,代表实际 RTPC 范围的百分比。所以才要输入 Min Value 和 Max Value,为的是方便脚本将百分比转换为实际值。

听者与空间的相对运动

在典型的游戏场景中,是听者在 3D 空间中移动。不过,Wwhisper 主要用于处理试玩视频。在这当中,玩家通常处在画面的中央。所以在我们的例子中,是空间围绕听者移动。

就跟 RTPC 一样,我们可以通过 Automation Lane 和 JSFX 插件管理定位。

Wwhiper-positioning

Front/Back 和 Up/Down:这些轴使用绝对值,定位起来会更便捷。

Left/Right:该轴与 Front/Back 相对。在将 Left/Right 设为 -100 时,会始终将对象硬摆位到左侧;在设为 100 时,会硬摆位到右侧。

这种设置对 2D 布局来说没什么问题。不过,在 3D 空间中准确定位对象会比较难。我目前同时在处理几个别的项目,准备后面做个 2D 摆位 VST 插件,以便准确定位游戏对象的空间位置。

播放

要播放序列,直接运行 Wwhisper 主脚本即可。在播放光标经过标记或自动化曲线时,会触发特殊播放状态并向 Wwise 发送指令。

其他命令

通常,Wwhisper 可自动管理大部分任务。不过,还有别的一些命令可供使用:

Register Game Object
Unregister Game Object
Unregister All Game Objects

这些命令可执行更加高级的管理操作。不过,一般情况下很少会用到。

Wwhisper Assistant 中的实用工具

Wwhisper Assistant 附带有一套实用工具。只需在 Assistant 窗口右上角勾选 Utilities 复选框就可访问并使用这些工具。

Wwhisper-assistant-utilities

其中一项重要功能是 Generate Project from Profiler TXT。这项功能是用户 undertheradar84 在 REAPER 论坛的帖子中要求提供的。它支持导入 TXT 格式的 Wwise Capture Log,并可自动生成与文件中记录的 Event 序列一样的 Reaper/Wwhisper 设置。下面我们就来说说如何使用它。

准备 Wwise Capture Log

依次转到 Wwise > Project > Profiler Settings。

确保选中 API Calls 和 Game Syncs。这样可在 Capture Log 中包含必要的信息。

Wwise-Profiler-settings

配置 Capture Log 列

右键单击 Capture Log 列,并选择 Configure Columns。

确保选中所有要包含在导入操作中的相关元素。

Wwise-capture-log-configuration

将 Wwise 连接到所选引擎并保存日志

单击 Save 图标并将日志保存为 txt 文件。

Wwise-capture-log-save

在准备好 Capture Log 后,便可使用 Utilities 分区中的 Generate Project from Profiler TXT 功能。

该脚本会对日志进行处理并创建对应的 Reaper/Wwhisper 配置。

完成设置

在生成工程后,将“听者”游戏对象(通常为 Main Camera)重命名为 Listener。

Wwhisper-finalize

各位可在我的 YouTube 频道上试听我使用 Wwhisper 重新设计的音效:

Super Smash Bros. Ultimate & Lies of P

感谢各位阅读这篇博文。如果有任何疑问,不妨在 REAPER 论坛的这篇帖子里给我留言。希望对您有所帮助。最后,感谢 Audiokinetic 给我这次分享的机会! Subscribe

Thomas Fritz

初级技术音频设计师

10 Chambers

Thomas Fritz

初级技术音频设计师

10 Chambers

托马斯•弗里茨 (Thomas Fritz) 是一名技术音频设计师,目前居住在瑞典斯德哥尔摩。在法国电视行业从事音频后期制作多年后,他于 2024 年中加入 10 Chambers,正式开启自己的游戏音频职业生涯。

评论

留下回复

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


更多文章

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

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

11.5.2020 - 作者:葛鑫

Wwise Unity 速查表

今天我们来说说 Wwise Unity Integration。这些年来,相关学习资源越来越丰富,随时都可以拿来参考。就拿 Audiokinetic 官方资源来说,YouTube...

19.1.2021 - 作者:麦斯·麦雷蒂·桑德鲁普 (Mads Maretty Sønderup)

Wwise Authoring Query Language 简介

“Wwise 不过是张电子表格”。作为用户体验团队成员,我们经常会听到有人这样说。事实上,Wwise 不仅是款声音设计工具,Wwise...

20.7.2021 - 作者:伯纳德 罗德里格 (Bernard Rodrigue)

为 Wwise 2021.1 构建插件 | 第 1 部分:背景和目标

大家可能不知道,Wwise 生态系统其实具有很强的可扩展性。有时,各公司要为其项目构建定制的插件,供应商会将自研插件迁移到 Wwise。对此,我们必然要提供相应的支持。新的 Wwise...

27.9.2021 - 作者:米歇尔•多奈斯 (Michel Donais)

关于如何在团队工作环境中使用 WAAPI 和 Python

在本文中,我想说说自己很长一段时间以来是如何使用 WAAPI 的。这当中用到了 Python、命令扩展 (Command Add-on) 和一个小的辅助程序 (Helper) 库。藉此,能以比...

10.5.2022 - 作者:尤金•乔尔内 (Eugene Cherny)

Wwise 开发流程改进 | 针对 Unreal Engine Preview 的 Sim-Patch 发布和开发支持

这篇博文旨在跟各位分享我们在过去几个月里对开发流程所做的一些改进。这些改进是根据 Wwise 社区用户的反馈做出的,目的是更频繁地发布 Wwise 以缩短获取下一小版本的间隔。除此之外,我们还改变了对...

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

更多文章

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

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

Wwise Unity 速查表

今天我们来说说 Wwise Unity Integration。这些年来,相关学习资源越来越丰富,随时都可以拿来参考。就拿 Audiokinetic 官方资源来说,YouTube...

Wwise Authoring Query Language 简介

“Wwise 不过是张电子表格”。作为用户体验团队成员,我们经常会听到有人这样说。事实上,Wwise 不仅是款声音设计工具,Wwise...