menu
 

Update on Wwise Support in Heavy

오디오 프로그래밍

Table of Contents

Intro

Heavy, or hvcc, is a tool that converts Pure Data patches into different compiled formats, like VST or Daisy firmware. Originally from Enzien Audio, this project is currently being actively developed by Wasted Audio.

Wwise support needed a refresh for quite some time and it's exactly what I've done recently. Apart from upgrading Wwise generator to Audiokinetic's new Plugin API, I've also added support for more channel configurations (5.1, 7.1, and 7.1.4), as well as an ability to post events from within a plugin. In this article, I'll go over new features with examples how to set them up.

One additional change was in how source code is generated. Instead of generating a Visual Studio project directly, a project in a format expected by Audiokinetic's Development Tools is produced instead. This simplifies matters for end-users and, as a bonus, allows to package plugins into bundles that can be installed from the Audiokinetic Launcher, which makes distribution a breeze.

I'll be using a brilliant Pure Data fork called plugdata for all examples, as it has a 'compile mode' which warns about using objects that are not supported by Heavy. In the future, I may also add support for building Wwise plugins straight from plugdata.

Installation and Usage

Hvcc is a Python tool that can be installed from command line:

pip install hvcc

This will install an hvcc command in the terminal. For example, this prints documentation:

hvcc -h

You'll also need to install Visual Studio with correct dependencies. Either 2019 or 2022 versions will work, but the latter only works with Wwise versions higher than 2022.1.5. Which exact components to install is listed in the documentation, so I'll just limit myself to dropping a screenshot of my VS2019 installation as an example:

wwise_hvcc_vs2019

Figure 1: List of Visual Studio packages that I have installed on my computer; you can probably ignore any .NET and UWP packages.

New Features Rundown

 

Support for More Channel Configurations

Previously, it was only possible to build either mono or stereo plugins. With new changes, it's now possible to build 5.1, 7.1, and 7.1.4 configurations for both, source and effect, plugins. Which one to build, will be defined by the number of channels declared in [adc~] and [dac~] objects.

wwise_hvcc_multichannel

Figure 2: On the left - 5.1 volume control effect. On the right - 7.1 55 Hz oscillator with volume control.

Unfortunately, Heavy plugins cannot change channel configuration on the fly when output device changes, so to use them on a bus, the bus must be set to required configuration. Wwise will downmix or upmix the signal as needed. Plugins will print an error when initialised on a bus with unsupported configuration.

wwise_hvcc_bus_config

Figure 3: Busses that have multi-channel effect plugins must set their configuration explicitly.

Posting Arbitrary Events and Setting RTPCs

This update now allows triggering arbitrary Wwise events from within a Heavy plugin via send objects, similarly to how it was possible to output RTPCs. You can even make control-only plugins, though technically they'll be compiled as mono source plugins that always output silence. Such plugins can either compute statistics on incoming parameters and set a new RTPC, or you can even turn incoming RTPCs into events to implement reactive audio systems. A figure below shows how such send objects are annotated for this purpose.

Note, Wwise Authoring doesn't load events and their data at startup. That means, posting events from a plugin running in the Authoring will fail with Event ID not found error. To work around this, just play the event in question in the Events tab once to force Wwise to load its associated data.

wwise_hvcc_control_only

Figure 4: A control-only patch that turns Param1 value change into a trigger that posts Play_Test_Sound event, and computes the average of Param1 and Param2 and sets it as Param_Avg RTPC on the same game object.

Packaging Plugin for Audiokinetic Launcher

As Heavy generates project format compatible with Audiokinetic's build tools, it's now possible to bundle your plugins into a package that can be installed from the Audiokinetic Launcher. It makes it very easy to distribute custom plugins to others, and it's even possible to include builds for different platforms. The Heavy documentation provides a step by step guide how to do this, and I won't be repeating it here.

There is one thing to keep in mind. Currently, your plugin must follow a format the same way Audiokinetic numbers Wwise version. E.g. if you target Wwise 2022.1, then your plugin must have a version number of 2022.1.X.Y. If you don't like this behaviour, then just modify target Wwise version in the bundle_template.json file that was generated when converting Pure Data patch.

To make life easier and follow instruction as is, WWISEROOT and WWISESDK environment variables should be set correctly via the Audiokinetic Launcher (Set Environment Variables… button):

wwise_hvcc_envvars

Figure 5: Settings relevant WWISEROOT and WWISESDK environment variables.

Outro

This was a short update on Wwise things in Heavy. If you have any suggestions or feature requests, please, drop them to Wasted Audio Discord or GitHub.

And if you never used Heavy before, I'd recommend checking a series of blog posts "How Sound Designers Use PureData + Heavy" by Chenzhong Hou here on Audiokinetic blog for an extended introduction. Special thanks to Ben McCullough for his post on this blog earlier this year about their experience with making a multi-channel effect plugin with Heavy – his article provided inspiration to add support for more channel configurations.

Eugene Cherny

Audio Programmer

Eugene Cherny

Audio Programmer

Audio programmer, currently working in games industry. Have a little bit of experience in art and academia.

https://eugn.ch/

LinkedIn

댓글

댓글 달기

이메일 주소는 공개되지 않습니다.

다른 글

Wwise와 REAPER의 연결: Part 1 - WAAPI 전송

WAAPI Transfer가 새로운 것은 아니지만, 그것에 대한 충분한 이야기가 없는 것 같습니다. WAAPI는 REAPER의 오디오 에셋을 Wwise 프로젝트로 직접 내보낼 수...

1.4.2020 - 작성자: 니콜라 루키치 (NIKOLA LUKIĆ)

Wwise와 REAPER의 연결: Part 2 - ReaOpen

ReaOpen은 오디오 파일을 선택하고 원래의 REAPER 프로젝트를 쉽게 열 수 있는 무료의 가벼운 프로그램입니다. Windows와 Mac 모두에서 실행되며 Wwise,...

7.4.2020 - 작성자: 니콜라 루키치 (NIKOLA LUKIĆ)

누구나 사용할 수 있는 WAAPI - 제 1부: 개요

안녕하세요. 저는 왕양 (汪洋) 이라고 합니다 (혹은 ‘씨 예’, 溪夜라고도 불립니다). 저는 작년 하반기에 WAAPI에 대해 알게 되었습니다 (Wwise 저작 API). 저같이...

30.3.2021 - 작성자: 토마스 왕 (THOMAS WANG, 汪洋)

Wwise 저작 쿼리 언어, WAQL을 소개합니다

“Wwise는 스프레드시트(표 계산 소프트웨어) 같아요”. 이 말은 제가 사용자 환경팀으로서 자주 듣는 말입니다. 사실 Wwise는 사운드 디자인 도구이지만 사실 안을 들춰보면...

24.6.2021 - 작성자: 베르나르 로드리그 (Bernard Rodrigue)

Wwise 2021.1 저작 플러그인 | 제 1부: 역사와 목표

Wwise 생태계에 대해 잘 알려지지 않은 특징 중 하나는 바로 확장성입니다. 프로젝트에 사용할 플러그인을 회사들이 직접 만들기도 하고 판매사는 (가끔은 저희 도움을 통해) 자체...

18.8.2021 - 작성자: 미셸 도네 (Michel Donais)

ReaWwise를 사용한 ReaScript(Lua)에서의 WAAPI

ReaWwise에서 잘 알려지지 않은 기능 중 하나는 원시적 WAAPI 함수를 REAPER에 노출하여 사용자 정의 ReaScript에서 사용할 수 있다는 것입니다. 이 블로그...

20.11.2024 - 작성자: 앤드류 코스타 (Andrew Costa)

다른 글

Wwise와 REAPER의 연결: Part 1 - WAAPI 전송

WAAPI Transfer가 새로운 것은 아니지만, 그것에 대한 충분한 이야기가 없는 것 같습니다. WAAPI는 REAPER의 오디오 에셋을 Wwise 프로젝트로 직접 내보낼 수...

Wwise와 REAPER의 연결: Part 2 - ReaOpen

ReaOpen은 오디오 파일을 선택하고 원래의 REAPER 프로젝트를 쉽게 열 수 있는 무료의 가벼운 프로그램입니다. Windows와 Mac 모두에서 실행되며 Wwise,...

누구나 사용할 수 있는 WAAPI - 제 1부: 개요

안녕하세요. 저는 왕양 (汪洋) 이라고 합니다 (혹은 ‘씨 예’, 溪夜라고도 불립니다). 저는 작년 하반기에 WAAPI에 대해 알게 되었습니다 (Wwise 저작 API). 저같이...