声音设计师如何利用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大中华区产品专家,爱好是探寻纸盆起伏与光栅明暗变化间的神秘联系。

评论

留下回复

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

更多文章

SoundSeed Grain 的开发历程

很长时间以来,由于粒子合成器在声音设计上的广泛应用,我们一直都想为 Wwise 开发一款通用的粒子合成器插件。这样就可以利用它生成各种各样的声音,来为游戏设计提供丰富灵活的支持。 我记得几年前曾在...

12.8.2019 - 作者:路易斯-扎维尔·布法尼 (Louis-Xavier Buffoni)

Wwise 2019.2 现已上线!

Wwise 2019.2 现已上线并可以在 Wwise Launcher 的 Wwise 标签页进行下载!以下是关于此版本的新功能摘要。 ...

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

Wwise八个易忘小操作

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

2.3.2020 - 作者:洪伟森

Impacter 与 Unreal | 利用游戏物理控制 Impacter 插件

简介 Impacter 是最近针对 Wwise 开发的一款撞击建模插件原型(详可参阅这篇博文)。在本文中,我将介绍如何使用 Impacter 来实现声音并整合到采用 Unreal Engine...

14.9.2021 - 作者:肖恩·索拉汉(SEAN SORAGHAN)

Wwise 2022.1 新增功能

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

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

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

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

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

更多文章

SoundSeed Grain 的开发历程

很长时间以来,由于粒子合成器在声音设计上的广泛应用,我们一直都想为 Wwise 开发一款通用的粒子合成器插件。这样就可以利用它生成各种各样的声音,来为游戏设计提供丰富灵活的支持。 我记得几年前曾在...

Wwise 2019.2 现已上线!

Wwise 2019.2 现已上线并可以在 Wwise Launcher 的 Wwise 标签页进行下载!以下是关于此版本的新功能摘要。 ...

Wwise八个易忘小操作

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