浅谈最近在 Heavy 中对 Wwise 支持所做的更新

音频编程

目录

简介

Heavy(也叫 hvcc)是一款用于将 Pure Data 补丁转码为不同编译格式(如 VST 或 Daisy 固件)的工具。该项目最初由 Enzien Audio 发起,目前由 Wasted Audio 积极开发。

Wwise 支持有段时间没更新了,我最近忙的就是这个。现在不仅将 Wwise 生成器升级到了 Audiokinetic 的新插件 API,还添加了对更多声道配置(5.1、7.1 和 7.1.4)的支持以及在插件内发送 Event 的功能。在本文中,我会简要介绍新增的功能,并举例说明如何加以设置。

除此之外,我还对源代码的生成方式做了调整。现在不会直接生成 Visual Studio 工程,而会以 Audiokinetic 开发工具需要的格式生成工程。这不仅简化了最终用户的操作,而且还可将插件打包成可通过 Audiokinetic Launcher 安装的捆绑包,分发起来非常方便。

我将在所有示例中使用一个名为 plugdata 的 Pure Data 分支库。因为它设有“编译模式”,在使用 Heavy 不支持的对象时会发出警告。后续我可能还会添加对更多功能的支持,比如直接通过 plugdata 构建 Wwise 插件。

安装和使用

hvcc 是个 Python 工具,可通过命令行来安装:

pip install hvcc

以上代码会在终端安装 hvcc 命令。比如,我们可以通过以下代码来输出文档:

hvcc -h

除此之外,用户还要安装 Visual Studio 及正确的依赖项。2019 或 2022 版本都可以。不过,后者仅适用于 2022.1.5 以上的 Wwise 版本。文档中详细列出了要安装的组件。在此,我仅以 VS2019 安装截图为例简单说明一下:

wwise_hvcc_vs2019

图 1 - 我在电脑上安装的 Visual Studio 数据包(一般不用管 .NET 和 UWP 数据包)。

新增功能概要

 

添加了对更多声道配置的支持

之前只能构建单声道或立体声插件。现在对于源插件和效果器插件,都可构建 5.1、7.1 和 7.1.4 配置。至于构建哪种配置,由 [adc~][dac~] 对象中声明的声道数决定。

wwise_hvcc_multichannel

图 2 - 左侧为 5.1 音量控制效果器。右侧为 7.1 55 Hz 振荡器,带音量控制。

遗憾的是,Heavy 插件无法在输出设备发生变化时即时更改声道配置,所以必须将总线设为所需配置才能在总线上使用这些插件。另外,Wwise 会根据需要对信号进行下混或上混。在自身配置不受支持的总线上初始化时,插件会输出错误消息。

wwise_hvcc_bus_config

图 3 - 对于带多声道效果器插件的总线,必须明确设定其配置。

随意发送 Event 并设置 RTPC

现在允许在 Heavy 插件内通过发送对象随意触发 Wwise Event,就像输出 RTPC 一样。用户甚至还可构建纯控制插件。不过,技术上来说其会被编译为始终输出无声内容的单声道源插件。此类插件可计算传入参数的统计数据并设置新的 RTPC,甚至还可将传入的 RTPC 转化为 Event 来实现可对音频作出反应的系统。下图展示了为此对所述发送对象所做的注释。

注意,Wwise 设计工具并不会在启动时加载 Event 及相应数据。这样便无法从设计工具中运行的插件发送 Event。同时,还会显示 Event ID not found 错误。要解决这一问题,只需在 Events 选项卡中播放一次所述 Event 来强制 Wwise 加载其关联数据即可。

wwise_hvcc_control_only

图 4 - 这是一个纯控制补丁。藉此,可将 Param1 值的变化转化为触发器,来发送 "Play_Test_Sound" Event。同时,计算 Param1 和 Param2 的平均值,并将其设为作用于相同游戏对象的 "Param_Avg" RTPC。

打包插件以便通过 Audiokinetic Launcher 安装

因为 Heavy 生成的工程格式与 Audiokinetic 的构建工具兼容,所以现在允许将插件打包成可通过 Audiokinetic Launcher 安装的捆绑包。这样就可以轻松向他人分发自定义插件,甚至还可包含针对不同平台的构建版本。Heavy 文档提供了详细的操作说明,在此我就不赘述了。

有一点要注意。就目前来说,插件必须遵循与 Wwise 版本相同的编号方式。比如,若目标版本为 Wwise 2022.1,则插件版本号须为 2022.1.X.Y。如果不喜欢这种行为,只需在对 Pure Data 补丁转码时生成的 bundle_template.json 文件中修改目标 Wwise 版本即可。

为方便按照说明操作,请在 Audiokinetic Launcher 中单击 Set Environment Variables... 按钮,并正确设置 WISEROOT 和 WISESDK 环境变量:

wwise_hvcc_envvars

图 5 - 设置相关的 WWISEROOT 和 WWISESDK 环境变量。

结语

这里简要介绍了 Heavy 中对 Wwise 支持所做的更新。如果各位有什么意见建议或功能需求,请在 Wasted Audio DiscordGitHub 留言。

如果以前从未使用过 Heavy,建议查看侯晨钟在 Audiokinetic 博客上发布的《声音设计师如何利用 PD + Heavy 进行 DSP 插件的开发》系列博文来了解更多信息。最后,我要特别感谢本•麦卡洛 (Ben McCullough)。今年早些时候,他在 Audiokinetic 博客上发表了关于通过 Heavy 构建多声道效果器插件的文章。正是在这篇博文的启发下,我添加了对更多声道配置的支持。

尤金•乔尔内 (Eugene Cherny)

尤金•乔尔内 (Eugene Cherny)

尤金•乔尔内 (Eugene Cherny) 是一名音频程序员,目前从事于游戏行业。他对艺术和学术也颇有兴趣,不过最热爱的还是游戏音频。

https://eugn.ch/

评论

留下回复

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

更多文章

Wwise 新增多频段压缩器插件:Polyspectral MBC 加入 Audiokinetic 社区合作伙伴计划!

Polyspectral MBC 是一款我最近为 Wwise 开发的多频段压缩器插件。我很高兴能通过 Audiokinetic 社区合作伙伴计划发布这款插件。通过这项计划,第三方开发人员可以为...

29.8.2018 - 作者:伊桑·芬恩(ETHAN FENN)

EBP管线概述

EBP是什么? 前不久Wwise 2019.2版本的UE4 Integration推出了一条新的管线,叫做Event-Based...

10.12.2020 - 作者:范润鹏

人人都能用 WAAPI(三)Functions(执行类 API)剩余部分及 Topics(订阅类 API)

大家好,我是溪夜。 在《人人都能用 WAAPI(三)》中,我们会继续上一篇的内容,讨论 WAAPI 的 Functions(执行类)中剩下的其他的 API 及 Topics(订阅类)。...

15.1.2021 - 作者:汪洋

Wwise Unity 速查表

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

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

Wwise 2023.1 对 WAAPI 的更新

Wwise 2023.1 包含自 2017 年引入 API 以来对 Wwise Authoring API (WAAPI) 最大幅度的更新。如果还没看过 Wwise 2023.1...

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

通过 ReaWwise 在 ReaScript (Lua) 中调用 WAAPI

ReaWwise 有个大家可能不太知道的功能,就是将原始 WAAPI 函数暴露给 REAPER。藉此,用户可在自己的 ReaScript 中使用这些函数。在本文中,我们将探讨如何使用 WAAPI 在...

23.4.2024 - 作者:安德鲁·科斯塔 (Andrew Costa)

更多文章

Wwise 新增多频段压缩器插件:Polyspectral MBC 加入 Audiokinetic 社区合作伙伴计划!

Polyspectral MBC 是一款我最近为 Wwise 开发的多频段压缩器插件。我很高兴能通过 Audiokinetic 社区合作伙伴计划发布这款插件。通过这项计划,第三方开发人员可以为...

EBP管线概述

EBP是什么? 前不久Wwise 2019.2版本的UE4 Integration推出了一条新的管线,叫做Event-Based...

人人都能用 WAAPI(三)Functions(执行类 API)剩余部分及 Topics(订阅类 API)

大家好,我是溪夜。 在《人人都能用 WAAPI(三)》中,我们会继续上一篇的内容,讨论 WAAPI 的 Functions(执行类)中剩下的其他的 API 及 Topics(订阅类)。...