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

Wwise 技巧和工具

声音设计师如何利用PD+Heavy进行DSP插件的开发 Part 3 - 如何在Wwise2021.1.x版本下继续使用Heavy Compiler?

上下文

自今年Wwise新的Major Version2021.1.x)发布以来,越来越多的客户反馈Heavy Compiler无法伴随Wwise 2021.1.x版本的SDK使用了,我想这对于想要在Wwise中做比较“Procedural"的声音设计的朋友来可以说是一个非常坏的消息……image001

 image002

这让我也开始担心hvcc会不会因为无人维护最终走向其生命尽头并带走他带给Wwise的原本旺盛的Procedural Audio的火光……直到有一天社区中的一位朋友询问与之相关的问题又紧跟着告诉我他找到了让hvcc继续伴随Wwise2021.1.x版本工作的方法……让我也随着他重新找到了希望!

image003

不过这之后我并没有直接询问他具体如何解决了这个兼容性问题,而是选择自己尝试解决,借这篇博客将过程分享给大家。

准备工作

如果您已经很久没有使用hvcc,为接下来构建插件做一些准备工作或许会是不错的回顾方式。

Requirements

为了复现错误并进行修复,我们需要:

  • 安装Python2,之所以这样是因为hvcc终止维护前都是基于python2开发的,不过最近社区中有朋友在尝试将hvcc迁移到python3
  • 安装1.5.7749,也就是我写作本文时Wwise的最新版本(记得要下载期望部署插件平台的SDK)
  • 下载并解压hvcc (https://github.com/enzienaudio/hvcc),在本文中我将其放在了C:\hvcc_fix\hvcc-master
  • 做一个简单的测试用patch,比如我做了如下图所示的简单的双声道音量控制程序,命名为pd

image004

  • 准备好编译时要敲的指令,保存在文本文件中或streamdeck的快捷键中,方便快速输入,例如:python2 hvcc.py c:\hvcc_fix\hvcc_Workspace\stereoGain.pd -n testTemplateChange -o c:\hvcc_fix\hvcc_Workspace\Builds\ -g wwise,关于指令不同部分的意义见下图。更详细可参考hvcc文档。

image005注:如果您是第一次接触使用PureData+hvccWwise编写插件,欢迎回顾本系列的前两篇博文。

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

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

复现错误

更改SDK路径

要为Wwise2021.1.x版本生成插件,我们需要为hvcc指定Wwise2021.1.xSDK路径方便其读取。

得益于前面的准备,我们可以在hvcc路径下开启命令行工具,迅速地对patch进行编译。

image006

编译完成后前往C:\hvcc_fix\hvcc_Workspace\Builds\wwise\vs2015

image007

使用Visual Studio打开Hv_testTemplateChange_WwiseFXPlugin.sln后会发现其包含地三个.vcxproj无法被加载。

image008

如果你没有更改过template中的sdk信息,就会出现这种情况,稍后我会讲解如何更改hvccvs模板。下图中可见.vcxproj中的sdk还停留在2017

image009

我们需要将WwiseSDKPath更改为期望使用的版本,比如我的Wwise2021.1.5.7749安装在M盘,所以我做了如下图中的更改。

image010

接下来重新加载.vcxproj就可以开始尝试构建插件(复现报错)了。但在那之前,我们来了解一下如何修改hvccvs工程模板以便更快速的进行开发。

image011

修改工程模板

其实我们不用每次生成sln之后都进行修改然后reload,而是可以直接通过修改hvccc2wwise框架内的vs solution模板,从而在编译时直接生成版本信息正确的sln及工程。

image012

如上图所示,hvcc针对Wwise插件生成要使用的模板存放在C:\hvcc_fix\hvcc-master\generators\c2wwise\templates\vs2015,我们可以用随便什么文本编辑工具打开三个.vcxproj文件,修改它们35-37行的SDK路径信息,然后保存、退出。这样之后再编译Patch就可以得到工程被加载好的插件的vs sln

Build(复现报错)

接下来就可以开始build(复现报错)了!

我在这里选择Profile 64位构建设置。

image013

点选solution然后单击右键,选择build solution

image014

不出意外,和社区中朋友们报告的情况一样,出错了,构建失败。

image015

不过先不用慌张。

尝试修复

线索在日志里

接下来让我们看Error List,可以注意到一条信息写着:”GetGameObjectID不是AK::IAkVoicePluginInfo的成员

由此可以推断,如果hvcc结合之前版本的Wwise SDK是可以构建成功的,那么现在AK::IAkVoicePluginInfo中已找不到GetGameObjectID便是构建失败的诱因,只需要在正确的盒子中重新找到它就可以了。

那么GetGameObjectID到底是谁的成员呢?

image016

Hacking...

双击报错条目C2039vs便会跳转至存在问题的代码位置。

下图是我们进行修改前的代码:

image017

我尝试将GetGameObjectID替换为GetPlayingID,构建成功了!

但是……你懂的,我们可能构建成功的同时也弄坏了什么东西。

所以我们还是应该去寻找更可靠的答案。

答案揭晓

为了得到确切的、安全的修复,我询问了我们的CTO - Martin Dufour,从他那里了解到:GetGameObjectID的确已经从AK::IAkVoicePluginInfo移动到了别处(衷心感谢!)。

修复方法非常简单,我们要做的仅仅是把226行中的GetVoiceInfo更改为GetGameObjectInfothat's it!

image018

保存后再进行构建,一切顺利!

image019

尾声

尽管Enzien Audio已经停止对hvcc的更新,但这并没有阻止人们继续使用这套方案。依然存在许多项目使用PD+hvcc做插件原型,甚至用在正式的项目中。

另外值得高兴的是,社区中已经有朋友正在尝试将hvcc升级到python3从而延续生命。

image020

若是感兴趣,可以查看并订阅动态

非常期待进一步的进展。

侯晨钟

大中华区产品专家 - 开发者关系

侯晨钟

大中华区产品专家 - 开发者关系

声音设计师/作曲家/音乐科技研究员,曾任职于育碧上海工作室,参与过《舞力全开》及《孤岛惊魂》系列的声音设计工作。现任Audiokinetic大中华区产品专家,爱好是探寻纸盆起伏与光栅明暗变化间的神秘联系。

评论

留下回复

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

更多文章

十条你得知道的 Wwise Launcher 用法(2019 版)

注:本文基于 2018 年初在 Audiokinetic 公众号上发表的文章《十一条你可能不知道的 Wwise Launcher 用法》,由作者针对软件更新做了改动,不影响操作的截图沿用旧版本。...

15.7.2019 - 作者:李北南

Wwise Unreal 音频整合指南

在此跟大家介绍一下由我们在 Game Audio Resource 的朋友制作的 Wwise 2019.1.4 Unreal 4 音频整合指南。...

10.9.2020 - 作者:Game Audio Resource

Wwise 2021.1 新增功能 | Beta 版本

基于对象的音频管线 Wwise 2021.1 允许根据平台特性灵活地渲染声音,以最大限度地提高终端输出配置的空间定位精度。为便于针对支持 Audio Object 的平台单独保留 Audio...

4.2.2021 - 作者:Audiokinetic (音频动能)

在 Wwise 中设定 Audio Object

未来遥不可及,往日似水流年。亦如费里斯•布勒 (Ferris Bueller) 所说:“生活快速向前,时光转瞬即逝。如不偶尔驻足停留,就可能会错失良辰。”距离 Wwise 2021...

24.8.2021 - 作者:戴米安·卡斯特鲍尔(Damian Kastbauer)

ReaWwise:连接REAPER和Wwise

介绍...

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

Wwise 2023.1 新增功能

Wwise 2023.1 现已推出并可通过 Audiokinetic Launcher 下载。下面来简要介绍一下该版本中都有哪些新增功能。...

7.7.2023 - 作者:Audiokinetic (音频动能)

更多文章

十条你得知道的 Wwise Launcher 用法(2019 版)

注:本文基于 2018 年初在 Audiokinetic 公众号上发表的文章《十一条你可能不知道的 Wwise Launcher 用法》,由作者针对软件更新做了改动,不影响操作的截图沿用旧版本。...

Wwise Unreal 音频整合指南

在此跟大家介绍一下由我们在 Game Audio Resource 的朋友制作的 Wwise 2019.1.4 Unreal 4 音频整合指南。...

Wwise 2021.1 新增功能 | Beta 版本

基于对象的音频管线 Wwise 2021.1 允许根据平台特性灵活地渲染声音,以最大限度地提高终端输出配置的空间定位精度。为便于针对支持 Audio Object 的平台单独保留 Audio...