Wwise Unreal Integration Documentation: Wwise Unreal Integration

Wwise Unreal Integration Documentation
Wwise Unreal Integration

The Wwise Unreal Integration is an Unreal plug-in that allows the use of the Wwise Sound Engine in Unreal games. This information complements the Wwise SDK and Wwise Help doc. See the Wwise SDK for the complete set of features supported by Wwise at runtime.

Documentation

This document includes the following main sections:

  • Requirements
    What is required by the plug-in.

  • Installation
    How to install this plug-in.

  • Building the plug-in
    How to generate an Unreal build containing the plug-in.

  • Using the Integration
    How to use the integration. Description of available features.

  • Introductory Tutorials
    A series of tutorials for beginners using the Wwise Unreal Integration.

  • Going Further
    How to get the most of your integration with Spatial Audio and Customizable Modules.

  • Release Notes 2022.1.5.8242.2714
    What has been added and changed in this version of the plug-in.

  • Previous Release Notes
    Refer to this section to read the list of changes made to the plug-in in previous Wwise releases.

  • Known Issues
    Refer to this section to read the list of known issues found in the integration.

  • Android-Specific Information
    Refer to this page to read about Android-specific information.

  • iOS-Specific Information
    Refer to this page to read about iOS/tvOS-specific information.

  • Open Source Components in Wwise
    Refer to this page for licenses of open source components in the integration.


Wwise Unreal Integration Documentation: Requirements

Requirements

Unreal Engine

Each release of the Unreal Wwise plug-in is customized for certain versions of the Unreal Engine. Be sure to use one of the supported versions of the Unreal Engine, as indicated in Release Notes 2022.1.5.8242.2714

Unreal Project Defaults

The Wwise Unreal Integration does not support Blueprint-only Unreal projects. During project creation, you must select the C++ Project Default, although you can add Blueprints to your C++ projects later. Refer to Creating a New Project for more information about project creation and Project Defaults.

Wwise

This plug-in is based on Wwise 2022.1.5 build 8242; while it is possible to use an alternate version of the Wwise SDK, modifications to the plug-in code may be necessary.

Platforms

This plug-in has been tested on Windows, Mac, Linux, Xbox One, Xbox Series X, Playstation 4, Playstation 5, Nintendo Switch, Android, iOS, tvOS, Hololens, and Stadia. Modifications may be required to target other platforms.

Note that to ease cross-platform development, it is mandatory to have installed the Windows and Mac Wwise SDKs before installing the Unreal Wwise plug-in.

Development Environment Setup

Refer to the Unreal Engine documentation.

For UE4:

  • "Downloading Unreal Engine 4 Source Code"
  • "Setting Up Visual Studio for Unreal Engine 4"
  • "Building Unreal Engine 4 from Source"

For UE5:

  • "Downloading Unreal Engine 5 Source Code"
  • "Setting Up Visual Studio for Unreal Engine 5"
  • "Building Unreal Engine 5 from Source"


Wwise Unreal Integration Documentation: Installation

Installation

Before proceeding, review the Requirements page and make sure you have installed supported versions of the Unreal Engine and Wwise.

This UE integration package contains files related to the Wwise plug-in only; it does not contain the entire Unreal Engine source code, nor the Wwise SDK.

If you are migrating a project from an earlier version of Wwise to version 2022.1, refer to Upgrading Projects to Wwise 2022.1.

For suggested system configurations for large and small development teams, refer to Understanding Development Workflows.

Installation Procedures

There are two ways of installing the Wwise Unreal Integration: either as a game plug-in or as an engine plug-in - not both.

Note:
For more information on the difference between engine and game plug-ins (sometimes referred to as "installed" plug-ins), refer to the Unreal Engine documentation.

Installing the Wwise Unreal Integration as a Game Plug-in

Installing Wwise as a game plug-in is handled by the Audiokinetic Launcher. Refer to Integrating Wwise into an Unreal Project in the Launcher documentation.

It is also possible to integrate Wwise using offline integration files. Refer to Using Offline Files to Install Unity or Unreal Integrations in the Launcher documentation.

Refer to Changes to your Wwise Project to understand what happens to your Wwise project.

Managing Wwise Plug-ins

There are various plug-ins available for Wwise, which need to be installed correctly in order to be used in the Wwise Unreal Integration. Plug-ins for Wwise are managed via the Audiokinetic Launcher. For more information on managing plug-ins for Wwise, refer to the Adding Plug-ins to Unity and Unreal Integrations in the Launcher Documentation.

Note:
If there are plug-ins missing from your Wwise installation when you use the Wwise Unreal Integration, you will see the following error: LogAkAudio: Error: Could not find plugin dynamic library.

Installing the Wwise Unreal Integration as an Engine Plug-in

Caution:
Installing the Wwise plug-in for Unreal as an engine plug-in is intended for expert users only.

If you will be working on multiple Unreal projects and Wwise will be used in each of them, you might want to install the Wwise Unreal Integration as an engine plug-in.

  1. Downloading the Wwise Unreal Engine integration package:
    1. Open the Audiokinetic Launcher and select the Unreal page.
    2. From the RECENT UNREAL ENGINE PROJECTS menu, select Download Wwise Integration to use as an engine plug-in. The Download Wwise Unreal Integration page opens.

    3. Select the Wwise Integration Version that starts with the desired Wwise version number.
    4. Select the Unreal Version corresponding to the one you have installed.
    5. Specify the desired Download Directory. The Launcher automatically populates this field with C:\Users\<username>\Documents\Wwise Unreal Engine integration. If the folder already exists, its content will be overwritten.
    6. Click Download. The Unreal page displays OFFLINE FILE DOWNLOADS above the projects list with a progress bar, the Unreal Engine Integration plug-in version, and the directory path. Wait for the download to finish before you continue.

  2. Copying the Wwise integration and SDK files to the Unreal Engine Plugins folder:
    1. Within the Wwise Unreal Engine integration folder, you will find a folder called Wwise. Copy the Wwise folder to your existing Plugins folder; …\<UE installation directory>\Engine\Plugins.
    2. Within the …\<UE installation directory>\Engine\Plugins\Wwise folder, create a folder called ThirdParty.
    3. During the packaging process, the Unreal Editor might need to rebuild the Wwise UE integration. For this reason, you must copy several folders from the Wwise SDK installation folder to the Wwise\ThirdParty plug-in folder hierarchy. Open the following folders:
      • Source: C:\Program Files (x86)\Audiokinetic\Wwise 2022.1.5.8242\SDK\
      • Destination: ...\Plugins\Wwise\ThirdParty\
    4. Copy the following folders from the source folder to the destination folder:
      • include
      • Win32_*
      • x64_*
      • Mac
    5. If your project will be deployed on other platforms that have a folder in the SDK source folder, you must copy those folders (which contain the platform's libraries) to the ThirdParty folder as well.

  3. Enabling the plug-in and linking your Unreal and Wwise projects:
    1. In the Unreal Editor, open your project.
    2. From the toolbar, click Edit > Plugins.
    3. In the dialog box that opens, navigate to the Installed > Audio page.
    4. Select the check box under Wwise Unreal Engine integration to enable the plug-in.
    5. From the toolbar, click Edit > Project Settings.
    6. Navigate to the Wwise > Integration Settings page.
    7. Specify the Wwise Project Path in the Installation section and close the dialog box.

Refer to Changes to your Wwise Project to understand what happens to your Wwise project.


Wwise Unreal Integration Documentation: Upgrading Projects to Wwise 2022.1

Upgrading Projects to Wwise 2022.1

About Wwise 2022.1 Unreal Integration

This version is a major milestone in the Unreal Integration for Wwise. Much like Unreal Engine 5 bringing the engine to a new realm, Audiokinetic’s Wwise Integration for Unreal pushes the boundaries of what is possible with both tools working together. The changes span more than one year of hard development work, as well as many discussions with developers who want to push the boundaries of what is possible with the Wwise and Unreal combo. There were many lessons learned during the incremental optimizations and feature requests throughout the previous years. For example, we initially wanted to support every single possible workflow, where every single game has its own prerequisites and it is a pipe dream to make every fantastic usage working without customization. As such, we are very thankful to Wwise users for making their joys, hurdles and frustrations known to us. This is what ultimately allowed the priorities to be set.

Quick Start

Migrating to Wwise 2022.1

Before beginning the migration process, ensure that you can modify all the necessary files in the Wwise and Unreal projects.

Files you will need to check out in version control:

  • The entire Wwise project directory
  • All Unreal Wwise Assets (Events, SoundBanks, Aux Busses, etc.)
  • Unreal project settings files:
    • DefaultGame.ini
    • DefaultUser.ini

You may also need to check out Maps or Blueprints referencing AkAudioBank assets as these files will be deleted as part of the migration process.

As usual, migration begins by upgrading the Wwise Unreal Integration from the Unreal tab in the Wwise Launcher.

Note:
If your project was previously using 2022.1.0 Beta 2, a change in casing in some file names might cause build issues on platforms where the file system is case-sensitive. Ensure that all files containing the word "ShareSet" in their file name are spelled correctly (with each S capitalized in "ShareSet") after upgrading from the Wwise Launcher.

After the upgrade is complete, open the Wwise Project and a “Project Migration” dialog will present itself.

Click the Update button to continue.

After the Wwise project is updated and saved, you can open your Unreal project. When it opens, the Wwise Integration Migration dialog appears. In the dialog, you can choose which migration operations to perform. We recommend that you perform all of the migration operations immediately, but you can defer the migration process or perform each operation separately if necessary. If you want to perform these steps independently, we recommend that you read the Partial Migration and Project Migration State section before attempting to migrate your project. When multiple migration operations are selected, they are performed in the same order as they appear in the Migration Window. The migration dialog remains accessible in the Build Menu under Audiokinetic Migration > Finish Project Migration until all migration operations are complete.

There are four distinct operations in the migration:

  • SoundBank Migration
  • Delete deprecated assets
  • Migrate Wwise Assets
  • Update Project Settings

SoundBank Migration

SoundBank management has been returned to Wwise Authoring and therefore AkAudioBank assets are no longer required. In the previous workflow, SoundBanks were represented in the Unreal Project as manually created AkAudioBank assets. Event and Aux Bus assets could then be manually grouped into these SoundBanks. This was necessary in the Legacy workflow, but optional when using Event Based Packaging.

Depending on whether your Unreal project contains AkAudioBank assets, this section in the dialog may or may not appear. In Wwise 2022.1, This migration operation will help you transfer your existing SoundBanks from your Unreal project back to the Wwise project and clean up the deprecated AkAudioBank assets.

Option | Description
Transfer SoundBanks to Wwise | When checked, you must select a transfer method. See the Transfer methods section below.
Transfer Auto Load property | AkAudioBank assets in Unreal had a property which allowed users to specify whether the bank data should be loaded automatically with the asset (e.g. as soon as the asset is used in a blueprint) or manually. If checked, the value of this property will be transferred to the assets that were grouped within the bank.
Delete AkAudioBank Assets | All AkAudioBank assets in the project will be deleted. If you also checked Transfer SoundBanks, this step will be completed after the transfer is completed. We recommend deleting these assets, as they no longer serve a purpose. After they are deleted, it will no longer be possible to "Transfer SoundBanks to Wwise".

Transfer methods

Soundbanks are transferred to Wwise either by creating a SoundBank Definition File or by using WAAPI.

Create SoundBank Definition File will create a text file containing a list of SoundBank names and their content, which can then be imported into Wwise. If this option is selected, a field appears, in which you can select the destination for the generated file. For specifics on how to import this file into your Wwise project, consult the official documentation.

WAAPI will use the established WAAPI connection between the Unreal Editor and Wwise Authoring to update the Wwise Project to contain the SoundBanks. Be sure to save your Wwise project once the SoundBanks are transferred.

Wwise Authoring must be open for this to be usable. If you are not able to establish a WAAPI connection, the “Auto Connect to WAAPI” project setting may be disabled in your Wwise User Settings.

Failed SoundBank Transfers

If the WAAPI transfer of SoundBanks to Wwise fails partially, or if the process fails to write to the SoundBank definition file, a dialog appears with a list of errors. In the dialog, you can either cancel the migration or ignore the errors and continue. Some errors may be acceptable or expected. For example, if events that were removed from the Wwise project still exist as assets in the Unreal project, WAAPI calls involving those events will fail.

Delete deprecated assets

Some Wwise asset types used in the previous integration version have been deprecated and should be removed from the project. By selecting the Delete Deprecated Assets option, all assets of type AkMediaAsset, AkFolder and AkPlatformAssetData will be deleted.

Migrate Wwise Assets

Wwise asset properties have changed and they no longer serialize SoundBank or media binary data. The only information serialized to Wwise assets now is their GUID, ShortID, Name, and type-specific metadata properties used when loading or cooking the assets. During cooking, the information necessary for resource loading is serialized to the asset packaged in the game.

Selecting Migrate Wwise assets marks all Wwise assets in the project as dirty and save them. If you were previously using EBP and Split Switch Container Media was enabled, all events will have the EventInfo.SwitchContainerLoading flag set to LoadOnReference before saving.

Note:
If you choose Migrate Wwise Assets as the only migration operation, it will not be possible to "Transfer SoundBanks to Wwise" afterwards, because the information necessary to do so will have been erased from the relevant assets.

Update Project Settings

Selecting Update Project Settings will update project settings depending on whether you were using Event-Based Packaging or the Legacy workflow. Be sure to save your projects after changes have been made.

Event-Based Packaging:

  • In Wwise:
    • Enable Auto Defined Soundbanks will be enabled.
    • Create Sub-Folders for Generated Files will be enabled if Split Media Per Folder was enabled.
  • In Unreal:
    • The Wwise Sound Data Folder will be removed from Directories To Always Cook.

Legacy: No settings will be changed in the Wwise project.

  • In Unreal:
    • The Wwise Sound Data Folder will be removed from Directories To Always Stage As UFS.
    • Generated .bnk and .wem files in the Wwise Sound Data Folder will be deleted.

In both cases:

  • The path set in the GeneratedSoundBanks folder location field will be applied to the Generated Sound Banks Folder setting in the Unreal project's Wwise Settings. The field defaults to the current GeneratedSoundBanks Folder path set in the Unreal project. We recommend using the standard <Wwise Project\/GeneratedSoundBanks path, unless your project has specific requirements.
Warning:
If you modify the Generated Sound Banks folder location during migration, you might need to manually update the setting in Wwise. See Settings Requiring Manual Update.
Note:
In Legacy projects, the GeneratedSoundBanks Folder had to be placed within the Unreal project's Content folder for packaging purposes. This is no longer necessary and we discourage using a folder within the Unreal project's Content for GeneratedSoundBanks. If the GeneratedSoundBanks Folder is inside the Unreal's Content Folder, you will be prompted to import files when SoundBanks are generated.You can ignore these prompts, but we recommend that you keep the GeneratedSoundBanks Folder outside of the Unreal project to avoid the prompts altogether. The GeneratedSoundBanks Folder can be changed at a later time in the Wwise Authoring Project Settings and the Unreal Project Settings. Both settings must be kept up to date independently.

Once all operations from the migration dialog are completed, your project should be ready, unless it uses external sources, which will require an additional migration step.

The Project Migration Commandlet

The integration also provides a commandlet (refer to Using the Project Migration Commandlet) to perform the migration operations described in the previous section from the command line.

Settings Requiring Manual Update

Wwise Installation Path (In Unreal) If you have Wwise installed on your machine, and you want to generate SoundBanks from within Unreal without using WAAPI, you must set the Wwise Mac/Windows Installation Path setting in the Wwise User Settings.

SoundBanks Root Output Path (In Wwise) We recommend verifying that the Root Output Path in Wwise authoring's SoundBanks Settings corresponds to the path set in the Generated Sound Banks Folder in the Unreal Wwise Settings.

Note:
The Root Output Path is relative to the Wwise project, while the Generated Sound Banks Folder is relative to the Unreal project's Content folder.

In the case of migrated Legacy projects, ensure that platform-specific SoundBank Folder settings do not point to a location within the Unreal project's Content folder.

Migrating External Sources

The implementation of support for external sources has changed dramatically in 2022.1. It allows for advanced users to implement their own systems for setting and tracking external sources. We also provide basic support with the WwiseSimpleExternalSourceManager, which uses Unreal Data Tables to track external source media and provides an API and blueprint functions to assign media to external source IDs.

The FAkExternalSourceInfo and FAkSDKExternalSourceArray structures are no longer used by this module. For each instance of an FAkExternalSourceInfo being created in a blueprint you will want to replace it with a WwiseSimpleExternalSourceManager::SetExternalSourceMedia blueprint node.

Afterwards, you can remove any references to them in your blueprints. You may also need to recompile blueprints containing PostEvent nodes that were linked to FAkSDKExternalSourceArrays.

For more in-depth information about how to work with External Sources in Wwise 2022.1, consult Using the Wwise Simple External Source Manager.

Partial Migration and Project Migration State

We recommend that you perform all migration operations at the same time. However, if you want to perform the steps one at a time, or perform certain operations manually, be aware of the following:

  • Migrating assets will erase the SoundBank grouping information contained in Event and Auxiliary bus assets, rendering subsequent attempts to transfer SoundBanks from Unreal to Wwise ineffective. It will also make it impossible to transfer the "AutoLoad" setting from the AkAudioBank assets to the Events or Aux Busses which were grouped in them.
  • Deleting deprecated assets and deleting AkAudioBank assets may require additional (non-Wwise) assets to be checked out, if they contained references to deleted assets.

Project migration state is mainly tracked using fields in the DefaultGame.ini file:

  • bSoundBanksTransfered: Tracks whether the SoundBank Transfer operation has been performed.
  • bAssetsMigrated: Tracks whether the Asset Migration operation has been performed.
  • bProjectMigrated: Tracks whether the Project Migration operation has been performed

The migration process updates these settings depending on whether the corresponding migration operation succeeded.

Project migration state is also determined based on the contents of the Unreal project. If the project contains no AkAudioBank assets, no SoundBank migration is needed and the setting is updated automatically. Likewise, the option to delete deprecated assets is only presented if deprecated assets are found in the project.

Finishing the Migration

Once the migration is complete, you must regenerate your Wwise SoundBanks. This can be performed from the Wwise Picker or Build menu in Unreal, or directly in Wwise (now that SoundBank management has been returned to Wwise).

After SoundBank generation has succeeded, you should now be able to view your Wwise Project structure in the Wwise Picker and hear sounds when you Play In Editor.

Note:
The following message might appear after migrating:

Unable to load <Asset>_FOLDER with outer Package <Package> because its class does not exist..

These assets are no longer useful in 2022.1. You can delete any such assets if they still exist in your project (manually or during migration), but otherwise this message can be ignored.

Spatial Audio

Portals

  • The AkPortalComponent functionality has been updated such that calls to OpenPortal and ClosePortal no longer 'stack'. This means a call to OpenPortal will immediately open the portal, and a call to ClosePortal will immediately close the portal. With the old functionality, multiple calls to OpenPortal would require the same number of ClosePortal calls in order for the portal to be closed. If you have code that relies on this functionality you should update it.

AkGeometry Components

  • The default Mesh Type of the AkGeometryComponent was changed to Simple Collision to optimize adding such components in your map. After updating to 22.1, if you had AkGeometryComponent set to Static Mesh, you must set them again because they will have changed to Simple Collision.

PreDelay unit changed from seconds to milliseconds

  • In the Unreal integration, the PreDelay reverb parameter was previously estimated in seconds. This value is now computed in milliseconds. Users must update RTPCs that receive the PreDelay value so that the RTPC ranges over milliseconds. For example, if the previous range of an RTPC mapped to PreDelay was 0.0 to 1.0 (seconds), the range must be changed to 0.0 to 1000.0 (milliseconds).

CollisionChannel Properties

  • The underlying type for the CollisionChannel properties in AkSpatialAudioVolume and AkAcousticPortal, and the OcclusionCollisionChannel property in AkComponent has changed. This was done in order to be more explicit about what happens to existing objects when the project default collision channel is changed. If you have code that manipulates these properties directly either though Blueprint or C++, you will need to update the type and recompile.

Grouping Events into SoundBanks

Previously, you could group Events into SoundBanks by right-clicking assets and selecting Group into Sound Bank. This is no longer possible; however, you can achieve the same result by using User-Defined SoundBanks in the Wwise Authoring application.


Wwise Unreal Integration Documentation: Using the Project Migration Commandlet

Using the Project Migration Commandlet

The Wwise Unreal plug-in includes a Commandlet you can use to migrate your Unreal projects to Wwise version 2022.1 from the command line.

Commandlet Usage and Parameters

Usage of the Commandlet is:

<UnrealEditor.exe> <path_to_uproject> -run=AkMigration [ [-transfer-bank-waapi] OR [-generate-bank-definition=<Path/To/Save/FileName>.tsv] ][-ignore-bank-errors] [-transfer-bank-autoload] [-delete-banks] [-migrate-assets] [-update-settings] [-delete-deprecated-assets] [-generated-soundbanks-folder=<Path/To/Folder>]
Note:
If you are using Unreal Engine 4, the executable is named UE4Editor.exe.

The following parameters perform the same operations available in the Migration Window. These operations are detailed in the Upgrading Projects to Wwise 2022.1 page.

  • transfer-bank-waapi: (Optional) Transfers SoundBanks in the Unreal project to Wwise through WAAPI. This parameter cannott be used with 'generate-bank-definition'.
  • generate-bank-definition: (Optional) Creates a SoundBank definition file at the specified path. Use an absolute file path (C:...). You must then manually import the file into Wwise manually to create the SoundBanks. This parameter cannot be used with 'transfer-bank-waapi'.
    • ignore-bank-errors (Optional) Ignores any errors that occurred during bank transfer through WAAPI or when writing to the SoundBank Definition file and continues migration.
  • transfer-bank-autoload: (Optional) Transfer the AkAudioBank AutoLoad property to assets grouped in it.
  • delete-banks: (Optional) Deletes all SoundBank assets in the Unreal project after the transfer is complete.
  • delete-deprecated-assets: (Optional) Deletes all deprecated Wwise assets that are still in the project.
  • migrate-assets: (Optional) Migrates the Wwise assets in the project.
  • update-settings: (Optional) Updates the Wwise and Unreal Project settings.
    • generated-soundbanks-folder: (Optional) The path to the GeneratedSoundBanks folder used with the 'update-settings' switch. Use an absolute file path (C:/...). This parameter sets the Generated Sound Banks Folder setting in the Unreal project.
  • help: (Optional) Prints a message that describes all parameters and quits the Commandlet immediately.

Example Usage

C:\UE_5.0\Engine\Binaries\Win64\UnrealEditor-Cmd.exe C:\MyProjects\Demo\WwiseDemoGame.uproject -run=AkMigration -transfer-bank-waapi -transfer-bank-autoload -delete-banks -migrate-assets -delete-deprecated-assets -update-settings -generated-soundbanks-folder="C:/Project/WwiseProject/GeneratedSoundBanks"
Tip:
The Commandlet window closes as soon as the command is executed. To output the results of the command to a text file, add > log.txt to the end of your command. A text file named log.txt is created in the current directory and contains any errors or warnings.

Order of Operations

The migration operations are performed in the same order as the in-editor migration, regardless of the order of the parameters in the command line. The order is as follows:

  1. Bank migration
    1. Auto Load property transfer
    2. Bank Transfer (WAAPI or SoundBank Definition file)
    3. Deprecated AkAudioBank asset deletion
  2. Wwise asset migration
  3. Deprecated asset deletion
  4. Update project settings


Wwise Unreal Integration Documentation: Understanding Development Workflows

Understanding Development Workflows

Game development projects vary greatly in complexity, size, and team composition. Depending on the size of the development studio and the nature of the project, sound design and integration might be a specialized task with its own team of internal sound designers, it might be outsourced to a third party that specializes in sound and music, or it might be divided among a small development team responsible for all aspects of game development.

In different development scenarios, the development workflow changes accordingly. Some roles might use Wwise exclusively and no other development tools, others might use Unreal exclusively, while others might use both tools. The development workflow affects some aspects of the Wwise Unreal Integration because certain integration features require an active connection between Unreal and Wwise through WAAPI.

Development Workflows for Large Teams

Large development teams usually divide work among specialists such as sound designers, game developers, and audio integrators. Depending on the structure of the team, some contributors might work with Unreal and Wwise, while others might only use one of the two. The following sections contain suggested configurations for different development roles.

Setup for Game Developers

Many game development roles do not need to work with Wwise: 2D and 3D artists, gameplay developers, UI/UX specialists, and so on. For these users, Wwise Authoring is not required but we recommend that the appropriate team add the GeneratedSoundBanks folder to your source control system. Specifically, we strongly recommend that you add the following file extensions to source control:

  • *.json
  • *.bnk
  • *.wem In order for developers to run the Integration code and have sound, they only need to do two things:
  • Install the Wwise plug-in.
  • Be able to access the GeneratedSoundBanks folder for the Editor platform (Windows or Mac). You can change the GeneratedSoundBanks path in Unreal in the Project Settings under the Wwise Integration Settings, and in Wwise Authoring in the SoundBank Settings.

Setup for Audio Integrators

The recommended setup for audio integrators is almost the same as the one for game developers, although in this case a Wwise Authoring installation can be beneficial. Audio integrators can use the WAAPI connection between Wwise Authoring and Unreal to streamline asset integration, although this is not a requirement.

The principal advantage of installing both Wwise and Unreal is that this setup supports dynamic asset creation and modification of the Wwise project through the integration: you can create or fix Events and names in Wwise Authoring or in Unreal through the Wwise Browser.

Using Naming Conventions for Asset Creation

Audio integrators must sometimes ensure that assets follow naming conventions. The setup described in the previous section facilitates predictable asset naming in two ways:

  • You can first create assets in Wwise according to the desired naming convention, which ensures Events with stable GUIDs and correct Event IDs. In Unreal, you can then use the Wwise Browser to drag the newly created Events into folders in the Content Browser.
  • Alternatively, you can create assets together with the synchronization option. This approach requires both Wwise Authoring and Unreal to be open at the same time.

Setup for Technical Audio Designers

Technical audio designers typically work in both Wwise and Unreal. Therefore, in an optimal setup, both Wwise Authoring and Unreal are open at the same time and a WAAPI connection is maintained between the two. If you enable the WAAPI asset synchronization option, any Wwise Events you create in the Wwise project are automatically created in the Unreal project as well. These assets are created in a default folder hierarchy, but you can move them if required.

If SoundBanks are generated by a server or if designers need to experiment, you can temporarily override the GeneratedSoundBanks folder location through a user setting. You can do this in Unreal (through the project's Wwise User Preferences) and in Wwise Authoring (in the SoundBank Generation user preferences). Ensure that both point to the same folder location.

Setup for Third-Party Interactive Audio Designers

Third-party audio designers often work exclusively in Wwise, so the only things they need are Wwise Authoring and the Wwise project. If the designers prefer not to use Wwise Soundcaster, then obviously they need Unreal as well.

Setup for Servers

For large projects, it can be useful to have a dedicated server for SoundBanks. The SoundBank generation commandlet (see Generating SoundBanks with the GenerateSoundBanks Commandlet) can run on this server on a schedule, for example every night, and push the generated SoundBanks to a location under source control. Other developers can then work with latest SoundBanks in Unreal without the need to generate the banks themselves. In large projects, SoundBank generation can be time-consuming and there might be multiple contributors who work on different parts of the game audio (music, speech, sound effects, and so on) so automation can make the process more efficient than manual SoundBank generation.

However, some users might need to generate SoundBanks themselves to experiment or test during the course of development. In this case, you can maintain the server-based setup but use user overrides to generate SoundBanks locally. Refer to Overriding Generated SoundBanks Directories for Local Users for more information.

Development Workflows for Small Teams

Small teams develop their products holistically, without a variety of specialists who work on different aspects of the game (such as audio). In this scenario, we recommend that all users start with the same generic configuration: use the same pre-installed Unreal Engine and the same version of Wwise Authoring. It might be necessary for the developers to generate SoundBanks every time they retrieve the project from source control, although this process is much faster for small projects than for large ones.


Wwise Unreal Integration Documentation: Changes to your Wwise Project

Changes to your Wwise Project

When you open the Unreal project for the first time after you integrate Wwise, certain settings in the Wwise project will change if they were set differently before.

When you open the SoundBank Settings (Project > Project Settings > SoundBanks), you can see that the following settings are enabled:

  • Copy Loose/Streamed Media
  • Remove Unused Generated Files
  • Generate Per Bank Metadata File (All Bank Metadata File also possible)
  • Generate JSON Metadata
  • Include in Metadata:
    • Object GUID
    • Object Path
    • Max Attenuation (highly recommended)
    • Estimated Duration (highly recommended)

When you open Project > Project Settings > Logs, you can see that the following settings are disabled:

  • Media is duplicated in several SoundBanks
  • Media not found in any SoundBank


Wwise Unreal Integration Documentation: Building the plug-in

Building the plug-in

The WwiseSoundEngine.Build.cs file (located at …\Plugins\Wwise\Source\WwiseSoundEngine\WwiseSoundEngine.Build.cs) is responsible for setting up the build parameters for the plug-in for each supported platform. This file specifically:

  • specifies which static libraries will be linked,
  • specifies which dynamic libraries will be loaded at runtime, and
  • defines preprocessor macros that are used to control many of the integration features.

Preprocessor Defines

The following preprocessor defines are introduced in WwiseSoundEngine.Build.cs:

  • AK_CONFIGURATION
    This setting specifies the Wwise build configuration - the appropriate subfolder in which static and dynamic libraries are located.
  • AK_SUPPORT_OPUS
    This setting specifies that the Wwise Opus library is available to be used.
  • AK_SUPPORT_WAAPI
    This setting specifies that the Wwise Authoring API library is available to be used.
  • AK_UNREAL_MAX_CONCURRENT_IO
    This setting specifies the maximum number of concurrent reads and writes that are permitted to occur.

Building the Wwise Unreal Integration from source

During bank generation, the …\Content\Wwise\EditorOnly\ActivatedPlugins.uasset asset is modified to include a mapping of platform names to the list of the names of the required plug-ins for each platform.

For the following platforms, all Wwise plug-ins within their respective bin folders within ThirdParty will be packaged into the final executable:

  • Android
  • iOS
  • tvOS
  • Switch

For Android, a UPL file is located at …\Plugins\Wwise\Source\AkAudio\Wwise_APL.xml which specifies that all shared libraries will be packaged into the final executable for the architecture of the binary being built.

For iOS and tvOS, plug-in registration is handled within the …\Plugins\Wwise\Source\AkAudio\Private\Generated\AkiOSPlugins.h header. This file is generated upon bank generation, and is included within …\Plugins\Wwise\Source\AkAudio\Private\AkAudioDevice.cpp.

For Switch, plug-in registration is handled within the …\Plugins\Wwise\Source\AkAudio\Private\Generated\AkSwitchPlugins.h header. This file is generated upon bank generation, and is included within …\Plugins\Wwise\Source\AkAudio\Private\AkAudioDevice.cpp.

Note:
To reduce the size of the shipped executable, users are encouraged to remove unused shared libraries from the bin folder within …\Plugins\Wwise\ThirdParty.

For the following platforms, shared (dynamic) libraries are added to the list of runtime dependencies in the generated …\Binaries\<UEPlatform>\<TargetName>.target file.

  • Linux
  • Mac
  • PS4
  • PS5
  • Windows
  • XboxOne
  • XboxSeriesX
Note:
To use the Wwise Unreal Integration in a UE debug configuration that uses the debug CRT on Windows, set the bIsDebugBuild variable within WwiseUEPlatform_Windows.Build.cs to true. Please note that with this variable set, the AkOpusDecoder and AkAutobahn libraries will be disabled as they currently do not support debug CRT.

If the installation steps outlined in Installation have been followed correctly, rebuilding the Unreal Wwise Integration is done the same way as rebuilding the Unreal Engine. For a more detailed description of this process, please consult the Unreal Engine documentation.

For more information on plug-ins with source code, please refer to the Unreal Engine documentation.


Wwise Unreal Integration Documentation: Using the Integration

Using the Integration
  • Quick Start
    A basic workflow to get started.
  • Project Settings
    How to set up using Wwise after building Unreal with the integration.
  • Unreal Engine C++ Projects
    A quick overview to get started using a C++ project.
  • Using the Wwise Demo Game
    A quick overview of the UnrealWwiseDemo game demonstrating the integration features.
  • Using Wwise Unreal Objects
    An explanation of the various Wwise Unreal objects included in the integration.
  • Blueprint Functions
    Blueprint functions available in visual scripting.
  • Managing SoundBanks
    How to generate SoundBanks.
  • Using the Integration in the Unreal Editor
    Describes how to use the Integration features available in the Unreal Editor.
  • Triggering Wwise Events in Animation Sequences
    Animation Notify for Events.
  • Localizing Audio Assets
    How audio localization is implemented.
  • Using External Sources
    How to use External Sources.
  • Optimizing Memory Usage with Reference-Loaded Switch Containers
    How to optimize memory usage by ensuring only the proper media is loaded in memory when using Switch containers.
  • Using the Level Sequencer
    Sequencer Tracks for Events and RTPC.
  • Providing Audio Input to Wwise
    Providing audio input to Wwise.
  • Using the AkAudioMixer Module
    How to route Unreal master mix and submixes through Wwise.
  • Combining Unreal 5 and Wwise Audio with AudioLink
    How to route Unreal objects through Wwise with AudioLink.
  • Frequently Asked Questions
    Answers to the most frequently asked questions.


Wwise Unreal Integration Documentation: Quick Start

Quick Start

Creating a New Project

  1. Create a new Wwise project. Refer to Creating a New Project in the Wwise Help.
  2. Create a new Unreal project. Refer to Creating a New Project in the Unreal Engine 5 documentation.
  3. Integrate Wwise in your project through the Launcher. Refer to Integrating Wwise into an Unreal Project in the Launcher documentation.
See also
  • Changes to your Wwise Project

Adding an Ambient Sound (Wwise)

Under the Master-Mixer Hierarchy, in the Default Work Unit, import a new audio file as a Sound FX.

Create a Play Event for the newly-created SFX.

With User-Defined SoundBanks

With Enable Auto-Defined SoundBanks unselected in the SoundBanks tab of the Wwise Project Settings dialog, you will have to create a new SoundBank. After creating the new SoundBank, add your Event to the SoundBank.

With Auto-Defined Soundbanks

With Enable Auto-Defined SoundBanks selected in the SoundBanks tab of the Wwise Project Settings dialog, you will see the following SoundBanks:

It is now possible to generate the required banks. Select the required banks, platforms, and languages, and click Generate Checked. Otherwise click Generate All.

Generating SoundBanks (Unreal Wwise Browser + Build menu)

Back in Unreal, to set the GeneratedSoundBanks folder, open Edit > Project Settings > Wwise > Integration Settings. Here, you can set the path to both the Wwise Project and the Generated Sound Banks Folder.

This should be the same folder as the Root Output Path in the Wwise Authoring SoundBanks settings.

Then open Window > Wwise Browser.

If the SoundBanks have been generated, you will see the following:

If the SoundBanks have not yet been generated, or the SoundBanks directory has not been set, you will see this:

Adding an asset from the Wwise Browser

You will see your Event listed under the Events in the Wwise Browser.

You can either drag it directly from the Browser onto the map, or first drag it onto the content browser. If you drag it directly onto the map, the asset is created in the folder specified in Edit > Project Settings > Wwise > Integration Settings > Default Asset Creation Path.

Playing from Level Blueprint

Add a new Ak Ambient Sound to the default map, then modify the Level Blueprint.

Playing the Sound

Start Play In Editor. The Event will be posted and you can hear your sound playing. If you are using the default empty Unreal project, remove all sounds from the map first.


Wwise Unreal Integration Documentation: Project Settings

Project Settings

All settings related to the Wwise Integration can be found in the Unreal Project Settings (Edit > Project Settings), under the Wwise section. You can copy and paste data from one platform setting structure to another, even if the structures are not identical. Unreal copies matching data and ignores the rest.

Initialization Settings

This section includes initialization settings for all of the supported Wwise platforms that are available in your Unreal Engine installation. Modifications to settings in editor will only be taken into account after restarting the editor; however, using the "Standalone" play mode will initialize a new instance of the SoundEngine with the current settings.

Common Settings

  • Sample Rate
    Sampling rate in Hz. The default value is 48000. Use 24000 for low quality audio. Any positive, reasonable sample rate is supported. However, very low sample rates might cause the sound engine to malfunction.
  • Maximum Number of Memory Pools
    Maximum number of memory pools. A memory pool is required for each loaded bank.
  • Maximum Number of Positioning Paths
    Maximum number of automation paths for sound positioning.
  • Command Queue Size
    Size of the Command Queue.
  • Samples Per Frame
    Number of samples per audio frame (256, 512, 1024, 2048).
  • Streaming Look Ahead Ratio
    Multiplication factor for all streaming look-ahead heuristic values.
  • Number Of Refills in Voice
    Number of refill buffers in voice buffer. Set to 2 for double-buffered. The default value to 4.

Main Output Settings

  • Audio Device ShareSet
    The name of a custom audio device to use. Custom audio devices are defined in the Audio Device ShareSet section of a Wwise project. Leave this empty to output normally through the default audio device.
  • Device ID
    Device-specific identifier when you are using multiple devices of the same type. Leave the setting at 0 (default) if you are using only one device.
  • Panning Rule
    Rule for 3D panning of signals routed to a stereo bus. In "Speakers" mode, the angle of the front loudspeakers is used. In "Headphones" mode, the speaker angles are superseded by constant power panning between two virtual microphones spaced 180 degrees apart.
  • Channel Config Type
    A code that completes the identification of channels by uChannelMask. Anonymous: Channel mask == 0 and channels. Standard: Channels must be identified with standard defines in AkSpeakerConfigs. Ambisonic: Channel mask == 0 and channels follow standard ambisonic order.
  • Channel Mask
    A bit field, whose channel identifiers depend on AkChannelConfigType (up to 20).
  • Number of Channels
    The number of channels, identified (deduced from channel mask) or anonymous (set directly).

Communication Settings

  • Initialize System Comms
    Indicates whether or not to initialize the communication system. Some consoles have critical requirements for the initialization of their communication systems. Set to false only if your game already uses sockets before sound engine initialization.
  • Pool Size
    Size of the communication pool.
  • Discovery Broadcast Port
    The port where the Wwise Authoring application broadcasts "Game Discovery" requests to discover games running on the network. The default value is 24024. It cannot be set to 0.
  • Command Port
    The "command" channel port. Set to 0 to request a dynamic/ephemeral port.
  • Network Name
    The name used to identify this game within the Wwise Authoring application. Leave empty to use FApp::GetProjectName()

Advanced Settings

  • Use Head Mounted Display Audio Device
    Enable when working on projects for head-mounted displays with audio capabilities.
  • Max System Audio Objects
    Maximum number of System Audio Object to reserve. Other processes will not be able to use them. The default is 128.
  • Enable Multi Core Rendering
    When set to true, distributes SoundEngine processing tasks across the Unreal Engine Task Graph. If you change this setting, you must restart the Editor.
  • Job Worker Max Execution Time Usec
    Maximum time allotted for Sound Engine processing tasks in microseconds. If you change this setting, you must restart the Editor.
  • IO Memory Size
    Size of memory pool for I/O (for automatic streams). "It is rounded down to a multiple of <tt>uGranulrity</tt> and then passed directly to <tt>AK::MemoryMgr::CreatePool()</tt>."
  • IO Granularity
    I/O request granularity (typical bytes/request).
  • Target Auto Stream Buffer Length
    Targeted automatic stream buffer length in milliseconds. When a stream reaches the buffer limit, it is only scheduled for I/O except if the scheduler is idle.
  • Use Stream Cache
    If true, the device attemps to reuse I/O buffers that have already been streamed from disk. This is particularly useful when streaming small looping sounds. However, there is a small increase in CPU usage when allocating memory, and a slightly larger memory footprint in the StreamManager pool.
  • Maximum Pinned Bytes in Cache
    Maximum number of bytes that can be "pinned" using AK::SoundEngine::PinEventInStreamCache() or AK::IAkStreamMgr::PinFileInCache().
  • Enable Game Sync Preparation
    Set to true to enable AK::SoundEngine::PrepareGameSync usage.
  • Continuous Playback Look Ahead
    The number of quanta ahead where continuous containers instantiate a new voice before the following sounds start playing. This look-ahead time allows I/O to occur, and is especially useful to reduce the latency of continuous containers with trigger rate or sample-accurate transitions.
  • Monitor Queue Pool Size
    Size of the monitoring queue pool. This parameter is ignored in Release builds.
  • Maximum Hardware Timeoput Ms
    Time (in milliseconds) to wait for the hardware devices to trigger an audio interrupt. If there is no interrupt after that time, the sound engine reverts to silent mode and continues operating until the hardware finally responds again.
  • Debug Out Of Range Check Enabled
    Debug setting: Enable checks for out-of-range (and NaN) floats in the processing code. Do not enable in any normal usage because this setting uses a lot of CPU. It prints error messages in the log if invalid values are found at various points in the pipeline.
  • Debug Out Of Range Limit
    Debug setting: Only used when Debug Out Of Range Check Enabled is true. This defines the maximum values samples can have. Normal audio must be contained within +1/-1. Set this limit to a value higher than 1 to allow temporary or short excursions out of range. The default value is 16.

Integration Settings

Reverb

  • Max Simultaneous Reverb Volumes
    The maximum number of Ak Reverb Volumes that can affect a sound. Setting this to zero disables all Ak Reverb Volumes in game. Note that Ak Late Reverb Components found on an actor that also contains an Ak Room Component are not affected by this setting.

Installation

  • Wwise Project Path
    The location of the Wwise project for the UE game. The Wwise integration requires this path to create the Wwise assets required for the game using the Generate SoundBanks function within the Unreal Content Browser (or Build menu). This path is relative to the Unreal Project directory, as given by FPaths::ProjectDir() in the Unreal Engine.
  • Generated Sound Banks Folder
    The location of the Wwise GeneratedSoundbanks folder, relative to the Unreal project's content directory, as given by FPaths::ProjectContentDir().
    Note:
    If you are using external sources, changes to this path must be reflected in the External Source settings in your Wwise project.

Cooking

  • Wwise Staging Directory
    The directory to which .bnk and .wem files will be copied when staging files during cooking.

Occlusion

  • Default Occlusion Collision Channel
    The default collision channel used for audio occlusion calculations.

Fit to Geometry

  • Default Fit to Geometry Collision Channel
    The default value for Collision Channel when fitting Ak Acoustic Portals and Ak Spatial Audio Volumes to surrounding geometry.

AkGeometry Surface Properties Map

  • Ak Geometry Map
    Associates an AkAcousticTexture and a transmission loss value to Physical Materials. It is used with the AkGeometryComponent that converts meshes to Spatial Audio Geometry. You can associate the Physical Materials used in the meshes to an AkAcousticTexture and a transmission loss value here.

Audio Mixer

  • Audio Input Event
    Input event associated with the Wwise Audio Input. See Using the AkAudioMixer Module

Localization

  • Unreal Culture to Wwise Culture
    Mapping of Unreal Culture code to Wwise Language. This enables calling Set Current Audio Culture directly with an Unreal Culture code. See Localizing Audio Assets for more information.

Asset Creation

  • Default Asset Creation Path
    The path in which to create assets dragged from the Wwise Browser.

Viewports

  • Visualize Rooms and Portals
    Visualize rooms and portals in the viewport. The "realtime" setting must be enabled in the viewport.
  • Show Reverb Info
    When enabled, information about AkReverbComponents will be displayed in viewports, above the component's UPrimitiveComponent parent. The "realtime" setting must be enabled in the viewport.

Reverb Assignment Map

  • Clear Map
    Clears all entries in the map.
  • Insert Decay Key
    Click to insert a key to the Environment Decay Aux Bus map. Any Decay value higher than the highest key is assigned to the Default Reverb Aux Bus. Any Decay value between X and Y keys is assigned to the corresponding Y key Reverb Aux Bus.
  • Global Decay Absorption
    The global absorption value used when estimating reverb decay values. The default value is 0.5. See Automatically Assigning the Aux Bus for more information.
  • Default Reverb Aux Bus
    The default aux bus to use when using the aux bus auto-assignment feature. See Automatically Assigning the Aux Bus for more information.
  • Environment Decay Aux Bus Map
    A collection of mappings from decay values to aux busses used for auto-assigning reverb aux busses. See Automatically Assigning the Aux Bus for more information.

RTPCs

  • HFDamping Name
    (Legacy workflow) The name of the RTPC used to set the high-frequency damping produced by the environment. Overridden by the HFDamping RTPC value, if there is one.
  • Decay Estimate Name
    (Legacy workflow) The RTPC name used to estimate the time taken for the sound pressure level to reduce by 60dB. Overridden by the Decay Estimate RTPC value, if there is one.
  • Time to First Reflection Name
    (Legacy workflow) The RTPC name used to set the time taken for the first reflection to reach the listener. Overridden by the Time to First Reflection RTPC value, if there is one.
  • HFDamping RTPC
    The RTPC used to set the high-frequency damping produced by the environment.
  • Decay Estimate RTPC
    The RTPC used to estimate the time taken for the sound pressure level to reduce by 60dB.
  • Time to First Reflection RTPC
    The RTPC used to set the time taken from the first reflection to reach the listener.

User Settings

Installation

  • Wwise Windows Installation Path
    The location of the Wwise Authoring Application on your Windows development machine. This option will need to be updated when a new version of the Wwise Authoring Application is required by the integration changes.
  • Wwise Mac Installation Path
    The location of the Wwise Authoring Application on your Mac development machine. You must update this value when integration changes require you to install a new version of the Wwise Authoring Application.
  • Generated SoundBanks Folder User Override
    Override the GeneratedSoundBanks folder in Integration Settings.

If these paths are not correctly set, Unreal cannot generate the Wwise SoundBanks required for the game.

WAAPI

  • WAAPI IP Address
    IP Address used to connect to the Wwise Authoring API (WAAPI).
  • WAAPI Port
    Port used to connect to WAAPI.
  • Auto Connect to WAAPI
    Enables the automatic connection of the Unreal Editor to Wwise through WAAPI.
  • Auto Sync Selection
    Whether to synchronize the selection between the Wwise Browser and the Wwise Project Explorer.

Error Message Translator

  • XML Translator Timeout
    Maximum time allotted to search for IDs (milliseconds) for the XML file reader. Set to 0 to disable.
  • Waapi Translator Timeout
    Maximum time allotted to search for IDs (milliseconds) through the WAAPI connection. Set to 0 to disable.

The Error Translators purpose is to transform numerical IDs in error messages into human-readable names, whenever the information is available. There are two methods available: through SoundBanksInfo.xml and through WAAPI. If the SoundBanksInfo.xml file is present beside the SoundBank files (it is optional), using the XML method is faster. WAAPI has the advantage of reading directly from an instance of Wwise, with the latest information. But the network communication can be very slow. Because of that it is disabled by default.

Assets Reload

  • Ask for Wwise Assets Reload
    Opens a notification that the user must accept before reloading Wwise Asset Data when working in the Unreal Editor.

Spatial Audio Settings

  • Max Sound Propagation Depth
    Maximum number of portals that sound can propagate through.
  • Movement Threshold
    Amount that an emitter or listener has to move to trigger a recalculation of reflections/diffraction. Larger values can reduce the CPU load at the cost of reduced accuracy.
  • Number Of Primary Rays
    The number of primary rays (cast from each listener) used in stochastic ray casting.
  • Reflection Order
    Maximum reflection order between 1 and 4.
  • Diffraction Order
    Maximum diffraction order: the number of "bends" in a diffraction path. A high diffraction order accommodates more complex geometry at the expense of higher CPU usage. Diffraction must be enabled on the geometry to find diffraction paths. Set to 0 to disable diffraction on all geometry. This parameter limits the recursion depth of diffraction rays cast from the listener to scan the environment, and also the depth of the diffraction search to find paths between emitter and listener. To optimize CPU usage, set it to the maximum number of edges you expect the obstructing geometry will traverse.
  • Diffraction on Reflections Order
    Maximum possible number of diffraction points at each end of a reflection path. Diffraction on reflection allows reflections to fade in and out smoothly as the listener or emitter moves in and out of the reflection's shadow zone. When greater that zero, diffraction rays are sent from the listener to search for reflections around one or more corners from the listener. Diffraction must be enabled on the geometry to find diffracted reflections. Set to 0 to disable diffraction on reflections.
  • Maximum Path Length
    Maximum length of a reflection/diffraction path.
  • CPU Limit Percentage
    Controls the maximum percentage of an audio frame the raytracing engine can use. Percentage [0, 100] of the current audio frame. A value of 0 indicates no limit on the amount of CPU used for raytracing.
  • Load Balancing Spread
    The computation of spatial audio paths is spread on LoadBalancingSpread frames. Spreading the path computation on several frames can prevent CPU peaks. The spread introduces a delay in the path computation.
  • Enable Geometric Diffraction and Transmission
    Enables the computation of geometric diffraction and transmission paths for all sources that have the Enable Diffraction and Transmission box selected in the Positionning tab of the Wwise Property Editor. This flag enables sound paths around (diffraction) and through (transmission) geometry. Set Enable Geometric Diffraction and Transmission to false to ensure that geometry is only used to calculate reflection. Diffraction edges must be enabled on geometry for diffraction calculation. If Enable Geometric Diffraction and Transmission is false but a sound has "Enable Diffraction and Transmission" selected in the positionning tab of the Wwise Authoring tool, the sound only diffracts through portals but passes through geometry as if it were not there. Disable this setting if the game performs its own obstruction calculation, but geometry is still passed to spatial audio for reflection calculation.
  • Calc Emitter Virtual Position
    When set to true, Wwise Spatial Audio calculates the apparent or virtual position of emitters that diffract through portals or around geometry, and then sends the position to the sound engine.

Wwise Simple External Source Manager Settings

  • Media Info Table
    Table of all information required to properly load all external source media in the project. All files in this table are packaged in the built project.
  • External Source Default Media
    Optional table that defines a default media entry in the MediaInfoTable to load when an External Source is loaded.
  • External Source Staging Directory
    Staging location for External Source media when cooking the project. This is the location from which to load External Source media in the built project.

Initializing the SoundEngine

The SoundEngine initialization steps are performed in the FAkSoundEngineInitialization::Initialize() method. In this method, the memory, streaming, IO, sound engine, platform, music engine, and communication settings are configured from values set in the Wwise Initialization Settings for each platform.

For more information on SoundEngine initialization, refer to the Initialize the Different Modules of the Sound Engine section in the Wwise SDK documentation.


Wwise Unreal Integration Documentation: Wwise Authoring API (WAAPI)

Wwise Authoring API (WAAPI)

The Wwise Authoring API communicates with the Wwise Authoring application. Through WAAPI, the Unreal integration can request and alter information about the Wwise project during a session if Unreal and Wwise Authoring are both running, and Unreal is connected to WAAPI.

For more information on WAAPI and its features, refer to https://www.audiokinetic.com/library/edge/?source=SDK&id=waapi.html.

Note:
WAAPI is only available on the Windows and Mac platforms, both in Editor and in Game.

Connecting to WAAPI

After you integrate Wwise into your Unreal project, you must update an Unreal congifuration setting to connect to WAAPI.

To enable WAAPI in your Unreal project:

  1. Open your project in the Unreal Editor and the corresponding Wwise project in Wwise Authoring.
  2. In Unreal, click Edit > Project Settings. The Unreal Project Settings dialog opens.
  3. In the left panel, scroll to the Wwise section and click User Settings.
  4. Select Auto Connect to WAAPI. WAAPI features such as inside the Wwise Browser are now enabled.

For WAAPI-enabled features to run, the Wwise project opened in the Wwise Authoring application must match the project defined by the Wwise Project Path in the Integration Settings.

Integration Settings

The IP address and port used to connect to WAAPI are configurable in the Wwise User Settings:

User Settings

Using WAAPI from C++

An Unreal wrapper class for the WAAPI C++ sample client is provided as part of the AkAudio module.

In order to be able to use it, you first must add the AkAudio module as a dependency to your game, by following the steps outlined in Unreal Engine C++ Projects. Once this is done, the FAkWaapiClient class will be available.


Wwise Unreal Integration Documentation: Unreal Engine C++ Projects

Unreal Engine C++ Projects

Linking Modules

The Wwise Unreal Integration is separated into multiple modules. In order to use Wwise's functionality within a C++ project, you must link these modules within your project's build file (.Build.cs). You can disable a module by removing it from the build file.

In the following example, the project includes the following modules as public: Core, CoreUOBject, Engine, InputCore, AkAudio, and WwiseSoundEngine. AkAudio and WwiseSoundEngine are Wwise modules.

public class MyModule : ModuleRules
{
public MyModule(ReadOnlyTargetRules Target) : base(Target)
{
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "AkAudio", "WwiseSoundEngine" });
// Other settings
}
}

In this case, the functionality of the WwiseSoundEngine module and AkAudio module are available. Modules can be in the PublicDependencyModulesNames or PrivateDependencyModulesNames. More information about modules can be found in the Unreal Engine Documentation.

Module Overview

The Integration is organized in the following modules:

  • AkAudio: The root module for most of the Integration’s user-facing features.
  • AkAudioMixer: Allows a project to pipe the audio output, as well as audio submixes, from Unreal audio components to a Wwise project’s mixer.
  • AudiokineticTools: Implements editor-specific tools and utilities like the Wwise Browser.
  • WwiseFileHandler: Provides the Wwise Sound Engine with the media, SoundBanks, and external sources it needs, including handling requests from the Wwise Location Resolver and I/O Hook.
  • WwiseProjectDatabase: Provides a memory-based database view of the current state of the Wwise project’s generated SoundBanks.
  • WwiseResourceCooker: Converts WwiseObjectInfo Structures to Cooked structures and copies the required resources to the staging directory.
  • WwiseResourceLoader: Handles loading and unloading of all resources needed for all Wwise assets types.
  • WwiseSoundEngine: Provides the bridging between the Wwise Sound Engine API and the Unreal project.

The Integration's module dependencies are illustrated in the following figure:

Overriding the Wwise Unreal Integration

The modules in the Integration, aside from WwiseSoundEngine, AudiokineticTools, and AkAudio, are designed to be extensible through inheritance. Most functions in these modules are virtual to allow developers to override them and modify their behavior to best suit their project. To override a module, create a new module and make sure it inherits the module you want to override. Then, override the desired functions. To use your new module, make sure it is included in the Build.cs of your game and added to the DefaultEngine.ini like this:

[Audio]
WwiseFileHandlerModuleName=WwiseSimpleExternalSource

The <tt>WwiseSimpleExternalSource</tt> module is an example of overriding a module. It overrides the WwiseFileHandler module to handle external sources with Data tables.

Creating AkComponents Using C++

When creating a new AkComponent using C++, you must attach it to a parent component. The AkComponent is necessary for the API to work as intended. The following sections provide examples of how to add an AkComponent.

Using the Wwise API in your Unreal Projects

It's possible to use the Wwise API through the Wwise Unreal Integration. You can call most functions through the WwiseSoundEngine module or the AkAudio module.

WwiseSoundEngine Module

The WwiseSoundEngine module provides low-level access to most SoundEngine API operations. With the WwiseSoundEngine module, you can access API functions directly and securely, as shown in the following example:

#include "AkAudioEvent.h"
#include "AkComponent.h"
#include "Wwise/LowLevel/WwiseLowLevelSoundEngine.h"
void PostEventSoundEngine(UAkAudioEvent* Event, AActor* GameObject)
{
if (auto* SoundEngine = IWwiseSoundEngineAPI::Get())
{
if(Event && GameObject)
{
TArray<UAkComponent*> Array;
GameObject->GetComponents<UAkComponent>(Array);
//The Actor doesn't have an AkComponent attached. This component is needed if we want sound to be emitted from this actor.
if (Array.Num() == 0)
{
//PostEvent doesn't load the event. The Event needs to be loaded beforehand.
if (!Event->IsLoaded())
{
Event->LoadData();
}
auto* AkAudioComponent = NewObject<UAkComponent>(GameObject);
AkAudioComponent->SetupAttachment(GameObject->GetDefaultAttachComponent());
Array.Add(AkAudioComponent);
AkAudioComponent->RegisterComponent();
}
SoundEngine->PostEvent(Event->GetWwiseShortID(), Array[0]->GetAkGameObjectID());
}
}
}

This code posts an Event on a given actor. You must add the UAkComponent on the actor to register it with Wwise. The Event must be loaded as well since loading an Event isn't automatically performed in the WwiseSoundEngine module.

Note:
Prior to version 2022.1 of the Integration, it was impossible to access code outside the AkAudio module because the API needed to be accessed in the same dynamic library.

AkAudio Module

The AkAudio module is the root module for most of the Integration’s user-facing features. It can accomplish most of what the WwiseSoundEngine module can using Unreal Components. It contains classes for the asset types and components used by the Integration. As an alternative to calling the SoundEngine directly, the AkAudioDevice provides many helper functions to wrap common uses of the WwiseSoundEngine API. These helper functions also check that the necessary resources required to use the API are loaded, and they provide more informative logging.

The following code, just like the previous example, posts an Event on a given actor, but also takes care of attaching the AkComponent and loading the Event:

#include "AkAudio.h"
void PostEvent(UAkAudioEvent* Event, AActor* GameObject)
{
if (FAkAudioDevice::Get())
{
FAkAudioDevice::Get()->PostAkAudioEventOnActor(Event, GameObject);
}
}

More examples of code can be found in the WwiseDemoGame under WwiseDemoGame/WwiseCodeExample and can be experimented with in the WwiseDemoCodeExampleMap.

Debug Features

Logging

Each module in the Integration has an independent log verbosity level. This helps to debug efficiently. If an error occurs, you can find which module produced the error, and then you can set the verbosity of that module's logs to Verbose or VeryVerbose to better understand why the error occurred. You can change the verbosity level of each module in the Core.Log section of the DefaultEngine.ini file. There's also a special logging category called LogWwiseHints enabled by default across all modules, which warns about using deprecated functions and other bad habits.

The following verbosity levels are possible:

  • Fatal: Causes a crash when program execution cannot or should not continue. For example, if required plug-in modules are not loaded.
  • Error: Prevents packaging the game if the audio is not in a functional state.
  • Warning: Indicates when non-critical features might have unpredictable behavior. It can also prevent packaging if desired.
  • Display: Logs information regarding the initialization of modules and provides Commandlet information.
  • Log: Logs various important operations.
  • Verbose: Logs all operations that a module is performing.
  • VeryVerbose: Logs every step of each operation a module is performing.

In the following example, you can see the verbosity level associated with each module:

[Core.Log]
LogAudioKineticTools=Log
LogWwiseProjectDatabase=Log
LogWwiseSimpleExtSrc=Error
LogWwiseResourceLoader=Warning
LogWwiseResourceCooker=Log
LogWwiseFileHandler=Verbose
LogAkAudio=Verbose
LogWwiseHints=Warning

More information about verbosity levels can be found in the Unreal Engine Documentation.

Stats

The Integration includes the following Stats that might help with debugging:

  • AkAudioDevice: Logs information about Post Event Async calls.
  • AkSoundBankGenerationSource: Logs WAAPI calls related to SoundBank generation.
  • WwiseFileHandler: Logs information about loaded media, SoundBanks, and external sources.
  • WwiseFileHandlerLowLevelIO: Logs information about streaming sounds.
  • WwiseProjectDatabase: Logs information about physical memory.
  • WwiseResourceLoader: Logs information about referenced AkTypes.
  • WwiseSoundEngine: Logs information about API calls.

To access this information, select the Stats that interest you in the Unreal Viewport options.

More information about Stats can be found in the Unreal Engine Documentation.

Packaging Requirements

When you package your Unreal project, the assets are "tree-shaken." In other words, Unreal assets that represent Wwise objects are automatically included if they are referenced either by another packaged asset or by a packaged map. If they are, any associated SoundBanks and media files are copied into the built package. Any Wwise Unreal assets that do not satisfy one of these conditions are not included.

This packaging approach is efficient, but in certain cases some Wwise Unreal assets might be improperly excluded, which can cause errors. The following scenarios can cause this type of problem:

  • The project uses Wwise Unreal assets that are not directly referenced by packaged maps.
  • The project uses Events that are posted by string or from code.

If one of these scenarios applies to your project, you must therefore ensure that either the asset is directly referenced by a map, or ensure that the required assets are manually loaded. To manually add assets, add the containing directory to the project's Additional Asset Directories to Cook in the Project Settings. Refer to Project Section of the Unreal Project Settings for more information.


Wwise Unreal Integration Documentation: Using the Wwise Demo Game

Using the Wwise Demo Game

The Wwise Demo Game, which contains the Wwise Unreal Integration, is available to download from the Audiokinetic Launcher. The game's map provides several demonstration stations where you can test various integration features.

In order to build the demo game, you must install the Wwise SDK and modify the Wwise integration in the sample game. Refer to Installing Wwise and Component Packages and Upgrading or Modifying an Integration Package for more information.

To download the Wwise Demo Game:

  1. In the Audiokinetic Launcher, click Unreal.
  2. In the RECENT UNREAL ENGINE PROJECTS menu, click Add Demo Game > IntegrationVersion.
    A file explorer window opens.
  3. Browse to the folder in which you want to save the Unreal project and click Select. The integrated Unreal project is installed.

Generation of the SoundBanks

  1. Open the WwiseDemoGame in the Unreal Editor.
  2. From the toolbar, under Build, select Generate SoundBanks... from the Audiokinetic category.
  3. Select all the desired platforms and languages and click OK.

After the SoundBanks are generated, the Wwise project associated with your GeneratedSoundBanks folder is re-parsed, and the Wwise assets in your project are reloaded.

Map Contents

AkEvent Animation Notify

An Animation Notify can be used to post AkEvents to the SoundEngine. A demonstration of its use can be seen in the FPP_Fire animation.

Ambient Demo

This area of the map demonstrates the use of the AkAmbientSound actor. The AmbientNoise_Spatialized ambient emitter in the level is started by a Start All Ambient Sounds node in the Level Blueprint. To help locate the actor, its attenuation sphere is drawn in yellow when playing the game. The Event used by this emitter is part of the AmbientBank SoundBank.

This area also helps to demonstrate the occlusion feature. By navigating the player pawn behind the wall situated close to the ambient sound (making sure to stay within the yellow zone), or behind the big box in the sphere, the effects of occlusion on the sound can be heard. Occlusion is enabled on the sound by setting it in the in the "Ambient Sound handling" (red) section of the Blueprint level.

Sequencer Demo

This section of the map demonstrates the use of Event and RTPC tracks in the WwiseDemoSequence asset. Opening the level sequence in the Sequencer editor shows that the Event track plays a drum beat targeting the moving cube, while the DrumKitModulation game parameter is driven by the RTPC track.

Warp to Spatial Audio Tutorial Map

Near the Sequencer there's a invisible trigger box that will teleport you to the Spatial Audio Tutorial Map. This allows testing map transitions.

RTPC Demo

This section of the map demonstrates the use of the Set RTPCValue node targeting an actor, in the Level Blueprint (in the green comment sections). The mouse scroll wheel (the up and down D-pad buttons on a gamepad, and a two-finger swipe on a touch screen) is tied to a variable that is fed as the "Velocity" Game Parameter, which controls the pitch of the VelocityLoop sound in the Wwise project.

The "Create RTPC button Event dispatchers" section of the level Blueprint also demonstrates how to post an Event that targets an actor, using the Post Event node.

Reverb Demo

This section of the map demonstrates the use of AkReverbVolume. Inside the spherical cave, an AkReverbVolume is used to add a Reverb Effect to the weapon sound. Note that the actor emitting the sound can be set to ignore the reverb volumes feature. This can be done by unselecting "Use Reverb Volume" on the WeaponAkComponent in the MyCharacter Blueprint.

Switch Demo

This section of the map demonstrates how to set a Switch using Blueprints (in the "Switch Logic" section of the Blueprint level). Using the button (see instructions on the wall in front of the button) posts the Event to the SoundEngine. Pressing L or H on the keyboard (D-Pad left and right on a gamepad, three and four finger taps on a touch screen) changes the switch value.

Subtitle Demo

This section of the map demonstrates the use of event callbacks from Blueprint, and the use of user data in Wwise assets.

The Event starts playing a sound file containing WAV markers. Registering the marker callback associated with the Event allows the updating of the subtitle on the wall in front of the button. To achieve this, in the Level Blueprint the Callback mask input pin was set to Marker. Then, the PostEventCallback input pin was linked to a custom Blueprint Event, named HandleSubtitles.

The actual subtitles are stored in a DataTable asset, found in /Game/WwiseAssets/SubtitleTable.uasset. This SubtitleTable was then set at user data in the SubtitleEvent properties.

In the HandleSubtitles event, we retrieve the user data asset using Get Ak Audio Type User Data. We then access the proper subtitle using the MarkerCallback's Identifier field as an index in the table, and then apply that text to the TextRenderActor on the wall.

For more information on using callbacks in Blueprints, see Using Callbacks in Blueprints.

External Sources Demo

This section of the map demonstrates the use of External Sources from Blueprint.

The level Blueprint contains the CurrentExternalSourceArray variable. It contains pre-filled AkExternalSourceInfo structures. Posting the event will sequentially play the three files contained in the CurrentExternalSourceArray variable.

For more information on using External Sources, see Using External Sources.

Localized Voice Demo

This section of the map demonstrates the use of Localized Voices from Blueprint.

The event plays a localized voice, as configured in the Wwise project. Use the left button to play the English line, and use the right button to play the French line.

For more information on using Localization, see Localizing Audio Assets.

Sub level Demo

This section of the map demonstrates how splitting switch container media interacts with Level Streaming.

The start up map in the demo game only uses the Metal switch value un the Footstep_Material switch container. Connecting the Wwise profiler shows that the only media loaded for this container are the metal media files. Pressing the button on the Sub Level Demo will load a streaming level that also uses the Wood and Grass switch values. In the Wwise profiler, the mdia associated with these switch values will now be loaded. Pressing the button again will unload the level, and thus the Grass and Wood media files as well.

For more information on splitting switch container media, see Optimizing Memory Usage with Reference-Loaded Switch Containers.

WAAPI Widgets Demo

This section of the map demonstrates how to use the WAAPI UMG Widgets to control Wwise directly from your game.

The demo on the left wall illustrates how to use Unreal Engine's built-in widgets along with Blueprint scripting to control Wwise. The keyboard in step 1 changes the text in the Editable Text Box. When that text is changed, a WAAPI Call is made using WAAPI Blueprint Functions to search for items in Wwise matching the entered text (as can be seen in step 2), as is shown in the "Search for an item" section in the Widget's Graph. WAAPI returns the list of matching items in a JSON Objects, which is then parsed to populate the combo box found in step 3. Once an item is selected, it is possible to play or stop it using the buttons. The Blueprint script to control this behaviour is found in the "Play/Stop" the selected item section of the Widget's Graph.

Note:
Due to an Unreal Engine known issue on the Mac platform, updating ComboBox values in a 3D widget does not work. You can still experience the demo using the 2D version of these widgets, available by pressing "P" in game.

The demo on the back wall demonstrates how the Ak Wwise Tree and Ak Item Bool Properties widgets can be used to control a Ak Check Box. The tree can be used to find a Wwise object to control. That item can be dragged & dropped onto the UE Checkbox or the Ak Checkbox to set the item the checkbox controls. The same has to be done with the Bool Properties picker. Once the item and the property have been set on the checkboxes, you may use them to enable or disable the property directly in Wwise. Changing the property in Wwise will also be reflected on both checkboxes. The UE Checkbox showcases how you can use the built-in Checkbox widget and Blueprint scripting to accomplish this. The Ak Checkbox shows that the exact same behaviour can be accomplished without any Blueprint scripting.

The demo on the right wall is very similar to the previous Checkbox demo, but shows how to use a Ak Wwise Tree and a Ak Item Properties to control a Ak Slider.

Note that all three demos are also available in normal 2d UMG widgets by pressing the "P" key on your keyboard during gameplay.


Wwise Unreal Integration Documentation: Using Wwise Unreal Objects

Using Wwise Unreal Objects

The Wwise Unreal Integration provides a variety of objects that you can use in the Unreal Editor. Refer to the following topics for more information about the different objects:


Wwise Unreal Integration Documentation: Wwise Unreal Assets

Wwise Unreal Assets

Table of Contents

  • Wwise Unreal Assets
  • WwiseObjectInfo Structures
    • FWwiseObjectInfo
    • FWwiseEventInfo
    • FWwiseGroupValueInfo
  • Wwise Asset Cooked and Loaded Data
  • Wwise Unreal Asset Types
    • UAkAudioType
    • UAkAudioEvent
    • UAkInitBank
    • UAkAuxBus
    • UAkEffectShareSet
    • UAkGroupValue
    • UAkStateValue
    • UAkSwitchValue
    • UAkRtpc
    • UAkTrigger
    • UAkAcousticTexture
    • Deprecated Asset and Data Types
  • Viewing Asset Links in Unreal

Wwise Unreal Assets

The Unreal Integration requires users to create assets to represent corresponding objects in the Wwise project. You can create these assets through Using the Drag-and-Drop Feature drag-and-drop from the Wwise Browser, or from the right-click menu in the Content Browser. Assets created through drag-and-drop automatically contain the information (GUID, ShortID, Name) required to link them to the Wwise objects they represent. When you create assets through the Content Browser, you must add this information manually. In both cases, you can edit assets afterwards to point to new or different Wwise objects. For more information about the Blueprint functions that use these asset types, refer to Blueprint Functions.

Note:
When you directly reference Wwise assets in your maps and Blueprints, all of the Wwise resources (.bnk and .wem files) the assets require are automatically packaged in the game. However, if you choose to load these assets through code only, you must ensure that they are packaged correctly.

The following table lists the Wwise objects types that have corresponding Unreal asset classes.

Wwise Unreal Objects
Wwise Object Type | Unreal Asset Class | Description
Acoustic Texture | UAkAcousticTexture | Wrapper for ShortId, which identifies it to the SoundEngine.
RTPC | UAkRtpc
Trigger | UAkTrigger
Auxiliary Bus | UAkAuxBus | Contains the ShortId and also ensures that the required media and SoundBank resources are loaded into memory and packaged in the built game.
Event | UAkAudioEvent
Effect ShareSet | UAkEffectShareSet | Wrapper for ShortId, also required to dynamically set Effect ShareSets from within the game. Ensures that its required media and SoundBank resources are loaded into memory and packaged in the built game.
Init Bank | UAkInitBank | Ensures that the Init Bank file is packaged in the game and loaded before other SoundBanks.
State Value | UAkStateValue | Wrapper for ShortId as well as the ShortId of the parent group. Required for the advanced setting SwitchContainerLoading::LoadOnReference of the FWwiseEventInfo structure in UAkAudioEvent assets to function properly. When enabled, loading and unloading these group value assets triggers dynamic loading of switched media resources. For more information, refer to Optimizing Memory Usage with Reference-Loaded Switch Containers.
Switch Value | UAkSwitchValue

WwiseObjectInfo Structures

Wwise Unreal assets contain a FWwiseObjectInfo information structure that points to a unique object in the Wwise project. Some asset classes use a subclass with additional fields that affect behaviors such as how data is prepared for loading. This structure is serialized in the asset when it is saved, but discarded when it is cooked for a packaged build. During cooking, the structure is passed to the WwiseResourceCooker to fetch the cooked data, which is serialized in the packaged asset. Refer to Wwise Asset Cooked and Loaded Data for more information about the CookedData structure.

FWwiseObjectInfo

The base information struct. When assets in the editor are loaded and cooked, this struct is used to query the WwiseDatabase to obtain the CookedData structure that is used to load all the asset's required resources (.bnk and .wem files) into memory.

Properties:

  • WwiseGuid: The GUID that identifies this asset in the Wwise project.
  • WwiseShortId: 32-bit integer that represents the asset in the Wwise SoundEngine.
  • WwiseName: String name of the asset in the Wwise project. It does not have to match the name of the Unreal asset that contains it. However, in the rare case in which all identifying fields in the WwiseObjectInfo are blank when the asset is serialized, the WwiseName field is updated to match the Unreal asset name.
  • HardCodedSoundBankShortId: 32-bit integer that identifies which SoundBank the asset must load as a dependency. For example, if an Event is included in multiple SoundBanks, you can specify which SoundBank to package and load with that asset. If the field is not set, all SoundBanks that contain the Wwise object are loaded with it.
Note:
The HardCodedSoundBankShortId property only affects UAkAudioEvent, UAkAuxBus, and UAkEffectShareSet assets, because they are the only assets that require SoundBanks resources.

Searches in the Wwise Database prioritize fields in the following order: WwiseGuid, WwiseShortId, and finally WwiseName. For example, if the WwiseGuid is invalid, the WwiseShortId is used to search for the object.

If any of the three properties that identify the Wwise object in the WwiseObjectInfo (WwiseShortId, WwiseGuid, or WwiseName) are modified in the Unreal Asset inspector, the Wwise Project Database is searched for an object that matches the new property's value and the other two fields are updated accordingly.

Subclasses of FWwiseObjectInfo include additional information used to load data correctly. Any changes to the properties of the WwiseObjectInfo (or any of the fields of a subclass) in the inspector also cause the asset's Wwise resources to be reloaded.

FWwiseEventInfo

Subclass of FWwiseObjectInfo for UAkAudioEvent assets. The FWwiseEventInfo contains additional options for users to customize the Event asset's behavior when it is loaded and destroyed.

Additional Properties:

  • SwitchContainerLoading: "AlwaysLoad" to load all switched media with the event that uses it, or "LoadOnReference" to only load media when the switch or group values are also in memory. For more information, refer to Optimizing Memory Usage with Reference-Loaded Switch Containers.
  • DestroyOptions: "StopEventOnDestroy" to stop Event playback when it is destroyed or "WaitForEventEnd" to wait for the event to stop playing.

FWwiseGroupValueInfo

Subclass of FWwiseObjectInfo for Switch and State Value assets. The FWwiseGroupValueInfo also contains the State or Switch Group's ShortId.

Additional Properties:

  • GroupShortId: 32-bit integer that identifies the Group that includes the asset.

Wwise Asset Cooked and Loaded Data

Wwise Assets contain a CookedData structure that is used to load their required resources (.bnk and .wem files), and to monitor their dependencies on other Wwise Objects (for example, which switches are used by Events that play Switch Containers). The WwiseResourceCooker module provides functions that accept FWwiseObjectInfo structures and return the CookedData structure for that Wwise object. It also provides functions that take FWwiseObjectInfo structures and stage the required resources for packaging.

When working in editor, the CookedData structure is transient and is not serialized to the asset. This prevents changes to the data or to relationships between Wwise objects from unnecessarily dirtying their corresponding Unreal assets. During packaging, the CookedData is serialized in the packaged asset and the Wwise info structure is discarded.

The WwiseResourceLoader module loads an asset's required resources into memory. It provides functions that accept a CookedData structure and manages the loading of the actual resources by calling methods in the WwiseFileHandler module. It then returns a reference to the "Loaded" structure.

Note:
UAkRtpc, UAkTrigger, and UAkAcousticTexture assets do not need to load additional resources. They do not interact with the WwiseResourceLoader, and their CookedData structure only contains their ShortId.

Wwise Unreal Asset Types

UAkAudioType

Base class for all Wwise Unreal Assets.

Properties:

  • AutoLoad: Determines whether to load Wwise data (banks and media) automatically with the Unreal Asset.
  • UserData: Array of user data. Can store anything useful for a custom feature that uses the Wwise integration. For example, UserData can store subtitle data for voiceover events.

Blueprint functions:

  • LoadData: Loads the resources (.bnk and .wem files) required by the asset. Use this when AutoLoad is disabled to load Wwise resources manually. It is safe to call multiple times, but might cause resources to be reloaded unnecessarily.
  • UnloadData: Unloads the resources (.bnk and .wem files) required by the asset. If the resources are required by other loaded assets, they are not unloaded until all of those assets are unloaded as well.

UAkAudioEvent

Subclass version of UAkAudioType for Events.

Properties:

  • MaxAttenuationRadius: Maximum attenuation radius.
  • IsInfinite: Indicates whether the sound played by the Event loops endlessly.
  • MinimumDuration: Estimate of the minimum duration of the sound played by the Event.
  • MaximumDuration: Estimate of the maximum duration of the sound played by the Event.
  • EventInfo: FWwiseEventInfo that fills the EventCookedData property when in the editor.
  • EventCookedData: Transient FWwiseLocalizedEventCookedData that contains the mapping from languages to language-specific FWwiseEventCookedData.
Note:
The EventCookedData, MaxAttenuationRadius, IsInfinite, MinimumDuration, and MaximumDuration properties are filled in when the AkAudioEvent asset is loaded in the editor, and serialized to the asset when cooking it. The integration uses MaxAttenuationRadius to display additional information in the component visualizer, while the other three are used when displaying events in timeline tracks.

Unreal Content Browser Context Menu Options:

  • Play Event: Posts the Event.
  • Stop Event: Stops all currently playing Events.

UAkInitBank

Subclass of UAkAudioType for the Init Bank.

  • InitBankCookedData: Transient FWwiseInitBankCookedData.
Note:
The Autoload property of UAkAudioType does not affect this asset type.

UAkAuxBus

Subclass of UAkAudioType Auxiliary Busses.

  • AuxBusInfo: FWwiseObjectInfo that fills in the AuxBusCookedData property when in editor.
  • AuxBusCookedData: Transient FWwiseLocalizedAuxBusCookedData that contains the mapping from languages to language-specific FWwiseAuxBusCookedData.

UAkEffectShareSet

Subclass of UAkAudioType for Effect ShareSets.

  • ShareSetInfo: FWwiseObjectInfo that fills in the AuxBusCookedData property when in editor.
  • ShareSetCookedData: Transient FWwiseLocalizedShareSetCookedData that contains the mapping from languages to language-specific FWwiseShareSetCookedData.

UAkGroupValue

Subclass of UAkAudioType and base class for UAkStateValue and UAkSwitchValue.

  • GroupValueInfo: FWwiseGroupValueInfo that fills in the GroupValueCookedData property when in the editor.
  • GroupValueCookedData: Transient FWwiseGroupValueCookedData.

UAkStateValue

Subclass of UAkGroupValue for State values.

UAkSwitchValue

Subclass of UAkGroupValue for Switch values.

UAkRtpc

Subclass of UAkAudioType for RTPC / Game Parameters.

  • RtpcInfo: FWwiseObjectInfo that fills in the GameParameterCookedData property when in the editor.
  • GameParameterCookedData: Transient FWwiseGameParameterCookedData.
Note:
The Autoload property and the LoadData and UnloadData Blueprints of UAkAudioType do not affect this asset type.

UAkTrigger

Subclass of UAkAudioType for Music Triggers.

  • TriggerInfo: FWwiseObjectInfo that fills in the TriggerCookedData property when in the editor.
  • TriggerCookedData: Transient FWwiseTriggerCookedData.
Note:
The Autoload property and the LoadData and UnloadData Blueprints of UAkAudioType do not affect this asset type.

UAkAcousticTexture

Subclass of UAkAudioType for Acoustic Textures. For information about how to use this with Spatial Audio features, refer to AkAcousticTexture.

  • TriggerInfo: FWwiseObjectInfo that fills in the AcousticTextureCookedData property when in the editor.
  • AcousticTextureCookedData: Transient FWwiseAcousticTextureCookedData.
Note:
The Autoload property and the LoadData and UnloadData Blueprints of the UAkAudioType do not affect this asset type.

Deprecated Asset and Data Types

The following classes and structs are deprecated, and are only used for migration from older projects:

  • UAkAssetData
  • UAkAssetPlatformData
  • UAkAudioBank
  • UAkExternalMediaAsset
  • UAkFolder
  • UAkLocalizedMediaAsset
  • UAkMediaAsset
  • UAkMediaAssetData

Viewing Asset Links in Unreal

The relationships between Events and media are maintained through Unreal references. You can therefore use the Unreal Reference Viewer to view links between assets, as shown in the following image.

For more information about the Unreal Reference Viewer, refer to Finding Asset References.


Wwise Unreal Integration Documentation: Wwise Unreal Actors

Wwise Unreal Actors

Table of Contents

  • AkAmbientSound
  • AkReverbVolume

AkAmbientSound

AkAmbientSound is an AActor class used in the same way as the AAmbientSound object that is included with the Unreal Audio system. There are two ways to control its playback: through its own object Blueprint functions, or with the Start All Ambient Sounds and Stop All Ambient Sounds global helper functions. An AkAmbientSound also contains an AkComponent, which has its own Properties.

Properties:

  • Stop When Owner Is Destroyed: The Event is stopped automatically when the AkAmbientSound is destroyed.
  • Auto Post: Automatically post the associated UAkAudioEvent on BeginPlay.

Blueprint Functions:

  • Start All Ambient Sound: Starts the playback of all ambient sounds.
  • Start Ambient Sound: Starts the playback of the selected ambient sound.
  • Stop All Ambient Sound: Stops the playback of all ambient sounds.
  • Stop Ambient Sound: Stops the playback of the selected ambient sound.

AkReverbVolume

AkReverbVolume is an AVolume class used in a similar way to the AReverbVolume object that is included with the Unreal Audio system. Any Brush in the Editor can spawn it. The reverb effect is obtained with an AkLateReverbComponent.


Wwise Unreal Integration Documentation: Wwise Unreal Components

Wwise Unreal Components

Table of Contents

  • AkLateReverbComponent
  • AkComponent
  • AkAudioInputComponent

AkLateReverbComponent

You can add this component to any UPrimitiveComponent to create a reverb zone from that Primitive Component. To obtain the reverb effect, assign a Wwise Auxiliary Bus to the component and route all AkComponents that enter this volume to the associated Wwise Auxiliary Bus. If there is volume overlap, a Priority property determines which Auxiliary Busses the target AkComponent is routed to. A temporal fade in/out Effect is applied to the level of the Auxiliary Bus when entering/exiting a AkReverbVolume. If an Ak Late Reverb Component is active on an actor that also has an AkRoomComponent, the Late Reverb Component is disabled and reverb is handled by the AkRoomComponent, which uses the Spatial Audio engine to render Effects.

Information about the reverb parameters is displayed above any objects with attached Ak Late Reverb Components. You can enable or disable this text in the Wwise Integration Settings under Viewports - Show Reverb Info, or from the Unreal Level Editor Viewport menu.

Show Reverb Info in the Level Editor Viewport Menu

Properties:

  • Enable Late Reverb: Enables or disables this component.
  • Send Level: Maximum Send Level associated with the Wwise Auxiliary Bus.
  • Fade Rate: Rate at which to fade in/out the Send Level of the current Late Reverb Component when entering/exiting it, in percentage per second. For example, a value of 0.2 makes the fade time 5 seconds.
  • Priority: The order in which to apply the Late Reverb Components. In the case of overlapping volumes, only the ones with the highest priority are chosen (the number of simultaneous Late Reverb Components is configurable in the Unreal Editor Project Settings under Wwise > Integration Settings). If two or more overlapping Late Reverb Components have the same priority, it is not possible to predict which Late Reverb Component will be applied first.
  • Auto Assign Aux Bus: Automatically assigns the aux bus for this reverb component by estimating the decay time of the reverb produced by the parent Primitive Component, given its volume and surface area. This decay value is used to select an aux bus from the Automatically Assigning the Aux Bus in the integration settings. Enabled by default.
  • Aux Bus: UAkAuxBus assigned to this volume. In the Wwise project, this aux bus enables game-defined auxiliary sends. If you are using Late Reverb with AkRoomComponent and AkPortalComponent, Listener Relative Routing for Positioning must also be enabled and must have a 3D Spatialization assigned.
  • Environment Decay Estimate: An estimation of the T60 (the time taken for the sound pressure level to reduce by 60dB) for the reverb's environment, based on the Primitive Component to which the late reverb is attached. This T60 value can be used to automatically assign an aux bus using the Automatically Assigning the Aux Bus in the integration settings, and/or to drive the Decay Estimate RTPC, from the Driving Global Reverb RTPCs in the integration settings.
  • HFDamping: An estimation of the high-frequency damping produced by the environment, based on an associated AkGeometryComponent (or AkSurfaceReflectorSetComponent if the owning Actor is a Volume). To estimate the HF damping, a geometry component must be associated with this reverb component through the AssociateAkTextureSetComponent function. If this late reverb component has a sibling geometry component (or surface reflector set component), it is associated automatically and there is no need to call AssociateAkTextureSetComponent. If AssociateAkTextureSetComponent is used, the HFDamping value is only accurate during play. A value of 0.0 indicates uniform damping across all frequencies. A value greater than 0.0 indicates more damping for higher frequencies than lower frequencies. A value less than 0.0 indicates more damping for lower frequencies than high frequencies. This value can be used to drive the HFDamping RTPC, from the Driving Global Reverb RTPCs in the integration settings. Average absorption values are calculated using each of the textures in the collection, weighted by their corresponding surface area.
  • Time to First Reflection: An estimation of the time required for the first reflection to reach the listener, based on the primitive component to which the late reverb is attached. The estimate is based on an emitter and listener positioned at the centre of the parent primitive component. This value can be used to drive the Time To First Reflection RTPC, from the Driving Global Reverb RTPCs in the integration settings.

Blueprint Functions:

  • Associate Ak Texture Set Component: Set the component (either AkGeometryComponent or AkSurfaceReflectorSetComponent) to use to estimate the HFDamping. For example, in a Blueprint that has a static mesh component with an AkGeometryComponent child component, you can call this function in BeginPlay to associate that AkGeometryComponent with this reverb component. If this late reverb component has a sibling AkGeometryComponent (or AkSurfaceReflectorSetComponent), it is associated automatically and there is no need to call this function.
Note:
  • An Ak Late Reverb Component must be attached to a UPrimitiveComponent in the component hierarchy. If an Ak Late Reverb Component does not have a UPrimitiveComponent as its parent, an error is logged and the component does not have an effect.
  • If you use an AkLateReverbComponent in a custom Blueprint class, we recommended that you use a simple collision component as the parent, such as BoxCollision, SphereCollision, or CapsuleCollision component. Refer to Spatial Audio Blueprint Components for more information.
  • To use the Environment Decay Estimate, HFDamping, and Time to First Reflection values with the Driving Global Reverb RTPCs in the integration settings, the reverb component must have a sibling AkRoomComponent (in other words, an AkRoomComponent that shares the same Primitive parent component). The RTPC values are set on the Room IDs.
  • When working with Ak Late Reverb Components in the level editor, we strongly recommended that you enable Realtime in the Viewport Options. If Realtime is disabled, the reverb parameter estimation values are not updated when actors are scaled or when acoustic texture parameters are changed in the Wwise project.

AkComponent

AkComponent is derived from USceneComponent and represents an active Wwise Event.

Properties:

  • Attenuation Scaling Factor: If the Ambient Sound uses attenuation in Wwise, you can use this property to modify the attenuation computations on the ambient sound to simulate sounds with a larger or smaller area of effect.
  • Use Reverb Volumes: Determines whether or AAkReverbVolumes influences the component.
  • Occlusion
    • Occlusion Refresh Interval: Set the time interval between occlusion/obstruction checks (direct line of sight between the listener and this game object). Set to 0 to disable occlusion/obstruction on this component. We recommend that you disable it if you want to use full Spatial Audio diffraction.
  • Spatial Audio
    • Enable Spot Reflectors: Enable reflections on AkSpotReflector for this AkComponent.
    • Radial Emitter
      • Outer Radius: Set the field to the desired outer radius size. The specified number is sent directly to the Spatial Audio AK:SpatialAudio::SetGameObjectRadius() call without any transform. When the actor is selected, a yellow sphere outline is drawn around the game object's position to visualize the size.
      • Inner Radius: Set the field to the desired inner radius size. The size must be equal to or smaller than the size of the outer radius. The specified number is sent directly to the spatial audio AK:SpatialAudio::SetGameObjectRadius() call without any transform. When the actor is selected, a yellow sphere outline is drawn around the game object's position to visualize the size.
    • Reflect
      • Early Reflection Aux Bus: Set the early reflection auxiliary bus for the current game object. The component calls AK::SpatialAudio::SetEarlyReflectionsAuxSend() with the selected auxiliary bus. The auxiliary bus parameter applies to sounds playing on the game object that have not specified an early reflections auxiliary bus in the authoring tool. The early reflection auxiliary bus parameter specified on individual sounds takes priority over the value passed here.
      • Early Reflection Bus Send Gain: Set an early reflection send volume for the current game object. The component calls AK:SpatialAudio::SetEarlyReflectionsVolume() with the specified volume value. The value is combined with the early reflections volume specified in the authoring tool, and is applied to all sounds playing on the game object. Valid values are [0, 1]. When set to 0, all reflection processing for this game object is disabled.
    • Reflect (DEPRECATED)
      • Early Reflection Order: (DEPRECATED) As of 2019.2, the Early Reflection Order needs to be set in the Spatial Audio Initializaion Settings in Project Settings.
      • Early Reflection Max Path Length: (DEPRECATED) As of 2019.2, the Early Reflection Max Path Length is set by the sound's Attenuation Max distance value in the Authoring.
    • Room (DEPRECATED)
      • Room Reverb Aux Bus Gain: (DEPRECATED) As of 2019.2, the Room Reverb Aux Bus Gain is set by the Game-Defined Auxiliary Sends Volume in the Sound Property Editor in the Authoring.
    • Geometric Diffraction (DEPRECATED)
      • Diffraction Order: (DEPRECATED) As of 2019.2, Diffraction needs to be enabled in the Sound Property Editor in the Authoring.
      • Diffraction Max Paths: (DEPRECATED) As of 2019.2, Diffraction needs to be enabled in the Sound Property Editor in the Authoring.
      • Diffraction Max Path Length: (DEPRECATED) As of 2019.2, Diffraction needs to be enabled in the Sound Property Editor in the Authoring.
    • Debug Draw options: Use these options to visualize the raycasts performed by the Spatial Audio Engine, as well as the triangles hit by those raycasts. The visualizations are helpful when you have to debug the Spatial Audio engine. This only works on one component at a time.
  • AkEvent
    • Ak Audio Event: The UAkAudioEvent that is posted when the AkAmbientSound object is instructed to start playing. If you want to use Spatial Audio features, the sound effect of the Event should enable game-defined auxiliary sends.
See also
  • AkComponent Blueprint Functions
  • Creating AkComponents Using C++.

AkAudioInputComponent

AkAudioInputComponent is derived from AkComponent and represents an audio input instance.

Blueprint Functions:

  • Post Associated Audio Input Event: Starts playback of the specified Event and registers the appropriate callbacks.


Wwise Unreal Integration Documentation: Wwise Spatial Audio Objects

Wwise Spatial Audio Objects

AkAcousticTexture

Unreal object that represents a Wwise Acoustic Texture. This object can be applied to a AkSurfaceReflectorSetComponent's polygons or to a AkSpotReflector.

You can associate AkAcousticTextures with Unreal Physical Materials through the AkGeometry Surface Properties Map in the Integration Settings.

  • Properties:
    • Edit Color: Editor-only property that defines the color to use when coloring AkSurfaceReflectorSetComponent polygons that have an AkAcousticTexture assigned. The Edit Color is automatically retrieved from the Acoustic Texture in the Wwise project. If there is an active WAAPI connection, changes to Acoustic Texture colors in Wwise are immediately applied to the AkAcousticTexture Edit Color.
See also
  • UAkAcousticTexture

AkSpotReflector

You can use the Spot Reflector actor to place an omnidirectional point reflector in the 3D world. Spot reflectors are useful when they are placed on distant objects that have large radii, such as distant mountains.

There are several options you can use to control Spot Reflector behavior:

Spot Reflectors reflect any sound that comes from an AkComponent that has Enable Spot Reflectors enabled.

To ensure that the Spot Reflector only reflects sounds from the same Spatial Audio Room, enable Same Room Only. In this case, an AkComponent feeds a Spot Reflector if they are both outside rooms or if they are both in the same room. Rooms can be created with a volume that has an AkRoomComponent attached.

To override the room that contains the Spot Reflector, enable Enable Room Override and assign a room to Room Override. If you do not set a Room Override, the Spot Reflector is virtually placed outside rooms.

AkSpotReflector calls AK::SpatialAudio::AddImageSource() from the Spatial Audio API on BeginPlay.

Properties:

  • Aux Bus: UAkAuxBus that has the AkReflect plug-in for early reflection DSP. This aux bus enables game-defined auxiliary sends, with Listener Relative Routing enabled but 3D Spatialization set to None.
  • Acoustic Texture: AkAcousticTexture that filters sounds reflected by the image source.
  • Distance Scaling Factor: Image source distance scaling. This number scales the sourcePosition vector relative to the listener and, consequently, scales distance and preserves orientation.
  • Level: Game-controlled linear level for the source.

AkSurfaceReflectorSetComponent

This component is equivalent to AkGeometryComponent, but must be attached to an AVolume actor. On BeginPlay, all of the volume's enabled polygons are sent to the Spatial Audio engine.

When working with an AkSurfaceReflectorSetComponent, be sure to set the viewport to Realtime so that the visualizations are updated correctly.

Enable Realtime in the Viewport Options

Properties:

  • Enable Surface Reflector Set: Enables this component.
  • Acoustic Surfaces: Use these controls to edit the properties associated with one or more faces on the volume. By default, changes to these properties are applied to all faces on the selected actor or actors. To change the faces you are editing, click Enable Edit Surfaces. The Unreal editor switches to Brush Editing mode and hides all non-selected actors in the level. To return to the standard editor mode, click Disable Edit Surfaces. In Edit Surfaces mode, you can select one or more individual faces on the volume. Changes to the acoustic surface properties are applied to all selected faces. The text in brackets after each property indicates how many faces are being edited.
    • AkAcousticTexture: The AkAcousticTexture associated with the selected faces. The texture's Edit Color determines the color of the faces, and the texture's name is displayed on the faces in the Game Viewport. For completely reflective surfaces, set this to None, so that no additional texture filter is applied.
    • Transmission Loss: Indicates how much sound is transmitted through the surface. The valid range is 0.0 - 1.0. A value of 0.0 indicates that sound passes through the surface completely. A value of 1.0 indicates that sound is blocked by the surface.
    • Enable Surface: Indicates whether the selected faces are sent to the Spatial Audio engine. Disabled faces do not display any texture name or Transmission Loss value.
  • Geometry Settings:
    • Enable Diffraction: Enables geometric diffraction for this Geometry.
    • Enable Diffraction on Boundary Edges: Enables geometric diffraction on boundary edges for this Geometry. Boundary edges are edges connected to only one triangle. Depending on the specific shape of the geometry, boundary edges might or might not be useful and it is beneficial to reduce the total number of diffraction edges to process.
    • Associated Room: (Optional) Associates this Surface Reflector Set with a Room. Associating a surface reflector set with a particular room limits the scope in which the geometry is visible or accessible. When set to None, this geometry has a global scope. We recommend that you associate geometry with a room when the geometry is (1) fully contained in the room (not visible to other rooms except through portals), and (2) the room does not share geometry with other rooms. This type of association reduces the search space for ray casting performed by reflection and diffraction calculations. Note that when one or more geometry sets are associated with a room, that room is not able to access geometry that is in the global scope.
See also
  • AkSurfaceReflectorSetComponent Blueprint Functions
  • Spatial Audio Geometry SDK Documentation
  • Reflect Documentation

AkRoomComponent

You can add this component to any UPrimitiveComponent to register a Spatial Audio Room with the Wwise sound engine. Rooms have two purposes:

  • Oriented reverb. All Auxiliary Busses applied to a game object within a Room are oriented towards the volume's front vector.
  • When used in conjunction with AkAcousticPortal or AkPortalComponent, you can route the wet signal from one Room through a Portal to another Room.

In both cases, in the Auxiliary Bus you must have enable Listener Relative Routing for Positioning to specify a 3D Spatialization and assign an attenuation.

Properties:

  • Is Dynamic: Enables runtime changes to the portal connections for this room based on the room's movement. For worlds that contain many portals, enabling this property can be computationally expensive. When this option is disabled, the room's portal connections might still change if dynamic portals are moved (that is, portals with bDynamic enabled).
  • Enable Room: Enables this component.
  • Priority: Determines the order in which the rooms are applied. If rooms overlap, the one with the highest priority is selected. If two or more overlapping rooms have the same priority, it is not possible to predict which room will be selected.
  • Transmission Loss: Sets the transmission loss value on the direct sound emitted in the Room when the listener is in another room. Think of this value as 'thickness', because it relates to how much sound energy is transmitted through the room's walls. The valid range is 0.0f-1.0f and is mapped, by default, to the occlusion curves of the Wwise project.
  • Room Tone
    • Ak Audio Event: The event to post to the room game oject.
    • Aux Send: Send level for sounds that are posted to the room. Valid range: (0.f-1.f). A value of 0 disables the aux send.
    • Auto Post: Automatically post the audio event posted to the room on BeginPlay.
Note:
  • An Ak Room Component must be attached to a UPrimitiveComponent in the component hierarchy. If an Ak Room Component does not have a UPrimitiveComponent as its parent, an error is logged and the component does not have effect.
  • An Ak Room Component uses the position and bounds of its parent (UPrimitiveComponent) when updating Wwise. Any translation, rotation, or scaling applied directly to an Ak Room Component does not have an effect.
  • When you use an AkRoomComponent in a custom Blueprint class, we recommend that you use a simple collision component as the parent, such as BoxCollision, SphereCollision, or CapsuleCollision. Refer to Spatial Audio Blueprint Components for more information.
See also
  • AkRoomComponent Blueprint Functions
  • Rooms and Portals SDK Documentation

AkPortalComponent

You can add this component to any UPrimitiveComponent to register a Spatial Audio Portal with the Wwise sound engine. This component allows sounds contained in an actor with AkRoomComponent attached (for example, AkSpatialAudioVolume) to leak into other actors with AkRoomComponent attached. Such actors that overlap with Portals are detected at initialization time. Both panned and 3D-spatialized sounds can be routed through portals. Portals have a front and a back room. They must have at least one room connected, and the front room must be different than the back room.

You can view rooms and portals in the Viewport to adjust their positions, and to visualize portal-room connections. You can enable or disable visualization from the Wwise Integration Settings under Viewports - Visualize Rooms and Portals. You can also toggle this setting directly from the Unreal Level Editor Viewport menu.

Visualize Rooms and Portals in the Level Editor Viewport Menu

Properties:

  • Is Dynamic: Enables runtime changes to the room connections for this portal based on the portal's movement. For worlds that contain many rooms, enabling this property can be computationally expensive. When this option is disabled, the portal's room connections might still change if dynamic rooms are moved (that is, rooms with bDynamic enabled).
  • Initial State: Determines whether to initialize this Portal in an open (enabled) or closed (disabled) state.
  • Obstruction Refresh Interval: Set the time interval between obstruction checks (direct line of sight between listener and portal opening). Set to 0 to disable obstruction checks. We recommend that you disable it if you want to use full Spatial Audio diffraction.
  • Obstruction Collision Channel: The object collision channel that creates the collision of the obstruction ray-casts between the Portal and the listener with the desired geometry.
Note:
  • An AkPortalComponent must be attached to a UPrimitiveComponent in the component hierarchy. If an AkPortalComponent does not have a UPrimitiveComponent as its parent, an error is logged and the component does not have an effect.
  • When a portal is selected, the names of its connected rooms are displayed on each side.
  • An AkPortalComponent uses the position and bounds of its parent (UPrimitiveComponent) when updating Wwise. Any translation, rotation, or scaling applied directly to an AkPortalComponent does not have an effect.
  • If you add multiple AkPortalComponents to a custom Blueprint Class, the Unreal Editor might become unresponsive when you move an instance of that class in the Level Editor. To avoid this issue, disable Run Construction Script on Drag in the Class Settings as follows:
    1. Open the custom Blueprint Class in the Blueprint Editor.
    2. Click Class Settings.
    3. In the Details Panel, under the Blueprint Options, disable Run Construction Script on Drag.
See also
  • AkPortalComponent Blueprint Functions
  • Rooms and Portals SDK Documentation

AkSpatialAudioVolume

An AkSpatialAudio volume is included in the integration. It consists of a simple volume with a AkSurfaceReflectorSetComponent, a AkRoomComponent, and a AkLateReverbComponent attached.

AkAcousticPortal

A convenience actor that can be spawned in the world, which has an AkPortalComponent attached.

AkGeometryComponent

This component is equivalent to AkSurfaceReflectorSetComponent but instead of brushes, it must be added to a StaticMeshComponent. The AkGeometryComponent converts its mesh to Spatial Audio Geometry. The static mesh and the simple collision mesh are the two meshes from which it can be converted. In the case of simple collision, sphere and capsule primitives are approximated to a bounding box mesh.

When debugging a game, you can see the spatial audio geometry in the Wwise Authoring Game Object 3D Viewer. With the AkGeometryComponent, you can send more complex shapes, which can prevent the Game Object 3D Viewer from displaying the geometry. Ensure that the Monitor Queue Pool Size in the Initialization Settings is set accordingly to compensate for the additional data the game sends.

When you choose either mesh type, the Acoustic Textures and transmission loss values are deduced from the Physical Materials of the mesh. Use the AkGeometry Surface Properties Map in the Integration Settings to associate Physical Materials with AkAcousticTextures and transmission loss values.

  • For static meshes, the surface properties are deduced from the Physical Material of each Material the static mesh uses.
  • For simple collisions, the surface properties are deduced from the Simple Collision Physical Material.

Note that in Unreal, when no Physical Material is chosen (set to None), the DefaultPhysicalMaterial is used instead. Associate an AkAcousticTexture with DefaultPhysicalMaterial for meshes that do not have assigned Physical Materials.

Properties:

  • Geometry
    • Mesh Type: Determines whether the geometry is converted from the static mesh or the simple collision mesh.
    • LOD (Level Of Detail): If you select Static Mesh in the Mesh Type list, you can use this parameter to choose the level of detail to use as spatial audio geometry.
    • Welding Threshold: If you select Static Mesh in the Mesh Type list, you can use this parameter to choose the local distance in Unreal units between two vertices to weld together. Any two vertices closer together than this threshold are treated as the same unique vertex and assigned the same position. Increasing this threshold decreases the number of gaps between triangles, which results in a more continuous mesh and less sound leaking through, and eliminates triangles that are too small to be significant. Increasing this threshold also helps Spatial Audio's edge-finding algorithm find more valid diffraction edges.
    • Acoustic Properties Override
      • Acoustic Texture: Overrides the acoustic texture that is automatically chosen based on the physical material of the mesh. If you select Static Mesh in Mesh Type, you can override the acoustic texture of each material individually.
      • Enable Transmission Loss Override: Overrides the transmission loss value.
      • Transmission Loss: Overrides the transmission value that is automatically chosen based on the physical material of the mesh. If you select Static Mesh in Mesh Type, you can override the transmission loss value of each material individually.
  • Diffraction
    • Enable Diffraction: Enables geometric diffraction for this Geometry.
    • Enable Diffraction on Boundary Edges: Enables geometric diffraction on boundary edges for this Geometry.
  • Optimization
    • Associated Room: (Optional) Associates this Geometry with a Room. This type of association limits the scope in which the geometry is visible and accessible. When set to None, this geometry has a global scope. We recommend that you associate geometry with a room when the geometry is (1) fully contained within the room (not visible to other rooms except through portals), and (2) the room does not share geometry with other rooms. Such an association reduces the search space for ray casting performed by reflection and diffraction calculations. When one or more geometry sets are associated with a room, the room cannot access geometry that is in the global scope.
Note:
When you add an AkGeometryComponent in the Blueprint Editor in Unreal, the acoustic textures array is not automatically filled in when Mesh Type is set to Static Mesh because Component Details panels in the Blueprint Editor show details for template Component instances, which are not connected to other Components in the Blueprint.
See also
  • Unreal Spatial Audio Tutorials
  • AkGeometry Blueprint Functions
  • Spatial Audio Geometry SDK Documentation
  • Reflect Documentation


Wwise Unreal Integration Documentation: WAAPI Widgets

WAAPI Widgets

WAAPI UMG Widgets

Ak Check Box

Use this WAAPI-enabled check box to control a boolean property in Wwise.

Properties:

  • Property to control: Name of the boolean property to control in Wwise.
  • Item to control: Item to control in Wwise.
  • On Check State Changed: Event called when the state of the check box changes.
  • On Item Dropped: Event called when an item is dropped on the check box.
  • On Property Dropped: Event called when a property name is dropped on the check box.

Blueprint methods:

  • IsPressed: Returns true if this button is currently pressed.
  • IsChecked: Returns true if the check box is currently checked.
  • GetCheckedState: Returns the full current checked state.
  • SetIsChecked: Sets the checked state.
  • SetCheckedState(ECheckBoxState InCheckedState): Sets the checked state.
  • SetAkItemId: Sets the item ID this check box controls.
  • GetAkItemId: Returns the ID of the currently controlled item.
  • SetAkBoolProperty: Sets the property name this check box controls.
  • GetAkProperty: Returns the current item property.

Ak Item Bool Properties

Pre-made picker for Bool properties. Useful for drag-and-drop use with Ak Check Box or Ak Slider.

Ak Item Properties

Pre-made picker for float properties. Useful for drag-and-drop use with Ak Check Box or Ak Slider.

Ak Slider

This WAAPI-enabled slider can control any float property in Wwise. When the controlled property is changed, the range for the slider's values are automatically adjusted to the range defined in Wwise.

Properties:

  • Property to control: Name of the boolean property to control in Wwise.
  • Item to control: Item to control in Wwise.
  • Value: The value of the slider.
  • On Value Changed: Event called when the value of the slider changes.
  • On Item Dropped: Event called when an item is dropped on the slider.
  • On Property Dropped: Event called when a property name is dropped on the slider.

Blueprint methods:

  • GetValue: Returns the current value.
  • SetValue: Sets the current value.
  • SetCheckedState(ECheckBoxState InCheckedState): Sets the checked state.
  • SetAkSliderItemId: Sets the item ID this slider controls.
  • GetAkSliderItemId: Returns the ID of the item currently controlled.
  • SetAkSliderItemProperty: Sets the property name this slider controls.
  • GetAkSliderItemProperty: Returns the property name this slider controls.

Ak Wwise Tree

This widget is an exact copy of Managing Assets with the Wwise Browser, available in-game. It enables item assignment to Ak Check Box and Ak Slider through drag-and-drop.

Properties:

  • On Selection Changed: Event called when the current tree selection changes.
  • On Item Dragged: Event called when an item is dragged from the tree.

Blueprint methods:

  • GetSelectedItem: Returns the item currently selected in the tree.
  • GetSearchText: Returns the current text in the search box.
  • SetSearchText: Sets the current text of the search box.

Ak Wwise Tree Selector

A compact version of the Ak Wwise Tree, which opens a separate window to select the item.

Properties:

  • On Selection Changed: Event called when the current tree selection changes.
  • On Item Dragged: Event called when an item is dragged from the tree.

Slate Widgets

FWwiseTreeItem

Structure that contains everything required to represent a Wwise item.

Members:

  • DisplayName: The item name.
  • FolderPath: The path of the tree item in Wwise, including the name.
  • ItemType: The type of item.
  • ItemId: The ID of the item.

FWwisePropertyDragDropOp

Handles drag-and-drop of a property name. Pass the property name to FWwisePropertyDragDropOp::New to create the drag-and-drop operation.

FWwiseUmgDragDropOp

Handles drag-and-drop of a Wwise item. Pass a shared pointer to a FWwiseTreeItem to FWwisePropertyDragDropOp::New to create the drag-and-drop operation.

Ak Slider

This WAAPI-enabled slider can control any float property in Wwise. It handles drag-and-drop through FWwisePropertyDragDropOp and FWwiseUmgDragDropOp.

Public methods:

  • GetAkSliderValue: Gets the current value of the slider, as displayed in the Wwise Authoring application.
  • GetAkSliderProperty: Gets the name of the controlled property.
  • GetAkSliderItemControlled: Gets the name of the item that the slider controls.
  • SetAkSliderItemProperty: Sets the property to control with the slider.
  • SetAkSliderItemId: Sets the ID of the item to control (GUID string in "Digits with Hyphens in Braces" format).
  • SetAkSliderRangeMin: Sets the minimum slider value.
  • SetAkSliderRangeMax: Sets the maximum slider value.
  • GetAkSliderRangeMin: Gets the minimum slider value.
  • GetAkSliderRangeMax: Gets the maximum slider value.


Wwise Unreal Integration Documentation: Blueprint Functions

Blueprint Functions

Several Wwise-specific global functions are exposed to scripting, many of which convert and pass their arguments to their corresponding Wwise API. The following functions are available in the Audiokinetic category.

Cancel Event Callback

Cancels a callback event that was supplied to PostEvent. The Blueprint Event is no longer called after this node is executed.

Get Ak Audio Type User Data

Returns the user data of the specified type from the given asset.

Get Ak Component

Obtains an AkComponent that is attached to and follows a specified component. Refer to AkComponent Blueprint Functions for more information about the methods available on AkComponent.

Get Ak Media Asset User Data

Returns the user data of the specified type from the given media asset.

Get Occlusion Scaling Factor

Gets the occlusion scaling factor.

Get RTPC Value

Gets the value of a Game Parameter and, optionally, targets the root component of a specified actor.

Get Speaker Angles

Gets speaker angles of the specified device. For more information, refer to GetSpeakerAngles.

Is Editor

Returns true if the running application is an Editor, and false otherwise.

Is Game

Returns true if a world can be obtained from the WorldContextObject argument and its WorldType is a Game, GamePreview, or Play-In-Editor. Returns false otherwise.

Post Event At Location

Posts a Wwise Event at a specified location. This is a fire-and-forget sound, created on a temporary Wwise Game Object with no corresponding AkComponent.

Post Event At Location Async

Posts a Wwise Event at a specified location. The async version waits until the media is loaded and then posts the event. This is a fire-and-forget sound, created on a temporary Wwise Game Object with no corresponding AkComponent.

Set Bus Config

Forces channel configuration for the specified bus. For more information, refer to SetBusConfig.

Set Multiple Channel Emitter Positions

Sets multiple positions for a single game object, with flexible assignment of input channels. Note that this function is incompatible with Spatial Audio.

Parameters:

  • GameObjectAkComponent: The AkComponent of the game object on which to set positions.
  • ChannelMasks: Array of channel masks to apply for each position.
  • Positions: Array of transforms to apply.
  • MultiPositionType: Position type.

Set Multiple Positions

Sets multiple positions for a single game object, which simulates multiple emission sources but only uses the resources of a single voice. You can use this function to simulate wall openings, area sounds, or multiple objects emitting the same sound in the same area. Calling SetMultiplePositions() with only one position is the same as calling SetPosition(). Note that this function is incompatible with Spatial Audio.

Parameters:

  • GameObjectAkComponent: The AkComponent of the game object on which to set positions.
  • Positions: Array of transforms to apply.
  • MultiPositionType is the Position type. For more information on the different position types, refer to MultiPositionType.

Set Multiple Speaker Emitter Positions

Sets multiple positions for a single game object, with flexible assignment of input speakers. Note that this function is incompatible with Spatial Audio.

Parameters:

  • GameObjectAkComponent: The AkComponent of the game object on which to set positions.
  • SpeakerMasks: Array of speaker masks to apply for each position.
  • Positions: Array of transforms to apply.
  • MultiPositionType: Position type.

Set Occlusion Scaling Factor

Sets the occlusion scaling factor.

Set Panning Rule

Sets the panning rule of the specified output. You can change it any time after the sound engine is initialized. For more information, refer to SetPanningRule.

Set RTPC Value

Sets the value of a Game Parameter, and optionally targets the root component of a specified actor. If the actor is left unspecified or is null, a global Game Parameter value is set.

Set Speaker Angles

Sets speaker angles of the specified device. For more information, refer to SetSpeakerAngles.

Set State

Sets the active State for a given State Group.

Spawn Ak Component at Location

Creates a new AkComponent at the specified location. By default, the component is automatically destroyed after the Event finishes playing.

Parameters:

  • Auto Post: Controls whether to post the event immediately upon the component's creation. The default value is false.
  • Auto Destroy: Controls whether to destroy the component when the first Event posted on this component is done. The default value is true.

You can use this Blueprint node to set a Switch on a fire-and-forget sound. To do so, disable Auto Post, set a Switch on the spawned Ak Component, and then post the Event, as shown in the following image:

Stop All

Stops all currently playing sounds.

Set Current Audio Culture

Refer to Localizing Audio Assets for more information.

Set Current Audio Culture Async

Refer to Localizing Audio Assets for more information.

Other Blueprint Functions

Other functions are available in sub-categories:

  • Actor Blueprint Functions
  • Spatial Audio Objects Blueprint Functions
  • AkAmbientSound Blueprint Functions
  • AkComponent Blueprint Functions
  • AkAudioInputComponent Blueprint Functions
  • SoundBank Blueprint Functions
  • Debug Blueprint Functions
  • Using Callbacks in Blueprints
  • WAAPI Blueprint Functions


Wwise Unreal Integration Documentation: Actor Blueprint Functions

Actor Blueprint Functions

These Blueprint functions target the root component of an Actor. If no AkComponent is attached to the Actor's root component, one is created.

Post and Wait for End of Event

Latent Blueprint node that posts a Wwise Event attached to and following the root component of the specified Actor, and then waits until the end of the Event to continue the graph's execution.

Post and Wait for End Of Event Async

Latent Blueprint node that posts a Wwise Event attached to and following the root component of the specified Actor, and then waits until the end of the Event to continue the graph's execution. The async version waits until the media is loaded and then posts the event.

Post Event

Posts a Wwise Event attached to and following the root component of the specified Actor.

Post Event Async

Posts a Wwise Event attached to and following the root component of the specified Actor. The async version waits until the media is loaded and then posts the event.

Execute Action on Event

Executes an action on an Event attached to and following the root component of the specified Actor. You can specify a fade time and an interpolation curve type. To execute the Action on a specific instance, use the playing ID, which is the value returned by the Post Event Blueprint.

Post Trigger

Posts a Trigger to Wwise that targets the root component of a specified Actor.

Set Occlusion Refresh Interval

Sets the time interval at which the AkComponent attached to the root component performs occlusion calculations. Set to 0 to turn off occlusion on the component.

Set Switch

Sets the active Switch for a given Switch Group, and targets the root component of a specified Actor.

Set Output Bus Volume

Sets the direct output bus volume to use for the specified game object. The Bus Volume value is a number from 0.0f to 1.0f.

Stop Actor

Stops all sounds on the given Actor.

Use Reverb Volumes

Sets whether the AkComponent attached to the root component is influenced by AkReverbVolume.


Wwise Unreal Integration Documentation: Spatial Audio Objects Blueprint Functions

Spatial Audio Objects Blueprint Functions

AkGeometry Blueprint Functions

  • ConvertMesh: Converts the parent mesh to FAkGeometryData, a structure usable with Spatial Audio Geometry. For a static mesh type, the indices and vertices of the parent mesh are used. For the simple collision mesh type, the parent's BodySetup is converted to FAkGeometryData. If the simple collision is composed of box, sphere or capsule primitives, a bounding box for each of the primitives is used. If the simple collision has convex hull primitives, its indices and vertices are used.
  • RemoveGeometry: Calls AK:SpatialAudio::RemoveGeometry() to remove the geometry in Spatial Audio.
  • UpdateGeometry: Sends the FAkGeometryData components to Spatial Audio.

AkLateReverbComponent Blueprint Functions

  • AssociateAkTextureSetComponent: Sets the component to use to estimate the HFDamping. For example, in a Blueprint that has a static mesh component with an AkGeometry child component, you can call this function in BeginPlay to associate that AkGeometry component with this reverb component. If this late reverb component has a sibling geometry component (or surface reflector set component), it is associated automatically and it is not necessary to call this function.

AkRoomComponent Blueprint Functions

  • GetPrimitiveParent: Returns the UPrimitiveComponent attached to this Ak Room Component.

AkPortalComponent Blueprint Functions

Several Wwise-specific actions can be executed on AkPortalComponent objects. These are available in the Ak Portal Component Category.

  • OpenPortal: Opens the Portal. Emitters positioned in the AkRoomComponent in front of and behind the Portal emit through it.
  • ClosePortal: Closes the Portal. The Portal opening acts as an obstruction.
  • GetCurrentState: Returns an AkAcousticPortalState, which represents the state of the Portal (Open or Closed).
  • GetPrimitiveParent: Returns the UPrimitiveComponent attached to this Ak Portal Component.
  • PortalPlacementValid: Returns true if the portal position and orientation are valid. Portals have a front and a back room. They must have at least one connected room, and the front room must be different than the back room. Refer to AkPortalComponent and AkRoomComponent for more information.

AkSurfaceReflectorSetComponent Blueprint Functions

  • SendSurfaceReflectorSet: Calls AK:SpatialAudio::SetGeometry() to convert the brush's indices and vertices to Spatial Audio Geometry data and send it to Spatial Audio.
  • RemoveSurfaceReflectorSet: Calls AK:SpatialAudio::RemoveGeometry() to remove the geometry in Spatial Audio.
  • UpdateSurfaceReflectorSet: Calls SendSurfaceReflectorSet to send a new conversion of the brush to Spatial Audio.
See also
  • Wwise Spatial Audio Objects
  • Unreal Spatial Audio Tutorials


Wwise Unreal Integration Documentation: AkAmbientSound Blueprint Functions

AkAmbientSound Blueprint Functions

Several Wwise-specific actions can be executed on AkAmbientSound actors. These are available in the Ambient Sound category.

Start All Ambient Sounds

Starts playback of all AkAmbientSound present in the map.

Start Ambient Sound

Starts playback of the AkAmbientSound.

Stop All Ambient Sounds

Stops playback of all AkAmbientSound present in the map.

Stop Ambient Sound

Stops playback of the AkAmbientSound.


Wwise Unreal Integration Documentation: AkComponent Blueprint Functions

AkComponent Blueprint Functions

Several Wwise-specific actions can be executed on AkComponent scene components. These are available in the Ak Component category.

Get Attenuation Radius

Returns this AkComponent's effective attenuation radius (ScalingFactor * MaxAttenuation).

Post Ak Event

Posts the specified UAkAudioEvent in Wwise.

Post Ak Event Async

Posts the specified UAkAudioEvent in Wwise. The async version waits until the media is loaded and then posts the event.

Post Ak Event and Wait for End

Latent Blueprint node that posts the specified UAkAudioEvent in Wwise, and then waits until the end of the Event to continue the graph's execution.

Post Ak Event and Wait for End Async

Latent Blueprint node that posts the specified UAkAudioEvent in Wwise, and then waits until the end of the Event to continue the graph's execution. The async version waits until the media is loaded and then posts the event.

Post Associated Ak Event

Posts this AkComponent's internal UAkAudioEvent in Wwise.

Post Associated Ak Event Async

Posts this AkComponent's internal UAkAudioEvent in Wwise. The async version waits until the media is loaded and then posts the event.

Post Associated Ak Event and Wait for End

Latent Blueprint node that posts this AkComponent's internal UAkAudioEvent in Wwise, and then waits until the end of the Event to continue the graph's execution.

Post Associated Ak Event and Wait for End Async

Latent Blueprint node that posts this AkComponent's internal UAkAudioEvent in Wwise, and then waits until the end of the Event to continue the graph's execution. The async version waits until the media is loaded and then posts the event.

Post Trigger

Posts a trigger on the associated AkComponent.

Set Attenuation Scaling Factor

Sets the attenuation scaling factor, which modifies the attenuation computations on the game object to simulate sounds with a larger or smaller area of effect.

Set Listeners

Sets the listeners on the AkComponent.

Set Occlusion Refresh Interval

Sets the time interval at which the AkComponent performs occlusion calculations. Set to 0 to turn off occlusion on the component.

Set Output Bus Volume

Sets the output direct bus volume to use for the specified game object. The Bus Volume value is a number from 0.0f to 1.0f.

Get RTPC Value

Gets the value of a Game Parameter for the associated AkComponent.

Set RTPC Value

Sets the value of a Game Parameter for the associated AkComponent.

Set Stop when Owner Destroyed

Sets the StopWhenOwnerDestroyed value on the corresponding AkComponent.

Set Switch

Sets a Switch Group to a given Switch on the associated AkComponent.

Stop

Stops the UAkAudioEvent associated with the AkComponent from playing.

Use Early Reflections

(DEPRECATED) Enables Early Reflections in the Authoring.

Use Reverb Volumes

Sets whether the AkComponent is influenced by AkReverbVolume.

Set GameObject Radius

Calls AK:SpatialAudio::SetGameObjectRadius() to set the outer and inner radius of the game object and sends them to Spatial Audio.


Wwise Unreal Integration Documentation: AkAudioInputComponent Blueprint Functions

AkAudioInputComponent Blueprint Functions

Several Wwise-specific actions can be executed on AkAudioInputComponent scene components. These are available in the Ak Audio Input Component category.

Post Associated Audio Input Event

Posts this AkAudioInputComponent's internal UAkAudioEvent in Wwise and registers the appropriate callbacks.


Wwise Unreal Integration Documentation: SoundBank Blueprint Functions

SoundBank Blueprint Functions

Most SoundBank handling functions were deprecated in 2022.1. Refer to the Upgrading Projects to Wwise 2022.1 for details.

Clear Banks

Unloads Wwise resources (banks and media) for all loaded Wwise Assets.

Init Bank functions

The following functions exist for Init Bank management:

  • Load Init Bank
  • Unload Init Bank

Removed and Deprecated Functions

As of 2022.1, these Blueprint functions no longer exist. To manually load and unload the bank and media resources for your Wwise Assets, use the LoadData and UnloadData Blueprint functions described in Wwise Unreal Assets.

  • Clear Banks
  • Load Bank
  • Load Bank Async
  • Unload Bank
  • Unload Bank Async

The following functions have been deprecated:

  • Load Bank By Name
  • Unload Bank By Name


Wwise Unreal Integration Documentation: Debug Blueprint Functions

Debug Blueprint Functions

These Blueprint functions are used to help debug your game.

Start Output Capture

Starts a Wwise output capture. The output file is located in the same folder as the SoundBanks.

Add Output Capture Marker

Adds a text marker in the output capture file.

Stop Output Capture

Stops a Wwise output capture. The output file is located in the same folder as the SoundBanks.

Start Profiler Capture

Starts a Wwise Profiler capture. The output file is located in the same folder as the SoundBanks.

Stop Profiler Capture

Stops a Wwise Profiler capture. The output file is located in the same folder as the SoundBanks.


Wwise Unreal Integration Documentation: Using Callbacks in Blueprints

Using Callbacks in Blueprints

Event callbacks are exposed to Blueprints. They are implemented with custom Events.

Event Callbacks

Most callbacks exposed in the C++ sound engine API are exposed to Blueprints. For more information on what the various callback types accomplish, refer to the SDK documentation.

Note:
Blueprint graphs need to be executed on the game thread, so callbacks that require you to modify the AkCallbackInfo structure (AK_SpeakerVolumeMatrix, for example) cannot be exposed to Blueprints. Implement them with C++ code.

Using Event Callbacks

To subscribe to an Event callback, select it in the Callback Mask input pin dropdown. You can then implement the Blueprint graph you want to execute in the selected callback with a custom Blueprint Event:

Subscribing to Multiple Callback Types

To subscribe to more than one callback type, select multiple values in the Callback Mask input pin dropdown:

Then, in your Custom Event graph, you can use a Switch on the Callback Type variable to determine the current callback type, then cast the Callback Info class to the appropriate type:

Using MIDI Callbacks

The contents of a MIDI Event callback info class can be interpreted differently depending on the current MIDI Event type. In order to simplify parsing the MIDI callback info, a Blueprint macro, SwitchOnMidiType, is provided. It will automatically parse the callback info object and trigger the correct execution pin:

Note:
The Chan member of the MIDI Callback Info class refers to the MIDI channel. Its range is from 1 to 16.


Wwise Unreal Integration Documentation: WAAPI Blueprint Functions

WAAPI Blueprint Functions

These Blueprint functions connect to the Wwise Authoring application through the Wwise Authoring API.

For more information on WAAPI and its features, refer to the WAAPI documentation.

JSON Objects

WAAPI uses JSON extensively, so the integration includes a Blueprint wrapper for the Unreal FJsonObject. For more information about nodes found under "WAAPI Json Manager", refer to the Unreal Engine documentation on FJsonObject.

Call WAAPI

Calls WAAPI and gets or sets information and parameters according to the specified URI.

Parameters:

  • WaapiUri: The function to call when an event occurs.
  • WaapiArgs: The arguments referenced by the in_uri function.
  • WaapiOptions: An optional flag, which retrieves additional information about the event.
  • Return Value: A JSON object that contains information about the event call process. It returns an error if the call fails.

Register WAAPI Connection Lost Callback

Subscribes to an event that is broadcast when the WAAPI connection is lost. Use this function to clean up any resources that use WAAPI.

Parameters:

  • Callback: The event to call when the connection is lost.

Register WAAPI Project Loaded Callback

Subscribes to an event that is broadcast when the correct Wwise project is loaded (as defined by the Wwise Project Path in the Wwise Plugin Settings). Use this function to initialize any resources that use WAAPI.

Parameters:

  • Callback: The event to call when a connection is established.

Subscribe To WAAPI

Subscribes to notifications according to the event.

Parameters:

  • WaapiUri: The reference to the event.
  • WaapiOptions: An optional flag, which retrieves additional information about the event.
  • Callback: A delegate to execute during the subscription event.

Return Values:

  • SubscriptionId: The ID of the subscription.
  • Result: Indicates whether the subscription was successful.
  • Return Value: A JSON object that contains information about the event subscription process. It returns an error if the subscription failed.

Unsubscribe

Unsubscribes from an event.

Parameters:

  • SubscriptionId: ID of the current event subscription.

Return Values:

  • UnsubscriptionDone: Indicates whether the unsubscription succeeded.
  • Return Value : A JSON object that contains information about the event unsubscription process. It returns an error if the unsubscription failed.


Wwise Unreal Integration Documentation: Managing SoundBanks

Managing SoundBanks

The Wwise Unreal Integration includes several options for SoundBank management, which are described in the following sections.

  • Understanding Auto-Defined and User-Defined SoundBanks
    Explains the differences between user-defined and auto-defined SoundBanks.
  • Generating SoundBanks
    Explains how to generate SoundBanks from Wwise Authoring or the Unreal Editor.
  • Generating SoundBanks with the GenerateSoundBanks Commandlet
    Explains how to generate SoundBanks with the commandlet.
  • Overriding Generated SoundBanks Directories for Local Users
    Explains how to override generated SoundBank directories.
  • Refreshing the Project Database
    Explains how to refresh Wwise assets by parsing SoundBank data.


Wwise Unreal Integration Documentation: Understanding Auto-Defined and User-Defined SoundBanks

Understanding Auto-Defined and User-Defined SoundBanks

Your SoundBank management strategy has significant implications for your Wwise Unreal Integration project. Your approach affects memory usage, file packaging, file size, and the way in which SoundBanks are loaded. There are three basic strategies: use auto-defined SoundBanks, use user-defined SoundBanks, or take a hybrid approach with user-defined SoundBanks for some audio assets and auto-defined SoundBanks for others. Each approach has advantages and disadvantages, which are discussed in the following sections.

User-defined SoundBanks were part of the Legacy workflow in Wwise Unreal Integration versions 21.1, 19.2, 19.1 and earlier. Auto-defined SoundBanks were the default used in Event-Based Packaging in versions 19.2 and 21.1.

Using User-Defined SoundBanks

With user-defined SoundBanks, you create the SoundBanks yourself and decide what to include in them. User-defined SoundBanks give you direct control over SoundBank content, although this degree of control requires planning, time, and effort to manage.

User-defined SoundBanks possess several important characteristics:

  • They include Events as well as all associated audio assets.
  • They are loaded with the corresponding Unreal levels and are available for any of the Events they contain.
  • The entire bank is loaded for any Event, even if only a single Event out of hundreds in the bank is required.
  • Loading time might be shorter than auto-defined SoundBanks because only a single SoundBank is loaded, instead of separate SoundBanks for every Event. Conversely, the larger size of the single SoundBank might require a longer time to load. File sizes are also generally larger.

For instructions on how to create user-defined SoundBanks, refer to Creating a SoundBank. The Wwise 251 Certification also describes in detail how to optimize user-defined SoundBanks.

Using Auto-Defined SoundBanks

Auto-defined SoundBanks, in contrast to user-defined SoundBanks, are created automatically when you enable the corresponding option in your Wwise Project Settings. They automate some of the manual tasks related to SoundBank management but function differently than user-defined SoundBanks. They possess several important characteristics:

  • A separate SoundBank is created for each Event.
  • Each SoundBank contains only the Event and structure information, while media is stored outside of the SoundBank. Therefore, if multiple Events require the same media asset, it is generated on disk once and loaded once.
  • File sizes are generally smaller than those associated with user-defined SoundBanks. Auto-defined SoundBanks rely on Unreal to map dependencies and load the necessary audio. An Unreal component can link to a specific Event and load only the files required for playback. In contrast to user-defined SoundBanks, auto-defined SoundBanks provide much more granularity.

You can enable auto-defined SoundBanks in Wwise Authoring. For details, refer to Automatically Defining SoundBanks.

Reference-Loaded Switch Containers

In addition to the memory optimization that auto-defined SoundBanks provide, you can use them in combination with reference-loaded Switch Containers to further optimize memory usage. The Wwise Unreal Integration can determine which assets in a Switch Container are used in the current map, and only loads the media assets when required. For example, you might have a footstep Event that uses different surface types, but only certain types of surface are used in different maps (sand in desert maps but not city maps, leafy surfaces in forest maps but not desert maps, and so on). For more information about this type of Switch Container, refer to Optimizing Memory Usage with Reference-Loaded Switch Containers.

Taking a Hybrid Approach

If desired, you can take a hybrid approach to SoundBank management: use both user-defined and auto-defined SoundBanks. With this method, you can optimize your project's use of SoundBanks. There is no ideal hybrid approach, but here are some possible use cases:

  • Use a user-defined SoundBank for all small user interface sounds, additional user-defined SoundBanks for the core atmosphere of every level, and auto-defined SoundBanks for all other Events. In this way, the short and repetitive UI interactions are loaded only once, level music is loaded only as required, and Event assets are loaded dynamically.
  • Put most sounds and Events in a user-defined SoundBank, and use several optimized Switch Container Event SoundBanks for complex asset hierarchies such as music or banter.
  • Isolate debugging Events in auto-defined SoundBanks so that you can remove them from the packaged game.
  • Store Events and their associated media in different user-defined SoundBanks (the Integration Demo Sample contains an example of this). You could implement a highly complex user-defined SoundBank inclusion pattern and use a custom strategy to load Switch Containers. For example, you could use a media-centric SoundBank for different surface types (such as grass, wood, and metal), and put the Event in a separate SoundBank.
Warning:
There are many possible ways to manage and generate SoundBanks in Wwise Authoring, but be aware of the potential risks when you are working with the Wwise Unreal Integration. If your desired pattern is very complex, it might not be supported and could cause asset duplication, missing assets, or even cause the Integration to malfunction.


Wwise Unreal Integration Documentation: Generating SoundBanks

Generating SoundBanks

There are several ways to generate the Wwise SoundBanks: from Wwise Authoring, from the Unreal Editor, or through a commandlet. This section explains how to generate SoundBanks in Unreal.

To generate SoundBanks in Unreal:

  1. Do one of the following:

    • From the menu bar, click Build > Generate SoundBanks.
    • In the upper-right corner of the Wwise Browser, click Generate SoundBanks

    The Generate SoundBanks dialog opens.

    The dialog lists the platforms and languages that the Wwise project supports.

  2. Select the desired platforms and languages. If you do not select any platforms or languages, all items in the respective list will be generated.
  3. (Optional) To reduce soundbank generation time, select Skip generation of localized assets.
  4. Click Generate. The SoundBanks are generated.

SoundBank Generation Details

SoundBank Generation with WwiseConsole

When WAAPI is disabled or Wwise Authoring is closed, SoundBanks are generated with WwiseConsole in the GeneratedSoundBanks folder.

SoundBank Generation with WAAPI

When WAAPI is connected, the command to generate SoundBanks is sent directly to Wwise Authoring through WAAPI, but banks are still generated on disk in the GeneratedSoundBanks folder.

SoundBank Generation Watchers

When the Unreal Editor is open, a directory watcher monitors changes in the GeneratedSoundBanks folder. Changes to files in this folder trigger a countdown timer that appears in a temporary window in the lower-right corner of the screen. Any subsequent changes reset the timer.

When the timer expires, the JSON metadata in the GeneratedSoundBanks folder is parsed, which updates the integration's internal database of the Wwise project.

After the project is parsed, all currently loaded Wwise assets are reloaded to properly apply changes in project data.

Triggering Generated SoundBanks Parsing

If you do not manually generate SoundBanks, any operation that synchronizes the GeneratedSoundBanks folder contents causes the directory watcher to trigger the parsing process.

The following operations parse the project metadata from the GeneratedSoundBanks folder:

  • Opening the Unreal Editor.
  • Clicking Refresh in the Wwise Browser.
  • Clicking Refresh Project Database in the Build menu.
  • Changing the Generated SoundBanks Folder setting in the Unreal project's Wwise Integration Settings.
  • Changing the Generated SoundBanks Folder User Override in the Unreal project's Wwise User Settings.
  • Changing any of the files in the GeneratedSoundBanks folder.

Optional Asset Reloading

To avoid reloading in-memory assets every time you change the contents of the GeneratedSoundBanks folder, you can select an option in the Unreal Project Wwise User Settings to enable a prompt before assets are reloaded. When this setting is enabled, Wwise assets can only be reloaded with explicit user input except during the initialization of the Wwise Project Database when the Unreal editor is opened.

This is the prompt that appears in the bottom right corner of the screen:

After 10 seconds, if you do not click either option, the "Not Now" option is automatically selected.


Wwise Unreal Integration Documentation: Generating SoundBanks with the GenerateSoundBanks Commandlet

Generating SoundBanks with the GenerateSoundBanks Commandlet

The Wwise Unreal plug-in includes a Commandlet you can use to generate SoundBanks and submit them to source control from the command line.

Usage of the Commandlet is:

<UnrealEditor-cmd.exe> <path_to_uproject> -run=GenerateSoundBanks [-platforms=listOfPlatforms] [-languages=listOfLanguages] [-wwiseConsolePath=pathToWwiseConsole]
Note:
If you are using Unreal Engine 4, the Editor executable is called UE4Editor-cmd.exe.

The Commandlet has the following parameters:

  • platforms: (Optional) Comma-separated list of platforms for which to generate SoundBanks, as specified in the Wwise project. If not specified, SoundBanks are generated for all platforms.
  • languages: (Optional) Comma-separated list of Languages for which to generate SoundBanks, as specified in the Wwise project. If not specified, all languages are generated.
  • wwiseConsolePath: (Optional) Full path to the Wwise command-line tool, used to generate the SoundBanks. If not specified, the path from the Wwise settings is used.
  • help: (Optional) Print this help message. This quits the Commandlet immediately.

Example usage:

C:\UE_5.0\Engine\Binaries\Win64\UnrealEditor-Cmd.exe C:\MyProjects\Demo\WwiseDemoGame.uproject -run=GenerateSoundBanks -platforms=Windows,Mac
Note:
If you have problems because the Development Editor is not built or available yet, you can skip the plugin activation by setting the environment variable SKIP_PLUGIN_ACTIVATION to true.


Wwise Unreal Integration Documentation: Overriding Generated SoundBanks Directories for Local Users

Overriding Generated SoundBanks Directories for Local Users

Some organizations generate and store their SoundBanks on dedicated servers under source control. This approach can be efficient with large projects or teams, in which different contributors work on different aspects of audio. If the SoundBanks are generated automatically on a schedule, for example with the SoundBank generation commandlet (Generating SoundBanks with the GenerateSoundBanks Commandlet), the changes are reconciled and the SoundBanks are available for other developers to use. However, some team members might need to generate SoundBanks locally to experiment or test changes in Unreal. In this case, you can override the project settings to generate and store SoundBanks in custom locations outside of source control.

Before you change anything, it is important to understand how Wwise stores the SoundBank path information, and also how Unreal accesses that information.

Wwise records SoundBank path locations in a ProjectInfo.json metadata file, which is created when you first generate SoundBanks for a project and is located at the Wwise project's Root Output Path. The default Root Output Path is in following directory:

[WwiseProjectName]\GeneratedSoundBanks

SoundBanks, by default, are generated in subdirectories of the same folder, divided by platform:

[WwiseProjectName]\GeneratedSoundBanks\[Platform]

The ProjectInfo.json file itself contains a list of paths to the generated SoundBanks for each platform. In the Unreal Project Settings, the Generated Sound Banks Path actually points to the Root Output Path, which contains the ProjectInfo.json file, and not the paths that contain the actual generated SoundBanks. This is an important thing to remember when you want to override paths, for the following reasons:

  • For the Wwise Unreal Integration to function correctly, the Unreal Generated Sound Banks Path must be the same as the Wwise Root Output Path.
  • If your Wwise SoundBank paths and the Root Output Path are both under source control, you have to override both.
  • If you use a user override for the Root Output Path, you must also set a user override in Unreal to match the Wwise override.

Essentially, Unreal requires access to the ProjectInfo.json file to determine where the SoundBanks are. It does not have any direct knowledge of the SoundBank folder paths.

To override the SoundBanks directory:

  1. In Wwise, click Layouts > SoundBank. The SoundBank Layout opens.
  2. In the upper right of the SoundBank Manager, click the gear icon > User SoundBank Settings. The User SoundBank Settings dialog opens.
  3. Select Override Project SoundBank Settings and Override Project SoundBank Paths. The various SoundBank settings are activated.
  4. Click the ellipses next to Root Output Path and in the file explorer, browse to the desired local directory and click Select Folder. Ensure that the location is not under source control.
  5. Click the ellipses next to a SoundBank Folder and in the file explorer, browse to the desired local directory and click Select Folder. Ensure that the location is not under source control. Repeat for each platform for which you want to generate SoundBanks locally.
  6. Click OK, then generate SoundBanks. The SoundBanks are created in the folders you specified, and the ProjectInfo.json file is created in the Root Output Path you specified.
  7. In Unreal, click Edit > Project Settings. The Project Settings dialog opens.
  8. Scroll to the Wwise section and click User Settings. The Wwise - User Setting page opens.
  9. Click the ellipses next to Generated Sound Banks Folder User Override. In the file explorer, browse to the same Root Output Path directory you specified as a use override in Wwise.

    You can now modify the Wwise project and generate SoundBanks as required, without any effect on the shared project SoundBanks.


Wwise Unreal Integration Documentation: Refreshing the Project Database

Refreshing the Project Database

Click Build > Refresh Project Database to parse the Wwise Project in your GeneratedSoundBanks folder, and then reload the loaded Wwise assets in your project.

Refer to Triggering Generated SoundBanks Parsing for other ways to refresh your assets.


Wwise Unreal Integration Documentation: Using the Integration in the Unreal Editor

Using the Integration in the Unreal Editor

The Wwise Unreal Integration adds various options to the Unreal Editor. You can use the additional options to perform important tasks, which are described in the following sections:

  • Managing Wwise and Unreal Assets. When you update Assets in Wwise Authoring, corresponding Unreal Assets are automatically updated. If a WAAPI connection is enabled, any deletions or name changes through the Wwise Browser in Unreal are also applied to the Wwise project.
  • Managing Assets with the Wwise Browser. The Wwise Browser is a viewer that you can use to drag Wwise objects into Unreal, preview sounds, rename objects, and delete objects. Changes you make in Unreal also apply to the Wwise project.
  • Working with Reverb. Use the AkLateReverbComponent to assign aux busses and drive global reverb RTPCs.
  • Visualizing Radii. When you update AkAmbientSound assets in Wwise Authoring, you can see the radii change in Unreal.
  • Using the Editor Listener. Use the Editor Listener to preview positioned audio and 3D-spatialized sounds.
  • Testing with Multiple Play In Editor and Wwise Instances. Run multiple Play In Editor sessions with separate Wwise instances.


Wwise Unreal Integration Documentation: Managing Wwise and Unreal Assets

Managing Wwise and Unreal Assets

When you integrate Wwise and Unreal projects, a relationship is established between corresponding Assets in each project. Any changes you make to the Wwise Assets are automatically applied to the Assets in Unreal. If a WAAPI connection is enabled, any changes to Unreal Assets are automatically applied to the Wwise Assets as well.

To enable a connection to the Wwise project through WAAPI, refer to Wwise Authoring API (WAAPI).

Synchronizing from Wwise to Unreal

Synchronization from Wwise to Unreal is automatic if the Unreal Editor is running. If it is, then when you generate SoundBanks in Wwise, Unreal parses the content of the generated SoundBanks and updates the contents of the Wwise Browser. In addition, any assets that are currently loaded in Unreal are then reloaded, and include the changes made in the Wwise project.

As shown in the following image, the associated Unreal and Wwise Assets can have different names. The association between the two is determined by the GUID, ShortID, and Asset Name properties. Therefore, you can rename Unreal assets without affecting the Wwise objects they reference.

Synchronizing from Unreal to Wwise (WAAPI Only)

If WAAPI is enabled, any time you rename or delete assets through the Wwise Browser are immediately reflected in the Wwise project. However, you must then manually save those modifications in the Wwise Authoring application.


Wwise Unreal Integration Documentation: Managing Assets with the Wwise Browser

Managing Assets with the Wwise Browser

You can use the Wwise Browser to access objects from your Wwise project in Unreal. To access the Wwise Browser, click Window > Wwise Browser.

The Wwise Browser includes a variety of features, some of which require a connection to the Wwise Authoring API (WAAPI), and others that do not. For more information about WAAPI features, refer to Using Waapi Features.

The Wwise Browser's contents are refreshed automatically after you regenerate SoundBanks. To manually refresh the list, click the Refresh button.

You can use the Wwise Browser to:

  • Locate files on disk.
  • Importing Wwise Assets Import Wwise Assets
  • Using the Drag-and-Drop Feature Drag Assets into Unreal Blueprint nodes or object components and properties.

Using Waapi Features

Certain Wwise Browser features require the Wwise Authoring API (WAAPI). To enable these features, you must:

  • Enable the Wwise Authoring API. Refer to Wwise Authoring API (WAAPI) for instructions.
  • Open the Wwise project in Wwise Authoring.

The Wwise Browser is populated in real time with data from the Wwise Authoring tool. Any changes you make in Wwise are immediately reflected in the Wwise Browser, even before you save your changes in Wwise.

After WAAPI is enabled, you can use the Wwise Browser to:

  • Preview sounds.
  • Toggle item selection sync between Wwise and Unreal.

Previewing Sounds

You can use the Wwise Browser to preview sounds from your Wwise project in the Unreal Editor before you generate SoundBanks.

To preview a sound in the Wwise Browser, do one of the following:

  • Select an Event or an Actor-Mixer and press the Space bar.
  • Right-click the Event or Actor-Mixer and then click Play/Stop.

To stop a sound, do one of the following:

  • Press Space bar.
  • Right-click any element and click Stop All.

Finding Work Units on Disk

You can use the Wwise Browser to open the folder in your file system that contains the Work Unit associated with an object.

To show the Work Unit location on disk:

  • Right-click the element in the Wwise Browser, then click Show in Folder.

Using the Drag-and-Drop Feature

You can drag Events, Auxiliary Busses, Acoustic Textures, States, Switches, Game Parameters (RTPCs), and Triggers from the Wwise Browser into the Unreal Content Browser to create corresponding UAkAudioEvent, UAkAuxBus, UAkAcousticTexture, UAkStateValue, UAkSwitchValue, UAkRtpc, UAkTrigger assets.

To drag Wwise Assets into Unreal:

  1. Open the Content Browser folder in which you want to create the asset.
  2. In the Wwise Browser, select the Wwise object you want to use.
  3. Drag the Wwise object into the Content Browser. A corresponding Unreal object is created.

In addition to individual items, you can drag any container (Work Unit, Folder, Switch/State Group) into the Content Browser to recreate the hierarchy as it exists in Wwise Authoring.

In addition, you can drag objects into:

  • Parameters to Blueprint nodes.
  • Object components or properties.
Note:
If you drop an object anywhere other than the Content Browser, the asset is created in the folder specified by the Default Asset Creation Path.

Setting the Default Asset Creation Path

You can specify a default asset creation path. Assets that are automatically created from Wwise objects (for example, by dropping an object from the Wwise Browser onto a Blueprint) are created in this folder.

To set the default asset creation path:

  1. In the Unreal menu bar, click Edit > Project Settings. The Project Settings dialog opens.
  2. On the Wwise - Integration Settings page, scroll to the Asset Creation section and type or paste the desired Default Asset Creation Path:

Importing Wwise Assets

You can import Wwise Assets into your Unreal project from the Wwise Browser.

To import a Wwise Asset:

  1. In the Wwise Browser, right-click the Asset you want to import and in the contextual menu, click Import Selected Assets. A file browser opens.
  2. Browse to the desired location and click Select Folder. The Asset is imported to the folder.

Wwise Browser Columns

The Wwise Browser is separated into four columns, which are described in the following sections.

Name Column

The Name column recreates the hierarchy of the project as it exists in the SoundBanks and displays the name of the Wwise Items. It prioritises the name found in the Generated SoundBanks over the name in Wwise if the names are different.

Wwise Project vs SoundBank Column

The Wwise Project vs SoundBank Column compares the Wwise Project to the Generated SoundBanks and provides information about the differences between the two. For this column to work properly, the Wwise Browser musbe connected to Waapi.

  • New in Wwise: The Wwise Project has the information but the SoundBanks do not. Generating the SoundBanks creates the item in the SoundBanks and changes this column to SoundBank Up to Date.
  • Deleted in Wwise: The SoundBanks have the item information but Wwise does not. Generating the SoundBanks removes the item from the Wwise Browser or, if a UAsset of the item exists, changes the column to Not in Wwise or SoundBank.
  • Renamed in Wwise: The Wwise Project and the SoundBanks have the same item but with different names. Generating the SoundBanks renames the item inside the SoundBanks to match the name in Wwise.
  • Not in Wwise or SoundBank: A UAsset uses an item that does not exist in Wwise or the SoundBanks. Avoid using this UAsset in your game.
  • Moved in Wwise: The item exists in both Wwise and the SoundBank, but in a different location in each. Generating the SoundBanks moves the item to the same location it is in Wwise and changes this column to SoundBank Up to Date. Items with this label are shown where they are according to the SoundBanks in the Wwise Browser.
  • SoundBank Up to Date: The Wwise Project and the SoundBanks have the same information about the item.

Unreal Assets Column

The Unreal Assets Column provides information about the Wwise assets inside the Unreal project. If the Wwise item does not have a matching UAsset, this column is empty. If only one UAsset exists for the item, the Column shows the name of the UAsset. If there are multiple UAssets for the item, then “Multiple UAssets” followed by the number of UAssets is displayed. To see all the items, right-click on the item and click Show in Content Browser.

SoundBank vs UAsset Column

The SoundBank vs UAsset Column compares the Generated SoundBanks to the assets in the Unreal project.

  • UAsset Missing: The item exists in the SoundBanks but there are no UAssets associated with it. This means that the item is not used in your game.
  • Not in SoundBank or Unreal: The item exists only in Wwise. Generating the SoundBanks changes this item to UAsset Missing.
  • UAsset Orphaned: This UAsset has no item associated with it. Using it in your game will throw warnings.
  • Renamed in SoundBank: The item exists and there is a single UAsset associated with it but the name of the item and the UAsset are different.
  • Multiple UAssets: The item exists and there are multiple UAssets associated with it.
  • UAsset Up to Date: There is one UAsset associated with the item and its information is up to date with the SoundBanks.

Filtering

You can filter Wwise objects to reduce the number of objects displayed in the Browser. There are three categories of filtering: SoundBank Status, UAsset Status, and Types. The SoundBank Status filters on the “Wwise Project vs SoundBanks” column, The UAsset Status filters on the SoundBanks vs UAssets column and Types filters on the Wwise item type. When you select a filter, all Wwise objects that do not satisfy the condition are filtered out of the Wwise Browser.

For an item to remain in the Wwise Browser, it must satisfy the conditions of all three categories. For example:

In this case, the Wwise objects must be Events or Switches that are UAsset Orphaned or Not in SoundBank or UAsset and Renamed in Wwise or New in Wwise.

There is also a filter bar in which you can type Wwise object names to search for those objects.


Wwise Unreal Integration Documentation: Working with Reverb

Working with Reverb

With the Wwise Unreal Integration, you can use the AkLateReverbComponent to assign Aux Busses automatically. You can also use it to drive globabl reverb RTPCs. The following sections provide details.

Automatically Assigning the Aux Bus

You can use AkLateReverbComponent to automatically assign the aux bus through the Aux Bus Assignment Map. For each decay value, there is a corresponding aux bus asset. The decay estimate for the AkLateReverbComponent is checked against the decay values in the map. The assigned aux bus is the first aux bus in the map that has a decay value greater than the decay estimate for the AkLateReverbComponent. Therefore, a decay estimate between decay value X and decay value Y in the map is assigned the aux bus that corresponds to decay value Y. If the decay estimate is greater than the maximum decay value in the map, it is assigned the Default Reverb Aux Bus.

The Global Decay Absorption value acts as a global scaling factor for the decay estimations. It controls the absorption constant that is used in the Sabine equation when estimating the T60 decay. The default value is 0.5.

Driving Global Reverb RTPCs

You can use AkLateReverbComponent to drive global reverb RTPCs with values calculated from the parent Primitive Component of the AkLateReverbComponent. These RTPC fields determine which RTPCs to set with the reverb parameter estimations from AkLateReverbComponent. The RTPC asset fields take precedence over the name fields. If no asset is assigned, the string in the name field is used to set the RTPC. If the name field is also empty, no RTPC is set.

Note:
For AkLateReverbComponent to use the global reverb RTPCs, the reverb component must have a sibling AkRoomComponent (in other words, an AkRoomComponent that shares the same Primitive parent component). The RTPC values are set on the Room IDs.


Wwise Unreal Integration Documentation: Visualizing Radii

Visualizing Radii

When you select an AkAmbientSound, the relevant asset radii are drawn. If you modify the assets in Wwise Authoring while a WAAPI connection is enabled, the radii are updated in real time.

To update an asset radius:

  1. In the Unreal Actor Browser, select an AkAmbientSound.
  2. In Wwise Authoring, change any object associated with the Event assigned to the AkAmbientSound.
  3. If WAAPI is not enabled, regenerate SoundBanks.
  4. Select the AkAmbientSound again. The size of the corresponding sphere in the Unreal Editor changes at the same time.

If WAAPI is not enabled, the Max Attenuation is obtained from the generated SoundBanks. In your Wwise Project Settings, under the SoundBanks tab, ensure that Generate Per Bank Metadata File, Generate JSON Metadata, and Max Attenuation are selected. The next time you generate SoundBanks in the Unreal Editor, the Max Attenuation information is added to all UAkAudioEvents, and the attenuation spheres are visible in your level viewport.


Wwise Unreal Integration Documentation: Using the Editor Listener

Using the Editor Listener

A single listener is activated in edit mode. You can use it to, for example, properly preview Level Sequences that contain positioned audio. This listener's position is determined by the camera position of the focused viewport. Click between multiple viewports to "jump" from one position to another.

The listener is also used in the Animation Editor viewport, where you can accurately preview 3D-spatialized sounds while you work on animations.

Note that when you start a Play in Editor (PIE) session, the Editor listener is deactivated, and the traditional listener on the Camera is enabled. When you leave a PIE session to start a Simulate in Editor (SIE) session, both the Editor listener and the Camera listener are active at the same time. When you switch back to PIE mode, the Editor listener is disabled again.


Wwise Unreal Integration Documentation: Testing with Multiple Play In Editor and Wwise Instances

Testing with Multiple Play In Editor and Wwise Instances

If you are testing multiplayer audio in Unreal, you might want to run separate Play in Editor (PIE) sessions with a separate Wwise instance for each session. One way to do this is through a multiplayer option in Unreal. If you disable Run Under One Process in the Play In Editor Multiplayer Options, each PIE instance uses an independent instance of Wwise. However, be aware that this approach consumes more system resources and might affect perfomance.


Wwise Unreal Integration Documentation: Triggering Wwise Events in Animation Sequences

Triggering Wwise Events in Animation Sequences

You can use an Animation Notify to trigger Wwise Events in Animation Sequences.

An AkComponent must be attached to the animated mesh component. If you use the Animation Notify on a mesh component that does not have an attached AkComponent, an AkComponent is created with default values for all UPROPERTIES, and it is not possible to modify them. If you want to modify the notify's behaviour, we recommend that you create a copy in your project and modify the copy.

The Blueprint for the Animation Notify is located here: …/Plugins/Wwise/Content/AnimNotify_AkEvent.uasset

To add an Animation Notify:

  1. In the Unreal Content Browser, open an Animation Sequence asset.
  2. Right-click the Notifies track in the Animation Sequence Editor and click Add notify > AkEvent or AkEventByName.
    The animation notification has the following properties:
    • Event or Event Name: The UAkAudioEvent to post.
    • Attach Name: The name of the socket that emits the UAkAudioEvent. If not defined, the animation owner emits the AkAudioEvent.
    • Follow: Determines whether the Event follows the mesh or is posted at a specific location.

For more information on the Animation Sequence Editor in Unreal, refer to Animation Sequence Editor.


Wwise Unreal Integration Documentation: Localizing Audio Assets

Localizing Audio Assets

You can use Wwise Unreal Integration features to map Unreal Cultures to Wwise languages and ensure that your corresponding Unreal and Wwise projects support the same set of languages for asset localization. After the mapping is complete, you can change languages with certain Blueprint nodes or through the C++ AkAudioDevice API.

Mapping Unreal Cultures to Wwise Languages

For Unreal Cultures, you can use any ISO-639-1 language code and, optionally, an ISO 3166 country code (fr-CA, en-GB, and so on). For the Wwise Language, you can use any of the languages in your Wwise project. For more information on localization in Wwise, refer to Localizing Your Project.

To map an Unreal Culture to a Wwise language:

  1. From the Unreal menu bar, click Edit > Project Settings.
  2. In the Wwise section, click Integration Settings. The Localization section includes the mapping of Unreal Cultures to Wwise languages:
  3. Click Add Element (+). A new row is added to the list.
  4. In the text box on the left, type a valid Unreal Culture and in the text box on the right, type a corresponding Wwise language.

Note:
The Wwise language must match the specified language in the Wwise project exactly (capitalization, spacing, and any special characters such as parentheses).

Changing Languages with Blueprints

After you map the Unreal Cultures to the Wwise languages, you can use Blueprint nodes to change audio languages and cultures in Unreal. Two Blueprint nodes are available:

  • Set Current Audio Culture
  • Set Current Audio Culture Async

Changing Languages with the API

You can change the audio language or culture directly from code in the C++ AkAudioDevice API FAkAudioDevice::Get()->SetCurrentAudioCulture(). You can pass either a Wwise language or an Unreal Culture to the C++ function or Blueprint node.

When SetCurrentAudioCulture() is called:

  1. The string passed to the function determines the Wwise language to set.
  2. The Integration calls FWwiseResourceLoader::SetLanguage with the EWwiseReloadLanguage::Immediate parameter.
  3. The Integration then calls IWwiseStreamMgrAPI::SetCurrentLanguage with the new language.

The asynchronous variant immediately calls IWwiseStreamMgrAPI::SetCurrentLanguage, and FWwiseResourceLoader::SetLanguage (which does the heavy lifting of reloading Wwise resources) is called in an asynchronous task. When FWwiseResourceLoader::SetLanguage is finished, the Completed Blueprint event is fired.

Advanced users might want to use different values of EWwiseReloadLanguage. If this is the case, we recommend that you avoid using the supplied Blueprints and the AkAudioDevice API and to call the FWwiseResourceLoader::SetLanguage and IWwiseStreamMgrAPI::SetCurrentLanguage functions directly.

The three possible states of EWwiseReloadLanguage are:

  • EWwiseReloadLanguage::Immediate
    • The CurrentLanguage variable in the FWwiseResourceLoader used when loading event resources is set to the new language.
    • The resources of all Soundbanks, ShareSets, Aux Busses, and Events that were loaded in the previous language are reloaded.
  • EWwiseReloadLanguage::Safe
    • Does the same things as Immediate, but also calls IWwiseSoundEngineAPI::StopAll() to stop all playing sounds before resources are reloaded.
  • EWwiseReloadLanguage::Manual
    • Only the CurrentLanguage variable in the FWwiseResourceLoader is changed to the new language.
    • The user is responsible for unloading and reloading the Wwise resources that require the language change.
Note:
Due to limitations in the Wwise Sound Engine, we recommend that you change languages when no localized sounds are playing. If an event is playing, the Sound Engine does not unload the bank that contains it. A loaded bank cannot be replaced by a new bank with the same name, even if it is in a different language. The bank must be unloaded first.

Packaging Localized Assets

When localized Wwise assets are cooked, the resources (.bnk and .wem files) for each language are packaged with the assets. Refer to Cooking and Packaging on the Known Issues page.


Wwise Unreal Integration Documentation: Using External Sources

Using External Sources

Table of Contents

  • Using the Wwise Simple External Source Manager
  • Setting up External Sources in Wwise
  • Understanding External Sources
  • Understanding the Wwise External Source Manager
  • Implementing the Wwise External Source Manager
  • Wwise External Source Manager Blueprints
  • State Structures Used by the External Source Manager
    • FWwiseExternalSourceState
    • FWwiseExternalSourceFileState

External Sources are a type of source that developers can associate with a Wwise sound object to dynamically change the media associated with a source. External Sources provide sound data at runtime.

For this reason, developers will likely want to implement their own systems determining which media should be loaded and how (and when) this loading should occur. The External Source Manager was designed with this in mind, it provides a highly extensible base class which provides most of the boilerplate implementation for tracking the states of External Sources and their media, but requires extension to define the actual loading behavior.

Using the Wwise Simple External Source Manager

The integration includes a sample extension of the Wwise External Source Manager called the Wwise Simple External Source Manager. It supports basic External Source management and provides a reference for developers who want to implement their own manager. Refer to Using the Wwise Simple External Source Manager for more information.

Setting up External Sources in Wwise

The generation path for External Sources is set in Wwise Authoring, in the External Sources tab in the Project Settings dialog. Refer to Specifying the Input/Output Locations for External Sources for more information.

Understanding External Sources

An External Source is an empty container. The game has to fill it and inform the Sound Engine about what it contains.

An External Source uses a Cookie, similar to a ShortId, as an identifier. To obtain the Cookie, hash the name specified for the External Source plugin in the source's Contents Editor. Refer to Contents Editor: Wwise External Source for more information.

When an Event that uses External Sources is posted to the SoundEngine, an array of AkExternalSourceInfo structures that identify the media to use for each Cookie must be passed with it. This media can be in-memory or streamed, and the game must ensure that these resources are ready when the Event is posted.

For more information about External Sources, refer to the following topics:

  • Wwise External Source Overview
  • Contents Editor: Wwise External Source
  • AkExternalSourceInfo Struct Reference

For more details about External Source conversion, refer to Integrating External Sources.

Understanding the Wwise External Source Manager

External Sources have several notable characteristics:

  • Multiple Events can use the same External Source.
  • Multiple External Sources can use the same Media.
  • The media an External Source uses is not defined in a SoundBank and can be changed at any time by game logic.

Given the complex relationship between Events, External Sources, and Media, the Wwise External Source Manager has several responsibilities:

  • Tracking the state of External Sources used by loaded Events.
  • Providing AkExternalSourceInfo structures for calls to PostEvent.
  • Tracking the state of loaded media used by External Sources.
  • Tracking the mapping between loaded External Sources and media.
  • Triggering the loading and unloading of media used by External Sources.
  • Packaging the media files used by External Sources in the game.

Implementing the Wwise External Source Manager

To implement a custom Wwise External Source Manager, you must first create a new Unreal module. At a minimum, the module must contain two classes:

  • A class that inherits FWwiseExternalSourceManager, which handles the responsibilities listed in the previous section.
    • FWwiseExternalSourceManager contains the pure virtual interface required to define External Sources. For special cases, a project can define this as its inheritance point and fully control the External Source pipeline.
    • FWwiseExternalSourceManagerImpl has all the functions necessary for the runtime to load and unload the media used by External Sources. It has a map of External Source cookies to media IDs, handles the I/O operations, and keeps track of the media lifetime. Inheriting this class simplifies the implementation of custom tracking operations and packaging. The FWwiseExternalSourceManagerImpl class handles complex I/O details itself.
    • You can also use FWwiseSimpleExtSrcModule as a parent class because it is extendable.
  • A class that implements FWwiseFileHandlerModule, which overrides InstantiateExternalSourceManager in order to return an instance of the first class.

Afterwards, to enable the module you can set the WwiseFileHandlerModuleName to the name of the new module in the [Audio] section of the DefaultEngine.ini file. Refer to Enabling the Simple External Source Manager for more information.

The Wwise External Source Manager is an interface in the WwiseFileHandler module. When Wwise Event assets that use External Sources are loaded, the WwiseResourceLoader module passes the External Source information in the Event's CookedData (refer to Wwise Unreal Assets) to the WwiseFileHandler, which then delegates resource loading to the Wwise External Source Manager Implementation. What happens next depends on the implementation.

In the default implementation, the External Source Manager creates a FWwiseExternalSourceState structure that tracks the External Source. Depending on the implementation and the information available at the time, the media is either loaded or prepared for streaming. Similarly, when an Event asset is unloaded, the External Source Manager is notified and updates the state of the External Source accordingly. This behavior, which fulfills the External Source Manager's first responsibility (tracking the state of External Sources), is implemented in the following functions:

  • PrepareExternalSourceInfos: Public method that selects and retrieves the media list to play depending on the requested External Source, and prepares the AkExternalSourceInfo necessary to play the External Sources.
  • LoadExternalSource: Public method that prepares a call to LoadExternalSourceImpl in the manager's execution queue.
  • UnloadExternalSource: Public method that prepares a call to UnloadExternalSourceImpl in the manager's execution queue.
  • LoadExternalSourceImpl: (Virtual) Handles the creation of, or updates to, tracked External Source States. It then calls LoadExternalSourceMedia.
  • UnloadExternalSourceImpl: (Virtual) Handles the removal of, or updates to, tracked External Source States. If the External Source State is to be removed, UnloadExternalSourceMedia is called.

The second responsibility (filling AkExternalSourceInfo structures) is handled by PrepareExternalSourceInfos, which returns the PostEvent External Source parameter. It retrieves the data in the CookieToMedia, uses that information to define the different file states, and provides the AkExternalSourceInfo structure necessary to post the event. You can override it if you want to use a more complex selection algorithm.

In the Wwise Simple External Source Manager extension, a fixed MediaInfo DataTable identifies all External Source media in the project as well as their relevant metadata. A more advanced system could dynamically update the list of known media. Because there are many different ways to implement such a system, all operations are virtualized. You can create code with random containers that change every single PostEvent, or structures that change based on external states, such as a language change.

In order to perform the next set of responsibilities (tracking the state of loaded media, tracking their mapping to External Sources, and loading them from disk), the FWwiseExternalSourceManagerImpl class tracks known External Source media and the information necessary to load them. This state tracking is done internally through the ExternalSourceStatesById map.

After you implement the system and structures mentioned above, we recommend that you implement the following virtual functions:

  • LoadExternalSourceMedia: Find the media that an External Source uses and load it (or prepare it for streaming). We recommend that you use the methods inherited from FWwiseFileHandlerBase to track media loading states and FWwiseExternalSourceFileState structures to manage media resources.
  • UnloadExternalSourceMedia: Find the media that an External Source uses and unload its resources.
  • SetExternalSourceMediaById: Set the media ID of an External Source identified by its name.
  • SetExternalSourceMediaByName: Set the media name of an External Source identified by its name.
  • SetExternalSourceMediaWithIds: Set the media ID of an External Source identified by its Cookie.

The SetExternalSourceMedia functions assume that each External Source media has a unique ID and, in the case of SetExternalSourceMediaByName, that it is possible to retrieve a media ID from its name. We recommend that you use Simple Wwise External Source Manager as a reference for these functions, because it is likely that your implementation will only differ in how you store, update, and retrieve your External Source to media mapping. Remember that dynamic changes to the mapping between External Sources and media files can lead to resources being loaded and unloaded.

The current implementation treates these as blocking functions, which potentially run through the Game Thread. However, this is not a requirement.

Warning:
Forcibly unloading External Source media while it is playing causes the SoundEngine to crash. The FWwiseExternalSourceFileState can handle this automatically through the BindPlayingIdToExternalSources and OnEndOfEvent methods to increment and decrement their play count.

After you finish the implementation of the various functions discussed so far, the most complex part of the External Source manager is complete. If everything works properly, loading an Event Asset (or however your system implements External Source preparation) loads the media used by its External Sources in memory or prepares it for streaming.

Finally, you must package the External Source media. A simple method consists of generating External Source media inside your Unreal project in a directory that is set to always cook. To implement more complex packaging logic, override the External Source Manager's Cook method, which is called by the Wwise Resource Cooker for each External Source contained in cooked Wwise Assets.

The following overridable functions are also available:

  • BindPlayingIdToExternalSources: Override this to update your manager's internal state when Events that use External Sources are posted.
  • OnEndOfEvent: Override this to update your manager's internal state when Events that use External Sources stop playing.
  • SetGranularity: Set the granularity (minimum number of bytes to read) of the prefetch chunk of streaming media.

Wwise External Source Manager Blueprints

By default, three Blueprint functions are exposed in WwiseExternalSourceStatics :

  • SetExternalSourceMediaById
  • SetExternalSourceMediaByName
  • SetExternalSourceMediaWithIds

These functions call the corresponding functions defined in the External Source Manager extension. Refer to External Source Manager Blueprint Functions for more information.

State Structures Used by the External Source Manager

FWwiseExternalSourceState

Structure used by default in WwiseExternalSourceManagerImpl to reference count loaded External Sources.

FWwiseExternalSourceFileState

State structure used by the Wwise Simple External Source Manager to handle media resources. The state tracks its reference count as well as whether it is currently being played. Unloading External Source media while it is playing causes the SoundEngine to crash. Two subclasses are available to handle in-memory or streaming media:

  • FWwiseInMemoryExternalSourceFileState
    • Media Data is loaded into memory so it can be used to create an AkExternalSourceInfo struct to pass to the SoundEngine.
  • FWwiseStreamedExternalSourceFileState
    • The FileState registers itself with the FWwiseFileHandlerBase base class of the External Source Manager. When requests to stream media are passed to the External Source Manager, the registered FileState is retrieved and it handles the subsequent I/O requests.


Wwise Unreal Integration Documentation: Using the Wwise Simple External Source Manager

Using the Wwise Simple External Source Manager

Table of Contents

  • Enabling the Simple External Source Manager
  • Settings
    • Media Info Table
    • External Source Default Media
  • How the Simple External Source Manager Works
  • Updating the Data Tables
  • External Source Manager Blueprint Functions
  • External Source Manager API
  • Limitations of the Simple External Source Manager

When you work with External Sources, it is important to remember that External Sources and their media are decoupled by default. The designer (or developer) must explicitly establish the mapping between an External Source Cookie, which is essentially a ShortID, and the media to play. External Source media can be generated alongside SoundBanks and streaming media, but the designer must also track the media files and their metadata.

The Simple External Source Manager provides features you can use to track External Source media and map them to External Sources. This is done through the use of Data Tables (.csv files) that describe the External Source media to use in the game as well as an API and Blueprint functions to assign media to External Sources.

Note:
Example usage of this SubModule is available in the WwiseDemoGame.

Enabling the Simple External Source Manager

By default, the Simple External Source Manager module is disabled. To enable it, add the following lines to the DefaultEngine.ini file in your Unreal project:

[Audio]
WwiseFileHandlerModuleName=WwiseSimpleExternalSource

This code overrides the WwiseFileHandlerModule with a module that uses the Wwise Simple External Source Manager submodule to handle loading External Sources.

Settings

There are two Data Tables and a Directory to set in the Wwise Simple External Source Manager Settings:

  • Media Info Table contains the metadata necessary to load media files.
  • External Source Default Media (optional) defines an initial mapping between External Sources and media in the Media Info Table. You can update or add to this mapping with the API or Blueprint functions described later in this document.
  • External Source Staging Directory specifies where to copy the External Source media files relative to the "Game" folder in the packaged game.

Media Info Table

Entries in the media info table have the following properties:

  • Name: Must match the ExternalSourceMediaInfoId. Used for lookup in the table.
  • ExternalSourceMediaInfoId: Unique ID used to track media in the manager.
  • MediaName: File name (with extension) used to find the file on disk. Also used by the manager to look up media IDs when setting media by name.
  • CodecID: ID of the codec used to decode the media data. Refer to the AkCodecId enum in AkGameplayTypes.h.
  • bIsStreamed: Determines whether to load the media as streaming or in-memory.
  • bUseDeviceMemory: Determines whether to use device-specific memory. Only applies to in-memory media.
  • MemoryAlignment: Memory alignment to use. Only applies to in-memory media.
  • PrefetchSize: Amount of data to prefetch (in bytes). Only applies to streaming media.

External Source Default Media

Entries in the default media table have the following properties:

  • Name: Must match the ExternalSourceCookie. Used for lookup in the table.
  • ExternalSourceCookie: Unique ID of the External Source, found in Wwise Authoring or in SoundBank metadata.
  • ExternalSourceName: Used for logging.
  • MediaInfoId: Must match an ExternalSourceMediaInfoId in the Media Info Table.
  • MediaName: Used for logging.

How the Simple External Source Manager Works

When the Simple External Source Manager is instantiated, it reads the Media Info Table to populate its list of media metadata. At the same time, a map of media names to media IDs is populated for use with the External Source Manager Blueprint Functions.

Next, the External Source Default Media is read, and External Source Cookie / media ID pairs are added to a map. This optional Data Table sets "default" media for External Sources to use in the game. This system reduces the number of Blueprint and function calls to the SetExternalSourceMedia methods: if the default media are already defined, it is only necessary to use these methods for External Sources that dynamically change their media.

When the External Source Manager loads an External Source (usually triggered by an AkAudioEvent being loaded), a state structure that tracks the number of assets that reference the External Source is created and this map is checked. If a media pairing exists in the map, a state structure for the media is created or updated if it already exist. Depending on the information read from the Media Info Table, the media is either loaded into memory from disk or, if it is streamed, the created state is registered to handle incoming streaming requests from the SoundEngine.

If an External Source Cookie / media ID pair is set during gameplay (for example, by the External Source Manager Blueprint Functions), and if the External Source is already loaded, the media is loaded immediately. If the Exteral Source was already mapped to a different media, the reference count of that media is decremented. If the reference count is 0, it is unloaded after it stops playing.

All PostEvent calls that pass through the AkAudioDevice, including PostEvent calls from the Integration's Blueprint functions, call the External Source Manager's PrepareExternalSourceInfos method. This method selects the media to post on the passed External Source cookies. After the operation succeeds (or fails), the BindPlayingIdToExternalSources method is called to bind all the selected media onto the posted event's Playing ID. Similarly, when Events finish playing, the OnEndOfEvent method is called, which informs the External Source Manager that the media are no longer used by that Playing ID.

Finally, the Cook method supports the packaging of External Source media. When any Event that uses External Sources is packaged, the Cook method is called for each External Source. When this method is called, the Simple External Source Manager stages every media file in its Media Info Table for packaging. Because this only needs to happen once, a flag is set and subsequent calls to Cook do nothing.

Note:
If you post events with External Sources directly through the WwiseSoundEngine API, ensure that you implement the External Source Manager's PrepareExternalSourceInfos, BindPlayingIdToExternalSources, and OnEndOfEvent at the appropriate times. Otherwise, if you switch the media an External Source uses while it is playing, the previous media might be unloaded prematurely, which could cause the SoundEngine to crash. At a lower level, you can also override the I/O Hook and handle the file management yourself.

Updating the Data Tables

When the Data Tables on disk are modified and the Unreal Editor is open, their contents are re-parsed. Afterwards, all loaded Wwise Events Assets are unloaded, then reloaded. This brute force approach is the simplest way to ensure that the External Source Manager's state is properly updated.

External Source Manager Blueprint Functions

To update the mapping between External Sources and media, the module provides Blueprint functions to set external source media.

There are three Blueprint functions that take names or IDs, depending on your preference:

  • SetExternalSourceMediaById: Use the External Source name to specify the External Source and the MediaID to specify the media.
  • SetExternalSourceMediaByName: Use the External Source name to specify the External Source and the MediaName in the Media Info Table to specify the media.
  • SetExternalSourceMediaWithIds: Use the External Source Cookie to specify the External Source and the MediaID to specify the media.

When you set an External Source media with strings, the Cookie is determined by a hash of the name string (as in Wwise Authoring). The MediaID is retrieved by looking up the the media name in a map that is populated when the Media Info Table is parsed.

Note:
Blueprints can only use signed short integers. To circumvent this restriction, we use a FAkUniqueID variable to set the External Source cookie value.

External Source Manager API

Developers can set External Sources through code in two ways: they can call the Blueprint functions described in the previous section, or they can retrieve the External Source Manager instance and call its methods directly. Most methods in the Wwise Simple External Source Manager are virtual, so developers can extend this manager in a new module to use their own data structures and logic to track media and pair with External Sources.

Limitations of the Simple External Source Manager

The main limitation of the Simple External Source Manager design is the inflexibility of the Media Info Table with respect to multi-platform games. Different platforms use different codecs to decode media, but the structure of the Media Info Table does not support this. One potential solution in an extension of the manager is to create platform-specific Media Info Tables and package the correct one depending on the build target.

When streaming, External Sources have more limitations than internally packaged media. Zero Latency is not possible with External Sources, and the prefetched data is only provided to the SoundEngine when it is requested for playback. There is a playback delay between the initial PostEvent and the actual sample processing, as would occur with any media that do not have Zero Latency.


Wwise Unreal Integration Documentation: Optimizing Memory Usage with Reference-Loaded Switch Containers

Optimizing Memory Usage with Reference-Loaded Switch Containers
Note:
Before version 2022.1 of the Wwise Unreal Integration, this feature was called the "Split Switch Container Media".

By default, when Wwise Event assets are loaded, all resources they might use (SoundBanks and media) are loaded with them. In deep, nested switch container hierarchies, a large number of media resources can be loaded, and the amount of memory required to load these resources increases accordingly. You can use reference-loaded switch containers on a per-event basis to optimize memory usage: when enabled, resources are only loaded if they are referenced, based on Switch or State values.

If the media in your Switch Container is streamed, which is common for large music files, this feature improves performance because the files are only opened for streaming when necessary. Memory usage is also reduced if the media has a prefetch chunk.

This feature is only available for certain Events that use Switch Containers. It provides the most benefits for Events used in several different contexts, and that only use a subset of the container's Switch values in each context.

For example:

  • A main character's footstep Event can contain a deep hierarchy depending on multiple Switches such as footwear, ground material, and weather conditions. However, most maps only contain a subset of materials or weather conditions. Similarly, the character typically only wears one type of footwear at a time, so loading sounds for all other footwear types are unnecessary.
  • Different branches of a dynamic music system based on Switch Containers could depend on Switches or States that are only used in specific maps.

The following image shows a Footstep Event dependency tree:

If the active level references the Human_Surface_Material Switch and only references the Material_Dirt Switch Value (through a SetSwitch node in the Level Blueprint, for example), only the FS_Dirt_[01-04] media files are loaded into memory. When a sublevel that references Material_Grass is loaded, grass_[01-04] media files are automatically loaded with the Switch.

Warning:
When this option is enabled, Switch or State values are loaded in memory to determine which media to load. Be cautious in the following cases:

  • Setting State or Switch Values with strings. You must ensure that the corresponding Switch or State value asset is loaded, for example by using the Load Asset Blueprint Node.
  • Setting State or Switch Values from C++. You must ensure that the corresponding Switch or State Value asset is loaded, for example by using Unreal Engine Asynchronous Asset Loading.
  • Using RTPC-Controlled Switch Containers. This type of container causes inconsistencies when loading media. Avoid using this option if you are using RTPC-Controlled Switch Containers.

In addition, be careful when loading and setting Switches or States in submaps or menus. When those levels are unloaded, the Switch or State Value assets will probably be unloaded as well if they are not referenced in the persistent level, which causes their associated media to be unloaded. This can produce unexpected behavior if the Switch or State Value is still set on GameObjects in the scene.

Enabling Reference-Loaded Switch Container Media

Each UAkAudioEvent contains a FWwiseEventInfo structure, which identifies the Wwise Event it represents. The WwiseEventInfo structure also contains the SwitchContainerLoading field, which can enable reference-loaded Switch Container media.

.

When set to AlwaysLoad, the default mode for all Events, all media resources are loaded with the Event. When set to LoadOnReference, only the referenced media resources are loaded with the Event.

Technical Details

When this option is activated and a Wwise Event asset is cooked by the WwiseResourceCooker, its cooked data contains a set of SwitchContainerLeaves. These leaves are a flattened map of different sets of Switch (or State) Values to media and SoundBanks to load. As seen in the previous example, the FS_Dirt_[01-04] media are only needed if the Human_Surface_Material and Material_Dirt Switches Values are loaded as well. This is represented by a SwitchContainerLeaf with a "key" formed by the pair of Human_Surface_Material and Material_Dirt switches and a payload of FS_Dirt_[01-04] media to load. When a Wwise Event is loaded by the WwiseResourceLoader, its set of SwitchContainerLeaves is added to a list of leaves that the WwiseResourceLoader tracks for each known Switch and State Value. When Switch and State Values are loaded (or unloaded) by the WwiseResourceLoader, it checks its list of known SwitchContainerLeaves associated with that value to see if any media need to be loaded (or unloaded).

Note:
Media dependencies are evaluated only when Event, Switch, and State assets are loaded by the WwiseResourceLoader. Setting and unsetting Switches or States in the Sound Engine does not cause media to be loaded or unloaded.

When a Default Value is set on a Switch Container, the resources that only depend on Default Values are always loaded. The same behavior applies to the Generic Path that can be set in Music Hierarchy Switch Containers. In these cases, resources such as SoundBanks and Media are not put in SwitchContainerLeaves. Instead, they are always loaded with with Events that use those Switch Containers.

This system is easiest to work with when you use Blueprints and Wwise assets to post Events and set Switch and State Values. In this case, the assets are loaded in memory with the level so the WwiseResourceLoader does not miss any information. To optimize memory usage even more, you can also disable the AutoLoad property exposed by UAkAudioType, available in all Wwise assets. When this option is disabled, each asset's LoadData and UnloadData methods (available in Blueprints) must be called for the WwiseResourceLoader to load and unload them.

Finally, it is the game designer's responsibility to ensure that the WwiseResourceLoader has already loaded the necessary resources when attempting to post Events or set Switches and States in the Sound Engine by using strings. This likely requires the relevant Event, Switch Value, and State Value assets to be manually loaded (or referenced in maps or Blueprints). However, it is possible to build Switch or State Value CookedData programmatically, and then load and unload them in the WwiseResourceLoader instead of assets.


Wwise Unreal Integration Documentation: Using the Level Sequencer

Using the Level Sequencer

The Unreal Engine's Sequence Editor is a cinematic editing tool. You can use it to add Tracks that modify certain Actor properties in a level.

Refer to the following topics for background information on the Sequencer:

  • For instructions on how to create a Level Sequence, refer to Sequencer Overview.
  • For instructions on how to add Tracks to a Level Sequence, refer to the Adding Tracks section on the Tracks page.

Setting up Your Wwise Project

To ensure that Event lengths are properly represented in the AkAudioEvent Tracks, you must configure the Wwise project to estimate the duration of its audio Events and generate JSON metadata.

To set up your Wwise project:

  1. Open the project in Wwise Authoring.
  2. From the menu bar, click Project > Project Settings. The Project Settings dialog opens.
  3. On the SoundBanks tab, enable the following options:
    • Estimated Duration
    • Generate JSON Metadata
Required Project Settings for AkAudioEvent Tracks

Using Wwise Level Sequencer Tracks

The Wwise Integration adds two Tracks to the Sequencer:

  • AkAudioRTPC, which sets Game Parameter values.
  • AkAudioEvent, which posts Wwise Events.

You can add both of these Tracks as Master Tracks or associate them with Actors. When associated with Actors, they perform Wwise-related functions on the UAkComponent attached to the Actor. When created as Master Tracks, the AkAudioRTPC Track sets global RTPC values, and the AkAudioEvent Track posts Events on a dummy game object.

For AkAudioRTPC Tracks, you can modify Game Parameter curves with the built-in curve editor. To add key frames, place the cursor in the desired location and click Add New Key on the right side of the listed Track.

An AkAudioRTPC track in the Curve Editor view

For AkAudioEvent Tracks, you can add AkAudioEvent sections. To do so, place the cursor at the desired location and click AkAudioEvent on the right side of the listed Track. Alternatively, you can drag AkAudioEvent assets from the Content Browser directly onto an AkAudioEvent Track.

Adding an AkAudioEvent section to an AkAudioEvent Track

Displaying Waveforms for Wwise Events

The Unreal integration uses the Wwise Authoring API (WAAPI) to extend the Sequencer functionality. For more information about WAAPI and its use in the Unreal integration, refer to Wwise Authoring API (WAAPI). When Unreal is connected to the Wwise Authoring tool through WAAPI, AkAudioEvent sections can display waveforms for Wwise events. When Wwise Authoring is not open, or the Unreal integration is not connected to WAAPI, the AkAudioEvent sections only display the Event name.

Viewing AkAudioEvent Section Waveforms

AkAudioEvent sections display audio waveforms for Events that contain Audio Sources. The waveform in an AkAudioEvent section shows the audio data for the longest Audio Source contained in the Wwise Event. In the following example, a Wwise Event called "Play_Sound" contains three Audio Sources: "Layer_1", "Layer_2", and "Layer_3".

Example Wwise Event with three Audio Sources

If an AkAudioEvent section is added and its Event property is set to "Play_Sound", then the longest of the three Audio Sources is displayed within the section. Note that the waveform might be followed by empty space if the Wwise Event lasts longer than the longest Audio Source that it contains. In this example, because the "Play_Sound" Event has two delayed play actions (for "Layer_2" and "Layer_3"), it lasts longer than the "Layer_1" audio source that it contains. The empty space after the waveform indicates the maximum estimated duration of the Wwise event, as calculated during SoundBank generation (see Setting up Your Wwise Project).

Example AkAudioEvent Section in Sequencer

If the length of the AkAudioEvent section exceeds the maximum estimated duration of the Wwise Event, the section contains either a flat white line or repeating diagonal lines. The flat white line indicates that the Retrigger property is disabled. The repeating diagonal lines indicate that the Retrigger property is enabled. The Retrigger property determines whether Wwise events are retriggered in the Sequencer after they finish (refer to AkAudioEvent Section Properties).

Two AkAudioEvent Sections in Sequencer. Retrigger is enabled in the 'Retrigger' section and disabled in the 'No_Retrigger' section.

Fixing "Out of Sync" Waveforms

If you change an Event's work unit in the Wwise project and those changes are not reflected in the generated SoundBanks, any AkAudioEvent sections for that event are marked as "out of sync". The waveform is displayed in red, and an asterisk is appended to the name of the AkAudioEvent section. Warnings are also printed to the output log when Events are triggered from "out of sync" sections.

Example 'Out of Sync' AkAudioEvent Section

To ensure that AkAudioEvent sections remain synchronized with the Wwise project, there are options to save the project and regenerate SoundBanks directly from the Sequencer. To synchronise all of the sections in an AkAudioEvent track, open the track's context menu (right click) and click Save Wwise project and refresh all sections (see AkAudioEvent Track Context Menu Options).

Scrubbing Tracks

The Sequencer integration supports scrubbing forwards and backwards over AkAudioEvent tracks. Drag the Sequencer playhead over AkAudioEvent sections to hear scrub snippets. To change the length of these scrub snippets, right-click the AkAudioEvent section and in the context menu, click Scrub Tail Length Ms. Refer to AkAudioEvent Section Properties for more details.

AkAudioEvent Track Context Menu Options

From the AkAudioEvent track, right-click to open a context menu that includes the following Audiokinetic-specific option:

  • Save Wwise project and refresh all sections: Saves the Wwise project in Wwise Authoring and regenerates SoundBanks for all AkAudioEvent sections in the Sequencer track. The section waveforms are then updated.

AkAudioEvent Section Context Menu Options

From the AkAudioEvent section on the track, right-click to open a context menu that includes the following Audiokinetic-specific option:

  • Match section length to Wwise event length: Matches the length of the section in the Sequencer track to the duration of the Wwise Event.

AkAudioEvent Section Properties

The property list in the context menu includes the following Wwise-specific section properties:

  • Ak Audio Event: Lists the following editable properties of the AkAudioEvent for the selected section:
    • Event: Event icon. Hover over the Audiokinetic Event icon to view the path to the Event. Double-click the icon to open the Event in the editor.
    • Event: Audiokinetic Event. Open this list to create a new Audiokinetic Event, edit or copy the selected Event, or browse to another Audiokinetic Event.
    • Retrigger Event: When enabled, the Wwise event in the Section is retriggered when the Sequence plays beyond the end of the event. Disabled by default.
    • Scrub Tail Length Ms: Sets the duration in milliseconds of the scrub snippets that are played when scrubbing over the sequence. Default is 100ms.
    • Max Source Duration: Displays the duration of the longest Audio Source contained in the Wwise Event (read only).
    • Advanced:
      • Event Name: Type the exact name of the desired Event. This field is ignored if an Event is already selected in the Audiokinetic Event list.
  • Movie Scene Ak Audio Event Section:
    • Stop at Section End: Clear this box to keep the Event playing when the end of the section is reached. Enabled by default.

Known Issues and Limitations

In general, we recommend that you use very simple AkAudioEvent sections in the Level Sequencer, such as a simple Play action on a Sound SFX. Avoid more complex Wwise Events such as those that contain delayed actions, Seek actions, or which reference Random Containers, Sequence Containers, and other non-deterministic objects. If you do use such Events, divide them into simpler events for optimal use in the Level Sequencer.

Scrubbing and playing from cursor does not work as expected on Events with delayed actions or that contain infinitely looping sounds.

Play In Editor Limitations

If a level sequence is played from the Sequencer editor window while Unreal is running in Play in Editor (PIE) mode, any AkAudioEvent tracks that are associated with game objects do not trigger events. To hear AkAudioEvent tracks that are bound to game objects, you must trigger the level sequence from the Game World.

Replication Limitations

AkAudioEvent and AkAudioRTPC tracks are triggered only on the server and are not replicated to clients.


Wwise Unreal Integration Documentation: Providing Audio Input to Wwise

Providing Audio Input to Wwise

The Unreal integration provides audio input to Wwise through the Wwise Audio Input Source Plug-in. In order to provide audio input to Wwise, classes must inherit from AkAudioInputComponent.

AkAudioInputComponent

AkAudioInputComponent is derived from AkComponent. It is a specialized AkComponent that you can use to provide audio input to Wwise. To do so, you must implement two key functions:

/* The audio callback. This will be called continuously by the Wwise sound engine,
* and is used to provide the sound engine with audio samples. */
virtual bool FillSamplesBuffer(uint32 NumChannels, uint32 NumSamples, float** BufferToFill);
/* This callback is used to provide the Wwise sound engine with the required audio format. */
virtual void GetChannelConfig(AkAudioFormat& AudioFormat);

AkAudioInputComponent also has one Blueprint function, Post Associated Audio Input Event, which posts the component's AkAudioEvent to Wwise along with the associated AudioSamples callback and AudioFormat callback, using this component as the game object source.

Customizing Audio Input Behavior

You can write custom classes that derive from AkAudioInputComponent in order to implement custom audio input behavior. The following UAkVoiceInputComponent.h and UAkVoiceInputComponent.cpp examples show a class that takes microphone input and pipes it to the Wwise Sound Engine.

Before you can use these files in a C++ Unreal project, you must perform some initial setup. First, add the AkAudio and the Unreal Voice modules to the PublicDependencyModuleNames in the project's Build.cs file. For example:

public class MyModule : ModuleRules
{
public MyModule(ReadOnlyTargetRules Target) : base(Target)
{
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "AkAudio", "Voice" });
// Other settings
}
}

Next, add the following lines to the DefaultEngine.ini file:

[Voice]
bEnabled=true

After these setup steps are complete, add the desired custom behavior. In the following example, a class takes microphone input and sends it to Wwise.

Note:
The sample code in this section is not intended for use in shipped games. It is only a short example of how to implement custom behavior.

Here is an example of a customized AkVoiceInputComponent.h file:

#pragma once
#include "CoreMinimal.h"
#include "AkAudioInputComponent.h"
#include "Voice.h"
#include "AkVoiceInputComponent.generated.h"
/*
*/
UCLASS(ClassGroup = Audiokinetic, BlueprintType, hidecategories = (Transform, Rendering, Mobility, LOD, Component, Activation), meta = (BlueprintSpawnableComponent))
class WWISEDEMOGAME_API UAkVoiceInputComponent : public UAkAudioInputComponent
{
GENERATED_BODY()
UAkVoiceInputComponent(const class FObjectInitializer& ObjectInitializer);
virtual void TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction *ThisTickFunction) override;
protected:
/* This is called after the GameObject that owns this component is unregistered from the Wwise sound engine. */
virtual void PostUnregisterGameObject() override;
/* The audio callback. This will be called continuously by the Wwise sound engine
and is used to provide the sound engine with audio samples. */
virtual bool FillSamplesBuffer(uint32 NumChannels, uint32 NumSamples, float** BufferToFill) override;
/* This callback is used to provide the Wwise sound engine with the required audio format. */
virtual void GetChannelConfig(AkAudioFormat& AudioFormat) override;
/* The Unreal IVoiceCapture, used for accessing microphone input. */
TSharedPtr<IVoiceCapture> VoiceCapture;
/* This array is reset and refilled every time a new buffer comes in from the voice capture. */
TArray<uint8> IncomingRawVoiceData;
/* This array holds all of the previously collected audio data from the voice capture.
It is written to when processing available microphone data,
and read from (and shrunk) when passing data to the Wwise engine.
Shrinking a buffer in the audio callback is not advisable and this should NOT be used in a shipped game!*/
TArray<uint8> CollectedRawVoiceData;
/* This flag is used to protect against writing microphone data to the collected data buffer while it is being read from. */
FThreadSafeBool bIsReadingVoiceData = false;
};

Here is an example of a customized AkVoiceInputComponent.cpp file:

#include "AkVoiceInputComponent.h"
UAkVoiceInputComponent::UAkVoiceInputComponent(const class FObjectInitializer& ObjectInitializer) :
UAkAudioInputComponent(ObjectInitializer)
{
CollectedRawVoiceData.Reset();
VoiceCapture = FVoiceModule::Get().CreateVoiceCapture();
}
void UAkVoiceInputComponent::TickComponent(float DeltaTime, enum ELevelTick TickType, FActorComponentTickFunction *ThisTickFunction)
{
Super::TickComponent(DeltaTime, TickType, ThisTickFunction);
if (!VoiceCapture.IsValid())
{
return;
}
uint32 NumAvailableVoiceCaptureBytes = 0;
EVoiceCaptureState::Type CaptureState = VoiceCapture->GetCaptureState(NumAvailableVoiceCaptureBytes);
/* IVoiceCapture updates its EVoiceCaptureState on every tick.
We therefore know, between ticks, the state will tell us if there is actually new data to collect. */
if (CaptureState == EVoiceCaptureState::Ok && NumAvailableVoiceCaptureBytes > 0)
{
uint32 NumVoiceCaptureBytesReturned = 0;
IncomingRawVoiceData.Reset((int32)NumAvailableVoiceCaptureBytes);
IncomingRawVoiceData.AddDefaulted(NumAvailableVoiceCaptureBytes);
uint64 SampleCounter = 0;
VoiceCapture->GetVoiceData(IncomingRawVoiceData.GetData(), NumAvailableVoiceCaptureBytes, NumVoiceCaptureBytesReturned, SampleCounter);
if (NumVoiceCaptureBytesReturned > 0)
{
/* Spin while data is being read from the collected buffer */
while (bIsReadingVoiceData) {}
CollectedRawVoiceData.Append(IncomingRawVoiceData);
}
}
}
bool UAkVoiceInputComponent::FillSamplesBuffer(uint32 NumChannels, uint32 NumSamples, float** BufferToFill)
{
if (!VoiceCapture.IsValid())
{
return false;
}
const uint8 NumBytesPerSample = 2;
const uint32 NumRequiredBytesPerChannel = NumSamples * NumBytesPerSample;
const uint32 NumRequiredBytes = NumRequiredBytesPerChannel * NumChannels;
int16 VoiceSample = 0;
uint32 RawChannelIndex = 0;
uint32 RawSampleIndex = 0;
bIsReadingVoiceData = true;
const int32 NumSamplesAvailable = CollectedRawVoiceData.Num() / NumBytesPerSample;
const uint32 BufferSlack = (uint32)FMath::Max(0, (int32)(NumSamples * NumChannels) - NumSamplesAvailable);
for (uint32 c = 0; c < NumChannels; ++c)
{
RawChannelIndex = c * NumRequiredBytesPerChannel;
for (uint32 s = 0; s < NumSamples; ++s)
{
if (s >= (NumSamples - BufferSlack) / NumChannels)
{
/* In the case where we received less data from the voice capture than is required by the Wwise engine,
pad the missing samples with zeros. */
BufferToFill[c][s] = 0.0f;
}
else
{
/* Convert the incoming microphone audio data to signed floating point. */
uint32 RawSampleDataMSBIndex = s * 2 + 1;
uint32 RawSampleDataLSBIndex = s * 2;
VoiceSample = (CollectedRawVoiceData[RawSampleDataMSBIndex] << 8) | CollectedRawVoiceData[RawSampleDataLSBIndex];
BufferToFill[c][s] = VoiceSample / (float)INT16_MAX;
}
}
}
const int32 NumBytesRead = (NumSamples - BufferSlack) * NumBytesPerSample;
/* NOTE: Shrinking a buffer in the audio callback is not advisable. This should NOT be used in a shipped game! */
CollectedRawVoiceData.RemoveAt(0, NumBytesRead);
bIsReadingVoiceData = false;
return true;
}
void UAkVoiceInputComponent::GetChannelConfig(AkAudioFormat& AudioFormat)
{
const int sampleRate = 16000;
AudioFormat.uSampleRate = sampleRate;
AudioFormat.channelConfig.SetStandard(AK_SPEAKER_SETUP_MONO);
if (VoiceCapture.IsValid())
{
/* Pass in an empty device name to use default device. */
if (!VoiceCapture->Init(FString(""), AudioFormat.uSampleRate, AudioFormat.channelConfig.uNumChannels))
{
UE_LOG(LogTemp, Error, TEXT("Failed to initialize device for voice input!"));
return;
}
VoiceCapture->Start();
}
}
void UAkVoiceInputComponent::PostUnregisterGameObject()
{
Super::PostUnregisterGameObject();
if (VoiceCapture.IsValid())
{
VoiceCapture->Stop();
VoiceCapture->Shutdown();
}
}

After you add the class to an Unreal project, you can create a custom Blueprint class that has an AkVoiceInputComponent, and can call the Post Associated Audio Input Event Blueprint function (from base class AkAudioInputComponent) to start sending microphone data to Wwise. The following image shows part of the Blueprint for a custom Blueprint class, based on Actor, that has an AkVoiceInputComponent called AkVoiceInput.


Wwise Unreal Integration Documentation: Using the AkAudioMixer Module

Using the AkAudioMixer Module

Table of Contents

  • Description
    • Main Mix (FAkMixerPlatform)
    • Component Submix (UAkSubmixInputComponent)
    • Initialization
    • Polling Order
    • Audio Buffering
  • FAkMixerPlatform Setup
    • Setting up the Wwise Project
    • Setting up the Unreal Project
    • FAkMixerPlatform Limitations
  • UAkSubmixInputComponent Setup
    • Setting up the Wwise Project
    • Setting up the Unreal Project’s Audio
      • Creating the Master Submix
      • Creating Capture Submixes
      • Assigning the Custom Submixes to the Master Submix
    • Assigning Unreal Asset Submixes
    • Setting up Unreal Blueprints
      • Creating an AmbientSound Blueprint Class
      • Applying UAkSubmixInputComponent
      • Creating the Actor, Binding the Event and the Submix

Description

The AkAudioMixer module provides a platform-agnostic Unreal Audio Mixer, which you can use to run the Unreal and Wwise audio mixers concurrently.

The Unreal Audio Mixer is platform independent: it works on Windows, Mac, Android, and consoles. A Mixer Platform that handles the interaction between the platform’s hardware and the platform-independent code. Both the Unreal Audio Mixer and the Wwise SDK automatically initialize and handle a platform’s audio. However, most platforms cannot receive audio from multiple sources simultaneously, especially consoles that initialize one unique audio system. Some consoles crash if they are initialized twice, and some allow both systems to interact with the same objects blindly.

One solution to this problem is to disable Unreal’s Audio Mixer when a project uses Wwise (refer to Frequently Asked Questions for more information). The AkAudioMixer module provides a concurrent, platform-agnostic solution, in which Unreal's Audio Mixer uses Wwise instead of the default platform (XAudio2, SDL Audio, AudioOut, and so on). Wwise can therefore properly initialize the Platform Sound Engine, and Unreal processes audio.

This module provides two different input components, both processed through a basic AkAudioInputComponent. Refer to Providing Audio Input to Wwise for more information.

Main Mix (FAkMixerPlatform)

The Wwise Sound Engine uses FAkMixerPlatform to substitute the platform-specific part of the Unreal Audio Mixer. Through a stereo feed, it is then possible to retrieve the result of the Unreal mixdown as a Wwise Audio Input. When you use FAkMixerPlatform, the Unreal audio subsystem remains fully functional alongside the Wwise audio system.

When you use FAkMixerPlatform, Unreal audio is provided as stereo. This Unreal mixdown is muted in Wwise but is available as a temporary solution because using two different, concurrent spatialization methods can cause audio problems. After you set up the FAkMixerPlatform properly, projects use Unreal submixes only when actual inputs for objects are necessary.

Component Submix (UAkSubmixInputComponent)

You can use UAkSubmixInputComponent to connect any Unreal audio submix to a Wwise Audio Input component. You can then retrieve part of a mix, such as movie audio, and send it to Wwise individually. You can provide the submix in any channel configuration, as required by Wwise. Due to limitations and performance considerations, we recommend that you configure the entire flow in Wwise whenever possible.

Use UAkSubmixInputComponent to retrieve Unreal audio from individual actors. Through the Wwise Unreal Integration, you can link the Audio Input Component with its actor position and then use Wwise integrated spatialization (or the object-based pipeline in 2021.1 or later) to achieve the project’s desired audio properties and quality.

You can use this component independently. It does not require the FAkMixerPlatform. However, be aware that initializing both Unreal’s platform-specific audio and Wwise’s platform-specific sink simultaneously can cause some platforms to crash because they do not support usage of two concurrent audio pipelines.

Initialization

Use Wwise "Play" Events to initialize both FAkMixerPlatform and UAkSubmixInputComponent. The Wwise Sound Engine can then poll the Unreal components.

The Event starts the polling process, and the process must never be virtualized: it is either started or stopped, and the FAkMixerPlatform input component must always be playing. Otherwise, the Unreal audio pipeline does not work properly.

Polling Order

After the initialization is complete, the audio pipeline is executed every few milliseconds to provide the next audio chunk to the hardware.

At the beginning of the pipeline tree, the platform hardware requests an audio buffer from the Wwise Sink. Next, the Wwise Sound Engine polls any playing Audio Input Components for their audio.

At this point, FAkMixerPlatform is polled, and requests the next buffer from the Unreal Master Submix. This, in turn, empties Unreal’s circular audio buffers so that the entire pipeline can continue to work.

Audio Buffering

Two sequential, concurrent systems add some latency to the end mix. Unreal assumes that the A/V component plays at its own speed, and uses a circular buffer to provide audio at the same speed at which the Audio Mixer requests it.

The Unreal Master Submix also has a circular buffer in the Audio Mixer’s FOutputBuffer to ensure audio is provided at a valid speed.

Because the individual submixes are pushed by the Master Submix, and Wwise requests its buffers at the same time, both Unreal and Wwise push requests.

Finally, the Wwise Sink also has buffering, which you can customize through code.

FAkMixerPlatform Setup

With the Wwise Audio Input source plug-in, you can use any input from external sources inside Wwise.

In order to capture the Unreal Mix, you must create one Wwise Audio Input as well as an Event that starts the data acquisition process.

We recommend that you create a bus in the Master-Mixer Hierarchy and a Sound SFX object that uses a Wwise Audio Input source plug-in. The connection to the Master Audio Bus is important, even if you plan to discard the audio as provided by this component eventually. If you mute the final result, you must not virtualize the voice, because virtualization effectively removes the audio polling that the Unreal Audio pipeline requires.

Setting up the Wwise Project

This section describes how to create the Unreal input source in your Wwise Project. As part of the process, you must create an Event to play the associated Sound SFX. Unreal also requires the Event to determine which Audio Input to use for the FAkMixerPlatform.

To create an input source:

  1. In Wwise, create an empty Unreal_Input SFX object.
  2. In the Contents Editor, click Add Source > Wwise Audio Input and add the desired source.
  3. Configure a volume offset at the source level or directly on the Sound SFX object.
  4. Route the sound to the appropriate Output Bus, which is the “Unreal Input Bus” in this example.
  5. In the Actor-Mixer Hierarchy, right-click the Sound SFX and click New Event > Play. The event is automatically named Play_[SoundName] but you can rename it if desired.
Warning:
The FAkMixerPlatform must be “Playing” at all times to ensure that Unreal’s Audio Mixers process audio for its components. If the FAkMixerPlatform is not playing, Unreal’s circular buffers fill up, which can potentially add latency to your audio. To mute the channel, ensure that it is playing and never virtualized or stopped due to lack of audio.

Setting up the Unreal Project

You must configure Unreal to use the Wwise Audio Mixer instead of the platform’s own Audio Mixer. For each platform, add the following lines to <Project>/Config/<Platform>/<Platform>.ini or <UE_ROOT>/Engine/Config/<Platform>/<Platform>Engine.ini. Note that the project settings override the engine settings. If the file does not yet exist, you must create it.

After the desired Wwise Integration is activated, you must use the previously created Play Event in your Project Settings’s Audio Input Event. This binds the FAkMixerPlatform component in your Unreal project to the Wwise Sound Engine.

After you generate SoundBanks, the Event is available in the Unreal Editor through the Wwise Browser. If WAAPI is enabled, it appears in the Wwise Browser.

Generate the SoundBanks in Wwise (or in the Unreal Wwise Browser) and restart the Unreal Editor. A restart is required each time you change the Audio Input Event because it is only initialized once. If you start the Profiler on the Unreal Player in Wwise Authoring, you can see the meters of your Audio Busses moving.

FAkMixerPlatform Limitations

Unreal determines how to encode audio through the ITargetPlatform interface. On each platform, the GetWaveFormat and GetAllWaveFormats methods are called by the Derived Data system in order to determine which audio format is supported. The AkAudioMixer system does not override this selection. Ensure that the function provides a supported, generic format: you can override the necessary files yourself, or ensure that you meet the conditions required to use generic encoding, and not any platform-specific encoding.

Otherwise, you can modify the Unreal source code to change the target platform’s audio formats in the following file pattern: Engine/Platforms/<PlatformName>/Source/Developer/<PlatformName>TargetPlatform/Private/<TargetName>TargetPlatform.cpp

Ensure that the platform’s audio format is equivalent to the one provided in the FMixerPlatformWwise CreateCompressedAudioInfo method as found in this file:

Plugins/Wwise/Source/AkAudioMixer/Private/AudioMixerPlatformWwise.cpp

UAkSubmixInputComponent Setup

Setting up the Wwise Project

The Wwise project preparation for any UAkSubmixInputComponent is similar to the one for FAkMixerPlatform: in your project, you must create a new Wwise Audio Input Source, and add an Event to play. This Event will be bound to your Unreal project later in a Blueprint that you must create yourself.

Warning:
As with the FAkMixerPlatform input, you must ensure that the Wwise object is never virtualized or stopped on its own. Unreal must play or stop the Event. Otherwise, buffers continue to fill on the Unreal side, which causes lags and memory usage spikes.

Setting up the Unreal Project’s Audio

To prepare your Unreal project for a UAkSubmixInputComponent, you must do three things:

  1. Create the Master Submix.
  2. Create capture submixes.
  3. Assign the custom submixes to the Master Submix.

Creating the Master Submix

First, you must set up your Unreal project to override the default Master Submix and customize the Audio Submix flow. If you only create the Master Submix but do not customize it, it does not sound any different than the Default Master Submix. Note that an Unreal project can only use one Master Submix, which is shared by all worlds.

To create a Master Submix:

  1. Create a Sound Submix, as described in Overview of submixes in Unreal Engine. In this example, the name is "MasterSubmix".
  2. In the Project Settings, scroll to the Engine section and click Audio, then open the Mix section.
  3. Set the Master Submix to the newly created Sound Submix. For example:

At this point, you have an empty custom Master Submix without any special routing, and that sounds the same as a copy of the project that uses the Default Master Submix.

Creating Capture Submixes

To efficiently capture the audio of a group of actors in Unreal, you must create two new submixes for each submix category. Because of the way Unreal handles submixes, there must be a hierarchy of two distinct submixes to ensure that the submix audio is not pre-mixed with anything except its own audio.

In the following section, the example uses the submix name, and the second submix has a “Passthrough” suffix (AmbianceSubmix and AmbianceSubmixPassthrough, respectively).

Assigning the Custom Submixes to the Master Submix

Open the custom Master Submix, as defined in the Creating the Master Submix section. Add a graph where the different Passthroughs are set between the real submix and the Master Submix. You can use more submixes and can define any order for the submixes, as long as you arrange them in the following order:

Submix -> Passthrough -> Next in Tree

For example, the following graph demonstrates two different submixes:

At this point, the submixes are unused and unassigned, and your project sounds the same as it did before because all audio from all objects is still routed to the Master Submix. However, when actors start to send their audio to their own custom submix, such as the DiscussionSubmix and AmbianceSubmix as defined here, audio is sent to both the Discussion UAkSubmixInputComponent and the Master Submix, which causes audio duplication.

To prevent this duplication, set the Output Volume of the multiple Passthrough mixes to -96db (0 in Unreal 4.27). This measure ensures that no audio is sent to the Master Submix during mixdown, and the entire audio of the Discussion and Ambiance submixes are delivered to a custom Wwise Audio Input component.

Assigning Unreal Asset Submixes

After the submixes are created and assigned to the Master Submix, add audio to the submixes. In the Effects section of the audio asset details dialog, expand the Submix tab and set the Base Submix to the submix you want to use.

Warning:
You assign multiple assets to any Submix, but be aware that those assets will be mixed before they are sent to the Wwise Audio Input component. It is also more difficult to Play and Stop the Event because more actors affect the submix. It is also harder to configure positioning in these cases.

If you want to use multiple assets for one submix, it might be desirable to execute the Play Event at level start and the Stop Event at level end. This approach affects performance because the audio channel is open permanently in that level. If you have more than a few assets, they all push audio to Wwise, which must to be mixed.

Another approach is to have one master component that determines the life cycle of the audio data transmission, and more than one sub-component to provide audio whenever necessary.

In the following example, a WAV file was imported into the Unreal Content Browser, and the submix was changed to define the final destination.

At this point, this asset does not produce any audio because the Passthrough volume is -96db (0 in Unreal 4.27), so the audible track does not go to the Master Submix. The Events to Play and Stop the required audio component are not set up either. The asset is also not yet used in the Unreal world.

Setting up Unreal Blueprints

This section shows an example of how to set up the UAkSubmixInputComponent to bind submixes to the Wwise Audio Input Component. You can configure things differently, depending on your project’s specific requirements.

In the example in this section, an AmbientSound actor provides audio, but you can use any other Audio Component, or even Audio-Video components, to send audio to submixes.

Creating an AmbientSound Blueprint Class

First, you must create a new Blueprint class, with the Unreal AmbientSound as the parent class. An AkAmbientSound actor is also accessible. It is used to create Wwise-specific Ambient Sounds, so it is not relevant for this example.

Note:
For performance purposes, we strongly recommend that you use AkAmbientSound whenever possible, but it is unnecessary in the case of the AkAudioMixer because the audio is already played and rendered in Wwise.

In this example, the AmbientSound actor component is called “AkSubmixAmbient”.

Link the previously created SoundWave to the AmbientSound object in the Sound section (as seen in the bottom right of the following image). This is a generic component, so it is used as a default value.

Applying UAkSubmixInputComponent

To apply UAkSubmixInputComponent, an Unreal component is required to control the Play and Stop Events, and bind the submix to a Wwise Audio Input Component. Use the AkSubmixInput Audio Component.

In your AkSubmixAmbient Blueprint, under the root component, add the AkSubmixInput component.

In the Event Graph, post the Ak Submix Input component’s event on BeginPlay, and stop the component on EndPlay.

This configuration ensures that audio data transmission is active when BeginPlay starts, and stops it as soon as End Play is reached. To optimize this configuration beyond the default values, follow your own actor’s life cycle: start and stop the Audio Input processing only when necessary.

You can now compile and save the Blueprint.

Creating the Actor, Binding the Event and the Submix

Drag and drop your new Blueprint into the level to instantiate it.

In the Details panel, set the SoundWave of your choice in the Sound property. This is the real value, not the default one.

Select the AkSubmixInput component.

Define the Ak Audio Event to start playing the Wwise Audio Input Component, and the Submix to Record on this Component. Select the proper Submix to Record in the Submix Input section, and select the Ak Event to Play the Audio Input.

At this point, the submix plays the Ambient sound, the submix is muted (the output volume is set to 0 in the Submix tree), and the Audio Input is used in Wwise to play back the audio for that object.


Wwise Unreal Integration Documentation: Combining Unreal 5 and Wwise Audio with AudioLink

Combining Unreal 5 and Wwise Audio with AudioLink

Starting with version 5.1, Unreal includes a tool called Audio Link. When you are developing audio for Unreal games, you can use Wwise or Unreal exclusively or, through AudioLink, use both systems together. This flexibility gives users the ability to create some sounds in Unreal during game development, but also use Wwise for advanced audio effects such as Spatial Audio.

In the context of the Wwise Unreal Integration, AudioLink can help two types of user:

  • Wwise users who want to route Unreal Audio through Wwise.
  • Unreal users who want to add Wwise features to their projects but also want to keep any Unreal audio work they have already completed.

AudioLink is an alternative to Wwise's AkAudioMixer module and functions differently: AkAudioMixer works with mixes and submixes, while AudioLink works with objects. AudioLink therefore provides more granular control than AkAudioMixer because you can target any single sound, all sounds, or submixes. Through AudioLink, you can assign individual Unreal objects to individual Wwise objects.

In addition, after you enable AudioLink and configure your Unreal and Wwise projects appropriately, you can then listen to audio in Unreal and monitor the audio with the Wwise Profiler simultaneously.

Selecting Audio Routing Options

There are several options for audio routing available in the Unreal Project Settings.

To select an audio routing option:

  1. In Unreal, click Edit > Project Settings. The Project Settings dialog opens.
  2. In the Wwise section, click Integration Settings. The Initialization section contains several audio routing options:
    The Unreal Audio Routing menu contains the following options:
    • Default: Supports custom configurations and projects that were migrated from integration versions lower than 2022.1. If you select this option, you can manually select or clear the three checkboxes that follow. However, there are no limits on your selections or any automatic verification, so it is your responsibility to test your audio and ensure that your custom routing configuration works properly.
    • Both Wwise and Unreal audio: Use the Unreal audio system and the Wwise SoundEngine concurrently.
      Note:
      This option might not be compatible with all platforms.
    • Route through AudioLink [UE5.1]: Use AudioLink to route all Unreal audio sources to Wwise SoundEnging inputs. This option requires Unreal 5.1 or higher.
    • Route through AkAudioMixer: Use AkAudioMixer to route Unreal submixes to a Wwise SoundEngine input. Refer to Using the AkAudioMixer Module for more information.
    • Enable Wwise SoundEngine only: Use Wwise for audio and disable the Unreal audio system.
    • Enable Unreal Audio only: Use Unreal Audio and disable the Wwise SoundEngine.
  3. Select the desired audio routing option. For AudioLink, select Route through AudioLink [5.1].

Connecting Unreal Audio to Wwise Audio Inputs

As with many aspects of the integration and Wwise in general, there are different ways to achieve the desired results. For example, you can create separate AudioLink assets for individual Wwise Events, which you can then use in Unreal to play sounds and music as required.

To connect Unreal Audio to a Wwise Event:

  1. Enable AudioLink routing, as described in the previous section.
  2. In Wwise, set up an Audio Input Source Plug-in.
  3. Create a Wwise "Play" Event that uses a Sound SFX with Audio Input as the source.
  4. In the Unreal Content Browser, click Add > Sounds > AudioLink > Wwise AudioLink Settings. A Wwise AudioLink Settings asset is added to the Content Browser.
  5. In the asset Details, set the Start Event to the newly created Wwise Event.
  6. Connect a Blueprint to the Wwise AudioLink Settings asset.

At this point, you can connect multiple Events to the same Blueprint, or to others, and test the audio in Wwise through the Wwise Profiler.

There are other ways to work with AudioLink. Refer to the Adventures With AudioLink blog post for some more examples.


Wwise Unreal Integration Documentation: Frequently Asked Questions

Frequently Asked Questions

Where are banks located when I generate them from the Unreal editor or when cooking?

By default, they are located in the following location:

UE/[GameName]/Content/WwiseAudio/[Platform]

Some banks containing language assets might be in language-specific folders.

Why does SoundBank generation in Unreal create more banks than SoundBank generation in Wwise?

When importing a SoundBank definition file, Unreal might ask Wwise to generate banks that do not exist in the Wwise project. If you want the Unreal-generated bank to persist in the Wwise project, add the command-line argument -Save when you import the SoundBank definition file.

Can I debug my code using the Wwise SoundEngine debug libraries?

By default, the Unreal Engine does not use the debug C Runtime Libraries, but Wwise uses them. When building in debug, this would cause linking errors. This is why the Wwise Unreal integration uses the profile libraries. If you want to link to the debug Wwise libraries, set the bDebugBuildsActuallyUseDebugCRT variable to true in the following file: <UE_ROOT>/Engine/Source/Programs/UnrealBuildTool/Configuration/BuildConfiguration.cs.

Why don't all of my sounds play when I run a packaged game?

If you receive an error such as Event ID not found: <id>, it is likely that a Wwise Unreal asset was excluded from the package due to "tree shaking." Refer to Packaging Requirements for more information.


Wwise Unreal Integration Documentation: Introductory Tutorials

Introductory Tutorials

The following tutorials demonstrate how to integrate music, play sounds from animations, play sounds from physics-based objects, play sounds from object collisions, and customize listeners in third-person games. These tutorials are intended for anyone who is integrating Wwise into an Unreal project for the first time. We recommended that you follow the tutorials in order.

  • Preparing for the Tutorials
  • Adding Ambient Sound to a Level
  • Playing Music from a Blueprint
  • Integrating Footstep Sounds
  • Adding Sounds to Physical Impacts
  • Using Distance Probes to Customize Listeners in Third-Person Games


Wwise Unreal Integration Documentation: Preparing for the Tutorials

Preparing for the Tutorials

These tutorials require the default installations of Wwise and Unreal 5. Although there are no tutorial-specific supplementary materials available, the Integration Demo Wwise sample project contains a variety of sounds and music that you can use for most of the examples. The Integration Demo is included with the Wwise SDK, which you can add to your installation through the Audiokinetic Launcher. For details, see Integration Demo Sample.

Prerequisites

Before you begin the tutorials, review the following prerequisites and ensure that all necessary setup is complete:

  • In Unreal, create a project with the Third Person game template, with a C++ Project Default (the Wwise Unreal Integration does not support Blueprint-only projects). For more information, refer to Creating a New Project and Third Person Template.
  • Install the Wwise Unreal plug-in as described in Installation and Building the plug-in.
  • Enable Auto-Defined SoundBanks in your Wwise project. See Automatically Defining SoundBanks for more information.

Required Unreal Knowledge

Before you begin to integrate audio in Unreal, we strongly recommend that you have a working knowledge of Unreal 5 game development. Review the following sections in the Unreal documentation in particular:

  • Level Editor: The Level Editor is the initial layout that appears when you open Unreal. You use it to manage your assets: place sounds in the level, create new sounds, and so on. It is also the view from which you open other views, such as the Blueprint Editor.
  • Actors, Components, and Blueprints: In Unreal, every object in your level is an Actor. There are different types of Actor, and Actors can have components that define what they do. For example, an Actor can have a Mesh that you can use as a Trigger to define areas in which a certain ambience plays. You can use Blueprints to design systems, and add them to Actors as well. Within these systems, you can reference your Actor’s components so that, for example, an ambience starts to play when something enters your Trigger area.
Tip:
When you generate SoundBanks, a notification appears and plays a sound. Depending on the level of your own sound integration, the sound might be quite loud, but you can disable it. To do so, go to Edit > Editor Preferences. Under Level Editor, click Miscellaneous and clear Enable Editor Sounds.


Wwise Unreal Integration Documentation: Adding Ambient Sound to a Level

Adding Ambient Sound to a Level

This tutorial explains how to add an AkAmbientSound asset to an Unreal level to play a looping ambient sound from Wwise.

To prepare for this tutorial:

  1. Integrate Wwise into your Unreal project, as described in Integrating Wwise into an Unreal Project.
  2. Add a looping ambient sound to the Wwise project, and clear the Hold Emitter Position and Orientation option in the sound's Positioning properties. Refer to Managing Media Files in Your Project for more information about adding sounds to Wwise.
  3. Create a Wwise Event that plays the sound. Refer to Creating Events for more information.
  4. Ensure that the Unreal project references the correct SoundBanks folder:
    1. In Unreal, click Edit > Project Settings. The Project Settings dialog opens.
    2. Scroll to the Wwise section and click Integration Settings.
    3. Under Installation, click the ellipses next to Generated Sound Banks Folder. A file explorer opens.
    4. Browse to the Wwise Project's GeneratedSoundBanks folder and click Select Folder.
  5. Ensure that the Wwise Browser is accessible and populated with Wwise project data. If it is not, save your Wwise project or click Refresh Button in the Wwise Browser. For more information, refer to Managing Assets with the Wwise Browser.

Posting a Wwise Event

An easy way to add sounds from Wwise to Unreal is by adding an AkAmbientSound asset to a level. In this case, the AkAmbientSound asset is the emitter, so if you are using Spatial Audio, objects in the level can obstruct the sound. The sound also stops playing when the character exits the level.

To add an ambient sound:

  1. Open your project in the Unreal Editor.
  2. In the menu bar, click Build > Generate SoundBanks, then click Generate. The SoundBanks are generated.
  3. Click Window > Wwise Browser.

  4. From the Wwise Browser, drag the Event that plays the ambient sound into the Level Editor. An AkAmbientSound Actor is created in the level, and a uasset of the Event is created in the Default Asset Creation Path.

  5. Select the newly created AkAmbientSound (1), and in the Details panel, select Auto Post (2).

    When you press Play in the Unreal Editor, you can now hear the ambient sound.

Disabling Occlusion

At this point, you can hear the ambient sound as you move around the level. However, if you move the character behind an obstacle in the level, the sound fades out because of occlusion, which is enabled by default. You can disable occlusion, which might be desirable for sounds like ambience or music.

To disable occlusion:

  1. Select the AkAmbientSound Actor in the level.

  2. In the Details panel, under Ak Component > Occlusion, set the Occlusion Refresh Interval to 0.

    You can now hear the ambient sound anywhere in the level.


Wwise Unreal Integration Documentation: Playing Music from a Blueprint

Playing Music from a Blueprint

This tutorial explains how to use Unreal Blueprints to play music from an integrated Wwise project. A Blueprint is suitable for music, which might play for the entire duration of the game across different levels.

To prepare for this tutorial:

  1. In Wwise Authoring, create a Music Playlist Container.

  2. Add a Music Segment that loops indefinitely. The following image shows the Container configuration:

  3. Create an Event that plays the Music Segment. This tutorial uses an example called Play_Music.
  4. Generate SoundBanks in either Wwise or Unreal.
  5. In the Unreal Editor, drag the music Event from the Wwise Picker into the Level Editor. Just as in Adding Ambient Sound to a Level, the Event is added and a uasset is created.
  6. Select the Event and in the Details panel, select the Auto Post option.

Posting an Event

In this part of the tutorial, you will add sounds to the ThirdPersonExampleMap level. The level already contains various Actors such as Lights, Meshes, and a character.

Note:
If you have multiple scenes, you can create a Persistent level so the music survives when a different map is loaded.

This tutorial uses the Blueprint of the playable character, which is available by default in the ThirdPersonCharacter content. To play, or "post", a Wwise Event, you have to do three things:

  1. Call the Unreal Event when you begin to play.
  2. Connect it to the function that plays the Wwise Event.
  3. Specify which Actor plays the Event.

The following procedure explains this process in detail.

To post an event:

  1. In the Content Browser, go to ThirdPerson > Blueprints and double-click BP_ThirdPersonCharacter. The BP_ThirdPersonCharacter Blueprint opens. The Event Graph tab contains three disabled nodes.

  2. Drag a pin from the BeginPlay node, search for the Post Event Audiokinetic function and click it.

    The Post Event function requires a reference to an Actor to place the Wwise Event.

  3. Drag a pin from the Actor Object Reference, search for the Get a reference to self Variable and click it.

  4. In the Post Event function, select the Play_Music Ak Event.

  5. Click Compile and then in the Level Editor, click Play. The music plays.

Using AkComponents

The Blueprint environment is ideal for controlling Actor behavior. However, to efficiently manage and position Actors in levels, you can expose some Blueprint controls in the Details panel and work primarily in the Level Editor instead. To do this, you can add an AkComponent to the Actor, which you can then use to offset the position of the sound from the Level Editor.

To use an AkComponent:

  1. In the Blueprint Editor, on the Components tab, click Add, then search for the Ak Audiokinetic component and click it.
  2. In the Event Graph, delete the Post Event function and the reference to Self.

  3. Drag the Ak component into the Blueprint, then drag a pin from the component, search for Post Ak Event and click it.

  4. Connect BeginPlay to the Post Ak Event.

    You can now retrieve the Wwise Event selected in the AkComponent.

  5. Drag a pin from the AkEvent Object Reference, find and select a Get Ak Audio Event and connect it to the Ak component.

  6. Click Compile.
  7. In the Components panel, select Ak, then in the Details panel, expand the Ak Event section. It is currently empty.

  8. Drag the music Event from the Wwise Picker into the empty Ak Audio Event area.

    You can now change the Event without opening the Blueprint, and you can offset the position of the sound relative to the Actor to which it is attached.

Controlling Music with States

In most cases, you want interactive music in your game to adapt to gameplay conditions and provide variety. This tutorial demonstrates a common implementation strategy, which is to use States to control music.

Before you start, you must create a new music system in Wwise that consists of two distinct types of music: in this case, selection of calm music and a selection of intense music.

Create a Music Switch Container that can switch between "Repeat Calm" and "Repeat Intense" Music Playlists based on a “Music” State, as shown in the following image.

In the example, there are three States: Calm, Intense, and None. With this setup, you can set States from the game to change the music during runtime. You can also choose which State to set when the game starts.

A common approach, which this tutorial uses, is to set States when the player enters a certain area, defined by a Trigger. You create a Trigger Box and use a Blueprint system to set the State when the player crosses the boundaries of the box.

Ensure that you complete the steps in Using AkComponents before you proceed.

To control music with States:

  1. In the Blueprint Editor, drag a SetState Audiokinetic function from BeginPlay.

  2. Set the Initial State to Music-Calm.

    The initial state is now set up.

  3. Drag a Trigger Box into the Level.

  4. Increase the size of the Trigger Box.

  5. In the Details view, click the button with the three boxes (1), then New Subclass (2), type a Blueprint name (3), and then click Select (4), as shown in the following image.

    The Blueprint is created, and contains an ActorBeginOverlap Event, which you can use to detect when something enters the Trigger Box.

  6. From the ActorBeginOverlap, cast it to ThirdPersonCharacter and connect the Exec to a Set State function.

    To ensure that you can use the Trigger Box for multiple states, you must create a Variable that is accessible outside the Blueprint.

  7. Drag from the State Value and click Promote to variable.

    There is now a variable under My Blueprint > Variables on the left.

  8. Rename the variable to “MusicState” and click the eye icon.

    The variable is now public (accessible outside the Blueprint).

  9. Click Compile, and close the Blueprint.

  10. Select the Trigger, then in the Details view select a State under Default > Music State.

  11. In the level, walk into the new Trigger with the ThirdPersonCharacter and wait for the music to change.

    You can now duplicate the trigger, reuse it somewhere else and set a different state without affecting the original trigger.

Note:
If your Music Switch Container's Transition is set to Exit Cue, you might have to wait to hear the music change.


Wwise Unreal Integration Documentation: Integrating Footstep Sounds

Integrating Footstep Sounds

A common task in game production is posting footstep sounds. This tutorial uses footsteps as a practical demonstration of how to post sounds from a specific moment in animation. You can use the same approach for other sounds and animations, such as doors opening and closing. In addition, the tutorial demonstrates how to use Unreal Surface Types in combination with Wwise Switch Containers to change the sound of footsteps when the player character moves from one type of surface to another.

This tutorial uses the ThirdPersonCharacter project template, which includes a Mannequin (playable character controller) with input controls and animations. The following sections explain how to integrate footstep sounds by adding Animation Notifications to an animation of the character running. A Blueprint receives the notifications and posts the sound.

The footstep implementation in this tutorial uses Unreal's Physics system extensively. For more information, refer to Physics.

Before you proceed, create or obtain some footstep sounds for at least two different types of surface (such as dirt, gravel, or grass). You must also do some preparatory work in your Wwise project.

To prepare for this tutorial:

  1. In Wwise Authoring, create a Switch Group called "Surface" and add Switches for each surface type you plan to use. You need at least two surface types.
  2. In the Actor-Mixer hierarchy, create a Switch Container called "Footsteps" and add sounds or Containers that correspond to different surface types.
  3. Assign the Surface Switch Group to the Footsteps Container, set a default Switch value, and assign the appropriate footstep Objects to their corresponding Switches. The following image shows a sample configuration:
  4. Create an Event called "Play_Footsteps" to play the Footsteps Switch Container.
  5. Generate SoundBanks in Unreal or Wwise Authoring.
Tip:
The Wwise Integration Demo project contains a Footsteps container with sounds for multiple surfaces.

Adding Footstep Anim Notifies

To play footstep sounds that are synchronized with the player character's movements in the game, you must use Anim Notifies. The following procedure explains how to add Anim Notifies to character animation states in Unreal, at the precise moment when the character's foot touches the ground. You can then update the character Blueprint to post Wwise Events based on the Anim Notifies.

To add Anim Notifies for footsteps:

  1. In the Unreal Content Browser, go to Content > Characters > Mannequins > Animations > Quinn and double-click MF_Run_Fwd. The Animation Sequence Editor opens.
  2. Click the Skeletal Mesh button in the upper right of the window. The SK_Mannequin Skeletal Mesh opens.
  3. In the Animation Notifies panel in the lower right, right-click, then click New and type Footsteps in the text field.
  4. Return to the Animation Sequence Editor, and in the Asset Editor next to Notifies, click Track > Add Notify Track. A new numbered track is added to the Animation timeline.

  5. In the timeline, align the Playhead with the first R in the top track, which is the moment the right foot touches the ground.

  6. In the timeline, right-click in the new track and click Add Notify > Skeleton Notifies > Footsteps.

  7. Copy the Footsteps Anim Notify and paste it so that each of the other R and L notifies has a corresponding Footsteps Anim Notify.

Preparing Surfaces in Unreal

To test footstep sounds on different surfaces, your level must contain at least two different sections of floor, to which you can assign different Physical Materials. You can then associate Switches with the different surfaces so that the footstep sounds change when the character moves from one surface to another. Use surfaces and materials that correspond to the sounds in your Wwise Switch Container.

This approach uses Unreal Static Meshes and Physical Materials. For more information, refer to Physical Materials and Static Meshes.

To add a second floor surface to the level:

  1. Click Edit > Project Settings. The Project Settings dialog opens.
  2. In the Engine section, click Physics.
  3. In the Physical Surface section, add separate Surface Type names for each surface in your Wwise project's Switch Container (for example, Dirt, Gravel, Metal, and Wood), then close the Project Settings dialog.
  4. In the Level Editor, duplicate the floor object (SM_Cube) and scale the two objects so that each copy occupies half of the floor area in the level.
  5. In the Content Browser, select a folder and click Add > Physics > Physical Material, and in the dialog select PhysicalMaterial and click Select. A Physical Material asset is added to the folder.
  6. Change the name of the material to something that corresponds to one of the Surface Types you added in the Project Settings. Create additional Physical Materials for the remaining surface types.

  7. Double-click one of the new Physical Materials and in the Details Panel, under Physical Properties, select the corresponding Surface Type.

  8. In the Level Editor, select one of the floor objects and in the Details panel, click StaticMeshComponent to view the mesh properties.

  9. In the Collision section, set the Phys Material Override to the desired Physical Material.

  10. In the Materials section select a Material that resembles the desired Surface Type. Repeat for the second floor object. The following image shows an example of a level with a floor divided into metal and dirt sections.

Using Surface Switches

After you add Footstep Notifies to the character animation and configure the different surfaces in the level, the final step is to configure the Mannequin Blueprint to determine which surface is beneath the player, route that information to the correct Set Switch function, and finally post the Event to Wwise, which then plays the appropriate footstep sound.

This procedure uses the same MF_Run_Fwd animation sequence from Adding Footstep Anim Notifies.

To set a Surface Switch:

  1. Open the MF_Run_Fwd animation in the Animation Sequence Editor.
  2. In the upper right, click the Blueprint icon. The ABP_Manny Blueprint opens.

  3. Configure the first part of the Blueprint with a Line Trace By Channel function to detect the player character's footsteps, as shown in the following image.

  4. Configure the second part of the Blueprint to detect whether the player is on a valid surface type and if so, to route the signal to the correct Set Switch function and then post the Wwise Play_Footsteps Event to play the correct sound.

    Here is a diagram of the entire Blueprint:

  5. Click Compile.
  6. In the Level Editor, click Play and move your character over the different surfaces. The sound of the footsteps changes accordingly.


Wwise Unreal Integration Documentation: Adding Sounds to Physical Impacts

Adding Sounds to Physical Impacts

The previous tutorials described how to play music when the game starts and from a specific time in the animation. This tutorial explains how to use Unreal's Physics system to detect collisions between objects and post Wwise Events to play sounds upon impact. It also demonstrates how to use RTPCs to set minimum velocity thresholds to ensure that impact sounds don't play whenever there is minor contact between objects. Finally, it includes a system for instantiating objects in the game to test the impact sound system.

To prepare for this tutorial:

  1. Obtain a short sound to use for a physical impact and import the sound into Wwise.
  2. Create a Game Parameter called "Collision_Velocity".
  3. Add Voice Low-pass Filter and Voice Volume RTPCs associated with the Collision_Velocity Game Parameter, with curves as shown in the following image:
  4. Create an Event called "Play_Impact" that plays the sound.
  5. Generate SoundBanks in Unreal or Wwise Authoring.

Playing Sounds when Objects Collide

To play a sound when objects collide:

  1. In the Level Editor, select one of the blue boxes.
  2. In the Details panel, click the Blueprint icon. The Create Blueprint From Selection dialog opens.
  3. Select New Subclass, change the Blueprint Name to WwiseObject, and click Select. The Blueprint opens.
  4. In the Components panel, select the Static Mesh Component.
  5. In the Details panel, ensure that the following options are selected:
    • Physics > Simulate Physics
    • Collision > Simulation Generates Hit Events
  6. In the Components panel, right-click Static Mesh Component, then click Add Event > Add OnComponentHit. The Event Graph opens and the On Component Hit Event is added.

  7. Configure the Blueprint as shown in the following diagram.

    This Blueprint does several things:

    • It detects when the object collides with another object.
    • It sets the value of the Collision_Velocity RTPC based on the Vector Length of the Component Velocity, and ensures that the value exceeds a minimum threshold of 40, which ensures that minor contacts do not cause impact sounds.
    • It posts the Event to Wwise with the RTPC value, so that Wwise plays the impact sound at the appropriate volume.
  8. Click Compile and close the Blueprint.
  9. Open the BP_ThirdPersonCharacter Blueprint.

  10. In the Event Graph, add a system that spawns Actors from the Wwise Object class when you press F in the game, as demonstrated in the following image.

  11. Click Compile and close the Blueprint.
  12. In the Level Editor, click Play and then press F to create a block. When you run into it, the impact sound plays.
See also
  • From Audio File to in-game Audio in Unreal (video)


Wwise Unreal Integration Documentation: Using Distance Probes to Customize Listeners in Third-Person Games

Using Distance Probes to Customize Listeners in Third-Person Games

Before you begin this tutorial, refer to Working with Listeners in Third-Person Perspective Games for a general introduction to Distance Probe usage in Wwise.

This tutorial demonstrates how to use a Blueprint to assign a Distance Probe in Wwise. The example uses the Third Person project template, and the ThirdPersonCharacter Actor is used for the Distance Probe. The exact steps might vary depending on your project.

To use a Blueprint to assign a Distance Probe:

  1. In the Content Browser, go to Content > ThirdPerson > Bluprints and double-click BP_ThirdPersonCharacter. The Blueprint opens.
  2. On the Event Graph, right-click an empty area and add a BeginPlay Event.
  3. Right-click to add a second node, Set Distance Probe, and connect it to Event BeginPlay.

  4. Drag a pin from the Listener input parameter of Set Distance Probe, and add a Get Player Camera Manager node.

    Note:
    The Wwise Unreal integration automatically registers a Game Object as a default listener and attaches it to the PlayerCameraManager actor.

  5. Drag a connection from the Distance Probe input parameter, and add a Get a reference to self variable. In this context, Self refers to the ThirdPersonCharacter Actor.

  6. Use Wwise Authoring to connect to the game and confirm that the Distance Probe is set up correctly. Refer to Profiling the Distance Probe for details.


Wwise Unreal Integration Documentation: Going Further

Going Further

Integrating Wwise into your Unreal Project is only the beginning. You can also tune your integration for maximum performance and efficiency.

The following sections will instruct you on how to get the most out of your Wwise Unreal Integration.

  • Unreal Spatial Audio Tutorials
  • Understanding the Wwise Unreal Integration Modules


Wwise Unreal Integration Documentation: Unreal Spatial Audio Tutorials

Unreal Spatial Audio Tutorials

The following tutorials present various Spatial Audio features included in the Wwise Unreal Integration. The first tutorial helps you prepare a project. Each of the following tutorials focuses on a different aspect of Spatial Audio. They can be followed independently.

Note:
Generating Soundbanks in sections using the Reflect plug-in requires the appropriate license.
  • Preparation for the Spatial Audio Tutorials
    Preparation for the Spatial Audio tutorials.
  • Reflect
    An overview of the Reflect plug-in.
  • Rooms and Portals
    An overview of rooms and portals in Spatial Audio.
  • Diffraction
    Using diffraction.
  • Occlusion
    Using occlusion.
  • Transmission
    Using transmission.
  • Spatial Audio Blueprint Components
    Creating custom Blueprint classes with Spatial Audio Components.
  • Reverb Parameter Estimation
    Automatic Reverb Parameter Estimation.
  • Fit to Geometry
    Automatically fitting Spatial Audio portals and volumes to level geometry.
See also
  • Wwise Spatial Audio Objects
  • Spatial Audio Objects Blueprint Functions
  • Spatial Audio SDK Documentation


Wwise Unreal Integration Documentation: Preparation for the Spatial Audio Tutorials

Preparation for the Spatial Audio Tutorials
Note:
A map with the parameters for all tutorials is available as part of the Unreal Demo Game downloadable from the Audiokinetic Launcher. It is called SpatialAudioTutorialMap. If you want to follow along with that map, you can skip the following sections.

Create a New Project

Follow the steps below in order to build your working environment.

  1. Launch Unreal from the Epic launcher.
    1. Create a new Unreal Project C++ Blank project (without starter content).
    2. Close Unreal.
  2. Start the Audiokinetic Launcher.
    1. Install Wwise.
    2. Select the Unreal Engine tab.
    3. Click the Integrate Wwise into Project button.
    4. Launch Wwise using the Open in Wwise button.
    5. Launch Unreal using the Open in Unreal button.

Wwise Project Preparation

For the tutorial, you will need a Sound SFX and an Event to play it.

  1. In the Wwise project, create a new Sound SFX in the Default Work Unit of the Actor-Mixer Hierarchy and import a sound.

    1. Make sure to enable Use game-defined auxiliary sends in the General Settings tab.

    2. In the Positioning tab:

      1. Enable Listener Relative Routing
      2. Set 3D Spatialization to Position + Orientation
      3. Add an Attenuation with a Max distance of 5000.
      4. Enable Diffraction and Transmission

  2. Right-click on the Sound SFX within the Actor-Mixer Hierarchy, then select New Event > Play.

  3. Open the Project Settings

    1. In the Soundbanks tab, make sure Enable Auto-Defined SoudBanks is enabled.

  4. Save the project.
  5. Generate the SoundBanks.

Unreal Project Preparation

  1. Create a floor, a building with two rooms and an obstacle outside using your preferred method. In the SpatialAudioTutorialMap, we used a custom mesh for the building and a basic cube static mesh component for the obstacle outside.
  2. Place emitters in the scene:

    1. Drag the Event created in the previous section from the Wwise Browser to the Content Browser.

    2. Drag the Event into the scene to create new AkAmbientSound actors.
      1. Place one of them outside and one in each room.

      2. For all AkAmbientSound actors, make sure to set Occlusion Refresh Interval to 0.

Here's an image of the Spatial Audio Tutorial Map.

  1. Open the Level Blueprint from the Blueprints menu.
    1. Trigger events with user input.
      1. Drag a newly created AkAmbientSound from the World Outliner into the Blueprint.
      2. Find the "Post Associated Ak Event" function from the AkAmbientSound node.
      3. Right-click the Blueprint background and search for "Left Mouse Button".
      4. Connect the Pressed outlet to the "Post Associated Ak Event" Exec.

    2. Repeat the same steps for all the AkAmbientSound items.

    3. Save and close the Level Blueprint.

Verify your Setup

  1. Start the scene. When pressing the respective buttons, you now hear the sounds play, spatialized in 3D.

  2. Connect to Wwise Authoring and open the Profiler layout (shortcut F6).

    1. When playing the sound outside, you see a graph similar to the following one.


Wwise Unreal Integration Documentation: Reflect

Reflect

In this tutorial, we will use Spatial Audio Geometry to send reflective surfaces to the Reflect plug-in. It will simulate the early reflection implied by the propagation of sound in an acoustic environment.

Note:
You need a license for Reflect to generate SoundBanks in this tutorial.
Note:
The Preparation for the Spatial Audio Tutorials must be completed prior to starting this tutorial.

Wwise Project

  1. To have access to factory Acoustic Textures as well as a preset for the early reflection Auxiliary Bus, you need to import the Factory Acoustic Textures and the Reflect Factory Assets.
    1. Navigate to Project > Import Factory Assets...
    2. Choose both Reflect and Acoustic Textures and press Import.
  2. Create an early reflection Auxiliary Bus using the factory preset:
    1. In the Master-Mixer Hierarchy, right-click on the Master Audio Bus

    2. Navigate to New Child > Presets and select Simplified Early Reflection Auxiliary Bus

      1. In the Effects tab, double-click on the effect and set the Speed of Sound to 34,500

  3. Navigate to the Sound SFX Sound Property Editor of the sound created in Wwise Project Preparation.

    1. In the General Settings tab, add the new Auxiliary Bus with the Reflect Effect under Early Reflections
  4. Save the project and generate Soundbanks.

Unreal Project

In the project, we want our building, the floor and the obstacle to reflect sounds. There are two ways to do that, with an AkSpatialAudioVolume or with the AkGeometryComponent.

The AkGeometryComponent can be added to static mesh actors. It will automatically send the static mesh geometry to spatial audio. It can also be configured to send the simple collision mesh. A sufficiently complex static mesh with an AkGeometryComponent attached can sometimes result in geometry that is too complex. This is both in terms of computation time and because ray-based acoustic simulation techniques, such as those used in Wwise Spatial Audio, generally assume that geometric features (surfaces and edges) are significantly larger than the wavelength of the sound source. For reference, a 1000Hz sound in air has a wavelength of 34cm. Instead of using the static mesh directly, an AkSpatialAudioVolume can be used to create a simple shape around the mesh (when it serves as an obstacle to reflect and obstruct sound), or within the mesh (when it serves as interior walls).

  1. In the tutorial map, the obstacle is a basic static mesh. We can easily add an AkGeometryComponent to it.

    1. Click on the actor and click on Add Component. Choose Ak Geometry.

      1. In the Geometry section, choose Simple Collision
  2. Repeat the same steps for the floor.

  3. In the SpatialAudioTutorialMap, the building is made out of a custom mesh. The shape is still basic enough to use an AkGeometryComponent, but for the sake of this tutorial, we will use an AkSpatialAudioVolume.

    1. Drag and drop three AkSpatialAudioVolumes into the scene
      1. Set one around the building for the exterior walls. Since this volume is placed around the outside of the mesh, it must be transformed manually.
      2. Set the two others inside each room for the interior walls. We will use Fit To Geometry to place the two rooms.
        1. Enable Fit To Geometry in the Details panel of each AkSpatialAudioVolume.
        2. If the initial shape that is found is not satisfactory, translate the AkSpatialAudioVolume to a new location using the transform gizmo. Notice that a yellow preview outline appears when translating the AkSpatialAudioVolume. When a satifactory shape is found, release the mouse button and the AkSpatialAudioVolume will snap into place.
        3. For more information on placing AkSpatialAudioVolumes using Fit To Geometry, refer to Fit to Geometry.
      3. Make sure that Enable Surface Reflectors is enabled for all three AkSpatialAudioVolumes.
        1. Leave Enable Room and Enable Late Reverb unchecked. They will be discussed in Rooms and Portals.

Verify your Setup

  1. Start the scene and connect to Wwise Authoring.
    1. In the Advanced Profiler's Voices Graph view, you should see a new auxiliary send with the Reflect Effect.
      1. At the initial position of the player, play the sound placed outside.
        Note:
        If you play either of the sounds from the rooms while the player is outside, you do not see any Reflect sends. Also, the sound is attenuated by transmission. That's because we created closed AkSpatialAudioVolumes around the building and each room. You can create openings in them by modifying the brush object, or by using Spatial Audio Portals, which are covered in Rooms and Portals.
      2. Before going to the next step, open the Profiler Settings view and make sure Spatial Audio is enabled.

    2. Navigate to the Game Object Profiler layout (shortcut F12).

      1. In the Game Object 3D Viewer, you should see the different reflective surfaces.
      2. When playing a sound, early reflection rays will be drawn to show where the sound is be coming from.
      3. If you can't see rays, make sure to enable Show Reflection Paths in the Game Object 3D Viewer Settings.
Note:
If you can't see any geometry in the Game Object 3D viewer, you may need to increase the Monitor Queue Pool Size. The setting is located in the Initialization Settings.
See also
  • Reflect Documentation
  • Using the Geometry API for Simulating Early Reflections


Wwise Unreal Integration Documentation: Rooms and Portals

Rooms and Portals

In a realistic acoustic environment, sounds coming from an enclosed space will transmit through the walls, and will also come out from openings, such as doors and windows. Spatial Audio will simulate this effect with a high-level geometry abstraction called Rooms and Portals.

Note:
The Preparation for the Spatial Audio Tutorials must be completed prior to starting this tutorial.

Wwise Project

  1. In the Wwise project, create new Auxiliary Busses for each of the rooms.
    1. Right-click where you want to add a child Auxiliary Bus

    2. Navigate to New Child > Presets and select Room Auxiliary Bus

      1. In the Effects tab, you can tweak the RoomVerb Effect.
  2. Save the project and generate SoundBanks.

Unreal Project

  1. In Unreal, drag and drop the new Auxiliary Busses from the Wwise Browser to the Content Browser.
  2. If not done already in another tutorial, drag and drop two AkSpatialAudioVolume objects for each room of the building. We will use Fit To Geometry to place the two rooms.
    1. Enable Fit To Geometry in the Details panel of each AkSpatialAudioVolume.
    2. If the initial shape that is found is not satisfactory, translate the AkSpatialAudioVolume to a new location using the transform gizmo. Notice that a yellow preview outline appears when translating the AkSpatialAudioVolume. When a satifactory shape is found, release the mouse button and the AkSpatialAudioVolume will snap into place.
    3. For more information on placing AkSpatialAudioVolumes using Fit To Geometry, refer to Fit to Geometry.
      1. Make sure that Enable Room and Enable Late Reverb are enabled for the two AkSpatialAudioVolume objects.
        1. If you didn't do the Reflect tutorial, leave Enable Surface Reflectors unchecked.
        2. In the Late Reverb Section, uncheck Auto Assign Aux Bus and drag and drop the newly imported Auxiliary Bus from the Content Browser to the Aux Bus parameter.
          Note:
          Auto Assign Aux Bus is discussed in Reverb Parameter Estimation

  3. Add two AkAcousticPortal objects

    1. Place them around the openings of the building.
      1. To facilitate placement of an AkAcousticPortal, enable the Fit To Geometry check box in the Details panel.
      2. When Fit To Geometry is enabled, the integration will attempt to find a logical placement for the portal using the surrounding geometry. A yellow preview outline will appear when dragging the AkAcousticPortal near an appropriate opening using the transform gizmo. When a satisfactory placement is found, release the mouse button and the AkAcousticPortal will snap to place.
      3. For more information on placing AkAcousticPortals using Fit To Geometry, refer to Fit to Geometry.
      4. After an AkAcousticPortal is placed inside each doorway, adjust the depth of each portal using the scale gizmo to achieve the desired crossfade distance. A deeper portal (along its local X-axis) will result in a longer crossfade distance when an AkComponent transitions through the portal. This is true for both reverb sends and spread transition.
    2. Select the portals and set their initial state to Open in the Ak Portal Component section.

Note:
An AkAcousticPortal must be oriented in a way that the rooms it will link between are positioned on its local Y axis. When selecting a portal, a yellow ribbon appears around the portal to help visualize it. The yellow line represents the separation between the front and back areas. The highest priority room will be chosen in case of overlapping rooms. When working with rooms and portals in the level editor, be sure to set the viewport to 'realtime' so that the portal visualisations are updated correctly as you move portals around.

Verify your Setup

  1. Start the scene and stay at the start location. When playing the events on the emitters inside the rooms, you should be able to hear them.

  2. Connect to Wwise Authoring and navigate to the Game Object Profiler layout (shortcut F12). In the Game Object 3D Viewer you will see:

    1. a visualization of the rooms in grey (if the AkSpatialAudioVolume doesn't have Surface Reflectors enabled).
    2. a visualization of the portals in green.
    3. sound propagation paths diffracting on the edge of the portal(s) with an associated diffraction value at each edge depending on the bending angle.
    4. sound propagation paths going through the walls of the room with an associated transmission loss value.
      Note:
      This transmission loss value can be set by changing the transmission loss parameter of the room in the AkRoomComponent component.
    5. spread cones for the diffracted and transmitted paths of the sound if it has a spread curve.

Note:
Diffraction and transmission loss attenuate the sound using the Diffraction and Transmission curves in the sound's Attenuation ShareSet. When these curves are set to Use Project Obstruction/Occlusion, they use the curves in the Obstruction/Occlusion tab of the Project Settings in the Authoring application.

Portals and Reverb

Sound emitting through Portals can reverberate into the room the listener is currently in. These steps show how to configure it.

  1. In the Wwise project,

    1. Find the Auxiliary Bus used for the Room Reverb. The room where sound is emitted from that we want to feed to other room reverbs.

      1. In the General Settings of the Auxiliary Bus Property Editor, make sure use game-defined auxiliary sends is enabled.
  2. Generate SoundBanks, start the scene and connect to the Wwise Authoring.

  3. Play the sound in the room with enabled auxiliary sends and navigate to a communicating room.

    1. You should see that the wet part of the emitting sound will also feed the reverb of the room the listener is in.

Room Tones

Sometimes, rooms have a specific ambient sound like the buzzing sound of air conditionning. To recreate this, you can post an event on the Spatial Audio Room game object. When the listener will be in the room, the sound will be positionned at its location. When in a different room, the listener will hear the room tone from the connecting portals and through the walls.

  1. In the Wwise project,
    1. Create a new Sound SFX for the room tone.
      1. In the General Settings tab, enable Use game-defined aux sends if you want the sound to send to reverb.
      2. In the Positioning tab:
        1. Add an attenuation for distance attenuation, diffraction, and transmission curves.
        2. Enable Diffraction and Transmission
    2. Create a play event with the room tone by right-clicking on the Sound SFX, then selecting New Event > Play.
    3. Save the project and generate SoundBanks.

  2. In Unreal,

    1. Drag the Event created in the previous section from the Wwise Browser to the Content Browser.
    2. Add this event to the Ak Audio Event parameter, under the Ak Event section, of one of your rooms.
      1. Adjust the Aux Send Level to feed some of the sound to the reverb of the room.
      2. You can choose to check the Auto Post box to post the room tone event on BeginPlay, or you can call the same Blueprint functions usually used to post events on game objects.

    1. In the Spatial Audio Tutorial map, we used Blueprint functions in the Level Blueprint to activate and deactivate the room tone.

      1. While having the AkSpatialAudioVolume with a room tone selected in the World Outliner, right-click in the Level Blueprint to create a reference.
      2. Drag a connection from the reference and search for "Post Associated Ak Event".
      3. In the same way, search for the Stop function.
      4. Add a key press as an input node.
  3. Start the scene and connect to Wwise Authoring.

  4. Navigate to the room with a room tone and press the key to start the room tone. Verify that you can hear it.

    1. In the Advanced Profiler view, you should see the event being played.
    Advanced Profiler view when playing a room tone

    1. In the 3D Game Object Viewer, you can watch the room game object as you move the listener around.

      1. If the listener is in the room, the room will emit at the position of the listener. You will see the room game object follow the listener game object.
      2. If the listener is in a different room,
        1. a room game object will be placed at the portal indicating the position of the diffracted sound and a path will be drawn between it and the listener game object.
        2. a room game object will be placed at the limit of the room on the direct path indicating the position of the transmitted sound.
        3. spread cones will be drawn for both of these positions.
See also
  • Spatial Audio Rooms and Portals Documentation


Wwise Unreal Integration Documentation: Diffraction

Diffraction

When the line of sight between the emitter and the listener is obstructed by an object, Spatial Audio can create diffraction paths that will go around the object and simulate a realistic behavior. Depending on the angle of the path around an edge, the sound will be attenuated with obstruction.

Note:
The Preparation for the Spatial Audio Tutorials must be completed prior to starting this tutorial. Most importantly, these two steps must be done.
  • In Wwise, enable Diffraction and Transmission in the Positioning tab of sounds to be diffracted.
  • In Unreal, set the Occlusion Refresh Interval of AkAmbientSound to 0. This ensures that the game-side occlusion system, part of the Wwise Unreal Integration, does not compete with the Spatial Audio diffraction system.

Follow these steps to set up Spatial Audio diffraction in your map.

  1. In Unreal, if not done already,
    1. Add an AkSpatialAudioVolume object around the building.
      1. Make sure that Enable Surface Reflectors is enabled.
      2. In the Geometry Settings section, make sure Diffraction is enabled.
    2. Add an AkGeometryComponent component to the obstacle static mesh outside.
      1. In the Geometry section, under Diffraction, make sure Diffraction is enabled.
  2. Play and connect to Wwise.
    1. You should be able to see diffraction edges on the diffraction-enabled geometries and diffraction paths when a diffraction-enabled sound is played while it is obstructed from the listener.

In the SpatialAudioTutorialMap provided with the Demo Game, you can see the diffraction paths created by the obstacle outside when the outside emitter is playing:

Diffraction attenuates the sound using the Diffraction curves in the sound's Attenuation ShareSet. When the curves are set to Use Project Obstruction, they use the Obstruction curves in the Obstruction/Occlusion tab of the Project Settings in the Authoring application.

See also
  • Spatial Audio Diffraction
  • Using the Geometry API for Simulating Diffraction


Wwise Unreal Integration Documentation: Occlusion

Occlusion

Basic occlusion is exposed in UAkComponent::SetOcclusion(). To enable occlusion on an Actor, use the Set Occlusion Refresh Interval function in the Blueprint Editor. A UAkComponent version is also available. If the refresh interval is set to 0, occlusion is disabled.

To determine whether a listener is occluded from a source, a simple line-of-sight check is sufficient. Use the line trace channel set in the AkComponent's properties (OcclusionCollisionChannel). If the line of sight is blocked, the occlusion level calculation starts. This calculation maps the hit point on the obstacle to its bounding box and creates twelve points around the obstacle. Do additional line-of-sight checks to see if these secondary paths are also blocked. The occlusion sent to the SoundEngine is modulated by the number of secondary paths that are blocked.

A temporal fade method is also available for smooth transitions between occlusion levels. To change the fade speed, change the OCCLUSION_FADE_RATE constant.

See also
  • Set Occlusion Refresh Interval
  • AkComponent


Wwise Unreal Integration Documentation: Transmission

Transmission

When an object appears between the emitter and the listener, the sound can pass through the object. Spatial Audio models this phenomenon by filtering the direct path of the sound. Transmission loss values ranging from 0 to 1 can be applied on AkSurfaceReflectorSetComponent, AkGeometryComponent or AkRoomComponent components. The transmission loss value is then sent to Wwise where the associated filter is applied according to the transmission curves of the sound's Attenuation ShareSet. Typically, a value of 1.0 represents full loss, and a value of 0.0 indicates that sound can be transmitted through the geometry without any loss.

Note:
The Preparation for the Spatial Audio Tutorials must be completed prior to starting this tutorial. Most importantly, these two steps must be done.
  • In Wwise, enable Diffraction and Transmission in the Positioning tab of sounds to be diffracted.
  • In Unreal, set the Occlusion Refresh Interval of AkAmbientSound to 0. This ensures that the game-side occlusion system, part of the Wwise Unreal Integration, does not compete with the Spatial Audio diffraction system.

The transmission loss value of a path is the maximum transmission loss value the sound encounters in a direct path from the emitter to the listener. The chosen transmission loss value can be from a geometry or a room.

  1. On AkSpatialAudioVolume actors,
    1. if surface reflectors are enabled, a transmission loss value can be associated with each acoustic surface
    2. if room is enabled, a transmission loss value can be associated to the walls of the room.
  2. On an AkGeometryComponent,
    1. a transmission loss value can be overriden in the Acoustic Properties Override section
      1. for the collision mesh:
      2. or for each material of the static mesh:
      3. the transmission loss value can also be set per Physical Material in the AkGeometry Surface Properties Map of the Integration Settings

Transmission loss attenuates the sound using the Transmission curves in the sound's Attenuation ShareSet. When the curves are set to Use Project Occlusion, they use the Occlusion curves in the Obstruction/Occlusion tab of the Project Settings in the Authoring application.

See also
  • Spatial Audio Transmission
  • Rooms and Portal Transmission


Wwise Unreal Integration Documentation: Spatial Audio Blueprint Components

Spatial Audio Blueprint Components

So far, we have built everything directly in our level, using prebuilt actors or adding components to individual actor instances. It's also possible to use the various spatial audio components to construct a Blueprint actor that can be replicated throughout the level. In this section we will build a replica of the structure from section Unreal Project Preparation, using a Blueprint class so that it can be easily added or spawned throughout the world.

Note:
The Preparation for the Spatial Audio Tutorials must be completed prior to starting this tutorial.

Setting Up a Blueprint Class

AkLateReverbComponent and AkRoomComponent rely on containment tests to check whether a given game object position lies within their parent PrimitiveComponent. Simple collision is used for this check. You should therefore use a parent PrimitiveComponent that has simple collision. For example, you could use a box collision, sphere collision, or capsule collision component. If the PrimitiveComponent has no simple collision, the containment test will simply use the component bounds, which may be less accurate.

It is also possible to add simple collision to a mesh asset in Unreal (refer to Setting Up Collision With Static Meshes). However, for complex meshes, such as those with doorways and openings, it is sometimes necessary to 'use complex collision as simple' in the collision settings for the mesh (refer to Simple Vs Complex Collision). For example, this setting might be required to allow a character to enter a room through a doorway but still collide with the walls. When this setting is used, the containment tests for AkLateReverbComponent and AkRoomComponent will fail, as the simple collision will be ignored, and the mesh's full trimesh will be used. The simple collision tests used by AkLateReverbComponent and AkRoomComponent do not support trimeshes. For that reason, the recommended setup in a Blueprint class is to have a simple collision component as the parent when using AkLateReverbComponent component and AkRoomComponent. For example, the simple collision component could be a box, sphere, or capsule. If you have a specific mesh for a room or building, the simple collision component(s) could be added to the mesh as a child component(s).

Note:
It is possible to combine complex collision with simple collision by using two versions of the mesh. See Combining Simple and Complex Collision for an explanation on how this can be achieved.
Note:
We will use assets from the Unreal Demo Game available from the Wwise Launcher. To use these assets in your project, download the Unreal Demo Game and locate the wanted assets in the explorer under $<YourWwiseProjectsFolder>/WwiseDemoGame/Content. Then copy and paste the desired assets to the Content folder of your working project.
  1. In the content browser, right-click and select Blueprint Class.
  2. Select Actor as the base class, and call the new class 'SpatialAudioBP'.
  3. Double-click SpatialAudioBP to open the class, and click on the Viewport tab.
  4. Ensure the root component is selected and click Add Component > Static Mesh.

  5. Click on the new static mesh component and select the mesh in the Details panel.

    • In this example, the SpatialAudioDemoMesh used in section Unreal Project Preparation is selected.
    • If you use the SpatialAudioDemoMesh, you need to select SpatialAudioDemoMeshMaterial in the Materials section.
    Set the Mesh and Material of the Static Mesh Component
    Note:
    Automatic assignment of rooms to portals only works for convex meshes. Concave meshes (e.g. L-shaped rooms) do not produce accurate portal room intersection.

  6. Add a box collision component for each of the individual rooms and doorways in the mesh.

    • In this tutorial, the box collision components are called: BoxRoomLarge, BoxRoomSmall, BoxPortalInner, and BoxPortalOuter.
    Add Box Collision Components for the Rooms and Portals in Your Mesh

Repositioning Box Collision Components

At this point, all of the box collision components are positioned in the same place; on top of each other. We'll reposition, scale, and rotate them so that they align with the rooms and doorways. The easiest way to do this is to use the Orthographic view. (The following steps are specific to the SpatialAudioDemoMesh, but similar steps can be performed for other meshes.)

Note:
When aligning rooms and portals to the mesh in this tutorial, don't worry if they're not perfectly aligned or centered. Just be sure to roughly cover the correct areas. When designing a real environment, you can use the Transform section of the Details panel to input exact values.

  1. In the Viewport tab, click Perspective and change the view to Top.

    • You are now looking down on the scene from above and it's rendered using wireframe.
    Orthographic Top View
  2. Select BoxRoomLarge and move it down along the y-axis until it's in the middle of the large room in the mesh.

  3. Scale BoxRoomLarge along the x and y axes until its size matches the dimensions of the large room. (You can switch to scale by pressing R or selecting the Scale widget in the Viewport tab).

    Position and Scale Large Room on X and Y Axes

  4. Select BoxRoomSmall and scale it along the x and y axes until its size matches the dimensions of the small room.

    Position and Scale Rooms on X and Y Axes

  5. Select BoxPortalInner and zoom in on the wireframe until you see the extents of the inner doorway on the mesh.

    Locate Extents of the Doorway on the Wireframe Mesh

  6. Move BoxPortalInner to the middle of the doorway and then scale it along the x-axis such that it covers the extent of the doorway.

    Position and Scale Inner Portal Box to Cover the Doorway

  7. Select BoxPortalOuter and rotate it so that its local y dimension is pointing out of the doorway.

    Note:
    This is necessary because portals have front rooms and back rooms which are automatically assigned by detecting the closest intersecting room along the portal's y dimension. In the case of the BoxPortalOuter, the 'back' (in local coordinate space) will be connected to the small room in our mesh, and the 'front' will not be connected to any room.

  8. Rotate BoxPortalOuter around the z-axis by 90 degrees. This can be achieved by typing '90' into the z-axis Rotation text box in the Transform section of the Details panel.

    Rotate Outer Portal Box to Point its Local Y-Axis Out of the Door
  9. Move the BoxPortalOuter over the outer doorway and scale it so that it covers the extent of the door.

  10. In the top view, ensure all rooms and portals are aligned with the mesh, as shown:

    Rooms and Portals Correctly Aligned in Top View
  11. You now need to reposition and scale the box collision components on the z-axis. In the Viewport tab, click Top and change the view to Back.

  12. Select BoxRoomLarge and BoxRoomSmall and scale both along the z-axis so that they match the dimensions of the room.

    Scale Room Boxes on Z-Axis

  13. Select BoxPortalOuter and BoxPortalInner and move them down to the center of the doorways, then scale them along the z-axis so they match the dimensions of the doors.

    Position and Scale Portal Boxes on Z-Axis

Setting Up Rooms and Portals

We will now add AkRoom components to the rooms, and AkPortal components to the portals.

  1. One by one, select each of the box collision components and then select Add Component.

  2. For each box collision component, create a room or portal component (as appropriate) with a name similar to the parent. The result should be as shown:

    Add AkRoom Components to the Room Boxes and AkPortal Components to the Portal Boxes

    Note:
    Be sure to add the components to the correct parent. For example, when adding AkRoomLarge to the large room, make sure BoxRoomLarge is selected before clicking Add Component.

    AkRoomComponent and AkPortalComponent are generic components that can be added to any primitive component. See AkRoomComponent and AkPortalComponent for more information.

  3. To confirm that the portals have valid placement, select the Visualize Rooms and Portals option in the Integration Settings.

    Visualize Rooms and Portals Option in the Integration Settings

  4. Lines are now drawn between connected rooms and portals. If portals have invalid placement, they will be visualized in red.

    Portal Room Connections Visualized in the Viewport
    Note:
    A portal has invalid placement if it is not connected to any room, or if the same room is connected to both sides. See AkPortalComponent for further information.
  5. Deselect the Visualize Rooms and Portals option in the Integration Settings.

Adding Geometry and Late Reverb

The last two items to add to the Blueprint class are AkGeometry and AkLateReverb components.

  1. Add an AkGeometry component to the static mesh component.

  2. Add an AkLateReverb component to the BoxRoomLarge box collision component.

    AkGeometry and AkLateReverb Added to the Blueprint Class
  3. Click on the AkLateReverb component.
  4. In the Details panel, set the aux bus to LargeRoom.

Verifying your Setup

The Blueprint class is now ready to use. We can drag an instance of the class into the world.

  1. Drag an instance of SpatialAudioBP from the content browser into the spatial audio demo map.

  2. Position it beside the existing building.

    An instance of the Blueprint Class Added to the World
  3. Remote connect Wwise, and play in editor.
  4. Click the mouse to play the outside sound.
  5. In the Game Object Profiler layout in Wwise, confirm that the geometry of the new Blueprint class is correctly registered, and that rays reflect correctly from this geometry.

  6. Confirm that rays pass through the portals correctly in the new Blueprint structure.

    Spatial Audio Paths Correctly Interacting with the New Blueprint Class Instance

  7. To test the late reverb component, you must add a sound and position it within the large room in our SpatialAudioBP instance. Right-click on the existing Play_Outside AkAmbientSound actor in the world and duplicate it.

    Duplicate the Existing Play_Outside Sound
  8. Rename the duplicate to 'Play_LargeRoom_BP'. (You could also detach Play_LargeRoom_BP from Button_Outside in the World Outliner hierarchy, by dragging Play_LargeRoom_BP on top of Button_Outside.)

  9. Move Play_LargeRoom_BP inside the large room of our SpatilAudioBP instance.

    Position the Sound Within the Large Room

  10. Open the Level Blueprint and add logic to play the Play_LargeRoom_BP sound when the B key is pressed (see Unreal Project Preparation step 3).

    Logic in the Level Blueprint to Play the New Sound Using the B Key
  11. Compile and save the Level Blueprint.
  12. Play in editor.
  13. Press B to play the new sound.
  14. Walk into the large room in the SpatialAudioBP building.
    • You should hear the reverb applied.

Combining Simple and Complex Collision

Note:
This section is based on the 'SpatialAudioTutorialMap' and the assets found in the ComplexRoomDemo directory in the WwiseDemoGame project, which is available from the Audiokinetic Launcher. The pre-made mesh assets and a custom Blueprint class are used to combine simple collision and complex collision.

This section shows how simple collision and complex collision can be combined for the same mesh, such that Spatial Audio containment tests are performed using the simple collision, and Unreal queries make use of the complex collision.

For complex meshes, such as those with doorways and openings, it is sometimes necessary to 'use complex collision as simple' in the collision settings for the mesh (refer to Simple Vs Complex Collision). For example, this setting might be required to allow a character to enter a room through a doorway but still collide with the walls. When this setting is used, the containment tests for AkLateReverbComponent and AkRoomComponent will fail, as the simple collision will be ignored, and the mesh's full trimesh will be used. The simple collision tests used by AkLateReverbComponent and AkRoomComponent do not support trimeshes.

One solution to this is to create two duplicates of the same mesh asset, using simple collision for one, and complex collision for the other. In the SpatialAudioTutorialMap, there is a complex room structure for which this technique has been used.

To begin, test out the complex room structure by playing in editor and walking around the building:

  • Open the SpatialAudioTutorialMap in Unreal.
  • Activate the 'Play in Editor' option.
  • Press 'C' to trigger the sound in the non-box-shaped building.
    The Non-Box-Shaped Room in the SpatialAudioTutorialMap
    • You can walk around the outside of the building and the sound will be occluded.

Follow along with the remainder of this tutorial to see how the building structure is set up to handle both simple collision, for Wwise Spatial Audio containment tests, and complex collision, for Unreal physics containment tests.

  • In the context browser, browse to WwiseAssets/SpatialAudioDemo/ComplexRoomDemo.

    The ComplexRoomDemo Assets in the SpatialAudioTutorialMap

This folder contains two Static Mesh assets - 'Building_Complex' and 'Building_Simple'.

  • Open each of these assets and scroll to the collision settings in the Details Panel.

You will notice that they have different values assigned to the Collision Complexity property.

The Building_Complex mesh asset
The Building_Simple mesh asset

Building_Complex has Collision Complexity set to 'Use Complex Collision As Simple' which means Unreal will not generate any simplified geometry for this mesh, and will instead use the entire trimesh. This is what allows the character to walk through the doorway opening. Building_Simple has Collision Complexity set to 'Use Simple Collision As Complex' which means Unreal will generate simplified geometry and ignore the trimesh. This is what allows Spatial Audio to perform containment tests for room containment.

Note:
It is possible to set Collision Complexity to 'Simple And Complex'. However, this causes Unreal to use the simplified geometry for collision queries, which means the character cannot enter through the doorway opening. Instead, two identical meshes can be used - one with complex geometry and one with simple geometry.

The next step is to combine both meshes inside a custom Blueprint class.

  • Open the BuildingBP Blueprint.

This Blueprint uses two Static Mesh Components that are positioned right on top of one another.

Static Mesh Components in the BuildingBP Blueprint
For the StaticMesh_Complex component, the Building_Complex mesh is used
For the StaticMesh_Simple component, the Building_Simple mesh is used
StaticMesh_Simple Rendering Settings

For the StaticMesh_Simple component, 'Visible' is disabled and 'Hidden in Game' is enabled in the Rendering section. This is because this mesh is only used for its simplified geometry, so that containment tests can be made for Spatial Audio.

StaticMesh_Simple Collision Presets Settings

Also for the StaticMesh_Simple component, the Collision Presets property is set to 'Trigger'. The simplified geometry creates a barrier at the doorway opening. Using the 'Trigger' collision preset ensures the character and other game objects can freely move through the simplified geometry.

The StaticMesh_Simple Component has an AkRoom component and an AkLateReverb Component attached. This way, the simple collision of the Building_Simple mesh is used for room containment tests.

To allow for sounds to reflect and diffract on the BuildingBP's mesh, an AkGeometry Component needs to be added to one of the Static Mesh Components. In this solution, since we are also using Reverb Parameter Estimation, it is best to add it to the StaticMesh_Simple component. The AkLateReverb Component uses the Acoustic Textures of its sibling AkGeometry Component to calculate HF Damping. Setting the AkGeometry Component to Static Mesh sends the full complex geometry to Wwise Spatial Audio instead of its simple collision mesh.

Finally, a Box Collision Component with an AkPortal Component attached is used to add an acoustic portal to the doorway.

Portal in the BuildingBP Blueprint

A Point Light is also added to make the interior of the building visible.

Note:
When sending geometry to Wwise, there is a limitation that each edge can have no more than two triangles connected. This should be taken into account when designing meshes to be used with Spatial Audio.
Note:
When using the Game Object Profiler in Wwise, Room Extents will always be visualized as green cuboids, regardless of the geometry assigned to the room.
Note:
Adding simple collision to meshes in Unreal will only work correctly when the mesh is convex. For more complex mesh structures, it is best to try to approximate the mesh using simple collision geometry. Simple collision primitives can be added to the mesh from the Collision menu in the Static Mesh editor.
Adding Collision Primitives to a Mesh Asset
Refer to Setting Up Collision With Static Meshes for further information.


Wwise Unreal Integration Documentation: Reverb Parameter Estimation

Reverb Parameter Estimation

When using an AkLateReverbComponent that is attached to a UPrimitiveComponent, you can tell the Wwise Unreal Integration to automatically assign the reverb Aux Bus based on the size and shape of the UPrimitiveComponent.

Similarly, the Wwise Unreal Integration can also use the UPrimitiveComponent to estimate specific reverb parameters and adjust them via the Driving Global Reverb RTPCs. This tutorial explains how to set up automatic Aux Bus assignment and reverb effect parameter estimation using the Global Reverb RTPCs.

Note:
UPrimitiveComponent is a generic Unreal Component that has size and shape. There are many Component types that are based on UPrimitiveComponent, including collision Components, brush Components and mesh Components. See the Unreal Engine documentation for more information.
Note:
Although Reverb Parameter Estimation is a feature of the AkLateReverbComponent, the AkSpatialAudioVolume contains an AkLateReverbComponent, so it can also make use of the feature.
Note:
The Preparation for the Spatial Audio Tutorials must be completed prior to starting this tutorial.

Automatic Aux Bus Assignment

Automatic Aux Bus Assignment works by estimating the time taken in seconds for the reverb of a sound to decay by a certain amount. We refer to this simply as the Decay. You can use the Automatically Assigning the Aux Bus in the Integration Settings to determine which Decay values map to which Aux Busses.

Aux Bus Assignment Map in the Integration Settings
Note:
To access the Integration Settings, click Edit > Project Settings..., which will open the Unreal Project Settings. Then, in the left panel of the Unreal Project Settings, scroll down to the Wwise section and click on Integration Settings.

Before setting up the Decay keys in the map, we can observe the estimated Decay values for the existing reverbs in our level.

  1. Open the SpatialAudioTutorialMap if it is not already open.
  2. In the World Outliner, click on the Interior_SmallRoom AkSpatialAudioVolume.
  3. In the Details panel for Interior_SmallRoom, enable Auto Assign Aux Bus.
  4. Repeat steps 2 and 3 for the Interior_LargeRoom AkSpatialAudioVolume.
Enable Auto Assign Aux Bus for Interior_SmallRoom and Interior_LargeRoom
Note:
Enabling Auto Assign Aux Bus will cause Aux Bus to be set to None. This is because we have not yet set up the Aux Bus Assignment Map.

With Auto Assign Aux Bus enabled, some text information is displayed above each AkSpatialAudioVolume in the viewport when they are selected. The Interior_SmallRoom has a Decay estimate of 0.37 seconds. The Interior_LargeRoom has a Decay estimate of 0.45 seconds. This information is also available in the Details panel under Reverb Parameter Estimation. We can use these values to set up the Aux Bus Assignment Map.

Reverb Parameter Information is Displayed Above the Primitive Component in the Viewport
Reverb Parameter Information is Also Displayed in the Reverb Parameter Estimation Section of the Details Panel
  1. Open the Integration Settings.
  2. Expand the Reverb Assignment Map section if it is not already expanded.
    Aux Bus Assignment Map in the Integration Settings
  3. Click the Insert Decay Key button.
  4. Set the value to 0.4 and click Insert.
    Insert a Decay Key Value of 0.4
  5. Click the Insert Decay Key button.
  6. Set the value to 0.5 and click Insert.
  7. Next to the Decay key of 0.4, select the SmallRoom Aux Bus.
  8. Next to the Decay key of 0.5, select the LargeRoom Aux Bus.
The Aux Bus Assignment Map with Two New Decay Keys and Corresponding Aux Busses

With the Aux Bus Assignment Map set up like this, any Decay value between 0.0 and 0.4 will produce the SmallRoom Aux Bus. Any Decay value between 0.4 and 0.5 will produce the LargeRoom Aux Bus. Decay values above 0.5 will produce the Default Reverb Aux Bus.

Going back to our level, we can see that the appropriate Aux Bus values have been assigned for Interior_SmallRoom and Interior_LargeRoom.

The Aux Bus is Assigned Automatically

Global Reverb RTPCs

As well as automatically assigning the Aux Bus, it is possible to automatically set certain parameters of a reverb effect in Wwise via the Global Reverb RTPCs. Three parameters can be set in this way: Decay, Predelay, and HFDamping. You can set which RTPCs control these parameters in the Integration Settings.

The Global Reverb RTPCs in the Integration Settings

Setting Up RTPCs

In order to use the Global Reverb RTPCs we need to add three RTPCs in our Wwise project.

  1. Open the Wwise project.
  2. Open the Designer Layout by clicking Layouts > Designer, or by pressing the F5 key.
  3. In the Project Explorer, click the Game Syncs tab.
    Open the Game Syncs Tab
  4. Add three new Game Parameters called Decay, Predelay and HFDamping.
  5. Set the Min, Max and Default values of the three new Game Parameters as follows:
    1. Decay - Min: 0, Max: 10, Default: 0
    2. Predelay - Min: 0, Max: 1000, Default: 0
    3. HFDamping - Min: -1, Max: 1, Default: 0
      Add Three New RTPCs in the Wwise Project
  6. In the Project Explorer, click the Audio tab.
  7. Under the Master-Mixer Hierarchy, double-click on SmallRoom.
    1. This will open the SmallRoom Aux Bus in the Property Editor
  8. Click the Effects tab in the Property Editor.
    Open the Effects Tab for the SmallRoom Aux Bus
  9. Click the Edit button to open the WwiseRoomVerb Effect.
  10. In the Effect Editor, click the RTPC tab.
  11. Add entries for Decay Time, Predelay and HF Damping in the RTPCs list.
  12. Map each of these parameters as follows:
    1. Decay Time: Decay
    2. Pre delay: Predelay
    3. HF Damping: HFDamping
  13. Select the Decay mapping and add a point on the curve.
  14. Set both the X and Y values of the point to 0.2.
    The Decay RTPC Mapping
  15. Select the HFDamping mapping and add a point on the curve.
  16. Set the X value to 0.0 and the Y value to 1.0.
    The HFDamping Mapping
    All Three RTPC Mappings
  17. Select all of the mappings in the list.
  18. Right-click one of the mappings and select Copy.
  19. Open the LargeRoom Aux Bus in the Property Editor.
    Open the Effect Editor for the LargeRoom Wwise RoomVerb Effect
  20. Click on the Effects tab.
  21. Click on the Edit button to open the WwiseRoomVerb effect.
  22. In the Effect Editor, click the RTPC tab.
  23. Right-click in the empty RTPCs list and select Paste.

We have now set up three RTPCs to control reverb parameters in our Wwise project. Back in the Unreal project, we can use these RTPCs as the Global Reverb RTPCs.

  1. Open the Integration Settings.
  2. Expand the Reverb Assignment Map section if it is not already expanded.
  3. Expand the RTPCs subsection if it is not already expanded.
    The Global Reverb RTPCs in the Integration Settings
  4. Assign each new RTPC to the corresponding Global Reverb RTPC
The Three New RTPCs Assigned to the Global Reverb RTPCs

You can now remote connect to Wwise and Play In Editor. If you observe the RTPC curves in Wwise while triggering the sounds in the small room and the large room, you can see how the reverb parameters are changed.

The RTPCs Being Driven by the Game

Using One Reverb Aux Bus for Different Room Types

Using the Global Reverb RTPCs, it is possible to use one reverb effect for the whole level, and drive the parameters dynamically for the different rooms in the level.

  1. In the Wwise project, create a new Aux Bus called DynamicReverb.
  2. Add a Wwise RoomVerb effect to this Aux Bus, using the Default effect preset.
    Add a New Aux Bus Called DynamicReverb with a Wwise RoomVerb Effect
  3. Copy and paste the RTPC mappings from the SmallRoom Aux Bus reverb effect to the DynamicReverb Aux Bus reverb effect.
  4. In the Unreal project, clear all entries in the Aux Bus Assignment Map
    1. You can do this by clicking the small delete icon next to Environment Decay Aux Bus Map.
  5. Set the Default Reverb Aux Bus to the new DynamicReverb Aux Bus.

Now, if you remote connect and Play In Editor, both the Interior_SmallRoom and Interior_LargeRoom will use the DynamicReverb Aux Bus, but the parameters will be automatically tweaked for each room, via the Global Reverb RTPCs.

Using Reverb Estimation with a Custom Blueprint Class

To further demonstrate the single Aux Bus workflow, we can create a custom Blueprint Class representing a single room. For demo purposes, this will be a simple cube room with walls that we can walk through. The first thing we need to do is create a double-sided material so that we can see the inside of our room.

  1. In the Content Browser, browse to the WwiseAssets/SpatialAudioDemo folder.
  2. Right-click the SpatialAudioDemoMeshMaterial and select Duplicate.
    Duplicate the SpatialAudioDemoMeshMaterial
  3. Call the new Material Instance "SpatialAudioDoubleSidedMaterial".
    Rename the New Material Instance to SpatialAudioDoubleSidedMaterial
  4. Open the new Material Instance.
  5. Under the Material Property Overrides, enable Two Sided.
  6. Save the Material Instance.

With our demo material ready, we can now create our Blueprint Class.

  1. In the Content Browser, browse to the Blueprints folder.
  2. Right-click in the folder and select Blueprint Class.
    Create a New Blueprint Class
  3. Choose Actor as the Parent Class.
  4. Call the new Blueprint "BPRoom".
  5. Open the new BPRoom Blueprint Class.
  6. On the Components panel, click the Add Component button.
    Use The Add Component Button in the Blueprint Editor to Add Components
  7. Type cube in the search bar and select the Cube Component.
    1. This creates a Static Mesh Component with a cube mesh selected as the Static Mesh.
  8. In the Details panel, under Materials, set Element 0 to the SpatialAudioDoubleSidedMaterial.
    Set the Cube Material to SpatialAudioDoubleSidedMaterial
  9. In the Components panel, select the Cube Component.
  10. Click the Add Component button and add a Box Collision Component.
  11. Select the Box Component.
  12. Click the Add Component button and add an Ak Room Component.
  13. Select the Box Component.
  14. Click the Add Component button and add an Ak Late Reverb Component.
  15. Select the Box Component.
  16. Click the Add Component button and add an Ak Geometry Component.

The Component hierarchy in your Blueprint Class should now look as follows:

Set Up the Cube, Box, and Spatial Audio Components
  1. Select the AkGeometry Component.
  2. In the Details panel, under Geometry, set the Mesh Type to Simple Collision.
  3. Expand the Acoustic Properties Override subsection and set the Acoustic Texture to Concrete.
    Set Up the AkGeometry Parameters
  4. In the Components panel, Select the Cube Component.
  5. Click the Add Component button and add a Point Light Component.
    1. This will allow us to see when we walk inside the room.
      Add a Point Light to the Cube Component
  6. Select the Cube Component.
  7. Under Collision, set the Collision Preset to No Collision.
  8. Select the Box Component.
  9. Under Collision, set the Collision Preset to No Collision.
    1. This will allow us to walk through the walls.
  10. Compile and Save the Blueprint.
  11. In the Level Editor, drag in multiple instances of the BPRoom from the Content Browser.
  12. Give these rooms different sizes.

Before testing our new room Blueprint, we need to add a sound to play as we change between the rooms.

  1. Open the MyCharacter Blueprint from the Blueprints folder in the Content Browser.
    MyCharacter Blueprint in the Content Browser
  2. In the Components panel, select the Capsule Component.
  3. Click the Add Component button and add an Ak Component.
    1. This will show up simply as "Ak".
  4. Change the name of the Ak Component to SpatialSound.
  5. Select the SpatialSound Component.
  6. In the Details panel, set the Ak Audio Event to Play_SpatialSound.
    Add an Ak Component to the MyCharacter Blueprint
  7. Open the Event Graph for the MyCharacter Blueprint.
  8. Locate the Event BeginPlay node at the lower-right side of the Event Graph.
  9. Drag off the last Set Switch node and start typing "post associated".
    Connect the Set Switch Node to a PostAssociatedAkEvent Node
  10. Choose Post Associated Ak Event (SpatialSound).
Set Up Logic to Post the Spatial Sound on BeginPlay

We can now place some rooms in our level.

  1. Drag multiple instances of the BPRoom Blueprint into the level.
  2. Size the rooms differently.
  3. Change the Acoustic Texture on the AkGeometry Component in each of the rooms.
    1. Select a room in the level.
    2. In the Details panel, select the AkGeometry Component.
    3. Change the Acoustic Texture.
    4. Do this for all BPRoom instances in the level.
      Change the Acoustic Textures for Different Instances of BPRoom Actors

You can now remote connect to Wwise and Play In Editor. The spatial sound will be triggered immediately. As you walk into the different rooms, the appropriate reverb parameters will be applied to the sound.

HFDamping Calculation and Acoustic Textures

When estimating the HFDamping value, the AkLateReverbComponent uses the AkGeometryComponent in order to query which Acoustic Textures it has. In the previous subsection, we had an AkLateReverbComponent and an AkGeometryComponent attached to the same UPrimitiveComponent parent. The UPrimitiveComponent parent was the Box Component. With this setup, when the AkLateReverbComponent has a sibling AkGeometryComponent, it automatically uses that sibling AkGeometryComponent to calculate the HFDamping. However, if the AkGeometryComponent has a different parent, we need to explicitly associate the AkGeometryComponent with the AkLateReverbComponent using the AssociateAkTextureSetComponent function. This final section demonstrates this setup.

  1. Open the BPRoom Blueprint.
  2. In the Components panel, drag the AkGeometry Component on top of the Cube Component and release the mouse button.
    1. This will attach the AkGeometry Component to the Cube Component instead of the Box Component.
  3. Select the AkGeometry Component.
  4. In the Details panel, under Geometry, set the Mesh Type to Static Mesh.
  5. Add an entry to the Acoustic Properties Override using the plus button.
    Add a Material in the Acoustic Properties Overrides List
  6. Set the Material to SpatialAudioDoubleSidedMaterial.
  7. Click the drop-down arrow next to the Material and set the Acoustic Texture to Concrete.
    Set up the AkGeometry Parameters
  8. Open the Event Graph for the Blueprint.
  9. Click and drag from the execution pin of the Even BeginPlay node.
  10. Type "associate" in the search bar.
  11. Choose Associate Ak Texture Set Component (AkLateReverb).
  12. Drag the AkGeometry Component from the Components panel on top of the Texture Set Component pin and release the mouse button.
Set up the BeginPlay Function

You can now remote connect to Wwise and Play In Editor in order to test that the HFDamping value is updated correctly. With this setup, you can have a Static Mesh with multiple materials, and an AkGeometryComponent attached that maps those materials to Acoustic Textures. You can then associate this AkGeometryComponent with an AkLateReverbComponent in order to have the textures drive the HFDamping value.


Wwise Unreal Integration Documentation: Fit to Geometry

Fit to Geometry

To facilitate quick and accurate placement of AkAcousticPortals and AkSpatialAudioVolumes, the Wwise Unreal integration is able to detect surrounding static mesh geometry in a scene and determine the appropriate size and location of the portals and volumes within the scene. Fit to Geometry works for a variety of typical room, window, and door shapes. This section gives an overview of how to use Fit To Geometry for AkAcousticPortals and AkSpatialAudioVolumes.

Note:
The Preparation for the Spatial Audio Tutorials must be completed prior to starting this tutorial.

Note:
For Fit To Geometry to function correctly, Realtime must be enabled in the viewport options.

Enable Realtime in the Viewport Options

Fit To Geometry Prerequisites

  • Select the desired default collision channel inside the Wwise Integration settings. The Fit To Geometry feature uses the Unreal Engine to perform ray traces, and the rays must be able to intersect the surrounding static mesh geometry. Therefore, the collision channel must correspond with the collision parameters of the static mesh that the AkAcousticPortals and AkSpatialAudioVolumes are placed within.
  • If desired, individual AkAcousticPortals and AkSpatialAudioVolume can override the default collision channel and choose a different one. This setting is found in the Details panel for both AkAcousticPortals and AkSpatialAudioVolumes.
  • If using acoustic materials for early reflections on AkSurfaceReflectorSets, make sure that you have set up the desired mapping inside the Wwise integration settings. For more information, refer to Automatically Assigning Acoustic Textures to AkSpatialAudioVolumes.
Note:
The Fit To Geometry feature is only available for use with the AkAcousticPortal and AkSpatialAudioVolume actors inside the level editor viewport. It cannot be used inside the Blueprint editor viewport, nor can it be used on the individual components that make up the aforementioned actors: AkPortalComponent, AkSurfaceReflectorSet, AkRoomComponent, and AkLateReverb.

Placing AkSpatialAudioVolumes Using Fit To Geometry

  • The Fit To Geometry operation is initially performed after enabling the option in the Details panel for an AkSpatialAudioVolume. After the option has been enabled, the Fit To Geometry operation is performed any time the volume is translated to a new location using the transform gizmo.
  • While dragging the translation gizmo, a yellow preview outline is drawn to give you an indication of how the AkSpatialAudioVolume will fit to a specific location in the world. Drag the volume until a desirable fit is found, and then release the mouse to update the brush volume of the AkSpatialAudioVolume. Note that after performing a Fit To Geometry operation, the transform of the AkSpatialAudioVolume actor remains unchanged - only the child brush component is modified.
  • The Fit To Geometry operation works by tracing a number of rays from the origin of the actor, emanating spherically outwards to probe for walls. The hit points for these rays are colored green (or red, when the hits are ignored). It can be useful to take note of where the rays hit to make sense of the resulting shape, to make sure that the correct collision channel is being used, and lastly, to make sure the correct acoustic textures are assigned to the resulting surfaces.
  • Three types of shapes are supported; the shape type is selected in the Details panel of the AkSpatialAudioVolumes.
    1. Oriented Box - A box-shaped room with an arbitrary orientation. The orientation of the box is determined automatically during the Fit To Geometry operation. The shape is calculated by finding the smallest box (by volume) that all the green hit points will fit inside.
    2. Aligned Box - A box-shaped room with a fixed orientation. The orientation of the box is specified by the user. Rotate the AkSpatialAudioVolume actor using the transform gizmo to change its orientation. The aligned box shape can be useful when fitting a volume to a box-shaped area that may have various obstacles that would otherwise cause misalignment when using the oriented box shape, and when fitting a box to an outdoor area between walls or in a narrow passage.
      • In some cases, a given set of ray traces will result in an AkSpatialAudioVolume with zero volume - for example if all hit points lie on the same plane. If this happens, the outline of the box will flash red and the shape will not be updated. An error message will appear on the lower-left side of the screen. To fix this issue, move the AkSpatialAudioVolume to a new location and try again.
    3. Convex Polyhedron - A fully enclosed, convex polyhedron shaped room. This is the most complex shape, and although it may be subject to more placement errors, it can also save time when fitting volumes to rooms that do not have parallel walls or are otherwise not box-shaped. Note that the room shape must be convex and fully enclosed - in other words, it cannot have open walls, ceilings, etc.
      • In some cases, a closed convex shape cannot be found with the set of ray traces from a specific location. If this occurs, the outline of the shape will flash red, the shape will not update, and an error message will appear on the lower-left side of the screen. To fix this issue, move the AkSpatialAudioVolume to a new location and try again.
  • The ray cast hit points can be filtered using a slider in the Details panel of the AkSpatialAudioVolume.
    • The rays are sorted internally by length, and the slider then determines the percentage of the shortest ray hits that are taken into account.
      • For example, if the slider is set to 0.75, then the shortest 75% of the rays are used to apply the fitting operation, and the longest 25% of rays are ignored.
    • Ray hits that are filtered in are colored green, and ray hits that are filtered out are red.
    • Filtering hit points is useful when some rays escape through windows or doors, and the hit points of those rays are causing erroneous results.
    • Filtering hit points is probably most useful using the aligned box shape, because lowering the number of ray hits cannot cause errors in determining the orientation (since an aligned box has a fixed orientation), however, ray filtering can be used with any shape.

Automatically Assigning Acoustic Textures to AkSpatialAudioVolumes

  • Acoustic textures are automatically assigned to the surfaces of the AkSpatialAudioVolume based on the collision results of the ray traces performed by Fit To Geometry, and the acoustic material mapping defined in the Wwise integration settings.
    • Since the result of a ray trace in the Unreal Engine yields a physical material, the mapping that is set up in the project settings is used to map each physical material to an acoustic texture.
    • It is likely that more than one ray hit will project onto a resulting surface of the AkSpatialAudioVolumes, and it is possible that the various ray hits will each return a different physical material. The physical material with the most hits is chosen to map to the acoustic texture.
    • It is possible that some rays will hit undesirable surfaces that are not representative of the acoustic properties of the resulting AkSpatialAudioVolume surface. For example, a drywall surface may have a wooden trim in some areas, but using 'drywall' for the acoustic representation makes more sense than 'wood' for the wall as a whole. In most cases, there will be enough hit points that the texture with the greater surface area will be assigned. If not, try translating the AkSpatialAudioVolume slightly so that the hit points move slightly, or if desired results are still not achieved, the acoustic texture can be manually assigned in the Details panel for the AkSurfaceReflectorSet.
  • It is necessary to create the desired mapping between physical materials and acoustic textures inside the Wwise integration settings before using Fit To Geometry on an AkSpatialAudioVolume. If you change the material mapping after fitting an AkSpatialAudioVolume, its acoustic materials are not updated.
Note:
Because Fit To Geometry must use the Unreal Engine's complex collision to find individual triangles of a static mesh, it is not possible to retrieve a physical material that has been assigned to the 'Phys Material Override' property of a static mesh actor. This property only applies to simple collision, and will not be mapped to an acoustic material.

Placing AkAcousticPortals Using Fit To Geometry

  • Like AkSpatialAudioVolumes, the Fit To Geometry operation is initially performed after enabling the option inside the Details panel for an AkAcousticPortal. After the option has been enabled, the Fit To Geometry operation is performed any time the actor is translated to a new location using the transform gizmo.
  • While dragging the translation gizmo, a yellow preview outline is drawn to give you an indication of how the AkAcousticPortal will fit to a specific location in the world. Drag the actor until a desirable fit is found, and then release the mouse to update the AkAcousticPortal.
  • The Fit To Geometry operation works by tracing a number of rays from the origin of the actor, emanating spherically outwards to probe for windows and doorways. When a potential window or doorway is found, a secondary ray is fired in the direction of the surface normal, to detect the other side of the window or door frame.
  • A portal can only be detected when the opening has a distinct 'frame' with perpendicular surfaces facing inwards.
On the left is an example of an opening that will be detected by the AkAcousticPortal; on the right is an opening that will not be detected because the mesh is too thin.
  • Use the Detection Radius property inside the Details panel to limit the size of openings that are detected. A general guideline is to set this value larger than the opening you are trying to detect, but smaller than the dimension of the entire room.
    • The default value of 500 works for most Unreal projects that use centimeters for the units, and that have average-size openings for windows and doors. Adjust this value as necessary to fit the dimensions of your static mesh.
    • If the Detection Radius is smaller than the opening, the portal will not be found.
    • If the Detection Radius is too large, erroneous portals may be detected that span the entire width of the room.
  • A portal must not have a solid door or window that collides with the Fit To Geometry ray traces, as determined by the Collision Channel property. If it does, the opening will not be detected. If the opening has a window or door, either use a different collision profile, or hide the window/door by pressing H, so that the mesh is ignored.

Tips for Using Fit To Geometry

  • Many AkAcousticPortal and/or AkSpatialAudioVolume actors can be populated quickly in a level by first enabling Fit To Geometry on a actor, and then Alt-dragging the actor's translation gizmo to create a duplicate actor that will then fit to a new location in the level.
  • If certain static mesh actors are blocking the ray traces performed by Fit To Geometry and causing erroneous results, such as pieces of furniture, props, light fixtures, etc, those actors can be hidden (press H), and they will then be ignored by the Fit To Geometry ray traces.


Wwise Unreal Integration Documentation: Understanding the Wwise Unreal Integration Modules

Understanding the Wwise Unreal Integration Modules

The following modules are available for you to customize the Wwise Unreal Integration to suit your workflow.

Wwise Sound Engine Runtime Modules:

  • AkAudio Module
    The root module for most of the Integration’s user-facing features. Unless you want to customize your integration, there is generally no need to look beyond this module.
  • Wwise Module
    A simple module that links to all of the other optional modules.
  • WwiseSoundEngine Module
    At the lowest level, provides the bridging between the Wwise Sound Engine libraries and the Unreal project.
  • WwiseFileHandler Module
    Provides the Wwise Sound Engine with the media, SoundBanks, and external sources it needs, including handling requests from the Wwise Location Resolver and I/O Hook.
  • WwiseResourceLoader Module
    At a higher level, handles all Wwise object types and makes sure to properly interface with the WwiseFileHandler Module to load and unload the files for these Wwise objects. Uncooked Project and Editor Modules:
  • WwiseProjectDatabase Module
    Provides a memory-based database view of the current state of the Wwise project’s generated SoundBanks.
  • WwiseResourceCooker Module
    Converts Wwise Object Info structures to Cooked structures for the WwiseResourceLoader and copies a requested object’s files from the GeneratedSoundBanks to the Staging directory of the packaging process. Optional Modules:
  • WwiseSimpleExternalSourceManager Module
    A minimal External Source Manager implementation used in our internal testing, as well as in some of our projects, such as the Wwise Demo Game.
  • AkAudioMixer Module
    Allows a project to pipe the audio output, as well as audio submixes, from Unreal audio components to a Wwise project’s mixer.


Wwise Unreal Integration Documentation: Wwise Module

Wwise Module

The Wwise module is a simple module that contains links to all of the other permanent modules. It is therefore easy to add a reference to the Wwise module in the project's Build.cs file, instead of references to each of the other modules.

The Wwise module also contains the compiled code of the optional modules and handles their initialization as well. For example, the AudioLink Runtime module is actually compiled and embedded within the Wwise module. Because of this module structure, the Wwise plug-in and its optional modules can be properly embedded as an Engine plug-in.

WwiseHelper Build Object

To add module dependencies, we recommend that you set them up individually in the project's module if possible. It is possible to add direct access to one of Wwise plug-in's related modules, but doing so adds complexity and potential difficulty during upgrades, for example.

Instead of adding dependencies individually, we recommend that the project's module call:

WwiseHelper.AddDependencies(this, Target);

This call adds all dependencies from the other modules.

WwiseHelper as an Engine Plug-In

It is not possible to include the WwiseHelper when it is part of the Engine plug-in. However, because it is a standalone file, you can copy it to the final project along with the other Build.cs files and use its contents. It is your responsibility to update its contents whenever a new version of the Wwise plug-in is released.


Wwise Unreal Integration Documentation: WwiseSoundEngine Module

WwiseSoundEngine Module

Static Sound Engine Bridging

The WwiseSoundEngine Module contains the Wwise Sound Engine API interface, as well as various bundled plug-ins.

Most of the functions in the Wwise Sound Engine are bridged at the lowest level possible. In order to call any Wwise Sound Engine API, you must call them through the bridge:

auto* SoundEngine = IWwiseSoundEngineAPI::Get();
if (UNLIKELY(!SoundEngine)) return;
Caution:
Do not use any AK:: or ak:: functions directly. It can cause linker errors, instability, or a crash.

Prior to Wwise 2022.1, it was necessary to make all AK::SoundEngine calls from AkAudioDevice from within the AkAudio module. While this is no longer necessary, that legacy approach remains possible. It might be preferable in some cases because it provides more functionality to user code, including converting from Unreal classes to Wwise native types, alongside Blueprintable operations.

There is a second module, WwiseSoundEngine_2022_1, that contains the bridging code from the WwiseSoundEngine interface to the actual Wwise 2022.1 Sound Engine API.

Global Callbacks

The Integration includes a Global Callbacks singleton feature. This allows games and tools to leverage the Sound Engine’s AkGlobalCallback. For a description of the callbacks, refer to AkCallbackType in the Wwise SDK documentation.

For each callback, the following functions are available:

  • <Location>Async: The least expensive method, where the callback is executed as soon as a Task Graph thread is available. You must make sure the callback follows the best practices for multithreaded code.
  • <Location>Sync: The fastest, most reactive method, but also the most risky. It executes the callback in the Sound Engine threads, potentially causing slowdowns and audio glitching. You also need to be mindful of the limitations of threads created external to the Unreal thread pools. They don’t have the same Unreal thread-local data, the stack size is different, and the priority might be different. In other words, use at your own risk!
  • <Location>Game: The preferred method for user interface tasks, where the callback must be executed on the Game Thread.

Each function has its own uses; none is perfect for all scenarios.


Wwise Unreal Integration Documentation: WwiseFileHandler Module

WwiseFileHandler Module

The WwiseFileHandler module prepares and handles all external sources, media, and SoundBank files. It preloads, loads, and streams files, but the module itself doesn't check for any dependencies in the relevant files.

Each file is handled as an individual object that is only opened once, and its usage is tracked independently through a File State. After a File State is made available to one of the three managers described below, the corresponding file is optionally made available to the Sound Engine I/O Hook and Sound Engine File Location Resolver.

The WwiseFileHandler requires the WwiseResourceLoader to register the file first alongside its options as a File State. Then, the file becomes accessible to the Sound Engine’s File Location Resolver.

Because of the metadata stored in the GeneratedSoundBanks folder and cooked with assets as packaging information, the WwiseResourceLoader Module can determine which resources are required, and the WwiseFileHandler provides all the File States prior to loading a resource that might require it.

File States

A File State declares a known file to the WwiseFileHandler module. Using the Load and Unload operations, a file is presented to the WwiseFileHandler, which determines whether it was already loaded and will be ref-counted. As long as there is a user for the file, its File State is kept alive.

Every new operation related to each File State is run in its respective Execution Queue, where the queued operations are run asynchronously, but sequentially. Due to the asynchronous nature of the File State, there are two levels for each File State: the public asynchronous methods and the protected synchronous methods. Each public method is merely a wrapper that pushes an operation to its Execution Queue.

Three main states are available: Closed, Opened, and Loaded. Although the definition of each state is somewhat arbitrary, they can be loosely defined as follows:

  • Closed: The file can be safely deleted. It doesn’t have any resources in use by the system other than a small amount of memory.
  • Opened: The defining file operation is done. The file was opened and potentially read in memory, either partially or fully. In the case of streamed media, the file is open and the required amount of preloaded data is cached. In the case of media residing in memory, the file was opened, fully read, and closed; the available pointer is its Opened state.
  • Loaded: The defining Sound Engine operation is done. The Sound Engine is either aware of the file, or it has been made available. For example, in the case of streamed media, the file is available for the I/O Hook to read its contents. In the case of a media file loaded in memory, its data was sent to the Sound Engine through a SetMedia operation. Similarly, in the case of a SoundBank, its data was processed through the LoadBank method family.

There are also intermediate File States that indicate a transition towards one of the main File States.

Since the operations are asynchronous and can be lengthy, multiple operations might be waiting for the same file to load, in which case only one will make the forward trip, and all of the others will wait for the operation to be completed before returning the status. For example, in a User-Defined SoundBank containing 12 different Events, all 12 Events might request the same SoundBank to be loaded, in which case the Events only proceed when that SoundBank is loaded.

When Unloading, special care is taken in the case of lengthy audio operations. For example, an AK Convolution Reverb file with a long reverberation tail cannot be unloaded until the resonation is finished. Or an unstopped looped media might never stop. These operations might remain in a transient state for multiple seconds.

Additionally, while the reverb’s tail is being processed, there's a chance the same file is requested, for example, while gathering resources for a new map that coincidentally requires the same media. Instead of being stuck in the Unloading state, the state is changed to Reloading, the unloading operation is canceled as soon as possible, and then the state is returned to Loaded.

Sound Engine I/O Hook and Sound Engine File Location Resolver

The Sound Engine I/O Hook and Sound Engine File Location Resolver work together to handle the lifetime of a streamed asset. First, the File Location Resolver asks the WwiseFileHandler to open a file. Then, once it’s open, the I/O Hook requests that the WwiseFileHandler fulfills its asynchronous Read requests for the open file as needed.

Opening a file through the Resolver involves the following steps:

  1. Look up the File State map based on the passed Short ID.
  2. Ask the File State to acknowledge a new streaming request, which might change its state depending on the File State algorithm.
  3. Return the result to the Sound Engine.

In a typical game, this can all be done in less than a millisecond, but it can be considered lengthy nonetheless. However, since the File States are already open and ready for use, additional system I/O operations might not be necessary.

After the file is opened for streaming, the I/O Hook’s asynchronous Read operations are processed through another dedicated Execution Queue, which handles those Read operations exclusively. The goal of that queue is to be efficient and reactive, and eventually batch the Read operations in an optimized manner. It also provides the Close operation for the streamed media, ensuring the Close operation is performed after any pending Read operations.

Like every Sound Engine callback, these are called in a thread that’s not owned by Unreal. They don’t have the same Unreal thread-local data, the stack size is different, and the priority might be different. Because of this, many Unreal operations will fail, such as Stats gathering.

Filename-Based Location Resolver

Most Open operations in the Location Resolver are performed based on a Short ID stored in the various maps.

Opening files based on a file pathname is not supported by the Integration. The Integration only opens files based on Short IDs. However, there are cases when a file could be opened by the Sound Engine based on a file pathname. For example, some algorithms, such as the XML Error Translator, ask for the "SoundBanks.xml" file. Another case is when the Sound Engine is writing files. This is usually done for logging purposes in debug and profile builds.

SoundBank and Media Managers

The SoundBank Manager provides the LoadSoundBank and UnloadSoundBank operations, while the Media Manager provides the LoadMedia and UnloadMedia operations. These two managers track which File States are created and send the information to the Location Resolver when a File State is requested for streaming purposes.

Both work asynchronously through the same Execution Queue pattern. Since the File State creation process is relatively efficient, there is generally little delay when executing several operations simultaneously. However, the callback might take more time to execute since the file must be in a state adequate for its usage, including its Sound Engine loading or unloading.

External Sources Manager

The External Sources Manager manages File States for external sources. It is designed to be overridden by a user-developed module implementing a data model to track external source media dependencies, for which the Wwise Simple External Source Manager is an example.

The manager provides a supplemental, editor-only operation for cooking meant to be overridden by the user in order to properly stage external source files. This saves users from having to override the WwiseResourceCooker Module only to support their External Source Manager implementation.

Since the posted Events must include the external sources they use when they are posted, the Integration is designed to automatically query the External Source Manager for this information at the appropriate time. Refer to Using the Wwise Simple External Source Manager for details.


Wwise Unreal Integration Documentation: WwiseResourceLoader Module

WwiseResourceLoader Module

One level above the WwiseFileHandler Module, the WwiseResourceLoader module handles Wwise project assets and their dependencies. Similar to the WwiseFileHandler, the two primary operations performed by the WwiseResourceLoader are loading and unloading various resources. However, the WwiseResourceLoader preforms these operations for all asset types.

For example, an Aux Bus can be associated with one SoundBank. It might also be dependent on another Aux Bus that's associated with a different SoundBank. Furthermore, it can be associated with media files as required by various Effect plug-ins. All of these SoundBanks and media files must be loaded before you can use the Aux Bus. When the WwiseResourceLoader receives a request to load the Aux Bus, the WwiseFileHandler will load all of these resources.

Events and Switch Container Resources

The most complex Wwise object to load is the foundation of Wwise actions: Events. A Wwise Event can contain all sorts of other types of Wwise objects. It can require external sources to be prepared and multiple mandatory SoundBanks and media files to be loaded. It might also have all these dependencies nested inside a Switch Container hierarchy. Moreover, AkAudioEvent assets have the LoadOnReference option, which only loads Switch Container resources when the combination of associated Switches and States is currently loaded in the map. This optimization is disabled by default but can save memory when used with large Switch Container hierarchies.

For example, a Play Footsteps Event using a Switch Container dependent on a ground material Switch, only loads sounds for the Switches in the currently loaded map. In addition, multiple layers of Switch Containers can exist, such as a high-quality version available only through a DLC, or dynamically selected conditions, such as the kind of footwear, the weight of the character, or their speed. Depending on these conditions, it’s possible to have a very complex hierarchy of Switch Containers, all of which can be loaded or not at any given time.

In the Integration, Switch Container Leaves help to organize these conditions, where each leaf represents a set of potential conditions (Switches and States) and the associated SoundBanks, media, and external sources that must be loaded when the conditions are met.

Although Group Values, such as Switches and States, can be included in a project as assets and packaged in deployed games, it is still possible to set them programmatically by directly calling methods exposed in the Sound Engine. In this case, when using the LoadOnReference option, it's important to send that information to the WwiseResourceLoader before setting a Group Value, so it can prepare to load the potential files. For example, code that sets the entire application to High Quality would need to inform the WwiseResourceLoader to consider that Group Value as set. It is possible to provide this data programmatically for Switches, States, and Game Parameters structures even when cooked.

See also
  • Optimizing Memory Usage with Reference-Loaded Switch Containers

Changing Language

If the application language changes, the WwiseResourceLoader reloads localized assets. This lengthy process unloads all localized SoundBanks and media and then loads the equivalent resources for the new language. During this operation, the affected assets are temporarily unavailable and could cause errors if posted.


Wwise Unreal Integration Documentation: WwiseProjectDatabase Module

WwiseProjectDatabase Module

The WwiseProjectDatabase module is available to uncooked projects, including in the Editor. This module provides a memory-based database view of the current state of the Wwise project’s generated SoundBanks. Every value and piece of information available in the JSON metadata files produced when generating SoundBanks is accessible in the Project Database. This view is purely informative and only changes when the generated files are updated. References to structures in the database are thread-safe, even when a new database version is loaded asynchronously.

There are two representations of information in the database:

  • The Metadata structures provide the raw information from the JSON files.
  • The Ref classes allow access to the neighboring information related to the metadata.

Metadata Structures

The Metadata structures are defined exactly like the JSON files that describe the generated SoundBanks metadata. No context is provided and there are few convenience tools. With very few exceptions, the member names in these structures are identical to those in the JSON files.

For the file definition itself, you start from a WwiseMetadataRootFile object that defines the kind of optional root objects the file can declare. Then, the structures expose the different inner objects and values that can occur.

After they are loaded in memory, these structures present a clear image of the generated SoundBanks in a compact and efficient form.

Only one copy of this information is kept in memory in FWwiseRootDataStructure and FWwisePlatformDataStructure JSON files.

Ref Classes

The Ref classes define each metadata object again but through a description of how to locate the necessary metadata. This class is helpful because the metadata in the generated SoundBanks is written with very little information duplication and instead uses references to various data structures. Therefore, Events have a media list referencing them by ID, but the metadata for that media, such as the file location, is defined in the higher-level SoundBank metadata.

For example, to point towards an Event’s Switch Container value, a Ref class keeps a shared pointer copy to the file’s root and contains directions to locate the Switch Container. The directions would be something like: this file, in the SoundBanks structure, the 1st SoundBank, the 4th declared Event, the 3rd declared Switch Container.

This is illustrated by the following code samples:

struct WWISEPROJECTDATABASE_API FWwiseMetadataMediaAttributes : public FWwiseMetadataMediaReference
{
FName Language;
bool bStreaming;
EWwiseMetadataMediaLocation Location;
bool bUsingReferenceLanguage;
uint32 Align;
bool bDeviceMemory;
FWwiseMetadataMediaAttributes(FWwiseMetadataLoader& Loader);
private:
static EWwiseMetadataMediaLocation LocationFromString(const FName& LocationString);
};
struct WWISEPROJECTDATABASE_API FWwiseMetadataMedia : public FWwiseMetadataMediaAttributes
{
FName ShortName;
FName Path;
FName CachePath;
uint32 PrefetchSize;
FWwiseMetadataMedia(FWwiseMetadataLoader& Loader);
};

and this example media:

"Media": [
{
"Id": "274591330",
"Language": "English(US)",
"Streaming": "false",
"Location": "Loose",
"ShortName": "Hello.wav",
"Path": "Media/English(US)/27/274591330.wem",
"CachePath": "Voices/English(US)/Hello_10C4C929.wem"
}

In essence, the Ref classes provide context. Hence, you can get the Switch Container information, and you can also get information about the class parents: the Event, the SoundBank, and the file.

Some referred types mandate supplemental information. For example, the Platform Information has its information split into two complementary files: the ProjectInfo.json and the PlatformInfo.json, so the platform Ref naturally contains two different structures. Similarly, some other referred types might reside in multiple locations, and the Ref class attempts to accommodate these particularities.

Finally, the Ref classes provide additional utilities. If you pass the necessary global maps, you can get supplemental information alongside the Ref classes that are included inside that particular Wwise object. For example, you can ask for the media requested in a particular Event’s definition, and it will return the media as Refs.

Because the Ref information is declared as the base and derived structs, in a Switch Container, you can request all of the Event’s Switch Container values and get the siblings simultaneously. The same is true for other types of information contained in Events.

AnyRef Class

At a higher level, the AnyRef class holds a pointer towards any kind of Ref structure. It contains the type and a shared pointer. There are limited operations available at the AnyRef level, such as retrieving the object’s Short ID, its GUID, and its name. For everything else, you can ask to cast the boxed Ref object to its type. It can point toward a Null object, so the AnyRef type is not a reference but a pointer to a Ref object.

Accessing Information: WwiseProjectDatabase and WwiseDataStructure

The WwiseProjectDatabase module handles queries through its accessing methods. You can, for example, ask for all known SoundBanks or one particular SoundBank. The data itself is kept in its DataStructure member.

Inside the Data structure, there are two structures:

  • The Root structure contains basic information for each platform for a particular project’s structure:
    • The Platform list, which includes all available platforms for a project, even if they aren’t loaded.
    • The Language list
  • The Platforms structure map contains all of the project’s information per platform.

Typically, only one platform is loaded in the WwiseProjectDatabase at one time for cooking and packaging purposes; however, it is possible to load more than one platform.

Note:
While working with your project’s Unreal Editor on a Mac, only the Mac platform must be loaded.

The Data structure’s structs contain:

  • A list of all loaded file names in the GeneratedPlatformFiles property.
  • One unique copy of each parsed JSON file in the JsonFiles property.
  • Refs for each accessible piece of data.

In addition, the Data structure allows templated accesses through functions such as GetRef.


Wwise Unreal Integration Documentation: WwiseResourceCooker Module

WwiseResourceCooker Module

The WwiseResourceCooker module provides the following functionalities:

  • Converts WwiseObjectInfo structures to cooked structures for the WwiseResourceLoader Module.
  • Copies requested objects’ files from the GeneratedSoundBanks to the Staging directory used by the packaging process.
See also
  • Content Cooking in Unreal Engine Documentation

Preparing Cooked Data for Wwise Objects

Starting with a WwiseObjectInfo structure that identifies a specific Wwise object, the WwiseResourceCooker gathers all the information from the Project Database related to that Wwise object and returns a "cooked" data structure containing that information.

For a SoundBank or media file, this is a simple operation since these are the building blocks, and they each represent an individual file. External sources are also relatively simple, but since they are expected to be user-defined, their complexity is unknown. That said, the default resulting cooked data only has the cookie as non-debugging information.

Some cooked data only contains a Short ID. Much like external sources with their cookie, the Short ID is the only required information in the cooked data of Triggers, Game Parameters (RTPCs), and Acoustic Textures. Similarly, Switches and States only require the identifier of the group they are a part of and the value they represent.

Other objects, such as Auxiliary Busses and Effect ShareSets, can be a little more complicated. The most complex is the Event, which can have multiple required media, SoundBanks, external sources, Aux Busses, and many optional Switch Container elements.

Default Instantiation versus Platform Instantiations

The WwiseResourceCooker has a default instantiation used in the Editor and uncooked projects. This instantiation is used for Play in Editor mode and provides cooked data on demand when the Wwise assets are loaded in the Editor. This data is similar to the cooked data that is serialized in Wwise assets in the packaged game. The only difference is that Editor cooked data uses resource files (.bnk and .wem) directly in the GeneratedSoundBanks folder. In contrast, packaged cooked data uses resource files that were packaged with the game.

When packaging, an external cooking process is usually spawned and is only responsible for cooking a specific platform. For example, on a Mac computer, where the default instantiation would be for the Mac platform, it is possible to instantiate an Android WwiseResourceCooker to package an Android game.

Since loading the Project Database for a platform can be time-consuming, only required platforms are loaded for each cooking process. Generally, this means only one platform is loaded in the Project Database. However, there can be multiple loaded platforms if the same process is cooking multiple platforms or if cooking is being run directly within the editor process.

From Cooking Wwise Resources to Staging

Based on internally cached cooked data, all required files are copied from the GeneratedSoundBanks to the Staging directory. Media and SoundBanks represent individual files. External sources are user-defined since the cookie doesn't represent a file. Other objects represent more than one file. For example, the Init Bank, which is technically a SoundBank, can also require external media files, so cooking the Init Bank also copies its media files.

Cooking Options

The following cooking options are available for packaged games.

ExportDebugNameRule

When cooking for the default instance (in Editor), each cooked asset has a debug name that contains the complete Wwise Object Path, making it easy to identify assets while debugging.

When you build a packaged game, the ExportDebugNameRule determines whether the debug name field of each asset is populated or left empty. Leaving these fields empty reduces the file size and makes it easier to reverse engineer; however, it also makes it harder to debug since only the assets' Short IDs can be used to identify the corresponding Wwise objects in the cooked data.

LoadOnReference

You can enable the LoadOnReference option on AkAudioEvent assets. When enabled, based on the current set of loaded Switches and States, only the required SoundBanks and media are loaded. Loading and unloading Switches or States, in turn, dynamically loads and unloads the associated resources. With the option disabled, when an Event that contains Switch Containers is loaded, all SoundBanks and media used by those Switch Containers are loaded.

When this option is enabled, the cooking process prepares an Event’s cooked data to support this dynamic loading of resources. When disabled, the cooked data loads all the resources with the Event.

You can enable this option on a per-asset basis.

Note:
Enabling this option adds a lot of complexity and requires a clear understanding of the feature, especially if the project sets Switches and States programmatically. In most cases, the optimization provided by the option is not sufficient to outweigh these disadvantages.
See also
  • Optimizing Memory Usage with Reference-Loaded Switch Containers


Wwise Unreal Integration Documentation: Release Notes 2022.1.5.8242.2714

Release Notes 2022.1.5.8242.2714

Each version of this integration matches a specific build of Unreal Engine. Here is what has changed in the 2022.1.5.8242.2714 release of the integration (in addition to upgrading to the new Unreal build).

Note:
This integration does not support experimental Unreal Engine features.
Note:
This integration was compiled against Unreal Engine version 4.27, 5.1, and 5.2. It was tested against Unreal Engine 5.2. Any major Unreal Engine version more recent than the aforementioned is not currently supported, but will be in a subsequent patch release.

For earlier versions, please refer to Previous Release Notes.

  • New Features
  • API Changes
  • Performance Changes
  • Bug Fixes
  • Fixes for Community-Reported Bugs
  • Documentation Improvements

New Features

  • WG-64213 Replaced Wwise Picker with the Wwise Browser. Refer to Managing Assets with the Wwise Browser for details.
  • WG-64582 Added unit testing of Wwise Integrations.
  • WG-64691 Added support for Unreal Engine 5.2.
  • WG-64935 Added basic Stat Named Events for Unreal Insights Timers.
  • WG-65062 Exposed the AddOutput and RemoveOutput SDK functions to AkAudioDevice and Blueprint.

API Changes

  • WG-63778 API-level bridging for Wwise streaming hooks is now provided.

Performance Changes

  • WG-65252 Improved streaming performance and reduced reliance on Unreal Engine Task Graph under stress.
  • WG-65412 Runtime Future/Promises now create Events on demand to remove synchronization resource contention in platforms where they are constrained.
  • WG-65520 Refactored the default open streaming I/O Hook to prepare for true asynchronous operation.

Bug Fixes

  • WG-64112 Fixed: Modified acoustic texture absorption values do not get updated in Unreal when generating banks.
  • WG-64646 Fixed: Unnecessary Events media are loaded between nested Switch Containers when only a partial match occurs.
  • WG-65314 Fixed: Crash in ExecutionQueue if deleted without Task Graph.
  • WG-65414 Fixed: Reduced number of messages in the log when using PostEventAtLocation without Spatial Audio.
  • WG-65468 Fixed: BeginDestroy is a synchronous operation.
  • WG-65606 Fixed: Missing AK namespace for the GetWindowsDeviceCount function in FWwisePlatformAPI.
  • WG-65915 Fixed: Crash while hot-reloading Wwise plug-in on Mac Editor.

Fixes for Community-Reported Bugs

  • WG-51967 Fixed: Unreal Editor's Wwise plug-in does not compile on Linux.
  • WG-55294 Fixed: Crash when starting a Play in Editor session in an empty map.
  • WG-63309 Fixed: Crash in UAkLateReverb component when stopping a Play In Editor session.
  • WG-64233 Fixed: GTE linking errors when building Wwise as an engine plug-in.
  • WG-64723 Fixed: Possible issue in UAkPortalComponent DestroyTextVisualizers.
  • WG-64845 Fixed: Crash if WwiseFileHandler module is deleted while SoundBanks and Media are being unloaded.
  • WG-65322 AkGameObjectsList::Term() is not called in GetActiveGameObjects.
  • WG-65363 Fixed: "StagePath not set" error when loading AkAudioTypes, such as Events, before the AkAudio module is running.
  • WG-65671 Fixed: Crash when unloading music media while it is still being played.
  • WG-65682 Fixed: Terminating streaming assets that are still loaded results in an error, not a log.

Documentation Improvements

  • WG-62447 Added a section on packaging requirements to Unreal Engine C++ Projects.
  • WG-64544 Updated and expanded the Wwise Unreal Integration Introductory Tutorials.
  • WG-65256 Added details on where to find the Wwise Demo Game for Unreal. Refer to Using the Wwise Demo Game.


Wwise Unreal Integration Documentation: Previous Release Notes

Previous Release Notes

The following pages contain information about changes to the integration made in previous releases.

  • Release Notes 2022.1.4.8200.2650
  • Release Notes 2022.1.3.8179.2621
  • Release Notes 2022.1.2.8150.2588
  • Release Notes 2022.1.1.8100.2529
  • Release Notes 2022.1.0.8070.2495
  • Release Notes 2021.1.11.7933.2437
  • Release Notes 2021.1.10.7883.2350
  • Release Notes 2021.1.9.7847.2311
  • Release Notes 2021.1.8.7831.2285
  • Release Notes 2021.1.7.7796.2228
  • Release Notes 2021.1.6.7774.2201
  • Release Notes 2021.1.5.7749.2171
  • Release Notes 2021.1.4.7707.2130
  • Release Notes 2021.1.3.7665.2079
  • Release Notes 2021.1.2.7629.2025
  • Release Notes 2021.1.1.7601.1995
  • Release Notes 2021.1.0.7575.1956
  • Release Notes 2019.2.15.7667.2164
  • Release Notes 2019.2.14.7616.2082
  • Release Notes 2019.2.13.7577.2037
  • Release Notes 2019.2.12.7544.1988
  • Release Notes 2019.2.11.7512.1949
  • Release Notes 2019.2.10.7490.1917
  • Release Notes 2019.2.9.7459.1876
  • Release Notes 2019.2.8.7432.1840
  • Release Notes 2019.2.7.7402.1803
  • Release Notes 2019.2.6.7381.1779
  • Release Notes 2019.2.5.7349.1747
  • Release Notes 2019.2.4.7329.1721
  • Release Notes 2019.2.3.7304.1690
  • Release Notes 2019.2.2.7275.1661
  • Release Notes 2019.2.1.7250.1621
  • Release Notes 2019.2.0.7216.1583
  • Release Notes 2019.1.11.7296.1702
  • Release Notes 2019.1.10.7250.1643
  • Release Notes 2019.1.9.7221.1609
  • Release Notes 2019.1.8.7173.1554
  • Release Notes 2019.1.7.7135.1513
  • Release Notes 2019.1.6.7110.1478
  • Release Notes 2019.1.5.7093.1459
  • Release Notes 2019.1.4.7065.1430
  • Release Notes 2019.1.3.7048.1409
  • Release Notes 2019.1.2.7018.1378
  • Release Notes 2019.1.1.6977.1336
  • Release Notes 2019.1.0.6947.1305
  • Release Notes 2019.1.0.6947.1299
  • Release Notes 2018.1.7.6880.1266
  • Release Notes 2018.1.6.6858.1242
  • Release Notes 2018.1.5.6835.1218
  • Release Notes 2018.1.4.6807.1189
  • Release Notes 2018.1.3.6784.1177
  • Release Notes 2018.1.3.6784.1153
  • Release Notes 2018.1.2.6762.1124
  • Release Notes 2018.1.1.6727.1082
  • Release Notes 2018.1.0.6714.1065
  • Release Notes 2017.2.9.6726.1089
  • Release Notes 2017.2.8.6698.1053
  • Release Notes 2017.2.7.6667.1010
  • Release Notes 2017.2.6.6636.979
  • Release Notes 2017.2.5.6619.962
  • Release Notes 2017.2.4.6590.933
  • Release Notes 2017.2.3.6575.917
  • Release Notes 2017.2.2.6553.895
  • Release Notes 2017.2.1.6524.866
  • Release Notes 2017.2.0.6500.836
  • Release Notes 2017.1.9.6501.856
  • Release Notes 2017.1.8.6488.843
  • Release Notes 2017.1.7.6467.822
  • Release Notes 2017.1.6.6446.801
  • Release Notes 2017.1.5.6429.783
  • Release Notes 2017.1.4.6407.760
  • Release Notes 2017.1.3.6377.732
  • Release Notes 2017.1.3.6377.715
  • Release Notes 2017.1.2.6361.696
  • Release Notes 2017.1.1.6340.673
  • Release Notes 2017.1.0.6302.628
  • Release Notes 2016.2.6.6153.513
  • Release Notes 2016.2.5.6121.484
  • Release Notes 2016.2.5.6121.471
  • Release Notes 2016.2.4.6098.451
  • Release Notes 2016.2.3.6077.435
  • Release Notes 2016.2.3.6077.422
  • Release Notes 2016.2.2.6022.371
  • Release Notes 2016.2.2.6022.359
  • Release Notes 2016.2.1.5995.317
  • Release Notes 2016.2.0.5972.301
  • Release Notes 2016.2.0.5972.274
  • Release Notes 2016.1.6
  • Release Notes 2016.1.5
  • Release Notes 2016.1.4
  • Release Notes 2016.1.3
  • Release Notes 2016.1.2
  • Release Notes 2016.1.1
  • Release Notes 2016.1.0 (Update to UE4.12)
  • Release Notes 2016.1.0
  • Release Notes 2015.1.7
  • Unreal Engine 4.11 - Wwise 2015.1.6
  • Unreal Engine 4.10 - Wwise 2015.1.4
  • Unreal Engine 4.9 - Wwise 2015.1.2
  • Unreal Engine 4.8 - Wwise 2015.1.0
  • Unreal Engine 4.8 - Wwise 2014.1.5
  • Unreal Engine 4.7 - Wwise 2014.1.3
  • Unreal Engine 4.6 - Wwise 2014.1.1
  • Unreal Engine 4.5 - Wwise 2014.1
  • August 2014 - Wwise v2014.1
  • August 2014 - Wwise v2013.2.9
  • July 2014 - Wwise v2013.2.9
  • June 2014 - Wwise v2013.2.8
  • April 2014 - Wwise v2013.2.7
  • March 2014 - Wwise v2013.2.6
  • January 2014 - Wwise v2013.2.5
  • December 2013 - Wwise v2013.2.4
  • October 2013 - Wwise v2013.2.1
  • September 2013 - Wwise v2013.2.1
  • August 2013 - Wwise v2013.2
  • July 2013 - Wwise v2013.1.1
  • June 2013 - Wwise v2013.1.1
  • May 2013 - Wwise v2013.1.1
  • March 2013 - Wwise v2013.1


Wwise Unreal Integration Documentation: Release Notes 2022.1.4.8200.2650

Release Notes 2022.1.4.8200.2650

Each version of this integration matches a specific build of Unreal Engine. Here is what has changed in the 2022.1.4.8200.2650 release of the integration (in addition to upgrading to the new Unreal build).

Note:
This integration does not support experimental Unreal Engine features.
Note:
This integration was compiled against Unreal Engine version 4.27, 5.0, and 5.1. It was tested against Unreal Engine 5.1. Any major Unreal Engine version more recent than the aforementioned is not currently supported, but will be in a subsequent patch release.

For earlier versions, please refer to Previous Release Notes.

  • API Changes
  • Fixes for Community-Reported Bugs

API Changes

  • WG-64604 IWwiseSoundEngineAPI::IQuery::GetMaxRadius and GetActiveGameObjects methods now take an Unreal array as parameter instead of an AkArray. This resolves a memory crash.

Fixes for Community-Reported Bugs

  • WG-64146 Fixed: Crash when no Event is associated with an AkEvent section in a Level Sequence.
  • WG-64699 Fixed: No audio in Cook on the Fly mode.
  • WG-64704 Fixed: Running Garbage Collector on the main thread can cause a hang.
  • WG-64730 Fixed: Packaging a Server platform requires the generated SoundBanks.
  • WG-64834 Fixed: Too many Thread Events are used during asset loading, unloading, and streaming.
  • WG-64835 Fixed: Hang while loading missing streamed assets.
  • WG-64950 Fixed: Auto-defined Zero Latency prefetched media are not provided to SoundEngine fast enough to avoid Source Starvation in Music.


Wwise Unreal Integration Documentation: Release Notes 2022.1.3.8179.2621

Release Notes 2022.1.3.8179.2621

Each version of this integration matches a specific build of Unreal Engine. Here is what has changed in the 2022.1.3.8179.2621 release of the integration (in addition to upgrading to the new Unreal build).

Note:
This integration does not support experimental Unreal Engine features.
Note:
This integration was compiled against Unreal Engine version 4.27, 5.0, and 5.1. It was tested against Unreal Engine 5.1. Any major Unreal Engine version more recent than the aforementioned is not currently supported, but will be in a subsequent patch release.

For earlier versions, please refer to Previous Release Notes.

  • New Features
  • Bug Fixes
  • Fixes for Community-Reported Bugs

New Features

  • WG-63815 Added compilation support for early branch of UE5.2.

Bug Fixes

  • WG-63526 Fixed: Crash at exit when requesting Audio Link on Unreal 4.27.
  • WG-63964 Fixed: Playing streamed media while another streamed media is already playing sometimes cause the second one to fail.
  • WG-64013 Fixed: Disabled surfaces are used to compute the HF Damping value.
  • WG-64104 Fixed: Reverb Estimation service RTPC values are sent to Wwise Authoring when RTPCs are not in use in the Unreal Project Settings.
  • WG-64137 Fixed: Switch Container Plug-in Media is not detected as optionally loaded.
  • WG-64138 Fixed: Crash when initializing Input Submix without Audio Link or AudioMixer.
  • WG-64374 Fixed: Erroneous Global Callback registration logs at exit (seen with LogWwiseConcurrency at Verbose).
  • WG-64678 Fixed: Starting a Wwise module while shutting down Unreal doesn't output warnings in the log.

Fixes for Community-Reported Bugs

  • WG-63368 Fixed: Unreal 5.1 crash after editing the Geometry Transmission Loss Value of a Spatial Audio Volume.
  • WG-63510 Fixed: GetTypeHash compilation issues with UE5.2.
  • WG-64257 Fixed: Deleted streamed file with prefetch fails assert on open.
  • WG-64317 Fixed: WwiseExecutionQueue deinitialization can hang on application exit.
  • WG-64523 Fixed: Intermittent crashes in FWwiseExecutionQueue::ProcessWork.


Wwise Unreal Integration Documentation: Release Notes 2022.1.2.8150.2588

Release Notes 2022.1.2.8150.2588

Each version of this integration matches a specific build of Unreal Engine. Here is what has changed in the 2022.1.2.8150.2588 release of the integration (in addition to upgrading to the new Unreal build).

Note:
This integration does not support experimental Unreal Engine features.
Note:
This integration was compiled against Unreal Engine version 4.27, 5.0, and 5.1. It was tested against Unreal Engine 5.1. Any major Unreal Engine version more recent than the aforementioned is not currently supported, but will be in a subsequent patch release.

For earlier versions, please refer to Previous Release Notes.

  • New Features
  • Performance Changes
  • Miscellaneous Changes
  • Bug Fixes
  • Fixes for Community-Reported Bugs

New Features

  • WG-62790 Added official support for Unreal Engine 5.1.
  • WG-63373 Added multicast delegates for Global Callbacks.
  • WG-63770 Added uMaxSystemAudioObjects to the Advanced Initialization Settings based on new functionality provided by the Wwise SDK.
  • WG-63771 Added bPlotQueueLevel to the Advanced Initialization Settings based on new functionality provided by the Wwise SDK. Refer to the PS4-specific information in the Wwise SDK for details on this feature.

Performance Changes

  • WG-62583 File streaming is now provided through a custom class instead of the Unreal default class. See UDN IFileCacheHandle checks if file is present.
  • WG-63624 AK::MemoryMgr::TrimForThread is now called upon completion of the Wwise worker function when running in multi-core mode, which reduces the amount of memory that is reserved and unused by Wwise, especially when running Unreal on a system with many threads.

Miscellaneous Changes

  • WG-63709 Improved Verbose and VeryVerbose logging information in LogWwiseResourceLoader.
  • WG-63832 It's no longer necessary to install the Wwise SDK for macOS to integrate Wwise into an Unreal Project on Windows.

Bug Fixes

  • WG-60708 Fixed: Portal front and back room name text difficult to read.
  • WG-61802 Fixed: Erroneous Reverb Parameter Estimations in Unreal Editor.
  • WG-62695 Fixed: HF Damping value only refreshes when toggling Auto Assign Aux Bus.
  • WG-62962 Fixed: Warning about deprecation of 'IniKeyBlacklist' when building WwiseDemoGame.
  • WG-63008 Fixed: Unreal Editor crashes in FAkGeometryComponentDetailsCustomization.
  • WG-63286 Fixed: Only use Unreal audio audio routing option doesn't disable Wwise sound engine.
  • WG-63365 Fixed: Spatial Audio Volume's geometric volume calculation is doubled in UE5.1.
  • WG-63366 Fixed: Unreal Editor crash when adding a new Spatial Audio Volume to the map followed by an Undo (Ctrl+Z) operation.
  • WG-63710 Fixed: Reference-Loaded Switch Container Media is erroneously considered mandatory plug-in media.
  • WG-63720 Fixed: Crash in Audio Link when Ak Submix Input component receives 5.1 or 7.1 sources.
  • WG-63723 Fixed: Crash during garbage collection in projects using Audio Link.
  • WG-63945 Fixed: Crash when unloading streamed media.

Fixes for Community-Reported Bugs

  • WG-62961 Fixed: Sound from Wwise is quieter on some devices' speakers than others. A new platform option has been added to disable low-latency audio playback on these devices.
  • WG-63417 Fixed: Performance issues when streaming Spatial Audio Geometry and Portals.
  • WG-63433 Fixed: Build failure when integrating Wwise as an Engine plug-in.
  • WG-63445 Fixed: Stack overflow in WaitForFutures with large number of assets in a map.
  • WG-63466 Fixed: Possible crash when unloading Events that have Reference-Loaded Switch Container Media .
  • WG-63483 Fixed: AutoDestroy option on SpawnAkComponentAtLocation does not destroy the component.
  • WG-63547 Fixed: WwiseProjectDatabase is missing as a prerequisite module for the AkAudio module.
  • WG-63605 Fixed: Missing undef LOCTEXT_NAMESPACE throughout the source code.
  • WG-63745 Fixing: Error when building using SN-DBS.
  • WG-63790 Fixed: Error in language passing logic in FWwiseResourceLoaderImpl::SetLanguage.
  • WG-63824 Fixed: Crash in FAkReverbDescriptor::CalculateHFDamping.
  • WG-63829 Fixed: Not using custom thread pool for project database loading.
  • WG-63938 Fixed: Crash in FWwiseExecutionQueue::StopWorkerIfDone().


Wwise Unreal Integration Documentation: Release Notes 2022.1.1.8100.2529

Release Notes 2022.1.1.8100.2529

Each version of this integration matches a specific build of Unreal Engine. Here is what has changed in the 2022.1.1.8100.2529 release of the integration (in addition to upgrading to the new Unreal build).

Note:
This integration does not support experimental Unreal Engine features.
Note:
This integration was compiled against Unreal Engine version 4.27, and 5.0. It was tested against Unreal Engine 5.0. Any major Unreal Engine version more recent than the aforementioned is not currently supported, but will be in a subsequent patch release.

For earlier versions, please refer to Previous Release Notes.

  • New Features
  • API Changes
  • Performance Changes
  • Miscellaneous Changes
  • Bug Fixes
  • Fixes for Community-Reported Bugs

New Features

  • WG-62176 Allow changing Unreal audio routing through the settings.
  • WG-63237 Simplified option to link the Wwise plug-in module inside project modules.
  • WG-63284 Basic support of distributed builds without precompiled headers

API Changes

  • WG-63175 Created an overridable WwiseConcurrency module instead of having asynchronous operations in WwiseSoundEngine.
  • WG-63176 It's now possible to have recurring deferred concurrent operations on Game thread and synchronous to the caller.

Performance Changes

  • WG-62668 WwiseResourceLoader operations are now fully asynchronous, fixing high Task Graph usage that could cause hangs.

Miscellaneous Changes

  • WG-63238 Updated Sound Engine version detection code in Build files.

Bug Fixes

  • WG-58074 Fixed: AkAudioMixer prevents sounds from playing in Unreal 5.0 and Unreal 5.1.
  • WG-62497 Fixed: Invalid float value warning when calling SetRTPCValue() for HFDamping.
  • WG-62693 Fixed: (Spatial Audio) No warning or error message when Ak Geometry is set to Simple Collision on actor with no Simple Collision.
  • WG-62699 Fixed: (Spatial Audio) Crash with geometries that have complex edge topology.
  • WG-62902 Fixed: In the Spatial Audio Tutorial map of the Wwise Demo Game, Play_ComplexRoom has Transmission loss out of the box.
  • WG-62944 Fixed: (Spatial Audio) Unassigned Late reverb warning on some objects with Room components.
  • WG-63177 Fixed: Global callbacks don't provide the plug-in context.
  • WG-63178 Fixed: WwiseExecutionQueue doesn't use a custom thread pool.
  • WG-63324 Adding the entire Wwise module suite for Dedicated Server builds.

Fixes for Community-Reported Bugs

  • WG-52856 Fixed: Crash on editor shutdown when using Stomp Allocator.
  • WG-61296 Fixed: SoundBanks can only be generated for platforms supported by the active Unreal Editor.
  • WG-62558 Fixed: Conflict between SignedVolumeOfTriangle and the definition in BodySetup.
  • WG-62796 Fixed: "More than one ref per language" error message doesn't provide enough detail.
  • WG-62797 Fixed: Set Switch and Set State inside an Event leads to "More than one ref per language" warnings. Using them in an AkAudioEvent with optional Switch Container loading fails.
  • WG-62801 Fixed: "More than one ref per language found" message is logged while loading each Aux Bus in Editor.
  • WG-63059 Fixed: Serial size mismatch assert in server builds due to cooked data being unnecessarily serialized in Wwise assets.


Wwise Unreal Integration Documentation: Release Notes 2022.1.0.8070.2495

Release Notes 2022.1.0.8070.2495

Each version of this integration matches a specific build of Unreal Engine. Here is what has changed in the 2022.1.0.8070.2495 release of the integration (in addition to upgrading to the new Unreal build). Refer to Upgrading Projects to Wwise 2022.1 for detailed migration instructions.

Note:
This integration does not support experimental Unreal Engine features.
Note:
This integration was compiled against Unreal Engine version 4.27, and 5.0. It was tested against Unreal Engine 5.0. Any major Unreal Engine version more recent than the aforementioned is not currently supported, but will be in a subsequent patch release.

For earlier versions, please refer to Previous Release Notes.

  • New Features
  • API Changes
  • Behavior Changes
  • Performance Changes
  • Miscellaneous Changes
  • Bug Fixes
  • Fixes for Community-Reported Bugs

New Features

  • WG-49047 Added an option to the Unreal Level Editor Viewport to toggle the state of VisualizeRoomsAndFeatures.
  • WG-54310 Added an auto-defined SoundBanks option. When enabled, Wwise automatically defines SoundBanks for each Event and Aux Bus, where possible. Refer to Automatically Defining SoundBanks for more details.

Auto-defined SoundBanks are enabled via the SoundBank Settings. Refer to SoundBank Settings for more details.

  • WG-54325 Added a ShowReverbInfo property to AkSettings. You can use the new property to show or hide information about AkLateReverbComponents in viewports.
  • WG-54368 Event-Based Packaging and Asset Synchronization are now done through the Generated SoundBanks folder exclusively. This is also known as the Single Source Of Truth (SSOT) workflow.
  • WG-56798 Added text to Portals showing the names of connected Rooms in the Unreal Level Editor.
  • WG-57544 Added the AkEffectShareSet asset.

Added blueprint functions to set Effect Sharesets on Buses, Output Devices and Actor Mixers.

  • WG-57973 Project migration can now be done via the AkMigration commandlet.
  • WG-59194 In relation to the new error message translators, added two new Wwise User Settings to adjust the timeout values for XML and WAAPI. These are found under a new section called Error Message Translator.
  • WG-60953 Timer scopes showing the different segments of execution in Wwise are now logged in Unreal's CPU profiler and visible as a part of Timing Insights, allowing for better understanding of where Wwise CPU time is spent. Events related to Voice Starvation are also logged as bookmarks in Timing Insights.
  • WG-61215 Added fully asynchronous asset loading and unloading.

API Changes

  • WG-55810 Handling of external sources is now managed through the WwiseExternalSourceManager interface, which provides default functionalities and classes for loading media but must be extended by user code to be fully functional.
  • WG-55811 Added a minimal implementation of WwiseExternalSourceManager, called WwiseSimpleExternalSourceManager, which is used in the Wwise Demo Game.
  • WG-56507 TryUnsetMedia now issues an asynchronous stop command, and marks media as unavailable, to guarantee that repeat calls to TryUnsetMedia will eventually succeed.
  • WG-57220 Added Obstruction and Occlusion calls to the FAkAudioDevice class.
  • WG-59008 Low level sound engine is now located in WwiseSoundEngine module.
  • WG-60672 PostEvent functions in the AkAudioDevice now have more explicit names and only accept UAkAudioEvent objects or ShortIds to specify the Event.
  • WG-61185 Renamed FAkAudioDevice::SetOcclusionAndObstruction to FAkAudioDevice::SetObjectObstructionAndOcclusion to match the Wwise SDK API.
  • WG-61754 PostEvent calls in Blueprint do not support External Sources anymore. PostEvent calls with an Event ShortID or Event Name are deprecated. Async PostEvent calls are deprecated.

Behavior Changes

  • WG-56246 It's now possible to use Blueprint or C++ to change Mastering Suite ShareSets at runtime.
  • WG-57541 Removed automatic asset synchronization.
  • WG-57543 Disabled automatic WAAPI synchronization of Unreal assets.
  • WG-57545 Added a menu option to import Wwise assets from the Wwise and WAAPI Pickers.
  • WG-57546 You can now drag assets directly from the Wwise and WAAPI Pickers into blueprints, object properties, and the Content Browser.
  • WG-58218 Wwise Picker and WAAPI Picker can now be used concurrently.
  • WG-60762 (Spatial Audio) Early reflection volume set using AK::SpatialAudio::SetEarlyReflectionsVolume now applies to image sources set using AK::SpatialAudio::SetImageSource as well as reflections calculated from geometry.
  • WG-60907 Changed the default value of the "Samples Per Frame" initialization setting to 512 on all platforms. This increases out-of-the-box CPU usage in Wwise slightly but significantly reduces the total audio latency in the sound engine. It is still recommended to tune "Samples Per Frame" and "Number of Refills In Voice" to balance your game's total audio latency against the available computing resources.
  • WG-60985 The units of the Time To First Reflection variable are changed from seconds to milliseconds. Game Parameters previously mapped to this variable must now range over units of milliseconds instead of seconds.
  • WG-61088 WwiseAudioMixer is not loaded by default anymore.
  • WG-61630 All platform-specific AkAudio.AkInitializationSettings defined in your DefaultGame.ini config are now stored in their platform-specific Game.ini files, where applicable. Existing settings in DefaultGame.ini still load properly, but modifications are now saved to the platform-specific Game.ini automatically.
  • WG-61703 Wwise Sound Engine monitor messages are now written in the LogWwiseMonitor category.
  • WG-61968 Removed Clear Wwise Cache option. Use Wwise Authoring to clear the cache if necessary.

Performance Changes

  • WG-60585 Now using asynchronous file operations for streaming media.

Miscellaneous Changes

  • WG-49994 Updated the CollisionChannel property in the AkAcousticPortal and AkSpatialAudioVolume actors, as well as the OcclusionCollisionChannel property in AkComponent. These properties now have a Use Integration Settings Default option, which will use the value defined in the Wwise Integration Settings.
  • WG-57979 Updated the AkAcousticPortal Component so that calls to OpenPortal and ClosePortal no longer stack.
  • WG-58066 Removed obsolete AkFolder assets.
  • WG-60370 Added support for Visual Studio 2022.
  • WG-60852 The Wwise Demo Game's Wwise project was moved from the "UnrealWwiseDemo" folder to the "Wwise Project" folder.
  • WG-61144 Reduced the severity of AkAcousticPortal messages about the front and back rooms of a portal being the same. These are now logs instead of warnings.
  • WG-61216 Removed Subsystem usage for Wwise modules.
  • WG-61500 Made it possible for Havok and other physics engines to use the Wwise Unreal Integration.

Bug Fixes

  • WG-54552 Fixed: (Spatial Audio) Paths through portals are inaccurate; straight-line paths sometimes have non-zero diffraction or paths miss portals entirely.
  • WG-57304 Fixed: When a Surface Reflector component is positioned using large values, selecting a single face in Brush Editing mode does not allow you to edit it.
  • WG-57354 Fixed: Plane geometry is incorrectly converted when sent to Wwise, which results in faulty geometry in the Game Object 3D Viewer.
  • WG-60315 Fixed: Crash when dragging an asset from the Wwise Picker to the Content Browser if the asset already exists.
  • WG-61042 Fixed: SetOcclusionScalingFactor and GetOcclusionScalingFactor blueprint functions do nothing.
  • WG-61121 Fixed: Clear Sound Data dialog has unused options and a misleading name. The dialog is now called Clear Wwise Cache.
  • WG-61125 Fixed: Server and Client Unreal builds not able to find the correct platform.
  • WG-61129 Fixed: No sound in Standalone Game mode.
  • WG-61242 Fixed: Changes related to external sources are done synchronously.
  • WG-61266 Fixed: Possible crash when creating assets by dragging them from the Wwise Picker.
  • WG-61518 Fixed: Spatial Audio Tutorial's Blueprint Building has a Room bigger than its Geometry and doesn't link its Geometry Component to measure HF Damping.
  • WG-61525 Fixed: Crash in the destructor of FAkSurfaceReflectorSetDetailsCustomization.
  • WG-61658 Fixed: Plug-in media and External Sources in Switch Containers are not parsed properly by WwiseProjectDatabase.

Fixes for Community-Reported Bugs

  • WG-60332 Fixed: Dialog to set the Wwise Project Path considers the Wwise project folder instead of the GeneratedSoundBanks folder.
  • WG-60969 Fixed: (Spatial Audio) Any emitter using diffraction can become inaudible when the listener position overlaps a portal.
  • WG-61202 Fixed: Stopping a Play in Editor session stops the AkAudioMixer.
  • WG-61226 Fixed: Pausing a Play in Editor session does not pause sounds.
  • WG-61291 Fixed: DefaultGame.ini is updated at Editor startup.
  • WG-61334 Fixed: Face-specific acoustic information on AkSpatialAudioVolumes is reset when the face is moved.
  • WG-61790 Fixed: Adding AkGeometry to complex meshes freezes Unreal while it is calculating the static mesh.
  • WG-61953 Fixed: Empty Assets throw errors instead of warnings during cooking.


Wwise Unreal Integration Documentation: Release Notes 2021.1.11.7933.2437

Release Notes 2021.1.11.7933.2437

Each version of this integration matches a specific build of Unreal Engine. Here is what has changed in the 2021.1.11.7933.2437 release of the integration (in addition to upgrading to the new Unreal build). Important Migration Notes 2021.1.11.7933.2437

Note:
This integration does not support experimental Unreal Engine features.
Note:
This integration was compiled against Unreal Engine versions 4.26, 4.27, and 5.0. It was tested against Unreal Engine 4.27.2 and 5.0.2. Any major Unreal Engine version more recent than the aforementioned is not currently supported, but will be in a subsequent patch release.

For earlier versions, please refer to Previous Release Notes.

  • New Features
  • Miscellaneous Changes
  • Bug Fixes
  • Fixes for Community-Reported Bugs

New Features

  • WG-62395 Added preliminary support for Unreal Engine 5.1.

Miscellaneous Changes

  • WG-60370 Added support for Visual Studio 2022.
  • WG-61144 Reduced the severity of AkAcousticPortal messages about the front and back rooms of a portal being the same. These are now logs instead of warnings.
  • WG-61500 Made it possible for Havok and other physics engines to use the Wwise Unreal Integration.

Bug Fixes

  • WG-61803 Fixed: Crash in AkAudioDevice::TryUnsetMedia.

Fixes for Community-Reported Bugs

  • WG-53480 Fixed: Unreal packaging includes SoundBanks from platforms other than the built platform.
  • WG-59395 Fixed: The PostEventAsync blueprint pins Events in the garbage collector an additional time, causing a memory leak.
  • WG-59779 Fixed: Possible crash in AkAudioDevice::CleanPinnedObjects on game exit.
  • WG-60234 Fixed: Streamed sounds with no prefetch chunk aren't registered with the Unreal IO hook, leading to "Failed creating source" errors.
  • WG-60969 Fixed: (Spatial Audio) Any emitter using diffraction can become inaudible when the listener position overlaps a portal.
  • WG-60974 Fixed: Face-specific acoustic information on AkSpatialAudioVolumes is reset when that face is moved.
  • WG-61026 Fixed: Media in memory in Unreal Editor do not update after replacing data in audio sources in Wwise and regenerating sound data.
  • WG-61050 Fixed: "Media not loaded" error when a media is shared between two different Switch values in a Switch Container.
  • WG-61202 Fixed: Stopping a Play in Editor session stops the AkAudioMixer.
  • WG-61226 Fixed: Pausing a Play in Editor session does not pause sounds.
  • WG-61291 Fixed: DefaultGame.ini is updated at Editor startup.
  • WG-61296 Fixed: SoundBanks can only be generated for platforms supported by the active Unreal Editor.
  • WG-61297 Fixed: Erroneous warning when using Blueprint Clustering.
  • WG-61323 Fixed: HF Damping always shows 0 when used with an RTPC.
  • WG-61597 Fixed: Streaming media can be stopped if inspected by the garbage collector at the wrong time. Added more detailed logs to the AkUnrealIOHook.
  • WG-61790 Fixed: Adding AkGeometry to complex meshes freezes Unreal while it is calculating the static mesh.
  • WG-61850 Fixed: (Spatial Audio) Any emitter using diffraction can become inaudible when the listener position overlaps a portal.
  • WG-61910 Fixed: Not finding the Wwise Project file logs an error that can cause builds to fail.
  • WG-62182 Fixed: Possible crash in AkOcclusionObstructionService when changing maps.
  • WG-62514 Fixed: Unreal Assets representing Folders and Work Units beginning with numerical characters fail to move when performing asset synchronization.
  • WG-62722 Fixed: Wwise Settings dialog opens when running a commandlet.


Wwise Unreal Integration Documentation: Important Migration Notes 2021.1.11.7933.2437

Important Migration Notes 2021.1.11.7933.2437

Spatial Audio AkGeometry Components

The default Mesh Type of the AkGeometryComponent was changed to Simple Collision to optimize adding such components in your map. After updating to 21.1.11, if you had AkGeometryComponent set to Static Mesh, you must set them again because they will have changed to Simple Collision.


Wwise Unreal Integration Documentation: Release Notes 2021.1.10.7883.2350

Release Notes 2021.1.10.7883.2350

Each version of this integration matches a specific build of Unreal Engine. Here is what has changed in the 2021.1.10.7883.2350 release of the integration (in addition to upgrading to the new Unreal build).

Note:
This integration does not support experimental Unreal Engine features.
Note:
This integration was compiled against Unreal Engine versions 4.26, 4.27, and 5.0. It was tested against Unreal Engine 4.27.2 and 5.0.2. Any major Unreal Engine version more recent than the aforementioned is not currently supported, but will be in a subsequent patch release.

For earlier versions, please refer to Previous Release Notes.

  • Performance Changes
  • Miscellaneous Changes
  • Bug Fixes
  • Fixes for Community-Reported Bugs

Performance Changes

  • WG-57180 Improved performance of Unreal integration API by optimizing AkComponent.h code.

Miscellaneous Changes

  • WG-59977 Optimized the code to convert Static Mesh components' Simple Collision meshes to Spatial Audio Geometry.

Bug Fixes

  • WG-60030 Fixed: In UE5, newly created Ak Actors have generic names when profiling in editor.
  • WG-60291 Fixed: Crash in Unreal when joining vertices of a Spatial Audio Volume in Brush Editing mode.
  • WG-60292 Fixed: All SAVs of the Spatial Audio Tutorial Map have acoustic textures set to None.
  • WG-60331 Fix: Unreal crash during garbage collection after adding an Ak Late Reverb component to the Static Mesh component.
  • WG-60348 Fixed: SetGameObjectRadius API call does not return its Game Object ID.
  • WG-60351 Fixed: SetPosition and SetGameObjectInRoom are called in every frame during Unreal game inactivity.
  • WG-60626 Fixed: Unnecessary "Could not unload media" errors in log when shutting down Unreal Editor.
  • WG-60744 Fixed: Crash possible when switching levels and closing the game.

Fixes for Community-Reported Bugs

  • WG-55309 Fixed: If Wwise assets are created while the Unreal editor is closed, and is then opened, Unreal creates the assets but does not automatically add them to source control.
  • WG-56694 Fixed: Crash when first opening a project after upgrading Wwise.
  • WG-57295 Fixed: Crash in Unreal Editor when generating SoundBanks with WAAPI.
  • WG-57514 Fixed: Strings are not converted correctly when running AddressSanitizer.
  • WG-58812 Fixed: All Spatial Audio Rooms are updated when a Portal is unregistered from the scene.
  • WG-60364 Fixed: Destroying a media asset that has not finished loading can block the game or render thread.
  • WG-60527 Fixed: Crash when unable to allocate media memory.
  • WG-60592 Fixed: Crash when using Modulators that use RTPCs bound to built-in properties.
  • WG-60619 Fixed: Compile problem when Chaos physics is enabled in UE 4.27.
  • WG-60820 Fixed: Unreal Culture to Wwise Culture mapping in Wwise settings is cleared when the Wwise Project Info cannot be found.
  • WG-60864 Fixed: Pausing the Sequencer does not pause sounds
  • WG-61029 Fixed: "Skipping media load" log spam when running the editor in dedicated server mode.


Wwise Unreal Integration Documentation: Release Notes 2021.1.9.7847.2311

Release Notes 2021.1.9.7847.2311

Each version of this integration matches a specific build of Unreal Engine. Here is what has changed in the 2021.1.9.7847.2311 release of the integration (in addition to upgrading to the new Unreal build).

Note:
This integration does not support experimental Unreal Engine features.
Note:
This integration was compiled against Unreal Engine versions 4.26, 4.27, and 5.0. It was tested against Unreal Engine 4.27.2 and 5.0.1. Any major Unreal Engine version more recent than the aforementioned is not currently supported, but will be in a subsequent patch release.

For earlier versions, please refer to Previous Release Notes.

  • Miscellaneous Changes
  • Bug Fixes
  • Fixes for Community-Reported Bugs

Miscellaneous Changes

  • WG-60187 Removed copyright notice that was erroneously added to Geometric Tools Engine library code files.

Bug Fixes

  • WG-55708 Fixed: Wwise Unreal Engine Integration plug-in name and description mention Unreal Engine 4.
  • WG-58756 Fixed: Confusion with Set Inner/Outer Radius and SetGameObjectRadius blueprint functions.
  • WG-58918 Fixed: Volume values of Spatial Audio Volumes are wrong in UE5.
  • WG-59253 Fixed: Crash when changing material on Static Mesh component with with an Ak Geometry component set to a Static Mesh type.
  • WG-59951 Fixed: The surface area of non-box-shaped Spatial Audio Volumes are wrong.
  • WG-59965 Fixed: Rotating AkAcousticPortals from Spectator mode fails to update.
  • WG-60023 Fixed: Fit to Geometry's Automatic Texture Assignment is broken.
  • WG-60059 Fixed: Crash when switching languages for AkAudioBank assets not containing asset data for the target language. Downgraded AkAudiobank "Could not find localized data" log from error to warning.
  • WG-60069 Fixed: Acoustic Textures reported as Unknown instead of None with Ak Geometry components.
  • WG-60074 Fixed: Plugins not found on the XB1 platforn
  • WG-60086 Fixed: Ak Geometry components can be set to static mesh type on collision components in blueprint.
  • WG-60394 Fixed: Build failures with Unity build turned off
  • WG-59600 Fixed: FAkAudioModule loads icons and attempts to initialize WAAPI in non-editor builds.

Fixes for Community-Reported Bugs

  • WG-58518 Fixed: Newly used media assets are not created when running the GenerateSoundBanks commandlet. Use the new forceAssetSync switch to force new asset creation.


Wwise Unreal Integration Documentation: Release Notes 2021.1.8.7831.2285

Release Notes 2021.1.8.7831.2285

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the 2021.1.8.7831.2285 release of the integration (in addition to upgrading to the new Unreal build). Important Migration Notes 2021.1.8.7831.2285

Note:
This integration does not support experimental Unreal Engine 4 features.
Note:
This integration was compiled against Unreal Engine versions 4.26, 4.27, and 5.0. It was tested against Unreal Engine 4.27.2 and 5.0.1. Any major Unreal Engine version more recent than the aforementioned is not currently supported, but will be in a subsequent patch release.

For earlier versions, please refer to Previous Release Notes.

  • New Features
  • Behavior Changes
  • Miscellaneous Changes
  • Bug Fixes
  • Fixes for Community-Reported Bugs

New Features

  • WG-54828 A new option to clear sound data for individual Wwise assets is now available in the Unreal Content Browser. It facilitates the required step of clearing Sound Data after changing a Sound Voice to Sound SFX or vice-versa.
  • WG-59571 Added support for Unreal Engine 5.0.1.

Behavior Changes

  • WG-58889 Ending a Play in Editor session now stops all sounds.
  • WG-59966 The integration no longer automatically corrects the ShortID found in an asset when it is loaded. In the case where you see Invalid ShortID warnings in the Output log, regenerate Sound Data and save all modified assets.

Miscellaneous Changes

  • WG-53953 Wwise initialization errors are reported earlier in the local output.
  • WG-56843 UPROPERTY are now initialized by default.

Bug Fixes

  • WG-54251 Fixed: Localized Unreal asset data is not removed by "Clear Sound Data" utility.
  • WG-59502 Fixed : The same media could call SetMedia multiple times, which would lead to a memory leak.
  • WG-59589 Fixed: Bank assets in Unreal with no assets referencing them add all Events to their Linked Events list. (This bug does not affect bank behavior but can negatively impact editor performance).
  • WG-60163 Fixed: Media in memory in Unreal Editor do not update after reimporting audio sources in Wwise and regenerating sound data.
  • WG-60218 Fixed: Packaging error when not using Event-Based Packaging.
  • WG-60252 Fixed: Unable to set auto-load error when adding Convolution Reverb on a Sound Voice.
  • WG-60254 Fixed: AkMediaMemoryManager::ReleaseMediaMemory: Negative RefCount errors for localized media.
  • WG-60263 Fixed: RecursionNotAllowed assert on game start-up.

Fixes for Community-Reported Bugs

  • WG-50111 Fixed: Changing language results in an error when localized Events are grouped in a SoundBank.
  • WG-50220 Fixed: Crash when changing cultures with the Set Current Audio Culture blueprint.
  • WG-51577 Fixed: Possible crash when changing localization immediately after loading a level.
  • WG-53151 Fixed: Localized media data is loaded too late for Events posted immediately on level load (from Level Sequence timelines, for example).
  • WG-55967 Fixed: Localized Events don't play when previewed from the Content Browser.
  • WG-56459 Fixed: Crash when switching between two maps that play an Event referencing the same media.
  • WG-56793 Fixed: Streaming localized voices in Switch Containers sometimes fails to play.
  • WG-56935 Fixed: Crash during map transitions while an Event is playing.
  • WG-57378 Fixed: Incorrect flags passed to Unreal DirectoryWatcher API.
  • WG-57751 Fixed: Localized media in Switch Containers with Split Switch Container Media enabled are not loaded properly. And a report when media is parsed as both streamed and not streamed during Sound Data generation causes playback issues.
  • WG-58000 Fixed: UAkSettings::OnAssetAdded not well optimized.
  • WG-58616 Fixed: Missing localized media prevents switching to a new locale.
  • WG-58659 Fixed: Long map load times when using legacy SoundBanks.
  • WG-59006 Fixed: Unreal Spatial Audio portals don't update when transform changes.
  • WG-59266 Fixed: Missing migration of AkPoly and AkEdgeInfo, which were renamed AkSurfacePoly and AkSurfaceEdgeInfo, respectively, in 2021.1.4.
  • WG-59294 Fixed: Streaming sound fails to play when posted in two subsequently loaded levels.
  • WG-59295 Fixed: Unused variable in Unreal integration's AkRoomComponent.cpp
  • WG-59440 Fixed: There is no warning logged when specifying a non-existent platform as an argument in the GenerateSoundBanks commandlet.
  • WG-60111 Fixed: Crash when generating sound data via WAAPI if Wwise Convolution Reverb Effect is present in the project.
  • WG-60162 Fixed: Hang when Media Asset Data checks if it needs autoloading before its parent media asset begins loading.
  • WG-60165 Fixed: Hang when cooking sound data in a commandlet.
  • WG-60208 Fixed: "Event data not up to date" warnings in log when serializing UAkAssetDataSwitchContainer default object.
  • WG-60233 Fixed: Cook fails on Linux Server builds.


Wwise Unreal Integration Documentation: Important Migration Notes 2021.1.8.7831.2285

Important Migration Notes 2021.1.8.7831.2285

Localization

Sound Data must be regenerated after migrating to 21.1.8 as a result of fixes to media and platform data loading. Most Wwise Unreal assets will be updated by this process. After generating Sound Data, if you still see a message of the form "Media data [...] is not up to date. Please regenerate sound data.", you should clear data in Wwise Unreal assets and then generate Sound Data.


Wwise Unreal Integration Documentation: Release Notes 2021.1.7.7796.2228

Release Notes 2021.1.7.7796.2228

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the 2021.1.7.7796.2228 release of the integration (in addition to upgrading to the new Unreal build).

Note:
This integration does not support experimental Unreal Engine 4 features.
Note:
This integration compiles against Unreal Engine versions 4.23 and up, but was only tested against Unreal Engine 4.26.

For earlier versions, please refer to Previous Release Notes.

  • Behavior Changes
  • Fixes for Community-Reported Bugs

Behavior Changes

  • WG-57995 Improved asset loading performance during Sound Data generation.

Fixes for Community-Reported Bugs

  • WG-57987 Fixed: Crash due to loading assets while not on the game thread when generating Sound Data in Legacy (non-EBP) mode.
  • WG-58133 Fixed: Crash when Wwise assets are loaded before the AkAudio module.
  • WG-58160 Fixed: Crash when sending geometry from AkSurfaceReflectorSetComponent.
  • WG-58882 Fixed: Linux compilation error in Unreal 5.


Wwise Unreal Integration Documentation: Release Notes 2021.1.6.7774.2201

Release Notes 2021.1.6.7774.2201

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the 2021.1.6.7774.2201 release of the integration (in addition to upgrading to the new Unreal build). Important Migration Notes 2021.1.6.7774.2201

Note:
This integration does not support experimental Unreal Engine 4 features.
Note:
This integration compiles against Unreal Engine versions 4.23 and up, but was only tested against Unreal Engine 4.26.

For earlier versions, please refer to Previous Release Notes.

  • New Features
  • Miscellaneous Changes
  • Bug Fixes
  • Fixes for Community-Reported Bugs

New Features

  • WG-55555 Added two new arguments to the GenerateSoundBanks commandlet: autosubmit for automatically submitting generated assets to source control, and clnum for specifying a commit number.
  • WG-57694 Improved compatibility for the Unreal Engine Release_5.0 branch. Integration was tested against changelist #18425151.
  • WG-58002 Added the SetGeometryComponent function to AkRoomComponent. You can use it to choose which AkGeometryComponent to use to send the room's geometry to Wwise.

Miscellaneous Changes

  • WG-54479 Updated the AkAcousticPortal Component so that calls to OpenPortal and ClosePortal no longer stack.

Bug Fixes

  • WG-51015 Fixed: Marker labels and music cue names are not properly copied in Event callbacks.
  • WG-54245 Fixed: Non-ASCII characters are not sent properly in WAAPI messages.
  • WG-55387 Fixed: Crash in Sequencer when opening a level sequence before the Unreal Asset Registry has finished discovering assets.
  • WG-57433 Fixed: Unreal Demo Game fails to package for Xbox One platform with XDK on Unreal 4.27.1 due to missing configuration fields.

Fixes for Community-Reported Bugs

  • WG-53110 Fixed: Events played from the context menu in the Content Browser are silent after leaving Play In Editor (PIE) mode.
  • WG-54864 Fixed: Media in nested Music Switch Containers mapped to the generic path are not loaded.
  • WG-56245 Fixed: Tracking of LinkedAkEvents in AkAudioBanks erroneously marks bank assets as dirty.
  • WG-57271 Fixed: AkBankManager prevents SoundBanks from being unloaded in legacy mode.
  • WG-57276 Fixed: In AkAudioMixer, the FAkMixerPlatform::GetPlatformSettings() function does not return custom platform settings specified in FPlatformProperties.
  • WG-57789 Fixed: Crash and memory leak when using Blueprint callbacks.
  • WG-57791 Fixed: Typo in Boolean logical operator in AkLateReverbComponent.
  • WG-57812 Fixed: Crash when using PostAndWaitEndOfEvent in a Blueprint node.
  • WG-57933 Fixed: Crash or hang when connecting Authoring to a game session while using the Unreal legacy I/O hook.


Wwise Unreal Integration Documentation: Important Migration Notes 2021.1.6.7774.2201

Important Migration Notes 2021.1.6.7774.2201

Spatial Audio Portals

  • The AkPortalComponent functionality has been updated such that calls to OpenPortal and ClosePortal no longer 'stack'. This means a call to OpenPortal will immediately open the portal, and a call to ClosePortal will immediately close the portal. With the old functionality, multiple calls to OpenPortal would require the same number of ClosePortal calls in order for the portal to be closed. If you have code that relies on this functionality you should update it.


Wwise Unreal Integration Documentation: Release Notes 2021.1.5.7749.2171

Release Notes 2021.1.5.7749.2171

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the 2021.1.5.7749.2171 release of the integration (in addition to upgrading to the new Unreal build).

Note:
This integration does not support experimental Unreal Engine 4 features.
Note:
This integration compiles against Unreal Engine versions 4.23 and up, but was only tested against Unreal Engine 4.26.

For earlier versions, please refer to Previous Release Notes.

  • Miscellaneous Changes
  • Fixes for Community-Reported Bugs

Miscellaneous Changes

  • WG-57402 Support for Matinee will be removed in the next version of the Wwise Unreal integration. This is the ultimate version of the Wwise Unreal integration that can be used to migrate from Matinee to Level Sequence.

Fixes for Community-Reported Bugs

  • WG-56161 Fixed: CreateStreamingRequest can assert for streaming media if the media asset is unloaded at the wrong time. Media asset validity is now checked before requesting new streaming data.
  • WG-56267 Fixed: "Media not loaded" errors when using Split Switch Container Media caused by a random serialization order.
  • WG-56455 Fixed: Some Media IDs in the XML/JSON bank file are missing when the same Media is referenced by different Switches inside a Switch Container.
  • WG-56716 Fixed: "Media not loaded" errors when using Split Switch Container Media and nested Switch Containers.
  • WG-56795 Fixed: Room extents are inaccurate for Spatial Audio rooms constructed from AkSurfaceReflectorSets that have been modified using the geometry brush editing mode.


Wwise Unreal Integration Documentation: Release Notes 2021.1.4.7707.2130

Release Notes 2021.1.4.7707.2130

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the 2021.1.4.7707.2130 release of the integration (in addition to upgrading to the new Unreal build).

Note:
This integration does not support experimental Unreal Engine 4 features.
Note:
This integration compiles against Unreal Engine versions 4.23 and up, but was only tested against Unreal Engine 4.26.

For earlier versions, please refer to Previous Release Notes.

  • New Features
  • API Changes
  • Bug Fixes
  • Fixes for Community-Reported Bugs

New Features

  • WG-29814 Added support for offline rendering.
  • WG-55847 Added a new module to the Unreal plugin: AkAudioMixer, which allows outputing Unreal Audio Mixer output to a Wwise Audio Input source. Added a new input component to the Unreal plugin: AkSubmixInputComponent, which enables using an Unreal submix as a Wwise Audio Input source.
  • WG-56104 Added a custom section in the AkGeometry Details Panel to control the surface property overrides.
  • WG-56197 Exposed the offline rendering SDK functions in AkAudioDevice.

API Changes

  • WG-55479 Exposed the offline rendering SDK functions in AkAudioDevice.

Bug Fixes

  • WG-52933 Fixed: Possible crash when replacing renamed Wwise UAssets with Automatic Asset Synchronization turned off.
  • WG-54119 Fixed: Acoustic textures are assigned to incorrect faces in Spatial Audio Volumes after editing the brush geometry.
  • WG-54524 Fixed: "Ensure condition failed" error during Sound Data generation.
  • WG-55714 Fixed: Reading bad memory in Spatial Audio when UE4 is used under address sanitizer.
  • WG-55920 Fixed: Non-zero values appear in the Transform property for AkPortalComponent, AkRoomComponent, AkLateReverbComponent, and AkGeometryComponent.
  • WG-55941 Fixed: Incorrect room orientations in AkRoomComponent.

Fixes for Community-Reported Bugs

  • WG-51494 Fixed: Possible crash if AutoSaves are triggered during Sound Data generation. AutoSave is now toggled off during the generation process.
  • WG-54995 Fixed: FAkMixerPlatform::GetOutputDeviceInfo does not properly initialize the requested channel information.
  • WG-55312 Fixed: RecursionNotAllowed error caused by media being loaded before the AkAudio module has been initialized.
  • WG-55548 Fixed: Collision geometry from AkGeometryComponent arranged incorrectly.
  • WG-55715 Fixed: Media can be unset in the Sound Engine in the edge case where media asset destruction happens after construction during level transitions.
  • WG-55966 Fixed: Crash caused by convolution reverb media being freed too early during unloading.
  • WG-56058 Fixed: Missing category on UAkLateReverbComponent UPROPERTY prevents the engine plugin from building.
  • WG-56139 Fixed: Potential deadlock during sound data generation when parsing SoundBank asset data.


Wwise Unreal Integration Documentation: Release Notes 2021.1.3.7665.2079

Release Notes 2021.1.3.7665.2079

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the 2021.1.3.7665.2079 release of the integration (in addition to upgrading to the new Unreal build).

Note:
This integration does not support experimental Unreal Engine 4 features.
Note:
This integration compiles against Unreal Engine versions 4.23 and up, but was only tested against Unreal Engine 4.26.

For earlier versions, please refer to Previous Release Notes.

  • New Features
  • API Changes
  • Behavior Changes
  • Miscellaneous Changes
  • Bug Fixes
  • Fixes for Community-Reported Bugs

New Features

  • WG-52844 Exposed {{AK::SoundEngine::RegisterOutputDeviceMeteringCallback}} to Unreal, to allow for monitoring of Audio Device meters.
  • WG-52873 New Blueprint functions now use the following Spatial Audio API functions: SetPortalObstructionAndOcclusion, SetGameObjectToPortalObstruction , and SetPortalToPortalObstruction.
  • WG-53713 Unreal IO Store packaging option is now supported.

API Changes

  • WG-53512 Exposed SetRTPCValueByPlayingID to AkAudioDevice.
  • WG-53543 Exposed GetRTPCValue, SetRTPCValue, SetState, and SetSwitch by Short ID to FAkAudioDevice.

Behavior Changes

  • WG-54766 Unloading media assets now stops the media from playing first, then waits for it to be unused before unloading, instead of forcibly unloading it.
  • WG-55592 Added call to StopAll when tearing down the SoundEngine.

Miscellaneous Changes

  • WG-55062 Fixed: Missing RoomVerb reference on the igloo Reverb Volume in the Wwise Demo Game.

Bug Fixes

  • WG-54232 Fixed: Orphaned media is not properly cleaned up when the option is selected in the Clear Sound Data.
  • WG-54273 Fixed : External Source file name being cleared in memory before event is posted when using async PostEvent calls with External Sources.
  • WG-54493 Fixed: Clear Sound Data always marks items as dirty.
  • WG-54950 Fixed: Using Event-Based Packaging and Events grouped into SoundBanks, Unreal Editor crashes when generating sound data.
  • WG-54998 Fixed: GenerateSoundbanksCommandlet attempts to check-in files it could not check-out.
  • WG-55086 Fixed: Crash during SoundBank generation when parsing media associated with a music container's generic path.
  • WG-55097 Fixed migration to Event-Based Packaging by making sure the InitBank asset is moved to the appropriate folder.
  • WG-55201 Fixed: Media associated with Music Switch Containers' Generic Path not loaded when Split Switch Container Media is enabled. They are now automatically loaded with the Events referencing them.
  • WG-55229 Fixed: Editor crash when deleting media assets referenced by Switch Containers in the Unreal Editor.
  • WG-55318 Fixed: Possible crash caused by WAAPI Picker while packaging build.
  • WG-55336 Fixed: Incorrect Volume and Area values are displayed for the AkSpatialAudioVolume Actor after Undo.
  • WG-55460 Fixed: Possible crash caused by callbacks interacting with garbage-collected latent actions after they have been destroyed.
  • WG-55591 Unloading a Switch Value asset now properly unloads the associated media.

Fixes for Community-Reported Bugs

  • WG-51927 Fixed: Crash when validating DirectoriesToAlwaysCook if it contains a root folder entry.
  • WG-53436 Fixed: UAkInputComponent stops unexpectedly after some time (from a few seconds to several minutes).
  • WG-54287 Fixed: The DefaultLanguage on the Init Bank asset is set incorrectly due to issues with the parser.
  • WG-54729 Fixed: During Sound Data generation in non-Event Based Packaging workflows, Wwise Unreal assets are dirtied unnecessarily when parsing SoundBank info and are loaded unnecessarily.
  • WG-54843 Fixed: Asynchronous load requests are improperly cancelled when prematurely unloading levels.
  • WG-54947 Fixed: Assets are not added to the GenerateSoundBanksCommandlet changelist if they were saved too early in the process.
  • WG-55002 Fixed: AkComponents with Auto Destroy enabled are not automatically cleaned up when they are posted asynchronously.
  • WG-55006 Fixed: Crash when FWaitEndOfEventAction latent actions would still be called after they were destroyed by unloading a level.
  • WG-55081 Fixed: Wwise UAsset Short IDs cleared by "Clear data in assets" are not always regenerated for State values. Incorrect Short IDs are now reported in the Unreal Log as a warning.
  • WG-55107 Fixed: Returned Playing Id not properly set in AkComponent's PostAkEventAndWaitForEnd Blueprint function and latent action not created and Event not posted in AkComponent's PostAkEventAndWaitForEndAsync Blueprint function.
  • WG-55464 Fixed: AkAcousticPortal returns invalid room IDs even when positioned correctly.
  • WG-55578 Updated default value of MONITOR_QUEUE_DEFAULT_SIZE in Wwise initialisation settings to 1 MB.


Wwise Unreal Integration Documentation: Release Notes 2021.1.2.7629.2025

Release Notes 2021.1.2.7629.2025

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the 2021.1.2.7629.2025 release of the integration (in addition to upgrading to the new Unreal build).

Note:
This integration does not support experimental Unreal Engine 4 features.
Note:
This integration compiles against Unreal Engine versions 4.23 and up, but was only tested against Unreal Engine 4.26.

For earlier versions, please refer to Previous Release Notes.

  • Performance Changes
  • Miscellaneous Changes
  • Bug Fixes
  • Fixes for Community-Reported Bugs

Performance Changes

  • WG-54411 Improved Editor load times.

Miscellaneous Changes

  • WG-53918 Changed the priority of the AkEvent property in AkRoomComponent such that it appears closer to the other properties in the Details panel.
  • WG-54267 Increased the Unreal Demo Game Monitor Queue Pool Size.

Bug Fixes

  • WG-54115 Fixed: Crash when Spatial Audio components are added to Blueprint Actor instances in a level from the Add Component button.
  • WG-54151 Fixed: In the Details panel of an AkRoomComponent, the AkEvent section is collapsed after editing the properties within.
  • WG-54171 Fixed: Incorrect handling of property changes when there is no sibling AkRoomComponent present for AkLateReverbComponent.
  • WG-54264 Fixed: (Spatial Audio) Rooms are sometimes not registered when they are needed during automatic registration of Room Game Objects causing "Unknown listener game object ID." messages to be printed in the Capture Log.
  • WG-54417 Fixed: Events are always marked as dirty after Sound Data generation when they are referencing a Switch Container that contains switch values referencing multiple Actor-Mixers.
  • WG-54494 Fixed: Potential crash when deleting or performing invalid move operations on AkEvent UAssets in the Content Browser.
  • WG-54517 Fixed: In the Spatial Audio Volume Details panel, the Fit To Geometry section is far from related sections.
  • WG-54536 Unreal Acoustic Portal: Fixed portal validity not updating when a portal is rotated on the spot.
  • WG-54597 Fixed: Late Reverb Component remains inactive when added from the Level Editor to an invalid parent and then reparented.
  • WG-54662 Fixed: Unreal maps are unnecessarily marked as dirty when saving text visualizer properties.
  • WG-54750 Fixed: In the AkAcousticPortal Details panel, the Fit To Geometry section is far from related sections.
  • WG-54751 Fixed: Spatial Audio Volume geometry becomes inaccurate after undo/redo of the Fit To Geometry property.
  • WG-54780 Fixed: Crash when adding a Late Reverb Component to an invalid Component type.
  • WG-54791 Fixed: Crash during Play in Editor session when editing Room Component properties.

Fixes for Community-Reported Bugs

  • WG-54498 Fixed : Potential crash when generating Sound Data with Split Switch Container Media enabled.
  • WG-54558 Fixed: Possible crash and playback issues when streamed sounds with zero-latency not enabled are reloaded.
  • WG-54581 Fixed : Crash when unloading and reloading streamed levels containing SpatialAudioVolumes that are not rooms.


Wwise Unreal Integration Documentation: Release Notes 2021.1.1.7601.1995

Release Notes 2021.1.1.7601.1995

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the 2021.1.1.7601.1995 release of the integration (in addition to upgrading to the new Unreal build).

Note:
This integration does not support experimental Unreal Engine 4 features.
Note:
This integration compiles against Unreal Engine versions 4.23 and up, but was only tested against Unreal Engine 4.26.

For earlier versions, please refer to Previous Release Notes.

  • Miscellaneous Changes
  • Bug Fixes
  • Fixes for Community-Reported Bugs

Miscellaneous Changes

  • WG-53145 Separated 'Geometry Settings' from 'Geometry Surfaces' in the Spatial Audio Volume details panel.

Bug Fixes

  • WG-50934 Fixed: Potential crash when unloading banks in AkBankManager.
  • WG-51387 Fixed: Crash when generating Sound Data after the InitBank asset has been reloaded.
  • WG-53164 Fixed: AkRoomComponents with IsEnabled set to false cannot be enabled during runtime.
  • WG-53257 Fixed: CPU Limit value in Integrations is not clamped
  • WG-53440 Fixed: Enable Surface Reflectors check box has no effect during Play in Editor.
  • WG-53456 Fixed: Unreal error when creating assets in Wwise that have the same name as their containing folder or Work Unit. This fix will rename existing hidden folder metadata uassets to add the "_FOLDER" suffix to their name.
  • WG-53589 Fixed: Editor property changed notifications are missing for AkLateReverbComponents and AkGeometryComponents.
  • WG-53604 Fixed: Handling of UPROPERTY changes in Blueprint-created Components.
  • WG-53645 Fixed: Relative paths to Wwise.app are reported as invalid in the Wwise User Settings.
  • WG-53803 Fixed: Split Switch Container Media feature not working.
  • WG-53984 Fixed: Crash when adding an AkRoomComponent to an actor from the level editor.
  • WG-54031 Fixed: Aux Bus is non-editable for AkLateReverbComponents added to a custom Blueprint with Auto-Assign Aux Bus default to true, where Auto-Assign Aux Bus has been changed in the details panel in the level editor.
  • WG-54088 Fixed: AkLateReverbComponent user-assigned aux bus not restored when auto-assign aux bus is disabled in Blueprint-added components.
  • WG-54244 Fixed: Missing media in packaged game when using switch containers. This fix will modify all media assets.

Fixes for Community-Reported Bugs

  • WG-51186 Fixed: Crash when asynchronously unloading and immediately reloading a SoundBank that is in use.
  • WG-53031 Fixed: Possible crash with Event-Based Packaging when unloading a level while a Convolution Reverb is in its tail mode.
  • WG-53340 Fixed: When not using Event-Based Packaging, events are not being dirtied if their metadata changes.
  • WG-53585 Fixed: Not waiting on all parse tasks to finish before moving on to cooking media during SoundBank generation.
  • WG-53707 Fixed: The list of Linked Ak Events in required banks doesn't clear entries when Event assets are deleted.
  • WG-53789 - Fixed: Frame drop in UAkAudioEvent::IsReadyForFinishDestroy() while AkAudioEvents are being destroyed.
  • WG-53850 Fixed: FAkAudioStyle::TextMaterial can be deleted by the garbage collector in the Unreal Editor resulting in a crash.
  • WG-53947 Fixed: SoundBanks containing only an AuxBus are not generated unless Event-Based Packaging is used.
  • WG-54076 Fixed: Crash during Sound Data generation caused by game thread code being executed in an asynchronous task.
  • WG-54116 Fixed: Crash when using the Editor in debug when generating Sound Data.


Wwise Unreal Integration Documentation: Release Notes 2021.1.0.7575.1956

Release Notes 2021.1.0.7575.1956

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the 2021.1.0.7575.1956 release of the integration (in addition to upgrading to the new Unreal build). Important Migration Notes 2021.1.0.7575.1956

Note:
This integration does not support experimental Unreal Engine 4 features.
Note:
This integration compiles against Unreal Engine versions 4.23 and up, but was only tested against Unreal Engine 4.26.

For earlier versions, please refer to Previous Release Notes.

  • New Features
  • API Changes
  • Behavior Changes
  • Miscellaneous Changes
  • Bug Fixes
  • Fixes for Community-Reported Bugs

New Features

  • WG-35740 Spatial Audio in Blueprint: Added UAkPortalComponent, which can be attached to a UPrimitiveParent component. Generalized UAkRoomComponent, UAkLateReverbComponent, and UAkGeometryComponent such that they can be attached to any UPrimitiveComponent. Added a Visualize Rooms and Portals option in the integration settings that can be used to assist with portal and room placement.
  • WG-46375 Ak Portal components can now be added to Blueprint classes.
  • WG-48244 System Audio Device now supports 3D Audio via Microsoft Spatial Sound.
  • WG-48270 Added automatic aux bus assignment and reverb parameter estimation to the AkLateReverbComponent.
  • WG-48507 Added Volumetric Emitter Component.
  • WG-48703 Added rooms and portals visualization in Unreal Editor viewports, which can be enabled/disabled from the Wwise Integration settings in the Unreal project settings menu.
  • WG-50210 Added support for new setting sent by the game to scale all the user-defined sizes of the Game Object 3D Viewer.
  • WG-51976 Colors for acoustic textures are now synchronized between the Wwise project and the Unreal project.
  • WG-52051 Updated UI for acoustic surface properties on an Ak Surface Reflector Set Component (and Spatial Audio Volume). Textures can now be assigned to one or more faces using Brush Editing mode in the Unreal Editor.
  • WG-52685 Physical folder hierarchies are now parsed directly from the project file.

API Changes

  • WG-47085 Added new methods on AK::IAkPluginMemAlloc for reallocation: AK::IAkPluginMemAlloc::Realloc and AK::IAkPluginMemAlloc::ReallocAligned.
  • WG-50742 Renamed parameters in Spatial Audio mentioning "occlusion" to use "transmission loss" instead.

Behavior Changes

  • WG-47039 Virtual Folders are now automatically synchronized between Wwise and the Unreal Content Browser.
  • WG-48155 Ak Room and Ak Late Reverb components can now be added to actors other than AVolume. Ak Room and Ak Late Reverb component Blueprint functions can now be called from actor Blueprints.
  • WG-49551 AkAssetDatabase no longer loads assets on editor open or during asset synchronization, reducing load times in general.
  • WG-52785 WAAPI is now disabled when running a commandlet.

Miscellaneous Changes

  • WG-47980 Added new optional XML attribute for plug-ins to specify the name of their static library.
  • WG-49988 Portals now use the X-axis as "front" in order to match the Unreal coordinate system.
  • WG-53093 Reduced unnecessary dialog messages when moving assets and performing asset synchronization.

Bug Fixes

  • WG-48689 Fixed: A nullptr exception when instantiating AkGeometry components in Blueprint classes.
  • WG-50804 Fixed: The name and tooltip of MaxSimultaneousReverbVolumes is missing components.
  • WG-50861 Fixed: Updating an AkComponent's position is suboptimal due to a linear search over all UAkRoomComponents and UAkLateReverbComponents. This linear search has been replaced with a query into a spatial index data structure, which scales logarithmically with the number of components.
  • WG-52242 Fixed: WAAPI commands sent by the Unreal Editor to move folders with names containing special characters fail.
  • WG-52305 Fixed: Various issues with asset synchronization.
  • WG-52824 Fixed: Crash when deleting large groups of assets.
  • WG-53335 Fixed: WEM Opus format not available in Codec ID dropdown of AkExternalSourceInfo.

Fixes for Community-Reported Bugs

  • WG-52245 Changes to the Wwise objects made in the Unreal Editor are not always reflected in Wwise Authoring.
  • WG-52893 Fixed: Modifications to nested Work Units are not reflected in the Wwise Picker.
  • WG-53195 Fixed: AkGeometry's ConvertConvexMeshToGeometryData() does not fetch convex meshes and always resorts to bounding boxes.
  • WG-53444 Fixed: AkLowLevelMemory::Alloc may not return page-aligned memory.


Wwise Unreal Integration Documentation: Important Migration Notes 2021.1.0.7575.1956

Important Migration Notes 2021.1.0.7575.1956

In 2021.1, Spatial Audio Initialization Settings were updated and improved. If you update your project to 2021.1, make sure you review the Spatial Audio Initialization Settings to ensure all settings are still as desired. Refer to the AkSpatialAudioInitSettings Struct Reference for details on the new settings.

Spatial Audio Portals

  • AkPortalComponent has been updated to use its local X axis as the 'front' when detecting connected rooms, in order to stay in line with Unreal's coordinate system. Portals in existing levels will be transformed such that they are oriented appropriately.
  • The Initial State property in AkAcousticPortal is deprecated. The initial state is now handled by the AkPortalComponent. Existing AkAcousticPortal actors will pass their initial state to their AkPortalComponent.


Wwise Unreal Integration Documentation: Release Notes 2019.2.15.7667.2164

Release Notes 2019.2.15.7667.2164

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the 2019.2.15.7667.2164 release of the integration (in addition to upgrading to the new Unreal build).

  • Important Migration Notes 2019.2.15.7667.2164
Note:
This integration does not support experimental Unreal Engine 4 features.
Note:
This integration was compiled against Unreal Engine versions 4.26 and 4.27. It was tested against Unreal Engine 4.27.2. Any major Unreal Engine version more recent than the aforementioned is not currently supported. Unreal Engine 5 will not be supported for Wwise 2019.2. Please update to Wwise 2021.1 for Unreal Engine 5 support.

For earlier versions, please refer to Previous Release Notes.

  • New Features
  • Behavior Changes
  • Miscellaneous Changes
  • Bug Fixes
  • Fixes for Community-Reported Bugs

New Features

  • WG-54828 A new option to clear sound data for individual Wwise assets is now available in the Unreal Content Browser. It facilitates the required step of clearing Sound Data after changing a Sound Voice to Sound SFX or vice-versa.
  • WG-55555 Added two new arguments to the GenerateSoundBanks commandlet: autosubmit for automatically submitting generated assets to source control, and clnum for specifying a commit number.

Behavior Changes

  • WG-57995 Improved asset loading performance during Sound Data generation.
  • WG-58889 Ending a Play in Editor session now stops all sounds.
  • WG-59966 The integration no longer automatically corrects the ShortID found in an asset when it is loaded. In the case where you see Invalid ShortID warnings in the Output log, regenerate Sound Data and save all modified assets.

Miscellaneous Changes

  • WG-56843 UPROPERTY are now initialized by default.

Bug Fixes

  • WG-54251 Fixed: Localized Unreal asset data is not removed by "Clear Sound Data" utility.
  • WG-55387 Fixed: Crash in Sequencer when opening a level sequence before the Unreal Asset Registry has finished discovering assets.
  • WG-59502 Fixed: The same media can call SetMedia multiple times, which leads to a memory leak.
  • WG-59600 Fixed: FAkAudioModule loads icons and attempts to initialize WAAPI in non-editor builds.
  • WG-60059 Fixed: Crash when switching languages for AkAudioBank assets not containing asset data for the target language. Downgraded AkAudiobank "Could not find localized data" log from error to warning.
  • WG-60163 Fixed: Media in memory in Unreal Editor do not update after reimporting audio sources in Wwise and regenerating sound data.
  • WG-60218 Fixed: Packaging error when not using Event-Based Packaging.
  • WG-60252 Fixed: Unable to set auto-load error when adding Convolution Reverb on a Sound Voice.
  • WG-60254 Fixed: AkMediaMemoryManager::ReleaseMediaMemory: Negative RefCount errors for localized media.
  • WG-60263 Fixed: RecursionNotAllowed assert on game start-up.
  • WG-60394 Fixed: Build failures with Unity build turned off.

Fixes for Community-Reported Bugs

  • WG-50111 Fixed: Changing language results in an error when localized Events are grouped in a SoundBank.
  • WG-50220 Fixed: Crash when changing cultures with the Set Current Audio Culture blueprint.
  • WG-51577 Fixed: Possible crash when changing localization immediately after loading a level.
  • WG-53110 Fixed: Events played from the context menu in the Content Browser are silent after leaving Play In Editor (PIE) mode.
  • WG-53151 Fixed: Localized media data is loaded too late for Events posted immediately on level load (from Level Sequence timelines, for example).
  • WG-55967 Fixed: Localized Events don't play when previewed from the Content Browser.
  • WG-56793 Fixed: Streaming localized voices in Switch Containers sometimes fails to play.
  • WG-56935 Fixed: Crash during map transitions while an Event is playing.
  • WG-57271 Fixed: AkBankManager prevents SoundBanks from being unloaded in legacy mode.
  • WG-57378 Fixed: Incorrect flags passed to Unreal DirectoryWatcher API.
  • WG-57751 Fixed: Localized media in Switch Containers with Split Switch Container Media enabled are not loaded properly. And a report when media is parsed as both streamed and not streamed during Sound Data generation causes playback issues.
  • WG-57789 Fixed: Crash and memory leak when using Blueprint callbacks.
  • WG-57791 Fixed: Typo in Boolean logical operator in AkLateReverbComponent.
  • WG-57812 Fixed: Crash when using PostAndWaitEndOfEvent in a Blueprint node.
  • WG-57933 Fixed: Crash or hang when connecting Authoring to a game session while using the Unreal legacy I/O hook.
  • WG-57987 Fixed: Crash due to loading assets while not on the game thread when generating Sound Data in Legacy (non-EBP) mode.
  • WG-58133 Fixed: Crash when Wwise assets are loaded before the AkAudio module.
  • WG-58518 Fixed: Newly used media assets are not created when running the GenerateSoundBanks commandlet. Use the new forceAssetSync switch to force new asset creation.
  • WG-58616 Fixed: Missing localized media prevents switching to a new locale.
  • WG-59294 Fixed: Streaming sound fails to play when posted in two subsequently loaded levels.
  • WG-60035 Fixed: Various issues occur when loading localized media and bank data.
  • WG-60111 Fixed: Crash when generating sound data via WAAPI if Wwise Convolution Reverb Effect is present in the project.
  • WG-60162 Fixed: Hang when Media Asset Data checks if it needs autoloading before its parent media asset begins loading.
  • WG-60165 Fixed: Hang when cooking sound data in a commandlet.
  • WG-60233 Fixed: Cook fails on Linux Server builds.


Wwise Unreal Integration Documentation: Important Migration Notes 2019.2.15.7667.2164

Important Migration Notes 2019.2.15.7667.2164

Localization

Sound Data must be regenerated after migrating to 2019.2.15 as a result of fixes to media and platform data loading. Most Wwise Unreal assets will be updated by this process. After generating Sound Data, if you still see a message of the form "Media data [...] is not up to date. Please regenerate sound data.", you should clear data in Wwise Unreal assets and then generate Sound Data.


Wwise Unreal Integration Documentation: Release Notes 2019.2.14.7616.2082

Release Notes 2019.2.14.7616.2082

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the 2019.2.14.7616.2082 release of the integration (in addition to upgrading to the new Unreal build).

Note:
This integration does not support experimental Unreal Engine 4 features.
Note:
This integration compiles against Unreal Engine versions 4.23 and up, but was only tested against Unreal Engine 4.26.

For earlier versions, please refer to Previous Release Notes.

  • Miscellaneous Changes
  • Bug Fixes
  • Fixes for Community-Reported Bugs

Miscellaneous Changes

  • WG-57433 Fixed: Unreal Demo Game fails to package for Xbox One platform with XDK on Unreal 4.27.1 due to missing configuration fields.

Bug Fixes

  • WG-51015 Fixed: Marker labels and music cue names are not properly copied in Event callbacks.
  • WG-54245 Fixed: Non-ASCII characters are not sent properly in WAAPI messages.

Fixes for Community-Reported Bugs

  • WG-54864 Fixed: Media in nested Music Switch Containers mapped to the generic path are not loaded.
  • WG-55312 Fixed: RecursionNotAllowed error caused by media being loaded before the AkAudio module has been initialized.
  • WG-55715 Fixed: Media can be unset in the Sound Engine in the edge case where media asset destruction happens after construction during level transitions.
  • WG-56139 Fixed: Potential deadlock during sound data generation when parsing SoundBank asset data.
  • WG-56161 Fixed: CreateStreamingRequest can assert for streaming media if the media asset is unloaded at the wrong time. Media asset validity is now checked before requesting new streaming data.
  • WG-56245 Fixed: Tracking of LinkedAkEvents in AkAudioBanks erroneously marks bank assets as dirty.
  • WG-56455 Fixed: Some Media IDs in the XML/JSON bank file are missing when the same Media is referenced by different Switches inside a Switch Container.
  • WG-56716 Fixed: "Media not loaded" errors when using Split Switch Container Media and nested Switch Containers.


Wwise Unreal Integration Documentation: Release Notes 2019.2.13.7577.2037

Release Notes 2019.2.13.7577.2037

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the 2019.2.13.7577.2037 release of the integration (in addition to upgrading to the new Unreal build).

Note:
This integration does not support experimental Unreal Engine 4 features.
Note:
This integration compiles against Unreal Engine versions 4.23 and up, but was only tested against Unreal Engine 4.26.

For earlier versions, please refer to Previous Release Notes.

  • New Features
  • API Changes
  • Behavior Changes
  • Bug Fixes
  • Fixes for Community-Reported Bugs

New Features

  • WG-52794 Added early access compatibility for Unreal Engine 5.
  • WG-53713 Unreal IO Store packaging option is now supported.
  • WG-55316 Added Unreal Engine UE4.27 support.

API Changes

  • WG-55748 Fixed: Exposed AK::SoundEngine::ResetRTPCValue() to Unreal static functions, allowing to reset the value of a Game Parameter to its default.
  • WG-56084 Updated AkUtilities.GetWwiseSoundBankDestinationFolder function signature.

Behavior Changes

  • WG-55592 Added call to StopAll when tearing down the SoundEngine.

Bug Fixes

  • WG-48540 Fixed: WAAPI Picker subscriptions are not refreshed after closing/reopening the Picker or toggling WAAPI functionality.
  • WG-52933 Fixed: Possible crash when replacing renamed Wwise UAssets with Automatic Asset Synchronization turned off.
  • WG-54273 Fixed: External Source file name is cleared in memory before Event is posted when using async PostEvent calls with External Sources.
  • WG-55097 Fixed: Migration to Event-Based Packaging by making sure the InitBank asset is moved to the appropriate folder.
  • WG-55318 Fixed: Possible crash caused by WAAPI Picker while packaging build.
  • WG-55460 Fixed: Possible crash caused by callbacks interacting with garbage-collected latent actions after they have been destroyed.
  • WG-55591 Fixed: Unloading a Switch Value asset doesn't unload the associated media.
  • WG-55891 Fixed: Inconsistent behavior when renaming Wwise assets with Automatic Asset Synchronization disabled.
  • WG-55939 Fixed: Crash in WAAPI Picker selection synchronization while profiling during PIE.

Fixes for Community-Reported Bugs

  • WG-51494 Fixed: Possible crash if AutoSaves are triggered during Sound Data generation. AutoSave is now toggled off during the generation process.
  • WG-54995 Fixed: FAkMixerPlatform::GetOutputDeviceInfo does not properly initialize the requested channel information.
  • WG-55006 Fixed: Crash when FWaitEndOfEventAction latent actions would still be called after they were destroyed by unloading a level.
  • WG-55081 Fixed: Wwise UAsset Short IDs cleared by "Clear data in assets" are not always regenerated for State values. Incorrect Short IDs are now reported in the Unreal Log as a warning.
  • WG-55107 Fixed: Returned Playing Id not properly set in AkComponent's PostAkEventAndWaitForEnd Blueprint function and latent action not created and Event not posted in AkComponent's PostAkEventAndWaitForEndAsync Blueprint function.
  • WG-55548 Fixed: Collision geometry from AkGeometryComponent arranged incorrectly.
  • WG-55881 Fixed: Capitalisation typos in includes prevent building the integration on Linux.
  • WG-55966 Fixed: Crash caused by convolution reverb media being freed too early during unloading.


Wwise Unreal Integration Documentation: Release Notes 2019.2.12.7544.1988

Release Notes 2019.2.12.7544.1988

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the 2019.2.12.7544.1988 release of the integration (in addition to upgrading to the new Unreal build).

Note:
This integration does not support experimental Unreal Engine 4 features.
Note:
This integration compiles against Unreal Engine versions 4.23 and up, but was only tested against Unreal Engine 4.26.

For earlier versions, please refer to Previous Release Notes.

  • API Changes
  • Behavior Changes
  • Bug Fixes
  • Fixes for Community-Reported Bugs

API Changes

  • WG-53512 Exposed SetRTPCValueByPlayingID to AkAudioDevice.
  • WG-53543 Exposed GetRTPCValue, SetRTPCValue, SetState, and SetSwitch by Short ID to FAkAudioDevice.

Behavior Changes

  • WG-54766 Unloading media assets now stops the media from playing first, then waits for it to be unused before unloading, instead of forcibly unloading it.

Bug Fixes

  • WG-54232 Fixed: Orphaned media is not properly cleaned up when the option is selected in the Clear Sound Data.
  • WG-54493 Fixed: Clear Sound Data always marks items as dirty.
  • WG-54524 Fixed: "Ensure condition failed" error during Sound Data generation.
  • WG-54950 Fixed: Using Event-Based Packaging and Events grouped into SoundBanks, Unreal Editor crashes when generating sound data.
  • WG-54998 Fixed: GenerateSoundbanksCommandlet attempts to check-in files it could not check-out.
  • WG-55086 Fixed: Crash during SoundBank generation when parsing media associated with a music container's generic path.
  • WG-55201 Fixed: Media associated with Music Switch Containers' Generic Path not loaded when Split Switch Container Media is enabled. They are now automatically loaded with the Events referencing them.
  • WG-55229 Fixed: Editor crash when deleting media assets referenced by switch containers in the Unreal Editor.

Fixes for Community-Reported Bugs

  • WG-53436 Fixed: UAkInputComponent stops unexpectedly after some time (from a few seconds to several minutes).
  • WG-54287 Fixed: The DefaultLanguage on the Init Bank asset is set incorrectly due to issues with the parser.
  • WG-54558 Fixed: Possible crash and playback issues when streamed sounds with zero-latency not enabled are reloaded.
  • WG-54729 Fixed: During Sound Data generation in non-Event Based Packaging workflows, Wwise Unreal assets are dirtied unnecessarily when parsing SoundBank info and are loaded unnecessarily.
  • WG-54843 Fixed: Asynchronous load requests are improperly cancelled when prematurely unloading levels.
  • WG-54947 Fixed: Assets are not added to the GenerateSoundBanksCommandlet changelist if they were saved too early in the process.
  • WG-55002 Fixed: AkComponents with Auto Destroy enabled are not automatically cleaned up when they are posted asynchronously.
  • WG-55128 Fixed: Wwise UAsset Short IDs cleared by "Clear data in assets" are not always regenerated for State values. Incorrect Short IDs are now reported in the Unreal Log as a warning.


Wwise Unreal Integration Documentation: Release Notes 2019.2.11.7512.1949

Release Notes 2019.2.11.7512.1949

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the 2019.2.11.7512.1949 release of the integration (in addition to upgrading to the new Unreal build).

Note:
This integration does not support experimental Unreal Engine 4 features.
Note:
This integration compiles against Unreal Engine versions 4.23 and up, but was only tested against Unreal Engine 4.26.

For earlier versions, please refer to Previous Release Notes.

  • Performance Changes
  • Bug Fixes
  • Fixes for Community-Reported Bugs

Performance Changes

  • WG-54411 Improved Editor load times.

Bug Fixes

  • WG-51387 Fixed: Crash when generating Sound Data after the InitBank asset has been reloaded.
  • WG-53456 Fixed: Unreal error when creating assets in Wwise that have the same name as their containing folder or Work Unit. This fix will rename existing hidden folder metadata uassets to add the "_FOLDER" suffix to their name.
  • WG-53645 Fixed: Relative paths to Wwise.app are reported as invalid in the Wwise User Settings.
  • WG-54244 Fixed: Missing media in packaged games when using Switch Containers. This fix will modify all media assets.
  • WG-54417 Fixed: Events are always marked as dirty after Sound Data generation when they are referencing a Switch Container that contains switch values referencing multiple actor-mixers.
  • WG-54494 Fixed : Potential crash when deleting or performing invalid move operations on AkEvent UAssets.
  • WG-54498 Fixed : Potential crash when generating sound data with Split Switch Container Media enabled.

Fixes for Community-Reported Bugs

  • WG-51186 Fixed: Crash when asynchronously unloading and immediately reloading a SoundBank that is in use.
  • WG-53340 Fixed: When not using Event-Based Packaging, events are not being dirtied if their metadata changes.
  • WG-53789 Fixed: Framerate drop in UAkAudioEvent::IsReadyForFinishDestroy() while AkAudioEvents are being destroyed.
  • WG-53947 Fixed: SoundBanks containing only an AuxBus are not generated unless Event-Based Packaging is used.
  • WG-54076 Fixed: Crash during Sound Data generation caused by game thread code being executed in an asynchronous task.
  • WG-54116 Fixed: Crash when using the Editor in debug when generating Sound Data.


Wwise Unreal Integration Documentation: Release Notes 2019.2.10.7490.1917

Release Notes 2019.2.10.7490.1917

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the 2019.2.10.7490.1917 release of the integration (in addition to upgrading to the new Unreal build).

Warning:
Due to a change in the reference system, all Wwise Assets must be updated after migrating a project to Wwise 2019.2.10. It is recommended that users perform a "Clear Sound Data" operation followed by a "Generate Sound Data" operation. If this is not done, an Unreal Assert with the following line could appear in a packaged game: Error: Assertion failed: Offset + BytesToRead <= UncompressedFileSize && Offset >= 0
Note:
This integration does not support experimental Unreal Engine 4 features.
Note:
This integration compiles against Unreal Engine versions 4.23 and up, but was only tested against Unreal Engine 4.26.

For earlier versions, please refer to Previous Release Notes.

  • New Features
  • Behavior Changes
  • Miscellaneous Changes
  • Bug Fixes
  • Fixes for Community-Reported Bugs

New Features

  • WG-52685 Physical folder hierarchies are now parsed directly from the project file.

Behavior Changes

  • WG-47039 Virtual Folders are now automatically synchronized between Wwise and the Unreal Content Browser.
  • WG-49551 AkAssetDatabase no longer loads assets on editor open or during asset synchronization, reducing load times in general.
  • WG-50863 Media references in Events are now hard references and use Bulk Data Async IO API to load the media data. In the majority of cases, when you want to use an Audio Event, all the related media will be available once the asset is loaded.
  • WG-52785 WAAPI is now disabled when running a commandlet.

Miscellaneous Changes

  • WG-53093 Reduced unnecessary dialog messages when moving assets and performing asset synchronization.

Bug Fixes

  • WG-50934 Fixed : Potential crash when unloading banks in AkBankManager
  • WG-52242 Fixed: WAAPI commands sent by the Unreal Editor to move folders with names containing special characters fail.
  • WG-52305 Fixed: Various issues with asset synchronization.
  • WG-52824 Fixed: Crash when deleting large groups of assets.
  • WG-53335 Fixed: WEM Opus format not available in Codec ID dropdown of AkExternalSourceInfo.

Fixes for Community-Reported Bugs

  • WG-50334 Fixed: Assert on startup in packaged builds if loading Events while GIsInitialLoad is true.
  • WG-51258 Fixed: Crash in SoundEngine caused by media memory being freed prematurely.
  • WG-52893 Fixed: Modifications to nested Work Units are not reflected in the Wwise Picker.
  • WG-52991 Fixed: The package path stored in group values grows each time the Load() function is called directly.
  • WG-53031 Fixed: Possible crash with Event-Based Packaging when unloading a level while a Convolution Reverb is in its tail mode.
  • WG-53195 Fixed: AkGeometry's ConvertConvexMeshToGeometryData() does not fetch convex meshes and always resorts to bounding boxes.
  • WG-53444 Fixed: AkLowLevelMemory::Alloc may not return page-aligned memory.
  • WG-53585 Fixed: Not waiting on all parse tasks to finish before moving on to cooking media during SoundBank generation.
  • WG-53707 Fixed: The list of Linked Ak Events in required banks doesn't clear entries when Event assets are deleted.


Wwise Unreal Integration Documentation: Release Notes 2019.2.9.7459.1876

Release Notes 2019.2.9.7459.1876

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the 2019.2.9.7459.1876 release of the integration (in addition to upgrading to the new Unreal build).

Note:
This integration does not support experimental Unreal Engine 4 features.
Note:
This integration compiles against Unreal Engine versions 4.23 and up, but was only tested against Unreal Engine 4.25.

For earlier versions, please refer to Previous Release Notes.

  • Behavior Changes
  • Bug Fixes
  • Fixes for Community-Reported Bugs

Behavior Changes

  • WG-51199 Moved Auto Connnect to WAAPI and Auto Enable Automatic Asset Synchronization to the user-specific Wwise settings.

Bug Fixes

  • WG-47326 Fixed: In the Spatial Audio tutorials, the low pass filter on the distance attenuation of the dialogue sound is too intense.
  • WG-51371 Fixed: Cannot rename SoundBank assets in UE4 Editor.
  • WG-52226 Fixed: Spatial Audio crash when AkGeometry retrieves invalid data from mesh.
  • WG-52494 Fixed: Erroneous XML parsing when modifying the Wwise project on Editor startup.
  • WG-52529 Fixed: It's not possible to play device-specific compressed audio.
  • WG-52595 Fixed: Crash when an AkComponent is destroyed before an associated delegate callback is run on the game thread.
  • WG-52611 Fixed: New Wwise Objects are not created on the Unreal side when discovered through the GenerateSoundBanks commandlet.
  • WG-52624 Fixed: Errors during WwiseConsole Sound Data generation are reported, but generated data is still parsed and saved into assets.
  • WG-52762 Fixed: Some virtual memory is leaking due to incorrect AkMemFreeVM implementation.
  • WG-52877 Fixed: Errors parsing Work Units are not reported and cause valid assets to be scheduled for deletion.

Fixes for Community-Reported Bugs

  • WG-51695 Fixed: Modifications to nested Work Units don't appear in the Wwise Picker.
  • WG-52245 Fixed: Changes to the Wwise project structure made in the Unreal Editor are not always reflected in Wwise Authoring.


Wwise Unreal Integration Documentation: Release Notes 2019.2.8.7432.1840

Release Notes 2019.2.8.7432.1840

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the 2019.2.8.7432.1840 release of the integration (in addition to upgrading to the new Unreal build).

  • Migration Notes 2019.2.8.7432.1840
Note:
This integration does not support experimental Unreal Engine 4 features.
Note:
This integration compiles against Unreal Engine versions 4.23 and up, but was only tested against Unreal Engine 4.25.

For earlier versions, please refer to Previous Release Notes.

  • New Features
  • Behavior Changes
  • Bug Fixes

New Features

  • WG-49536 Added an option in the Integration Settings to split media by folders to reduce the number of files in a folder.
  • WG-51110 Added support for Unreal 4.26.

Behavior Changes

  • WG-51592 Disabled Event-Based Packaging by default, and removed prompt to migrate to it upon migration of an existing project.

Bug Fixes

  • WG-50752 Fixed: Issues with the parsing of nested state values in the Interactive Music hierarchy for SoundBanksInfo.xml.
  • WG-51495 Fixed: Crash when copying an event section from one Sequencer track to another.
  • WG-51670 Fixed: Spatial Audio crash when AkGeometry retrieves invalid data from mesh.
  • WG-51886 Fixed: Invalid Group Short ID on State and Switch value assets.


Wwise Unreal Integration Documentation: Migration Notes 2019.2.8.7432.1840

Migration Notes 2019.2.8.7432.1840

Using Bitcode with iOS

Since 2019.2.8, The Wwise SDK for iOS is built using XCode 12. If you are still using XCode 11, it is necessary to disable Bitcode for the shipping configuration. You can do so in the Unreal Project Settings for the iOS platform. Using the Edit > Project Settings menu, scroll the left pane until the "Platforms" section is visible. Click "iOS". In the "Build" section, disable "Support bitcode in Shipping".


Wwise Unreal Integration Documentation: Release Notes 2019.2.7.7402.1803

Release Notes 2019.2.7.7402.1803

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the 2019.2.7.7402.1803 release of the integration (in addition to upgrading to the new Unreal build).

Note:
This integration does not support experimental Unreal Engine 4 features.
Note:
This integration compiles against Unreal Engine versions 4.23 and up, but was only tested against Unreal Engine 4.25.

For earlier versions, please refer to Previous Release Notes.

  • New Features
  • API Changes
  • Performance Changes
  • Bug Fixes
  • Fixes for Community-Reported Bugs

New Features

  • WG-49997 SoundBanks now contain a list of Linked AkEvents that is visible in the Unreal property inspector.

API Changes

  • WG-51158 Added possibility to generate Sound Data from C++ using a list of events.

Performance Changes

  • WG-50843 Optimized the performance of FAkAudioDevice::Get().

Bug Fixes

  • WG-49667 Fixed: External Source Factory does not support relative paths.
  • WG-49678 Fixed: Reverb Volumes and Spatial Audio Volumes collide with raycasts and particle systems.
  • WG-50785 Fixed: Grouping Events into SoundBanks leads to duplication of SoundBank names when Sound Data Generation is done with WwiseConsole.
  • WG-50888 Fixed: String parsing error during Sound Data generation that could lead to some media files not being generated.
  • WG-50936 Fixed: When cooking sound data, a duplicate media asset is created for localized data that blocks the sound data generation.
  • WG-50995 Fixed: Access Violation in UAkAssetDataWithMedia::Load.
  • WG-51157 Fixed: Wrong argument parsing in the GenerateSoundBanks commandlet.
  • WG-51190 Fixed: FAkAudioDevice::EventToPlayingIDMap is not thread safe.
  • WG-51307 Fixed: Changing media in Wwise not reflected in Unreal after SoundData generation.
  • WG-51379 Fixed: Crash when unloading an asset that had not finished loading.
  • WG-51392 Fixed: Empty default language in the InitBank asset.
  • WG-51470 Fixed: GenerateSoundBanks commandlet automatically synchronizes assets when not using Event-Based Packaging.

Fixes for Community-Reported Bugs

  • WG-50921 Fixed: Error messages related to unloading SoundBanks when quitting the Unreal Editor.


Wwise Unreal Integration Documentation: Release Notes 2019.2.6.7381.1779

Release Notes 2019.2.6.7381.1779

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the 2019.2.6.7381.1779 release of the integration (in addition to upgrading to the new Unreal build).

Note:
This integration does not support experimental Unreal Engine 4 features.
Note:
This integration compiles against Unreal Engine versions 4.23 and up, but was only tested against Unreal Engine 4.25.

For earlier versions, please refer to Previous Release Notes.

  • New Features
  • API Changes
  • Behavior Changes
  • Bug Fixes
  • Fixes for Community-Reported Bugs

New Features

  • WG-50055 Closed portals are shown differently when selected in the editor.
  • WG-50993 New parameter in AkGeometry component called Welding Threshold. When the static mesh type is selected, the Welding Threshold can be adjusted to specify the distance between vertices that will be welded.

API Changes

  • WG-50332 WAAPI subscription ak.wwise.core.soundbank.generate now publishes all log messages, per severity.

Behavior Changes

  • WG-50108 Media assets in Unreal now use hash of the content for the dirty flag for saving. This is more reliable on projects shared via version control.
  • WG-50675 Improved the check for rebuilding missing or out-of-date assets in Event-Based Packaging.

Bug Fixes

  • WG-47325 Fixed: Reverbs used in Spatial Audio tutorials have Early Reflections enabled.
  • WG-47374 Fixed: Room tone is orphaned when Spatial Audio Room is removed.
  • WG-48701 Fixed: Diffraction not enabled by default on Surface Reflector components.
  • WG-49620 Fixed: "Master bus structure not loaded" error upon Editor initialization.
  • WG-49910 Fixed: Multiple attempts are required to successfully migrate a project to Event-Based Packaging.
  • WG-49936 Fixed: Spatial Audio mesh in the tutorials displays errors when used as a Spatial Audio Geometry
  • WG-50109 Fixed: (Windows) Crash in AkComponentCallbackManager EndOfEvent callback.
  • WG-50116 Fixed: Race condition during WAAPI Sound Data generation that could lead to broken media references.
  • WG-50283 Fixed: Crash when unloading Events or SoundBanks that have not finished loading.
  • WG-50439 Fixed: Packaging warnings related to external sources.
  • WG-50580 Fixed: Events marked as dirty when only media is regenerated.
  • WG-50619 Fixed: Sometimes the Default Language isn't set properly in the Init Bank.
  • WG-50683 Fixed: Launcher integration process does not copy XboxOne_vc150 and XboxOne_vc160 folders to the ThirdParty folder.
  • WG-50730 Fixed: AkGeometry crashes UE4 when added to large meshes.
  • WG-50796 Fixed: Crash when posting Events by name.
  • WG-50835 Fixed: When grouping Events in SoundBanks and using Event-Based Packaging, Events that do not use a required bank have no audio.
  • WG-50895 Fixed: Non-Unity build fails.

Fixes for Community-Reported Bugs

  • WG-49209 Fixed: Parentheses in package names are problematic. They are now replaced when auto-importing Wwise assets. Use commandlet SanitizeWwiseObjectPath to migrate old assets with invalid characters.


Wwise Unreal Integration Documentation: Release Notes 2019.2.5.7349.1747

Release Notes 2019.2.5.7349.1747

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the 2019.2.5.7349.1747 release of the integration (in addition to upgrading to the new Unreal build).

Note:
This integration does not support experimental Unreal Engine 4 features.
Note:
This integration compiles against Unreal Engine versions 4.23 and up, but was only tested against Unreal Engine 4.25.

For earlier versions, please refer to Previous Release Notes.

  • Bug Fixes

Bug Fixes

  • WG-49849 Fixed: Transform for AkGeometry components is not exposed in Blueprint Editor.
  • WG-49611 Fixed: Crash when unloading media that has not finished loading.
  • WG-49758 Fixed: Crash when media unloaded while it is being played by the sound engine.
  • WG-49438 Fixed: Warning message is not printed in logs when Post Event Blueprint tries to play media that's not fully loaded.
  • WG-49411 Fixed: "Stop when attached to Destroyed" input pin on Post Event node not working.
  • WG-49634 Fixed: Hang on serialization when loading levels with Ak Geometry components in editor builds.
  • WG-49991 Fixed: Crash when an AkGeometry component's parent is deleted before the component's delegate is unregistered.
  • WG-50327 Fixed: Crash during Sound Data generation when an event stops referencing a Switch Container.
  • WG-50228 Fixed: Spatial Audio: The default 'Outdoors' room is not created if there are no portals connecting to 'Outdoors', resulting in no sound transmission from sounds that are playing 'Outdoors'.
  • WG-49786 Fixed: Listener with an overridden position uses wrong position to test room and reverb volume containment.


Wwise Unreal Integration Documentation: Release Notes 2019.2.4.7329.1721

Release Notes 2019.2.4.7329.1721

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the 2019.2.4.7329.1721 release of the integration (in addition to upgrading to the new Unreal build).

Note:
This integration does not support experimental Unreal Engine 4 features.
Note:
This integration compiles against Unreal Engine versions 4.23 and up, but was only tested against Unreal Engine 4.25.

Behavior Changes

  • WG-49413 Added an option to migration to Event-Based packaging to skip the fix-up of redirectors.

Miscellaneous Changes

  • WG-49857 Added new information in the SoundBanksInfo file about the default switch value for switch containers in Event

Bug Fixes

  • WG-47623 Fixed: Events posted from an already occluded position fade in their occlusion values.
  • WG-48631 Fixed: Generating a subset of SoundBanks found in project changes the list of required plug-ins.
  • WG-48803 Fixed: Media not loaded errors with specific actions (Post Event, Post Trigger, Set State, Set Switch) in Event.
  • WG-48806 Fixed: Crash when clicking Populate in WAAPI picker while Wwise has a modal window open.
  • WG-49105 Fixed: When configuration files are under Perforce source control, Migration to Event-Based Packaging dialog always present at editor start up.
  • WG-49266 Fixed: The "Don't show this again" option in the "Re-set Wwise Path" dialog is not always saved.
  • WG-49366 Fixed: Poor handling of "Use Event-Based Packaging" checkbox in the Integration Settings.
  • WG-49384 Fixed: After migrating a project to Event-Based Packaging, the Sound Data path from "Additional non-asset directory to package" (DirectoriesToAlwaysStageAsUFS) is still set.
  • WG-49390 Fixed: Plug-in media is not packaged if used through a user-defined auxiliary send.
  • WG-49435 Fixed: Assert when generating Sound Data.
  • WG-49442 Fixed: LogStreaming errors in a packaged game.
  • WG-49730 Fixed: AkAudioEvent metadata getters (MinimumDuration, MaximumDuration, IsInfinite, and MaxAttenuationRadius) are broken.
  • WG-49735 Fixed: Assets unnecessarily marked as dirty after Sound Data generation.

Fixes for Community-Reported Bugs

  • WG-49432 Fixed: Poor handling of non-Wwise-related Drag & Drop Events.
  • WG-49604 Fixed: Hang when unloading streaming media during garbage collection.


Wwise Unreal Integration Documentation: Release Notes 2019.2.3.7304.1690

Release Notes 2019.2.3.7304.1690

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the 2019.2.3.7304.1690 release of the integration (in addition to upgrading to the new Unreal build).

Note:
This integration does not support experimental Unreal Engine 4 features.
Note:
This integration compiles against Unreal Engine versions 4.23 and up, but was only tested against Unreal Engine 4.25.

New Features

  • WG-49104 Added new async version of various PostEvent blueprints node and AkAudioDevice functions. The async version will properly wait for the media to be loaded before posting the event.

Behavior Changes

  • WG-48918 To resolve issues with missing assets at runtime, the Wwise Sound Data folder will be added automatically to the Directories to Always Cook in Packaging settings.
  • WG-49019 Removed AkPluginActivator commandlet.

Bug Fixes

  • WG-47563 Fixed: IO Hook not closing file packages properly.
  • WG-48787 Fixed: Error when loading media: "Attempt to sync load bulk data".
  • WG-48801 Fixed: Build failure during plug-in activation on Client and Server configurations.
  • WG-48914 Fixed: Minor issues in Generate SoundBank Commandlet: Work Units are parsed before the AssetRegistry is finished loading, source control module is not initialized properly, and an unnecessary dialog box appears when saving modified packages.
  • WG-48919 Fixed: Error printed during normal Editor usage when Wwise project cannot be found.
  • WG-48936 Fixed: Crash when ending play with an active room tone playing on an AkRoomComponent.
  • WG-49032 Fixed: Crash during Init bank load.
  • WG-49045 Fixed: Crash when exiting the game due to the AkBankManager.
  • WG-49060 Fixed: Crash when changing language while localized events are playing.
  • WG-49132 Fixed: When using legacy mode in Unreal, issues with WEM files in the Sound Data folder prevent SoundBank generation.
  • WG-49307 Fixed Hololens build


Wwise Unreal Integration Documentation: Release Notes 2019.2.2.7275.1661

Release Notes 2019.2.2.7275.1661

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the 2019.2.2.7275.1661 release of the integration.

Migration Notes 2019.2.2.7275.1661

Note:
This integration does not support experimental Unreal Engine 4 features.
Note:
This integration compiles against Unreal Engine versions 4.23 and up, but was only tested against Unreal Engine 4.24.

Unreal Engine 4.23/4.24/4.25 - Wwise 2019.2.2.7275.1661

  • WG-42472 HoloLens 2 platform is now supported.
  • WG-45207 Selection between the WAAPI Picker and the Wwise Project Explorer is now synchronized.
  • WG-48046 Added support for Unreal 4.25.
  • WG-48212 Fixed: (Xbox One) Visual Studio version is not properly detected in .Build.cs file.
  • WG-48229 Fixed: Error when moving a WorkUnit in Wwise that contains underscores in its name.
  • WG-48251 Fixed: Crash in the Paper2D editor plug-in when packaging or building a game.
  • WG-48403 Fixed: Error message 'ReadFile beyond EOF' appears when attempting to generate SoundBanks from the Commandlet.
  • WG-48682 Fixed: New asset types cannot be used as a variable in Blueprint.
  • WG-48745 Fixed: Crash in packaged game with "Assertion failed: AsyncLoadingThread.RecursionNotAllowed"
  • WG-48762 Fixed: Packaging error when using the AkMeter plugin


Wwise Unreal Integration Documentation: Migration Notes 2019.2.2.7275.1661

Migration Notes 2019.2.2.7275.1661

Unreal Engine 4.25

  • Due to the Android toolchain change introduced in Unreal Engine 4.25, it is necessary to change the Android SDK folder hierarchy within the ThirdParty folder. The following folders should be moved within an Android folder, and renamed accordingly:
    • Android_armeabi-v7a should be moved and renamed to Android/armeabi-v7a
    • Android_arm64-v8a should be moved and renamed to Android/arm64-v8a
    • Android_x86 should be moved and renamed to Android/x86
    • Android_x86_64 should be moved and renamed to Android/x86_64
  • If you are using Visual Studio 2019 to compile for Windows, plug-ins will need to be copied from the x64_vc150/∗/bin folders to the x64_vc160/∗/bin folders.


Wwise Unreal Integration Documentation: Release Notes 2019.2.1.7250.1621

Release Notes 2019.2.1.7250.1621

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the 2019.2.1.7250.1621 release of the integration.

Important Migration Notes 2019.2.1.7250.1621

Note:
This integration does not support experimental Unreal Engine 4 features.
Note:
This integration compiles against Unreal Engine versions 4.23 and up, but was only tested against Unreal Engine 4.24.

Unreal Engine 4.23/4.24 - Wwise 2019.2.1.7250.1621

  • WG-29995 Added support for localization.
  • WG-33506 Reworked SoundBank management
  • WG-44463 Unreal Integration now use WwiseConsole.exe instead of WwiseCLI.exe when generating SoundBanks while Wwise is not opened
  • WG-47524 Fixed: Deadlock when using Event Callbacks from Blueprint during a garbage collection phase.
  • WG-47698 (Switch) Exposed a new communication setting allowing to connect over direct HTCS for profiling in the Wwise Communication settings.
  • WG-47809 Added support for the tvOS platform
  • WG-47981 Fixed (PS4): Removed module dependency in a public header file.


Wwise Unreal Integration Documentation: Important Migration Notes 2019.2.1.7250.1621

Important Migration Notes 2019.2.1.7250.1621

New Feature: Event-Based Packaging

In Unreal Integration 2019.2, asset management comes with some important changes, including a new workflow called Event-based Packaging. Manually importing Wwise Events into the Content Browser and managing references with manually created SoundBank Unreal assets is now a thing of the past.

This new workflow automatically creates all the needed assets for your project: Events, Auxiliary Busses, Media, Init Bank, RTPC (Game Parameters), Switch Value, State Value, Trigger and Acoustic Textures. When you build the sound data, each Event and Auxiliary Bus asset contains a sound bank with no media in it. Media assets are now wrapped into their own Unreal asset, and each event has a list of the media it needs. Loading SoundBanks by hand is no longer required; if an Event or Aux Bus is referenced in a map, the necessary SoundBank data and dependent media is automatically loaded into memory.

After using the Audiokinetic Launcher to integrate Wwise into your Unreal project, the new workflow is enabled by default, and all necessary changes are automatically made to the Wwise project. Connection to WAAPI is also enabled, as it dramatically improves sound data generation performance and enables extra functionality within the integration. For more information, please refer to Changes to your Wwise Project.

Note:
In order to optimize the IO hook as much as possible in the context of the Event-Based Packaging workflow, MediaID (instead of file names) are displayed in the Loaded Media tab of the Advanced Profiler when connecting Wwise to the editor or game.

A project using an existing Wwise integration requires migrating the existing Unreal assets to the new workflow. For a large project, it is strongly recommended to perform this migration via the GenerateSoundBanks commandlet, using the -Migration switch, after updating the Wwise Unreal Integration from the Audiokinetic Launcher (see Generating SoundBanks with the GenerateSoundBanks Commandlet for more information). Note that this migration is a time-consuming process. For smaller projects, the migration can be triggered when first opening the Unreal project in the Unreal Editor after updating the Wwise Unreal Integration from the Audiokinetic Launcher. A dialog asks whether using the new workflow is desired. Clicking Yes starts the migration process.

The migration process performs the following changes to your Unreal project:

  • All necessary Unreal Assets to represent each Wwise object found in the Wwise project (Event, State, Switch, Trigger, Auxiliary Bus, and Acoustic Texture) are automatically created by default in the Content/WwiseAudio folder.
    • Existing assets that were created manually using previous Wwise Unreal Integration versions are consolidated to the newly created assets.
  • Sound Data is generated.
    • SoundBanks are generated by Wwise, and are serialized in the corresponding Unreal assets.
    • Media files are wrapped in corresponding Wwise Media Unreal assets.
    • Dependencies between Events/Auxiliary Busses and Media are created.
    • If required, changes are submitted to Source Control.

If you decide to opt-out of Event-based Packaging, the following changes are made to your Unreal and Wwise project.

  • It will create a InitBank asset that's only used to store the plugin list.
  • Generate Metadata File, Generate XML Metadata, Generate JSON Metadata, Generate Per Bank Metadata File, Include GUID, Max Attenuation and Estimated Duration will be activated in your Wwise Project Settings.


Wwise Unreal Integration Documentation: Release Notes 2019.2.0.7216.1583

Release Notes 2019.2.0.7216.1583

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the 2019.2.0.7216.1583 release of the integration.

Important Migration Notes 2019.2.0.7216.1583

Note:
This integration does not support experimental Unreal Engine 4 features.
Note:
This integration compiles against Unreal Engine versions 4.23 and up, but was only tested against Unreal Engine 4.24.

Unreal Engine 4.23/4.24 - Wwise 2019.2.0.7216.1583

  • WG-34431 It is now possible to use shared libraries in all supported Unreal platforms.
  • WG-34896 (WAAPI) Removed the SoundFrame dependency.
  • WG-42515 Updated the Unreal Spatial Audio Integration following API changes.

  • WG-42760 (Spatial Audio) Unreal AkRoomComponent now supports room tones:

    There is now a new Unreal component for Spatial Audio Geometry called AkGeometryComponent, which can be applied to StaticMeshComponents. The AkGeometryComponent sends the StaticMeshComponent's mesh to Spatial Audio.

  • WG-44742 Updated the range limits for Spatial Audio settings in Unreal and Unity.
  • WG-45586 Added the bEnableDirectPathDiffraction parameter to Spatial Audio, in order to globally enable or disable the diffraction.
  • WG-46105 This integration compiles using Unreal Engine version 4.21 and above, though it was only tested with Unreal Engine 4.23.
  • WG-47309 Fixed: Possible crash when changing an AkAudioEvent associated with a Sequencer section, using the macOS Editor.


Wwise Unreal Integration Documentation: Important Migration Notes 2019.2.0.7216.1583

Important Migration Notes 2019.2.0.7216.1583

Migrating Spatial Audio features in the Wwise Unreal Integration

Since we can configure Spatial Audio settings directly inside the Wwise authoring tool, some Spatial Audio parameters in the AkComponent are deprecated.

  • Early Reflection Order: This parameter is now global. You can find it in the initialization settings.
  • Early Reflection Max Path Length: This is not used anymore, make sure it is the same as the Attenuation Max Distance of the sounds emitted by this GameObject
  • Room Reverb Aux Bus Gain:: This parameter is now replaced by the Game-Defined Auxiliary Sends Volume in the Sound Property Editor in the Authoring
  • Diffraction Max Edges, Diffraction Max Paths and Diffraction Max Path Length: These parameters don’t exist anymore, they have been replaced by a single Enable Diffraction checkbox in the Positioning tab of the Sound Property Editor.

Blueprint Functions

The UseEarlyReflections blueprint function is deprecated. You can remove it completely and set the parameters on the Authoring tool side.


Wwise Unreal Integration Documentation: Release Notes 2019.1.11.7296.1702

Release Notes 2019.1.11.7296.1702

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the 2019.1.11.7296.1702 release of the integration (in addition to upgrading to the new Unreal build).

Note:
This integration does not support experimental Unreal Engine 4 features.

Note:
This integration compiles against Unreal Engine versions 4.25 and up, but was only tested against Unreal Engine 4.26.

As UE4.26 requires XCode 12, this Wwise integration is not supported on macOS. Projects working with UE4.26 on macOS should upgrade to the latest Wwise 2019.2.x Unreal integration.

For earlier versions, please refer to Previous Release Notes.

  • New Features
  • Behavior Changes

New Features

  • WG-52934 Added support for Unreal 4.26.

Behavior Changes

  • WG-52861 Android builds for Unreal Engine versions 4.24 and older are no longer officially supported.


Wwise Unreal Integration Documentation: Release Notes 2019.1.10.7250.1643

Release Notes 2019.1.10.7250.1643

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the 2019.1.10.7250.1643 release of the integration (in addition to upgrading to the new Unreal build).

Note:
This integration does not support experimental Unreal Engine 4 features.
Note:
This integration compiles against Unreal Engine versions 4.23 and up, but was only tested against Unreal Engine 4.25.

For earlier versions, please refer to Previous Release Notes.

  • Bug Fixes

Bug Fixes

  • WG-47623 Fixed: Events posted from an already occluded position fade in their occlusion values.
  • WG-47563 Fixed: IO Hook not closing file packages properly.


Wwise Unreal Integration Documentation: Release Notes 2019.1.9.7221.1609

Release Notes 2019.1.9.7221.1609

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the 2019.1.9.7221.1609 release of the integration (in addition to upgrading to the new Unreal build).

Migration Notes 2019.1.9.7221.1609

Note:
This integration does not support experimental Unreal Engine 4 features.

Unreal Engine 4.21/4.22/4.23/4.24/4.25 - Wwise 2019.1.9.7221.1609

  • WG-47524 Fixed: Hang when using Event Callbacks from Blueprint during a garbage collection phase.
  • WG-48046 Added support for Unreal 4.25.
  • WG-48877 Added distribution of vc_160 libraries for all Windows Wwise sound engines and plug-in static libraries. (This is required for Unreal 4.25.) Removed specific distribution of vc_120 libraries in the Crankcase plug-in.


Wwise Unreal Integration Documentation: Migration Notes 2019.1.9.7221.1609

Migration Notes 2019.1.9.7221.1609

Unreal Engine 4.25

  • Due to the Android toolchain change introduced in Unreal Engine 4.25, it is necessary to change the Android SDK folder hierarchy within the ThirdParty folder. The following folders should be moved within an Android folder, and renamed accordingly:
    • Android_armeabi-v7a should be moved and renamed to Android/armeabi-v7a
    • Android_arm64-v8a should be moved and renamed to Android/arm64-v8a
    • Android_x86 should be moved and renamed to Android/x86
    • Android_x86_64 should be moved and renamed to Android/x86_64


Wwise Unreal Integration Documentation: Release Notes 2019.1.8.7173.1554

Release Notes 2019.1.8.7173.1554

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the 2019.1.8.7173.1554 release of the integration (in addition to upgrading to the new Unreal build).

Note:
This integration does not support experimental Unreal Engine 4 features.

Unreal Engine 4.21/4.22/4.23/4.24 - Wwise 2019.1.8.7173.1554

  • WG-47309 Fixed: Possible crash when changing an AkAudioEvent associated with a Sequencer section, using the macOS Editor.


Wwise Unreal Integration Documentation: Release Notes 2019.1.7.7135.1513

Release Notes 2019.1.7.7135.1513

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the 2019.1.7.7135.1513 release of the integration (in addition to upgrading to the new Unreal build).

Note:
This integration does not support experimental Unreal Engine 4 features.

Unreal Engine 4.21/4.22/4.23/4.24 - Wwise 2019.1.7.7135.1513

  • WG-45876 Fixed: Added missing URIs from the WAAPI URI list in the Blueprint.
  • WG-46047 Added support for UE4.24.
  • WG-46662 Fixed: The loading of the init bank now happens earlier in the init process.


Wwise Unreal Integration Documentation: Release Notes 2019.1.6.7110.1478

Release Notes 2019.1.6.7110.1478

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the 2019.1.6.7110.1478 release of the integration (in addition to upgrading to the new Unreal build).

Note:
This integration does not support experimental Unreal Engine 4 features.

Unreal Engine 4.21/4.22/4.23 - Wwise 2019.1.6.7110.1478

No updates to the Unreal Integration for Wwise 2019.1.6.


Wwise Unreal Integration Documentation: Release Notes 2019.1.5.7093.1459

Release Notes 2019.1.5.7093.1459

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the 2019.1.5.7093.1459 release of the integration (in addition to upgrading to the new Unreal build).

Note:
This integration does not support experimental Unreal Engine 4 features.

Unreal Engine 4.21/4.22/4.23 - Wwise 2019.1.5.7093.1459

  • WG-44704 (Switch) Fixed crash when enabling multi-core rendering.
  • WG-44792 Prevented unnecessary modifications in DefaultGame.ini.
  • WG-44937 Fixed hang when shutting down engine.
  • WG-45030 Properly return playing ID in PostAndWaitForEndOfEvent.
  • WG-45095 Removed Python warning when cooking.
  • WG-45549 (PS4) Changed default value for ACP Batch Buffer Size.


Wwise Unreal Integration Documentation: Release Notes 2019.1.4.7065.1430

Release Notes 2019.1.4.7065.1430

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the 2019.1.4.7065.1430 release of the integration (in addition to upgrading to the new Unreal build).

Note:
This integration does not support experimental Unreal Engine 4 features.

Unreal Engine 4.21/4.22/4.23 - Wwise 2019.1.4.7065.1430

  • WG-43178 Added preliminary support for Stadia (please contact Audiokinetic support for access).
  • WG-44197 Added support for Unreal 4.23.
  • WG-44645 Fixed: Unknown listener ID error message printed when playing sounds with rooms and portals.
  • WG-44675 Reduced log spam when WAAPI in unavailable.
  • WG-44783 Fixed migration of Wwise installation path from project settings to per-user settings.
  • WG-44830 Added overload to AK::SoundEngine::RegisterPluginDLL allowing registration of a plug-in in a specific path.


Wwise Unreal Integration Documentation: Release Notes 2019.1.3.7048.1409

Release Notes 2019.1.3.7048.1409

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the 2019.1.3.7048.1409 release of the integration (in addition to upgrading to the new Unreal build).

Note:
This integration does not support experimental Unreal Engine 4 features.

Unreal Engine 4.21/4.22 - Wwise 2019.1.3.7048.1409

  • WG-43403 You're now prevented from adding an AkAudioEvent to a Niagara timeline using drag and drop.
  • WG-43602 Removed log messages when SoundBanks contain no events.
  • WG-44056 Because the only way to load a shared library on Magic Leap is through the mabu file, its implementation of getPluginDLLPath() is replaced by an error message that describes this.
  • WG-44118 Fixed Load Bank and Unload Bank blueprint node that didn't resolve properly when using the string argument.
  • WG-43178 Added preliminary support for Stadia.


Wwise Unreal Integration Documentation: Release Notes 2019.1.2.7018.1378

Release Notes 2019.1.2.7018.1378

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the 2019.1.2.7018.1378 release of the integration (in addition to upgrading to the new Unreal build).

Note:
This integration does not support experimental Unreal Engine 4 features.

Unreal Engine 4.21/4.22 - Wwise 2019.1.2.7018.1378

  • WG-42524 Ensured AK Event and RTPC sequencer tracks are not available in the Niagara editor.
  • WG-42885 Exposed the External Sources API to Blueprint
  • WG-43007 Exposed WAAPI IP address and port to the Wwise User Settings window.
  • WG-43682 Fixed crash when closing game with active streaming sounds
  • WG-43725 Fixed repeated playback of Wwise events with unknown durations.
  • WG-43878 Enabled creating an AkEvent Sequencer section that is not linked to any AkEvent.
  • WG-39214 Exposed Suspend and WakeupFromSuspend to FAkAudioDevice.


Wwise Unreal Integration Documentation: Release Notes 2019.1.1.6977.1336

Release Notes 2019.1.1.6977.1336

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the 2019.1.1.6977.1336 release of the integration (in addition to upgrading to the new Unreal build).

Note:
This integration does not support experimental Unreal Engine 4 features.

Unreal Engine 4.21/4.22 - Wwise 2019.1.1.6977.1336

  • WG-42262 Ensured occlusion Raycasts ignore PlayerController.
  • WG-42728 Fixed: Build issues when plug-in is installed as an engine plug-in.
  • WG-42747 Made Spatial Audio options visible in AkComponent properties.


Wwise Unreal Integration Documentation: Release Notes 2019.1.0.6947.1305

Release Notes 2019.1.0.6947.1305

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the 2019.1.0.6947.1305 release of the integration (in addition to upgrading to the new Unreal build).

Note:
This integration does not support experimental Unreal Engine 4 features.

Unreal Engine 4.21/4.22 - Wwise 2019.1.0.6947.1305

  • Added support for Unreal Engine 4.22


Wwise Unreal Integration Documentation: Release Notes 2019.1.0.6947.1299

Release Notes 2019.1.0.6947.1299

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the 2019.1.0.6947.1299 release of the integration (in addition to upgrading to the new Unreal build).

Note:
This integration does not support experimental Unreal Engine 4 features.

Unreal Engine 4.21 - Wwise 2019.1.0.6947.1299

  • WG-31477 Added Project Settings options for configuring the generated SoundBank folder.
  • WG-36379 Exposed initialization settings via the UI.
  • WG-36438 Modified AnimNotify_AkEvent to log a warning when it creates the AkComponent. For more information, see Triggering Wwise Events in Animation Sequences.
  • WG-37825 Exposed GetRTPCValue to Blueprint.
  • WG-38260 Exposed initialization settings to the UI.
  • WG-38693 Fixed: (WAAPI) Race condition in AkAutobahn, as used in various integrations and samples.
  • WG-40368 Fixed: AK::SoundEngine::SetSpeakerAngles parameter in_pfSpeakerAngles. It is now const AkReal32* instead of AkReal32*.
  • WG-40554 Made the SoundBank generation process non-blocking.
  • WG-40869 Added a new Blueprint function, SetMultipleSpeakerEmitterPositions, which works like SetMultipleChannelEmittePositions but directly accepts a speaker mask instead of a channel configuration.


Wwise Unreal Integration Documentation: Release Notes 2018.1.7.6880.1266

Release Notes 2018.1.7.6880.1266

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed between the 2018.1.6.6858.1242 and the {WWISE_MAJOR}.{WWISE_MINOR}.{WWISE_SUBMINOR}.{WWISE_BUILD}.{UNREAL_BUILD} release of the integration (in addition to upgrading to the new Unreal build).

Note:
This integration does not support experimental Unreal Engine 4 features.

Unreal Engine 4.19/4.20/4.21/4.22 - Wwise 2018.1.7.6880.1266

  • WG-41693 Added support for Unreal Engine 4.22.
  • WG-42262 Ensured occlusion Raycasts ignore PlayerController.
  • WG-42728 Fixed: Build issues when plug-in is installed as an engine plug-in.
  • WG-42747 Made Spatial Audio options visible in AkComponent properties.


Wwise Unreal Integration Documentation: Release Notes 2018.1.6.6858.1242

Release Notes 2018.1.6.6858.1242

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed between the 2018.1.5.6835.1218 and the 2018.1.6.6858.1242 release of the integration (in addition to upgrading to the new Unreal build).

Note:
This integration does not support experimental Unreal Engine 4 features.

Unreal Engine 4.19/4.20/4.21 - Wwise 2018.1.6.6858.1242

  • WG-40782 Changed Blueprint's AkCallbackInfo to be pooled and created on demand.
  • WG-41003 Removed "Structure member is not initialized properly" warnings.
  • WG-41101 Reduced compile time by stopping use of monolithic headers.
  • WG-41204 Fixed: An Unreal window hangs when running in headless mode and the Wwise Project path is empty.
  • WG-41245 Fixed: In Wwise Demo Game, WAAPI subscriptions to boolean calls do not return a call failed message.
  • WG-41259 Removed Wwise Motion from the Integration Demo.
  • WG-41339 Fixed: Sequencer Event clips continuously retrigger when clip length exceeds Event duration.


Wwise Unreal Integration Documentation: Release Notes 2018.1.5.6835.1218

Release Notes 2018.1.5.6835.1218

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed between the 2018.1.4.6807.1189 and the 2018.1.5.6835.1218 release of the integration (in addition to upgrading to the new Unreal build).

Note:
This integration does not support experimental Unreal Engine 4 features.

Unreal Engine 4.19/4.20/4.21 - Wwise 2018.1.5.6835.1218

  • WG-38420 Fixed: Crash when Sequencer AkAudioEvent section is garbage collected while playing.
  • WG-39056 Lists of available properties in the WAAPI widgets have been updated.
  • WG-40197 Ensured the occlusion or obstruction values are properly being set depending on the use of SpatialAudio rooms.
  • WG-40318 Fixed: WAAPI Picker does not refresh.
  • WG-40420 Fixed: Crash when creating a new actor with AkRoom and AkLateReveb components.
  • WG-40542 Added a nice error when you try to generate your first SoundBank with no Event referenced in it.


Wwise Unreal Integration Documentation: Release Notes 2018.1.4.6807.1189

Release Notes 2018.1.4.6807.1189

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed between the 2018.1.3.6784.1177 and the 2018.1.4.6807.1189 release of the integration (in addition to upgrading to the new Unreal build).

Unreal Engine 4.19/4.20/4.21 - Wwise 2018.1.4.6807.1189

  • WG-39671: Exposed ExecuteActionOnEvent to Blueprint.
  • WG-40333: Ensured all PostEvent calls go through the Callback Manager.
  • WG-40344: Exposed GetSpeakerAngles and SetSpeakerAngles in Blueprint.
  • WG-40365: Changed SoundBank generation message to make it clearer that the SoundBank can be generated but still have errors.
  • WG-40380: Prevented crash when calling PostAkEventAndWaitForEnd with an invalid AkEvent.


Wwise Unreal Integration Documentation: Release Notes 2018.1.3.6784.1177

Release Notes 2018.1.3.6784.1177

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed between the 2018.1.3.6784.1153 and the 2018.1.3.6784.1177 release of the integration (in addition to upgrading to the new Unreal build).

Unreal Engine 4.19/4.20/4.21 - Wwise 2018.1.3.6784.1177

  • Added support for Unreal 4.21
  • WG-38379: Added a new Wwise setting for the default Occlusion Collision Channel value used by Ak Component.
  • WG-38497: Improved stability of the Sequencer while playing and moving around AkAudioEvent.
  • WG-38746: Added setting to allow using Multi-core rendering.
  • WG-39181: Fixed: Crash when resizing an AkAudioEvent section in the sequencer to its minimum width.
  • WG-39408: Wwise Installation Path can now be configured per user. Use Wwise User Settings in the Project Settings to edit the Wwise installation path.
  • WG-39669: Added parameter restrictions to Wall Occlusion in Ak Room component and Send Level in Ak Late Reverb Component.
  • WG-39713: UAkAuxBus no longer causes premature initialization of FAkAudioDevice.
  • WG-40128: Fixed: File handle leak in the IO hook.


Wwise Unreal Integration Documentation: Release Notes 2018.1.3.6784.1153

Release Notes 2018.1.3.6784.1153

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed between the 2018.1.2.6762.1124 and the 2018.1.3.6784.1153 release of the integration (in addition to upgrading to the new Unreal build).

Unreal Engine 4.19/4.20 - Wwise 2018.1.3.6784.6784.1153

  • WG-36728 Added a Commandlet allowing to generate SoundBanks from the command line.
  • WG-39113 Fixed: (iOS, Linux, macOS) No audio for Shipping configuration.
  • WG-39715 Added a checkbox allowing to disable Spatial Audio on an AkComponent. This allows the use of SetMultiplePositions on such a component.
  • WG-39833 Fixed: Reduced the number of calls to SetAuxSends when unnecessary.


Wwise Unreal Integration Documentation: Release Notes 2018.1.2.6762.1124

Release Notes 2018.1.2.6762.1124

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed between the 2018.1.1.6727.1082 and the 2018.1.2.6762.1124 release of the integration (in addition to upgrading to the new Unreal build).

Unreal Engine 4.19/4.20 - Wwise 2018.1.2.6762.1124

  • WG-37990 Fixed: (Xbox One) Crash when loading large SoundBank in a packaged game not using PAK files.
  • WG-38420 Fixed: Crash when Sequencer AkAudioEvent section is garbage collected while playing.
  • WG-38693 Fixed: (WAAPI) Race condition in AkAutobahn, as used in various integrations and samples.
  • WG-39055 Fixed: Display issue where waveform in Sequencer sections would render over text.
  • WG-39091 Fixed: Made RoomComponent and LateReverbComponent compatible with level streaming.
  • WG-39097 Fixed: Removed build warnings about missing samples folder.
  • WG-39115 Fixed: Obstruction refresh issue on Portals.
  • WG-39170 Fixed: Invalid argument passed to UnloadBank.
  • WG-39219 Fixed: WAAPI reconnection issue when Wwise Authoring is quickly restarted.
  • WG-39301 Fixed: CancelEventCallbackCookie does not properly use user-supplied cookies to cancel.
  • WG-39334 Re-enabled Opus codec on Android and Mac.
  • WG-39393 Fixed: (Switch) Invalid State Group ID.
  • WG-39604 Fixed: Added description to PostAndWaitForEndOfEvent.


Wwise Unreal Integration Documentation: Release Notes 2018.1.1.6727.1082

Release Notes 2018.1.1.6727.1082

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed between the 2018.1.0.6714.1065 and the 2018.1.1.6727.1082 release of the integration (in addition to upgrading to the new Unreal build).

Unreal Engine 4.19/4.20 - Wwise 2018.1.1.6727.1082

  • WG-32970 (Xbox One) Removed warnings when building.
  • WG-38486 Fixed: Crash when removing an always-loaded level that uses AkRoomComponents and/or AkLateReverbComponents.
  • WG-38741 Fixed: Hang on initialization due to some critical sections being initialized before AK::SoundEngine::Init.
  • WG-38805 Corrected Integration to unregister all global callbacks after terminating sound engine.
  • WG-39228 Fixed: WAAPI crash when closing Wwise Authoring and Unreal editor simultaneously.


Wwise Unreal Integration Documentation: Release Notes 2018.1.0.6714.1065

Release Notes 2018.1.0.6714.1065

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the 2018.1.0.6714.1065 release of the integration (in addition to upgrading to the new Unreal build).

Unreal Engine 4.19/4.20 - Wwise 2018.1.0.6714.1065

  • Added support for Unreal Engine 4.20.
  • WG-30002 Added support for audio input using the Wwise Audio Input plug-in. See Providing Audio Input to Wwise.
  • WG-33507 Exposed Event and SoundBank callbacks to Blueprint. See Using Callbacks in Blueprints for more information.
  • WG-34570 Added ability to register to the global callback via delegates.
  • WG-35615 At sound engine initialization time the floor plane can be set using a new value in AkInitSettings. The Audiokinetic Unreal integration sets this value, in AkAudioDevice.cpp, to use X-Y as the floor plane.
  • WG-38608 Added experimental support for Lumin.
  • WG-38676 Fixed: Changing Spatial Audio Volume shape makes Unreal Editor freeze.


Wwise Unreal Integration Documentation: Release Notes 2017.2.9.6726.1089

Release Notes 2017.2.9.6726.1089

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed between the 2017.2.8.6698.1053 and the 2017.2.9.6726.1089 release of the integration (in addition to upgrading to the new Unreal build).

Unreal Engine 4.17/4.18/4.19/4.20/4.21 - Wwise 2017.2.9.6726.1089

  • Added support for Unreal 4.21.
  • WG-38420 Fixed: Crash when Sequencer AkAudioEvent section is garbage collected while playing.
  • WG-39408 Wwise Installation Path can now be configured per user. Use Wwise User Settings in the Project Settings to edit the Wwise installation path.
  • WG-40128 Fixed: File handle leak in the IO hook.


Wwise Unreal Integration Documentation: Release Notes 2017.2.8.6698.1053

Release Notes 2017.2.8.6698.1053

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed between the 2017.2.7.6667.1010 and the 2017.2.8.6698.1053 release of the integration (in addition to upgrading to the new Unreal build).

Unreal Engine 4.17/4.18/4.19/4.20 - Wwise 2017.2.8.6698.1053

  • WG-36728 Added a Commandlet allowing to generate SoundBanks from the command line.
  • WG-37990 Fixed: (Xbox One) Crash when loading large SoundBank in a packaged game not using PAK files.
  • WG-38420 Fixed: Crash when Sequencer AkAudioEvent section is garbage collected while playing.
  • WG-39091 Made RoomComponent and LateReverbComponent compatible with level streaming.
  • WG-39097 Removed build warnings about missing samples folder.
  • WG-39113 Fixed: (iOS, Linux, macOS) No audio for Shipping configuration.
  • WG-39115 Fixed: Obstruction refresh issue on Portals.
  • WG-39170 Fixed: Invalid argument passed to UnloadBank.
  • WG-39301 Fixed: CancelEventCallbackCookie does not properly use user-supplied cookies to cancel.
  • WG-39393 Fixed: (Switch) Invalid State Group ID.
  • WG-39833 Fixed: Reduced the number of calls to SetAuxSends when unnecessary.


Wwise Unreal Integration Documentation: Release Notes 2017.2.7.6667.1010

Release Notes 2017.2.7.6667.1010

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed between the 2017.2.6.6636.979 and the 2017.2.7.6667.1010 release of the integration (in addition to upgrading to the new Unreal build).

Unreal Engine 4.17/4.18/4.19 - Wwise 2017.2.7.6667.1010

  • Added support for Unreal Engine 4.20.
  • WG-38486: Fixed: Crash when removing an always-loaded level that uses AkRoomComponents and/or AkLateReverbComponents.
  • WG-38608: Added experimental support for Lumin.
  • WG-38676: Fixed: Changing Spatial Audio Volume shape makes Unreal Editor freeze.


Wwise Unreal Integration Documentation: Release Notes 2017.2.6.6636.979

Release Notes 2017.2.6.6636.979

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed between the 2017.2.5.6619.962 and the 2017.2.6.6636.979 release of the integration (in addition to upgrading to the new Unreal build).

Unreal Engine 4.17/4.18/4.19 - Wwise 2017.2.6.6636.979

  • WG-37921 Fixed hang on teardown.
  • WG-38187 Fixed enabling/disabling of occlusion using the OcclusionRefreshInterval.
  • WG-38282 Increased stack size to 1 MB on Switch platform.
  • WG-38418 Fixed unload bank failed error when quitting game.


Wwise Unreal Integration Documentation: Release Notes 2017.2.5.6619.962

Release Notes 2017.2.5.6619.962

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed between the 2017.2.4.6590.933 and the 2017.2.5.6619.962 release of the integration (in addition to upgrading to the new Unreal build).

Unreal Engine 4.17/4.18/4.19 - Wwise 2017.2.5.6619.962

  • WG-37624 Allowed to perform an asset diff on the Wwise .uasset files.
  • WG-37736 Reorganized some WAAPI Blueprint nodes under the "Audiokinetic" category.
  • WG-37790 Fixed bad listener handling that caused Spatial Audio failures in editor.
  • WG-37808 Fixed errors for WAAPI builds on Visual Studio 2017.
  • WG-37917 Ensured the plug-in compiles when the game does not use precompiled headers.
  • WG-38041 Fixed crash when performing occlusion calculations.
  • WG-38142 Fixed crash due to initialization of AkOcclusionObstructionService not binding SetOcclusionObstructionFcn when refresh interval is 0.


Wwise Unreal Integration Documentation: Release Notes 2017.2.4.6590.933

Release Notes 2017.2.4.6590.933

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed between the 2017.2.3.6575.917 and the 2017.2.4.6590.933 release of the integration (in addition to upgrading to the new Unreal build).

Unreal Engine 4.17/4.18/4.19 - Wwise 2017.2.4.6590.933

  • WG-37256 AK::SpatialAudio::SetPortal error incorrectly reported when starting game in Editor.
  • WG-37453 Fixed Auxiliary Busses not working in PIE session while running a dedicated server.
  • WG-37561 Ensured Room and LateReverb component work properly with the garbage collector.


Wwise Unreal Integration Documentation: Release Notes 2017.2.3.6575.917

Release Notes 2017.2.3.6575.917

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed between the 2017.2.2.6553.895 and the 2017.2.3.6575.917 release of the integration (in addition to upgrading to the new Unreal build).

Unreal Engine 4.17/4.18/4.19 - Wwise 2017.2.3.6575.917

  • Added support for Unreal Engine 4.19.
  • WG-36727 Excluded WAAPI from Visual Studio 2017 builds.
  • WG-36883 Moved occlusion raycasts into an async task.
  • WG-37088 Changed to use GEngine->GetFirstLocalPlayerController() instead of UWorld->GetFirstPlayerController().
  • WG-37246 Fixed editor crash when starting with -nosound flag.


Wwise Unreal Integration Documentation: Release Notes 2017.2.2.6553.895

Release Notes 2017.2.2.6553.895

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed between the 2017.2.1.6524.866 and the 2017.2.2.6553.895 release of the integration (in addition to upgrading to the new Unreal build).

Unreal Engine 4.17/4.18 - Wwise 2017.2.2.6553.895

  • WG-35044 Made the behavior of overlapping reverb volumes sharing the same Auxiliary Bus more deterministic.
  • WG-36335 Removed unnecessary logs.
  • WG-36369 Added missing include in AkAudioDevice.h.
  • WG-36429 Replaced LoadModuleChecked with GetModulePtr in FAkAudioDevice::Init().
  • WG-36494 Made FAkAudioStyle into a singleton to avoid a non-editor crash.


Wwise Unreal Integration Documentation: Release Notes 2017.2.1.6524.866

Release Notes 2017.2.1.6524.866

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed between the 2017.2.0.6500.836 and the 2017.2.1.6524.866 release of the integration (in addition to upgrading to the new Unreal build).

Unreal Engine 4.17/4.18 - Wwise 2017.2.1.6524.866

  • WG-34960 Removed min and max properties in AkSlider widget, which are now automatically set via WAAPI.
  • WG-35238 Fixed: All open AkEvent Sequencer segments update to dirty when changes are detected in their Work Units.
  • WG-35773 Added bounds to theUAkComponent::UseEarlyReflections order parameter.
  • WG-35949 Added ability to generate a single SoundBank containing only an Auxiliary Bus.
  • WG-36083 Removed WAAPI log spam when generating SoundBanks while the Sequencer window is open.
  • WG-36200 Fixed crash when running editor with -game flag.
  • WG-36357 Changed Launcher to now copy Visual Studio 2017 dependencies to ThirdParty folder.
  • WG-36415 Fixed crash in Unreal when adding new AkSlider in UMG


Wwise Unreal Integration Documentation: Release Notes 2017.2.0.6500.836

Release Notes 2017.2.0.6500.836

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the 2017.2.0.6500.836 release of the integration (in addition to upgrading to the new Unreal build).

Migration Notes 2017.2.0.6500.836

Unreal Engine 4.17/4.18 - Wwise 2017.2.0.6500.836

  • Improved listener handling while in the Editor. See Using the Editor Listener for more information.
  • Added a new WAAPI-enabled Wwise picker. See Using Waapi Features for more information.
  • Improved Sequencer integration with scrubbing and 'play from anywhere' support. See Using the Level Sequencer for more information.
  • Added WAAPI-enabled waveform rendering to AkAudioEventSection Sequencer sections. See Using the Level Sequencer for more information.
  • Exposed WAAPI to Blueprint. See WAAPI Blueprint Functions for more information.
  • Added WAAPI-enabled widgets for use in UMG. See WAAPI Widgets for more information.
  • WG-30009 Fixed: Added support for multiple listeners via Blueprint.
  • WG-30010 Fixed: SetMultiplePositions is now exposed in Blueprint.
  • WG-33932 Fixed: Removed the experimental alternate occlusion feature.
  • WG-34745 Fixed: Reduced Lower Engine memory pool size on mobile platforms.
  • WG-34879 Fixed: Exposed the collision channel used for the occlusion line trace in AkComponent's properties.
  • WG-35104 Fixed: Fixed listeners to be properly handled in a multiplayer scenario.
  • WG-35307 Fixed: Added more configurations to the Set Bus Config Blueprint node.
  • WG-35614 Fixed: Removed coordinates conversion. See Migrating to the new coordinate system. for more information.


Wwise Unreal Integration Documentation: Migration Notes 2017.2.0.6500.836

Migration Notes 2017.2.0.6500.836

Migrating to the new coordinate system.

A coordinate system conversion has been removed from the 2017.2.0 integration. This conversion was put in place to convert from the left-hand axis system used in Unreal Engine 4 (with the X and Y axes being the floor) to the default left-hand system used in Wwise Game Object 3D Viewer (with the X and Z axes being the floor). In order for the Wwise Game Object 3D Viewer to properly display Game Objects from Unreal, please go to the Game Object 3D Viewer settings and set the Floor Plane to X-Y:

Migrating Ak Acoustic Portal objects

Please note that in Wwise 2017.2.0, Spatial Audio Portals have a distinct orientation. The Portal's local Y-axis is the axis along which two adjacent Rooms are linked. It will be necessary to examine all existing Portals, and rotate (by 90 degrees, along the Z-axis) those that are not properly aligned in order to link Rooms along the Y-axis. A new visualization component has been added to the Portals to make the orientation of the Portal immediately apparent to the user. Portals that are incorrectly aligned may behave unexpectedly or return errors when sent to Wwise Spatial Audio.


Wwise Unreal Integration Documentation: Release Notes 2017.1.9.6501.856

Release Notes 2017.1.9.6501.856

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed between the 2017.1.8.6488.843 and the 2017.1.9.6501.856 release of the integration (in addition to upgrading to the new Unreal build).

Unreal Engine 4.15/4.16/4.17/4.18/4.19 - Wwise 2017.1.9.6501.856

  • No updates to the Unreal Integration for Wwise 2017.1.9.


Wwise Unreal Integration Documentation: Release Notes 2017.1.8.6488.843

Release Notes 2017.1.8.6488.843

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed between the 2017.1.7.6467.822 and the 2017.1.8.6488.843 release of the integration (in addition to upgrading to the new Unreal build).

Unreal Engine 4.15/4.16/4.17/4.18/4.19 - Wwise 2017.1.8.6488.843

  • LAUN-858 Fixed: Install both Visual Studio 2015 and 2017 Wwise SDKs in the Unreal project.


Wwise Unreal Integration Documentation: Release Notes 2017.1.7.6467.822

Release Notes 2017.1.7.6467.822

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed between the 2017.1.6.6446.801 and the 2017.1.7.6467.822 release of the integration (in addition to upgrading to the new Unreal build).

Unreal Engine 4.15/4.16/4.17/4.18 - Wwise 2017.1.7.6467.822

  • Added support for Unreal Engine 4.19.


Wwise Unreal Integration Documentation: Release Notes 2017.1.6.6446.801

Release Notes 2017.1.6.6446.801

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed between the 2017.1.5.6429.783 and the 2017.1.6.6446.801 release of the integration (in addition to upgrading to the new Unreal build).

Unreal Engine 4.15/4.16/4.17/4.18 - Wwise 2017.1.6.6446.801

  • WG-35044 Made the behavior of overlapping reverb volumes sharing the same Auxiliary Bus more deterministic.
  • WG-36446 Fixed: Crash when switching from map with SpatialAudioVolume to map without one.


Wwise Unreal Integration Documentation: Release Notes 2017.1.5.6429.783

Release Notes 2017.1.5.6429.783

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed between the 2017.1.4.6407.760 and the 2017.1.5.6429.783 release of the integration (in addition to upgrading to the new Unreal build).

Unreal Engine 4.15/4.16/4.17/4.18 - Wwise 2017.1.5.6429.783

  • WG-36016 Fixed error message about unknown game object ID when loading an empty map.
  • WG-36200 Fixed crash when running editor with -game flag.


Wwise Unreal Integration Documentation: Release Notes 2017.1.4.6407.760

Release Notes 2017.1.4.6407.760

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed between the 2017.1.3.6377.732 and the 2017.1.4.6407.760 release of the integration (in addition to upgrading to the new Unreal build).

Unreal Engine 4.15/4.16/4.17/4.18 - Wwise 2017.1.4.6407.760

  • WG-33333 Removed obsolete code that tried to handle global focus.
  • WG-34745 Reduced Lower Engine memory pool size on mobile platforms.
  • WG-34879 Exposed the collision channel used for occlusion line trace in AkComponent's properties.
  • WG-35035 Ensured setting the occlusion refresh interval to 0 from Blueprint correctly disables the feature.
  • WG-35104 In a multiplayer scenario, listeners are now properly handled.
  • WG-35463 Fixed: Portals not working on 32-bit platforms.
  • WG-35473 Now register game objects only when the world is valid.
  • WG-35614 Removed coordinates conversion. See Migrating to the new coordinate system. for more information.


Wwise Unreal Integration Documentation: Release Notes 2017.1.3.6377.732

Release Notes 2017.1.3.6377.732

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed between the 2017.1.3.6377.715 and the 2017.1.3.6377.732 release of the integration (in addition to upgrading to the new Unreal build).

Unreal Engine 4.15/4.16/4.17/4.18 - Wwise 2017.1.3.6377.732

  • Added support for Unreal 4.18.
  • WG-35104 Fixed: Do not create a listener on a dedicated server.
  • WG-35272 Fixed: Added support for Android 64-bit builds.
  • WG-35286 Fixed: Avoid crash when having a Add Surface Reflector Set Component Blueprint node connected to nothing.


Wwise Unreal Integration Documentation: Release Notes 2017.1.3.6377.715

Release Notes 2017.1.3.6377.715

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed between the 2017.1.2.6361.696 and the 2017.1.3.6377.715 release of the integration (in addition to upgrading to the new Unreal build).

Unreal Engine 4.15/4.16/4.17 - Wwise 2017.1.3.6377.715

  • WG-34797 Undoing a surface deletion on a Spatial Audio Volume properly refreshes its details panel.
  • WG-34810 Late Reverb Component properties are now properly serialized.
  • WG-34878, WG-34906 Sounds are now properly spatialized in a Play in Editor session.
  • WG-34907 Performance improvement for FAkAudioDevice::Get().


Wwise Unreal Integration Documentation: Release Notes 2017.1.2.6361.696

Release Notes 2017.1.2.6361.696

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed between the 2017.1.1.6340.673 and the 2017.1.2.6361.696 release of the integration (in addition to upgrading to the new Unreal build).

Unreal Engine 4.15/4.16/4.17 - Wwise 2017.1.2.6361.696

  • WG-32413 Fixed: Cannot hear sounds in the Content Browser and the Animation Editor.
  • WG-33970 Fixed: (Mac) Crash when running game with PAK files.
  • WG-34030 Fixed: Properly update the details panel when a surface is removed from an AkSpatialAudioVolume.
  • WG-34083 Fixed: Refresh issue when changing a Spatial Audio Volume's geometry properties.
  • WG-34213 Fixed: Sounds can now be heard from the Content Browser and the Animation Editor.
  • WG-34222 Virtual Acoustics factory ShareSets now appear in the Wwise Picker.
  • WG-34276 Added ability to allow posted Events to continue playing past their associated sections within Level Sequences.
  • WG-34605 Fixed: Portals are not pushed to Wwise Spatial Audio when starting a game, in some circumstances.
  • WG-34630 Fixed: Crash when -nosound option is enabled.
  • WG-34703 Fixed: Prevent crash when modifying multiple SpatialAudioVolumes at the same time.
  • WG-34704 Fixed: Prevent crash when unregistering an AkComponent that is a default listener.
  • WG-34745 Fixed: Reduced lower engine memory pool size.


Wwise Unreal Integration Documentation: Release Notes 2017.1.1.6340.673

Release Notes 2017.1.1.6340.673

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed between the 2017.1.0.6302.628 and the 2017.1.1.6340.673 release of the integration (in addition to upgrading to the new Unreal build).

Unreal Engine 4.15/4.16/4.17 - Wwise 2017.1.1.6340.673

  • Added support for Unreal Engine 4.17
  • Since Unreal 4.17, the Unreal audio system needs to be disabled on the Xbox One and Switch platforms. Please refer to Frequently Asked Questions for more information.
  • WG-34098 (Mac) An AkComponent located at exactly the same position as a volume with an AkRoomComponent will be properly assigned to that room.
  • WG-34119 Fixed: Uninitialized listener ID value sent to SpatialAudio API via SetEmitterAuxSendValues.
  • WG-34368 Fixed: FAkAudioDevice::PostEventAtLocation does not register game object.
  • WG-34388 Fixed: Crash in Editor when resetting RTPC sequence name to default in Level Sequencer.


Wwise Unreal Integration Documentation: Release Notes 2017.1.0.6302.628

Release Notes 2017.1.0.6302.628

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the 2017.1.0.6302.628 release of the integration (in addition to upgrading to the new Unreal build).

Unreal Engine 4.15/4.16 - Wwise 2017.1.0.6302.628

  • Added Spatial Audio components. See Wwise Spatial Audio Objects for more information.
  • WG-32095: Added support for Visual Studio 2017
  • WG-32388 Fixed: Properly parse Max attenuation radius when generating SoundBanks.


Wwise Unreal Integration Documentation: Release Notes 2016.2.6.6153.513

Release Notes 2016.2.6.6153.513

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed between the 2016.2.5.6121.484 and the 2016.2.6.6153.513 release of the integration (in addition to upgrading to the new Unreal build).

Unreal Engine 4.15/4.16/4.17/4.18 - Wwise 2016.2.6.6153.513

  • Added support for Unreal 4.18
  • WG-33970 Fixed: Crash on Mac when running game with PAK files.
  • WG-34907 Fixed: Performance improvement in FAkAudioDevice::Get().


Wwise Unreal Integration Documentation: Release Notes 2016.2.5.6121.484

Release Notes 2016.2.5.6121.484

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed between the 2016.2.5.6121.471 and the 2016.2.5.6121.484 release of the integration (in addition to upgrading to the new Unreal build).

Unreal Engine 4.15/4.16/4.17 - Wwise 2016.2.5.6121.484

  • Removed support for UE 4.12, 4.13 and 4.14
  • Added support for UE 4.17
  • Since Unreal 4.17, the Unreal audio system needs to be disabled on the Xbox One and Switch platforms. Please refer to Frequently Asked Questions for more information.
  • WG-34388 Fixed: Crash in Editor when resetting RTPC sequence name to default in Level Sequencer.


Wwise Unreal Integration Documentation: Release Notes 2016.2.5.6121.471

Release Notes 2016.2.5.6121.471

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed between the 2016.2.4.6098.451 and the 2016.2.5.6121.471 release of the integration (in addition to upgrading to the new Unreal build).

Unreal Engine 4.12/4.13/4.14/4.15/4.16 - Wwise 2016.2.5.6121.471

  • WG-32388 Fixed: Max Attenuation does not update Events that call Switches.
  • WG-32554 Fixed: Crash with AkComponent::UpdateGameObjectPosition when cooking Unreal project.


Wwise Unreal Integration Documentation: Release Notes 2016.2.4.6098.451

Release Notes 2016.2.4.6098.451

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed between the 2016.2.3.6077.435 and the 2016.2.4.6098.451 release of the integration (in addition to upgrading to the new Unreal build).

Unreal Engine 4.12/4.13/4.14/4.15/4.16 - Wwise 2016.2.4.6098.451

  • Added support for Unreal Engine 4.16
  • WG-31942 Fixed: Added support for Wwise file packages.
  • WG-33251 Fixed: Added missing include files when building non-Unity builds.


Wwise Unreal Integration Documentation: Release Notes 2016.2.3.6077.435

Release Notes 2016.2.3.6077.435

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed between the 2016.2.3.6077.422 and the 2016.2.3.6077.435 release of the integration (in addition to upgrading to the new Unreal build).

Unreal Engine 4.12/4.13/4.14/4.15 - Wwise 2016.2.3.6077.435

  • WG-32914 Fixed: Avoid potential deadlocks and crashes in the AK Unreal IO code in a packaged game.


Wwise Unreal Integration Documentation: Release Notes 2016.2.3.6077.422

Release Notes 2016.2.3.6077.422

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed between the 2016.2.2.6022.371 and the 2016.2.3.6077.422 release of the integration (in addition to upgrading to the new Unreal build).

Unreal Engine 4.12/4.13/4.14/4.15 - Wwise 2016.2.3.6077.422

  • WG-30020 Fixed: Allow possibility to dismiss the warning about missing Wwise project on editor startup.
  • WG-30695 Added support for the Switch platform.
  • WG-31076 Fixed: Marked all of the Wwise Blueprint nodes as BlueprintCosmetic to avoid running them on a dedicated server.
  • WG-31455 Added AkComponentCallbackManager. This allows better handling of required callbacks for an AkComponent, reducing concurrency risks.
  • WG-32046 Fixed: Add possibility to automatically start an AkAmbientSound on BeginPlay
  • WG-32490 Fixed: Deprecated level sequencer code
  • WG-32763 Fixed: Discontinued use of monolithic engine header files, like "Engine.h".
  • WG-32768 Fixed: Crash when loading large banks using EDL.
  • WG-32799 Fixed: Increased number of concurrent IO transfers in editor to speed up SoundBank loading.


Wwise Unreal Integration Documentation: Release Notes 2016.2.2.6022.371

Release Notes 2016.2.2.6022.371

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed between the 2016.2.2.6022.359 and the 2016.2.2.6022.371 release of the integration (in addition to upgrading to the new Unreal build).

Unreal Engine 4.12/4.13/4.14/4.15 - Wwise 2016.2.2.6022.371

  • WG-32464 Allow opening an existing project in UE4.15 on the Mac platform.


Wwise Unreal Integration Documentation: Release Notes 2016.2.2.6022.359

Release Notes 2016.2.2.6022.359

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed between the 2016.2.1.5995.317 and the 2016.2.2.6022.359 release of the integration (in addition to upgrading to the new Unreal build).

Unreal Engine 4.12/4.13/4.14/4.15 - Wwise 2016.2.2.6022.359

  • WG-31087 Added Level Sequence support.
  • WG-31687 Added Event Driven Loader support.
  • WG-31816 Added migration of Matinee tracks to Sequencer tracks.
  • WG-31924 Fixed: Editor crash when trying to post an Event on an AkComponent that is being auto-destroyed.
  • WG-32259 Fixed: Made AkComponent a Blueprintable component. Blueprint components can now use AkComponent as a base class.


Wwise Unreal Integration Documentation: Release Notes 2016.2.1.5995.317

Release Notes 2016.2.1.5995.317

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed between the 2016.2.0.5972.301 and the 2016.2.1.5995.317 release of the integration (in addition to upgrading to the new Unreal build).

Unreal Engine 4.12/4.13/4.14 - Wwise 2016.2.1.5995.317

  • WG-31588 Fixed: Make sure no sound is played on a dying actor.
  • WG-31590 Improved low-memory conditions related to callbacks.
  • WG-31860 Fixed: Remove warnings found by clang static code analysis.
  • WG-31876 Fixed: Allow relative paths for the Wwise install path.
  • WG-31888 Fixed: Potential crash on exit due to accessing deleted FString.


Wwise Unreal Integration Documentation: Release Notes 2016.2.0.5972.301

Release Notes 2016.2.0.5972.301

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed between the 2016.2.0.5972.274 and the 2016.2.0.5972.301 release of the integration (in addition to upgrading to the new Unreal build).

Unreal Engine 4.12/4.13/4.14 - Wwise 2016.2.0.5972.301

  • WG-31589 Fixed: Do not destroy a spawned component that is not set to auto-destroy and is failing to post an event.
  • WG-31678 Fixed: Streaming files can now be opened correctly.
  • WG-31771 Fixed: Avoid a crash when adding an AnimNotify_AkEvent to a playing animation.


Wwise Unreal Integration Documentation: Release Notes 2016.2.0.5972.274

Release Notes 2016.2.0.5972.274

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the 2016.2.0.5972.274 release of the integration (in addition to upgrading to the new Unreal build).

Unreal Engine 4.12/4.13 - Wwise 2016.2.0.5972.274

  • WG-29980 Language-specific folders are now parsed to retrieve max attenuation values for Events.
  • WG-30448 Improved logging of AkComponent when attempting to post an invalid AkEvent.
  • WG-30491 Fixed: Make sure to stop sounds when ending a PIE session.
  • WG-31030 Fixed: Optimized FAkAudioDevice::Get().
  • WG-31040 Fixed: Memory leak in AkComponent when attempting to post an invalid AkEvent.
  • WG-31075 Fixed: Removed call to FAkAudioDevice::Get() from bank load callbacks in order to prevent crash in module manager.
  • WG-31186 Fixed: Prevent crash in AkComponentCallback by canceling Event callbacks when AkComponent gets destroyed.
  • WG-31204 Fixed: Memory leak when a spawned AkComponent failed to post its associated Event.
  • WG-31277 Fixed: Crash in editor when attempting to post an Event on a destroyed actor.


Wwise Unreal Integration Documentation: Release Notes 2016.1.6

Release Notes 2016.1.6

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the 2016.1.6 release of the integration (in addition to upgrading to the new Unreal build).

Unreal Engine 4.12/4.13/4.14 - Wwise 2016.1.6

  • Removed support for UE 4.11.


Wwise Unreal Integration Documentation: Release Notes 2016.1.5

Release Notes 2016.1.5

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the 2016.1.5 release of the integration (in addition to upgrading to the new Unreal build).

Unreal Engine 4.11/4.12/4.13/4.14 - Wwise 2016.1.5

  • WG-31588 Fixed: Make sure no sound is played on a dying actor.
  • WG-31860 Fixed: Remove warnings found by clang static code analysis.
  • WG-31876 Fixed: Allow relative paths for the Wwise install path.


Wwise Unreal Integration Documentation: Release Notes 2016.1.4

Release Notes 2016.1.4

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the 2016.1.4 release of the integration (in addition to upgrading to the new Unreal build).

Unreal Engine 4.11/4.12/4.13/4.14 - Wwise 2016.1.4

  • WG-29980 Language-specific folders are now parsed to retrieve max attenuation values for Events.
  • WG-31030 Optimized FAkAudioDevice::Get().
  • WG-31075 Removed call to FAkAudioDevice::Get() from bank load callbacks in order to prevent crash in module manager.
  • WG-31186 Fixed: Crash in AkComponentCallback by canceling Event callbacks when AkComponent gets destroyed.
  • WG-31204 Fixed: Memory leak when a spawned AkComponent failed to post its associated Event.
  • WG-31277 Fixed: Crash in editor when attempting to post an Event on a destroyed actor.


Wwise Unreal Integration Documentation: Release Notes 2016.1.3

Release Notes 2016.1.3

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the 2016.1.3 release of the integration (in addition to upgrading to the new Unreal build).

Unreal Engine 4.11/4.12/4.13 - Wwise 2016.1.3

  • WG-30993 Fixed: Remove explicit LoadLibrary on XAudio 2.7.
  • WG-31015 Fixed: Link with the Recorder plug-in.


Wwise Unreal Integration Documentation: Release Notes 2016.1.2

Release Notes 2016.1.2

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the 2016.1.2 release of the integration (in addition to upgrading to the new Unreal build).

Unreal Engine 4.11/4.12 - Wwise 2016.1.2

  • WG-30304 Fixed: "Unload stream level" no longer posts a global "Stop All" to the SoundEngine.
  • WG-30754 Fixed: FAkAudioDevice::PostEvent now always returns the playing ID.
  • WG-30804 Fixed: Removed dependencies on the Wwise SDK samples. The new IO system now uses Unreal IO utilities only.


Wwise Unreal Integration Documentation: Release Notes 2016.1.1

Release Notes 2016.1.1

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the 2016.1.1 release of the integration (in addition to upgrading to the new Unreal build).

Migrating to the UE4.11/4.12 Wwise 2016.1.1 integration

Unreal Engine 4.11/4.12 - Wwise 2016.1.1

  • WG-29972 Fixed: Multiple potential threading issues with the auto-destroy behavior of the AkComponent.
  • WG-29979 Fixed: EndOfEvent callbacks are now always called.
  • WG-30004 Fixed: SetGameObjectOutputBusVolume is now exposed in Blueprints and AkAudioDevice.
  • WG-30404 Fixed: The attenuation scaling factor now properly works on AkComponents.
  • WG-30409 Fixed: It is now possible to decode Vorbis-encoded files.


Wwise Unreal Integration Documentation: Migrating to the UE4.11/4.12 Wwise 2016.1.1 integration

Migrating to the UE4.11/4.12 Wwise 2016.1.1 integration

As part of the fix for WG-30404, the AttenuationScalingFactor UPROPERTY of AkComponent has been made read-only in Blueprints. To set its value, you now need to call the SetAttenuationScalingFactor method on AkComponent.


Wwise Unreal Integration Documentation: Release Notes 2016.1.0 (Update to UE4.12)

Release Notes 2016.1.0 (Update to UE4.12)

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the 2016.1.0 release of the integration (in addition to upgrading to the new Unreal build).

Unreal Engine 4.11.2 - Wwise 2016.1

  • Added support for UE4.12
  • WG-29917 Fixed: Fixed a case where the attenuation radius of AkAmbientSounds did not show up in the Editor window.
  • WG-30000 Fixed: Changed meta properties of StartAllAmbientSounds and StopAllAmbientSounds.
  • WG-30012 Fixed: Integrated GitHub pull request #5. Show project supported platforms as "Available Platforms" in the "Generate Sound Banks" window.
  • WG-30014 Fixed: Fixed a crash when starting a Play in Editor session that uses a dedicated server.
  • WG-30031 Fixed: Removed usage of the World global pointer.
  • WG-30205 Fixed: On the Mac platform, the Wwise.app path may now contain spaces.


Wwise Unreal Integration Documentation: Release Notes 2016.1.0

Release Notes 2016.1.0

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the 2016.1.0 release of the integration (in addition to upgrading to the new Unreal build).

Unreal Engine 4.11.2 - Wwise 2016.1

  • WG-29917 Fixed: Fixed a case where the attenuation radius of AkAmbientSounds did not show up in the Editor window.
  • WG-30000 Fixed: Changed meta properties of StartAllAmbientSounds and StopAllAmbientSounds.
  • WG-30012 Fixed: Integrated GitHub pull request #5. Show project supported platforms as "Available Platforms" in the "Generate Sound Banks" window.
  • WG-30014 Fixed: Fixed a crash when starting a Play in Editor session that uses a dedicated server.
  • WG-30031 Fixed: Removed usage of the World global pointer.
  • WG-30205 Fixed: On the Mac platform, the Wwise.app path may now contain spaces.


Wwise Unreal Integration Documentation: Release Notes 2015.1.7

Release Notes 2015.1.7

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the 2015.1.7 release of the integration (in addition to upgrading to the new Unreal build).

Unreal Engine 4.12 - Wwise 2015.1.7

  • WG-29917 Fixed: Fixed a case where the attenuation radius of AkAmbientSounds did not show up in the Editor window.
  • WG-29991 Added AkEvent String Input Field to AkAmbientSound.
  • WG-29997 Suppressed duplicate "LogAkAudio: StopAll API called" entries in the output log.
  • WG-30000 Fixed: Changed meta properties of StartAllAmbientSounds and StopAllAmbientSounds.
  • WG-30012 Fixed: Integrated GitHub pull request #5. Match the list of available platforms for SoundBank generation to the Supported Platforms under the Unreal project settings.
  • WG-30014 Fixed: Fixed a crash when starting a Play in Editor session that uses a dedicated server.
  • WG-30031 Fixed: Removed usage of the World global pointer.
  • WG-30218 Fixed: Crash when connecting the Wwise Profiler to the Android platform.
  • WG-30255 Fixed: UE4 crash when adding key to Ak Event Track in Matinee.


Wwise Unreal Integration Documentation: Unreal Engine 4.11 - Wwise 2015.1.6

Unreal Engine 4.11 - Wwise 2015.1.6

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the Unreal Engine 4.11 release of the integration (in addition to upgrading to the new Unreal build).

Migration Notes

Unreal Engine 4.11 - Wwise 2015.1.6

  • The Wwise Unreal integration is now a plug-in. Please see Migrating from the UE4 Wwise integration source code to the plug-in version for migration notes.
  • UI-273 Fixed: Create a new uasset type for Auxiliary Busses. This allows one to assign an AuxBus to a SoundBank. See UAkAuxBus for more information.
  • UI-280 Fixed: Deprecated "...by name" methods, and replaced then with a string field in the relevant methods. See Migrating "...by name" methods for more information.
  • UI-309 Fixed: Made the Wwise project path relative to the game folder, instead of relative to the UE4Editor.exe file. See Migrating the Wwise project path for more information.


Wwise Unreal Integration Documentation: Migration Notes

Migration Notes

Migrating from the UE4 Wwise integration source code to the plug-in version

Starting from Unreal Engine 4.11, the Wwise UE4 integration will now be distributed as a plug-in.

Note:
Events can no longer be dragged from Wwise and dropped in the Unreal Content Browser to create corresponding AkAudioEvent objects. They can now be dragged directly from the Wwise Picker into the Unreal Content Browser to create their corresponding objects.

To update a UE4 project from UE 4.10 (or older) to UE 4.11 (or newer):

  1. Back up your game project.
  2. Install Unreal Engine from the Epic Games Launcher or compile your own Unreal Engine from source code.
  3. Install the Wwise Unreal plug-in as an Engine or a Game plug-in, as outlined in Installation. Make sure that you use the SDK files you built when doing so.
  4. Load your game project in the Unreal Editor.
  5. If you installed the Wwise Unreal plug-in as an Engine plug-in, enable the Wwise plug-in by going to Edit > Plugins > Audio and selecting the "enable" option under the Wwise Unreal Engine 4 Integration section. You will need to reload your project to enable the plug-in.
  6. If your project uses the AkEvent or the AkEventByName AnimNotify, you will be prompted to reload your project as some assets were modified to support the new plug-in model.

The last step is necessary because the AnimNotifies provided with the plug-in had to be moved from the Engine content folder to the plug-in's own content folder. Moving the references requires a project reload.

Once all the steps have been completed, you are ready to use the Wwise Unreal plug-in.

Migrating "...by name" methods

Starting with the 4.11 version of the Wwise Unreal plug-in, all "...by Name" methods (for example, PostEventByName or LoadBankByName) are deprecated. It is still possible to use strings to post Events or load SoundBanks by using the advanced fields in the Blueprint nodes. For example, if you wish to post an Event by name, you should now use the "Event Name" field of the "PostEvent" Blueprint node:

Migrating the Wwise project path

Starting with the 4.11 version of the Wwise Unreal plug-in, the Wwise project path, found in the Wwise settings, is now relative to the game folder, instead of the UE4Editor.exe file. The change should be automatically done the first time you run the 4.11 Wwise Unreal plug-in.


Wwise Unreal Integration Documentation: Unreal Engine 4.10 - Wwise 2015.1.4

Unreal Engine 4.10 - Wwise 2015.1.4

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the Unreal Engine 4.10 release of the integration (in addition to upgrading to the new Unreal build).

Unreal Engine 4.10 - Wwise v2015.1.4

  • UI-265 Fixed: In the AnimNotifies, test the AkComponent's validity before using it. This reduces log spam when using UE with the -nosound option.
  • UI-270 Fixed: It is now possible to build in non-Unity mode.


Wwise Unreal Integration Documentation: Unreal Engine 4.9 - Wwise 2015.1.2

Unreal Engine 4.9 - Wwise 2015.1.2

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the Unreal Engine 4.9 release of the integration (in addition to upgrading to the new Unreal build).

Unreal Engine 4.9 - Wwise v2015.1.2

  • UI-249 Fixed: Avoid crashing when no Audio Playback device is available on Windows.
  • Added a "Spawn AkComponent at location" Blueprint node. See Spawn Ak Component at Location for more information.
  • Added support for the Mac Editor.
  • Added support for the Mac platform.
  • Added support for the iOS platform.
  • Added support for the Linux platform.


Wwise Unreal Integration Documentation: Unreal Engine 4.8 - Wwise 2015.1.0

Unreal Engine 4.8 - Wwise 2015.1.0

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the Unreal Engine 4.8 release of the integration (in addition to upgrading to the new Unreal build).

Unreal Engine 4.8 - Wwise v2015.1

  • Migrated the UE4.8 integration to Wwise 2015.1
  • Fixed a crash on Xbox One if the app manifest did not contain a definition for Wwise communication ports.


Wwise Unreal Integration Documentation: Unreal Engine 4.8 - Wwise 2014.1.5

Unreal Engine 4.8 - Wwise 2014.1.5

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the Unreal Engine 4.8 release of the integration (in addition to upgrading to the new Unreal build).

Unreal Engine 4.8 - Wwise v2014.1.5

  • UI-206 Fixed: Sounds with an attenuation can now be heard when an animation window is opened.
  • UI-212 Fixed: Added a "Load Init Bank" Blueprint node.
  • UI-213 Fixed: Added null checks in Blueprint nodes, preventing crashes.
  • UI-214 Fixed: No crash when saving an output capture to disk.
  • UI-215 Fixed: No issue with the Attenuation Scaling Factor of an AkComponent not being set when attached to an actor.
  • UI-217 Fixed: Made AkReverbVolume's collision settings visible in the details panel.
  • UI-220 Fixed: Fixed the occlusion fade behavior for sounds that a spawn occluded.
  • UI-223 Fixed: The gathering of the max attenuations for AkEvent does not halt when the parsing of one SoundBank fails.
  • UI-226 Fixed: SoundBank generation is now performed by the 32-bit WwiseCLI.exe when the 64-bit WwiseCLI.exe is missing.
  • UI-230 Fixed: Now using OnComponentDestroyed instead of FinishDestroy to unregister Wwise Game Objects, which had caused some Game Objects to be registered for too long.
  • UI-233 Fixed: Added validity checks on actors in the GetGameObjectID function.
  • UI-234 Fixed: Multiple viewports in the SetListener function are properly handled. This fixes a crash in AkAudioDevice.cpp.
  • UI-236 Fixed: The Location Type given to the GetAkComponent Blueprint node is properly handled.
  • UI-239 Fixed: No crash at engine shutdown as a result of the Bank Manager unloading SoundBanks that might already have been destroyed.
  • Added a "Follow" check box to the AnimNotify_AkEvent. Leaving it unchecked will post the AkEvent at a specific location, instead of attaching to the parent.
  • Added a new AnimNotify: AnimNotify_AkEventByName, allowing to post events using their name as a string.
  • Added Debugging tools to Blueprints. For more information, see Debug Blueprint Functions


Wwise Unreal Integration Documentation: Unreal Engine 4.7 - Wwise 2014.1.3

Unreal Engine 4.7 - Wwise 2014.1.3

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the Unreal Engine 4.7 release of the integration (in addition to upgrading to the new Unreal build).

Unreal Engine 4.7 - Wwise v2014.1.3

  • Added support for the Android platform.
  • Now including a new demonstration game, based on Epic's First Person Template. For more information, see Using the Wwise Demo Game.
  • All Wwise Integration settings now have their page in the Unreal Project Settings window. No need to manually edit INI files anymore!
  • UI-157 Fixed: When generating the SoundBanks, add the Max Attenuation information to AkEvents. It can be retrieved via Blueprints.
  • UI-187 Fixed: Allow the preview of AkEvents from the Content Browser by pressing the space bar.
  • UI-188 Fixed: When an AkAmbientSound is about to be destroyed, cancel its event callback to avoid using a destroyed object in the callback.
  • UI-189 Fixed: Added an attenuation scaling factor to AkComponent, allowing to make each actor's attenuation radius unique.
  • UI-190 Fixed: Added a new Blueprint node that allows setting the exact list of loaded SoundBanks. For more information, see Removed and Deprecated Functions
  • UI-193 Fixed: Get the UAkAudioEventFactory directly when creating UAkAudioEvents by Drag & Drop.
  • UI-194 Fixed: Optimized the finding of AkReverbVolumes at a location.
  • UI-195 Fixed: Added blueprint_actor_posteventbyname, features_blueprintsoundbanks_removed, and Removed and Deprecated Functions Blueprint nodes.
  • UI-196 Fixed: Added a configuration parameter for the maximum number of concurrent Reverb Volumes applied on a sound.
  • UI-201 Fixed: Added an UAkAudioEvent to AkComponent, to bring it in sync with Unreal's AudioComponent. An AkComponent can by added in a Blueprint via drag & drop of a UAkAudioEvent. An actor with an attached AkComponent will also show its attenuation radius in the Editor.
  • UI-204 Fixed: Added code to unload auto-loaded SoundBanks.
  • UI-205 Fixed: Don't post events in a world that does not allow audio playback.
  • UI-208 Fixed: Fixed a potential crash when generating SoundBanks.


Wwise Unreal Integration Documentation: Unreal Engine 4.6 - Wwise 2014.1.1

Unreal Engine 4.6 - Wwise 2014.1.1

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the Unreal Engine 4.6 release of the integration (in addition to upgrading to the new Unreal build).

Unreal Engine 4.6 - Wwise v2014.1.1

  • UI-183 Fixed: Use the debug SoundEngine libraries when UnrealBuildTool is configured to use the debug CRT libraries (bDebugBuildsActuallyUseDebugCRT = true).
  • UI-184 Fixed: Added a billboard component to AkComponent to make them visible in the Editor.
  • UI-186 Fixed: Allow drag & drop of .bnk files in the Content Browser to create UAkAudioBank assets.


Wwise Unreal Integration Documentation: Unreal Engine 4.5 - Wwise 2014.1

Unreal Engine 4.5 - Wwise 2014.1

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the Unreal Engine 4.5 release of the integration (in addition to upgrading to the new Unreal build).

Unreal Engine 4.5 - Wwise v2014.1

  • UI-172 Fixed: Resolved assert created by the AkReverbVolumeChannel collision channel.
  • UI-174 Fixed: Optimized the "Generate SoundBanks" window.
  • UI-175 Fixed: Added preprocessor guards to remove compilation errors on platforms not supported by this integration.


Wwise Unreal Integration Documentation: August 2014 - Wwise v2014.1

August 2014 - Wwise v2014.1

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the Unreal Engine August 2014 release of the integration (in addition to upgrading to the new Unreal build).

August 2014 - Wwise v2014.1

  • UI-166 Fixed: Auxiliary Bus properties are now applied on Ambient Sounds contained within Reverb Volumes.
  • Updated Wwise version to 2014.1. If you wish to keep on using 2013.2.x, see Frequently Asked Questions.


Wwise Unreal Integration Documentation: August 2014 - Wwise v2013.2.9

August 2014 - Wwise v2013.2.9

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the Unreal Engine August 2014 release of the integration (in addition to upgrading to the new Unreal build).

August 2014 - Wwise v2013.2.9

  • Added Japanese documentation.


Wwise Unreal Integration Documentation: July 2014 - Wwise v2013.2.9

July 2014 - Wwise v2013.2.9

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the Unreal Engine July 2014 release of the integration (in addition to upgrading to the new Unreal build).

July 2014 - Wwise v2013.2.9

  • Added a SwitchDemo map to the UnrealWwiseDemo sample game, demonstrating the use of switches.
  • UI-161 Fixed: Removed the duplicate AkComponent created when starting an ambient sound. This prevented the Stop Ambient Sound method from working.


Wwise Unreal Integration Documentation: June 2014 - Wwise v2013.2.8

June 2014 - Wwise v2013.2.8

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the Unreal Engine June 2014 release of the integration (in addition to upgrading to the new Unreal build).

June 2014 - Wwise v2013.2.8

  • UI-152 Fixed: Add SoundBanks and streamed files to the packaging process.


Wwise Unreal Integration Documentation: April 2014 - Wwise v2013.2.7

April 2014 - Wwise v2013.2.7

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the Unreal Engine April 2014 release of the integration (in addition to upgrading to the new Unreal build).

April 2014 - Wwise v2013.2.7

  • UI-149 Fixed: Set proper default values for AkReverbVolumes.


Wwise Unreal Integration Documentation: March 2014 - Wwise v2013.2.6

March 2014 - Wwise v2013.2.6

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the Unreal Engine March 2014 release of the integration (in addition to upgrading to the new Unreal build).

March 2014 - Wwise v2013.2.6

  • Visual Studio 2013 is now used by default. Please refer to the Requirements page for more details.
  • UI-146 Fixed: Fixed non-unity build compilation errors.
  • UI-147 Fixed:
    • Verify the SoundEngine is initialized in the AkComponent tick function;
    • Properly set the collision channel name for AkReverbVolumes;
    • Avoid loading banks in a commandlet;
    • Removed the automatic bank creation mechanism.
  • UI-148 Fixed: Use "Get Player Controller" in the RTPCDemo Blueprint to ensure sound keeps playing when transitioning between "Simulate" and "Possess" modes in Editor.


Wwise Unreal Integration Documentation: January 2014 - Wwise v2013.2.5

January 2014 - Wwise v2013.2.5

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the Unreal Engine January 2014 release of the integration (in addition to upgrading to the new Unreal build).

January 2014 - Wwise v2013.2.5

  • Added an example of AkAnimNotify in ShooterGame. It is located in the FPP_RifleReload animation.
  • UI-131 Fixed: Spatialized sounds are now audible in the Animation Editor: Added a second listener for the Animation Editor window, and routed game objects created in this window to the new listener.
    Warning:
    This fix changes the AnimNotify_AkEvent Blueprint. If you have made modifications to it, be sure to keep a backup before merging this integration.
  • UI-134 Fixed: Removed the input flag StopWhenOwnerDestroyed to GetAkComponent. It was unused and could create confusion. Added a SetStopWhenOwnerDestroyed method to the AkComponent.
  • UI-136 Fixed: Allow Wwise Authoring to communicate with an Xbox One application.
  • UI-137 Fixed: Make sure a temporary game object (created by "Post Event at Location") is subject to AAkReverbVolumes.
  • UI-138 Fixed: Prevent the Sound Engine from creating UE errors while running in a commandlet. This is a workaround. Maybe the Sound Engine should not be initialized at all.
  • UI-139 Fixed: Removed FMath::Abs on Z projection when setting listener position in SoundEngine (Unreal code has been left untouched). This allows upside down listeners.
  • UI-145 Fixed: Fixed an error in the AkComponent::SetRTPCValue method that prevented RTPCs from being properly applied.


Wwise Unreal Integration Documentation: December 2013 - Wwise v2013.2.4

December 2013 - Wwise v2013.2.4

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the Unreal Engine December 2013 release of the integration (in addition to upgrading to the new Unreal build).

December 2013 - Wwise v2013.2.4

  • Unreal Wwise integration now officially supports PS4 and Xbox One platforms!
  • Added platform selection to bank generation dialog box.
  • Added bank generation dialog box to build menu.
  • LinkedProject configuration parameter has been moved from Engine/Config/BaseEditor.ini to <Your Game>/Config/DefaultGame.ini.
  • Added simple occlusion support.
  • Fixed a crash when getting the UAkComponent from another component which has no owner.
  • UI-130 Fixed: Fixed performance issues with the UAkComponent::UpdateAkReverbVolumeList method.
  • UI-130 Fixed: Added a flag to the UAkComponent specifying if it is influenced by reverb volumes.
  • UI-132 Fixed: Prevent UAkComponents from ticking on server configurations.
  • UI-135 Fixed: Expose RTPC interpolation time.


Wwise Unreal Integration Documentation: October 2013 - Wwise v2013.2.1

October 2013 - Wwise v2013.2.1

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the Unreal Engine October 2013 release of the integration (in addition to upgrading to the new Unreal build).

October 2013 - Wwise v2013.2.1

  • Added bank generation for PlayStation4 and Xbox One.
  • Added AkReverbVolume, allowing for mapping a volume in space to a Wwise auxiliary bus.
  • UI-128 Fixed: Implemented asynchronous IO access.


Wwise Unreal Integration Documentation: September 2013 - Wwise v2013.2.1

September 2013 - Wwise v2013.2.1

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the Unreal Engine September 2013 release of the integration (in addition to upgrading to the new Unreal build).

September 2013 - Wwise v2013.2.1

  • Fixed build settings for Visual Studio 2012.
  • Fixed UEngine::UseSound() returning false when only AkAudioDevice is present.
  • Fixed crash in UAkComponent::PostAkEvent with null event.
  • Fixed game object position with static actor.


Wwise Unreal Integration Documentation: August 2013 - Wwise v2013.2

August 2013 - Wwise v2013.2

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the Unreal Engine August 2013 release of the integration (in addition to upgrading to the new Unreal build).

August 2013 - Wwise v2013.2

  • Fixed confusion between Actor, AkComponent, the Wwise game object and their respective lifespans:
    • AkComponent follows attachment semantics of Epic's AudioComponent. AkComponents are re-used when all attachment parameters match.
    • AkGameplayStatics contains global helpers targetting Actors for easy use in blueprints.
  • Fixed missing Events and Banks in SoundBank Definition File.
  • Fixed game object names in Wwise Profiler.
  • Generating SoundBanks now triggers a refresh of loaded banks.
  • Set RTPC Value global helper now supports setting a Game Parameter at global scope (no Actor target).


Wwise Unreal Integration Documentation: July 2013 - Wwise v2013.1.1

July 2013 - Wwise v2013.1.1

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the Unreal Engine July 2013 release of the integration (in addition to upgrading to the new Unreal build).

July 2013 - Wwise v2013.1.1

  • Added message box in case of error during SoundBank Generation.
  • New, distinct colors for Audiokinetic Event and Audiokinetic Bank asset types in the Content Browser.
  • Fixed compilation on Xbox One and PS4 platforms.
  • Fixed issue with AnimNotify_AkEvent using the wrong type.
  • Fixed update of AkComponent Game Object position.


Wwise Unreal Integration Documentation: June 2013 - Wwise v2013.1.1

June 2013 - Wwise v2013.1.1

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the Unreal Engine June 2013 release of the integration (in addition to upgrading to the new Unreal build).

June 2013 - Wwise v2013.1.1

  • Added DebugGame build configuration support.
  • Partial Wwise SDK now included to help setting up the integration.
  • Fixed xaudio2/mmdev DLL unload issues in Windows 64-bit build.
  • Stopped matinee movie from playing in demomap - was preventing user input from working.
  • Fixed AkAudioDevice listener position update in FLevelEditorViewportClient::UpdateAudioListener.
  • Changed the AudioDeviceModuleName default value to XAudio2 on the windows platform.


Wwise Unreal Integration Documentation: May 2013 - Wwise v2013.1.1

May 2013 - Wwise v2013.1.1

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the Unreal Engine May 2013 release of the integration (in addition to upgrading to the new Unreal build).

May 2013 - Wwise v2013.1.1

  • Introduced doxygen documentation.
  • Now building using Wwise 2013.1.1 build 4677.


Wwise Unreal Integration Documentation: March 2013 - Wwise v2013.1

March 2013 - Wwise v2013.1

Each version of this integration matches a specific build of Unreal Engine 4. Here is what has changed in the Unreal Engine March 2013 release of the integration (in addition to upgrading to the new Unreal build).

March 2013 - Wwise v2013.1

  • Now building using Wwise 2013.1 beta build 4609.


Wwise Unreal Integration Documentation: Known Issues

Known Issues

Implementation Notes and Known Issues for Wwise Unreal Integration 2022.1

Debugging

There should be Log, Warning, and Error messages when something is wrong. However, if you have trouble pinpointing the issue with asset loading and packaging, set the log for all relevant Wwise modules to Verbose, or VeryVerbose.

If you have issues with memory usage and performance, many Stats were added in the lower-level Wwise constructs. You can use Unreal Frontend to start a profiling session, or use the Stats menu to enable real-time visualization of the available statistics. For example, the WwiseFileHandler stats has information about all the currently loaded assets.

The GeneratedSoundBanks folder is usually relative to the project root. When using the editor with the -Game option, the working directory might need to be set at the same folder than the root where your .uproject file is.

Editor Load Time

The code was designed to be asynchronous for load-time performance. However, this optimization was not pursued in time for 2022.1. This means all SoundBank information files are parsed on Editor start, which can take a significant amount of time, depending on your hardware and project size.

Cooking and Packaging

Iterative cooking is currently not supported in 2022.1. Unreal doesn't support our particular use case, and we are working on mitigating this issue. For now, the simplest solution is to manually delete the staged files. See https://issues.unrealengine.com/issue/UE-167603.

There is currently no automated way to separate assets by package. It is not possible to split languages into different optional packages, or make particular assets loadable independently. Although these features are planned, we need your feedback on your particular use cases so we can develop the most appropriate default feature set. Remember, it’s always possible to overwrite the different libraries in order to adapt the cooking functionality to your particular needs. You can also write specific rules directly in Unreal's Game - Asset Manager project preferences that would encompass the different Wwise assets in the Staging folder.

Unreal Stat (Mac Only)

The statistics for Wwise might not be accessible in the Unreal Stat menu on Mac if your Unreal project is out of date. Update your Unreal project in order to see the Wwise Stat category.

Known Issues

  • WG-29964 It is not possible to connect the Wwise Profiler to a Linux game.
  • WG-29982 Use Reverb Volumes flag doesn't work in real time: The Blueprint box "Set use reverb volumes" does not work as expected.
  • WG-44750 Physical Material Override on the Mesh cannot be used for Acoustic Texture assignment with an AkGeometryComponent.
  • WG-48803 Posting Events from an Event, as well as setting Switch or State values, may lead to missing media in packaged games.

  • WG-52497 The Unreal Editor may hang when modifying the Spatial Sound option on the current audio device. For example, this could occur when changing from Windows Sonic for Headphones to Off. Users encountering this issue may want to disable UE Audio to prevent this hang.

    In order to disable UE Audio, you must:

    1. Open your UE project's Config folder. (For example, WwiseAudioLab/Config.)
    2. Create a new subfolder called Windows.
    3. In the newly created Windows folder, create a WindowsEngine.ini file with the following contents:
      [Audio]
      AudioDeviceModuleName=
      AudioMixerModuleName=
  • WG-63926 It is not possible to package a game for iOS or tvOS when using Unreal Engine 5.1. A rigid static library version check was added to Unreal Engine 5.1, preventing to link static libraries that were compiled using an Xcode version more recent than Xcode 13.


Wwise Unreal Integration Documentation: Android-Specific Information

Android-Specific Information

This page lists requirements and special considerations for developers who use the Unreal Integration to build applications for Android.

Upgrading to Unreal 4.25 or Later

  • The Android toolchain was changed in Unreal Engine 4.25. If you are migrating from an earlier version of Unreal to 4.25 or later, you must change the Android SDK folder hierarchy within the ThirdParty folder. Move the following folders into an Android folder and rename them as indicated:
    • Move and rename Android_armeabi-v7a to Android/armeabi-v7a
    • Move and rename Android_arm64-v8a to Android/arm64-v8a
    • Move and rename Android_x86 to Android/x86
    • Move and rename Android_x86_64 to Android/x86_64


Wwise Unreal Integration Documentation: iOS-Specific Information

iOS-Specific Information

This page lists requirements and special considerations for developers who use the Unreal Integration to build applications for iOS.

Building Remotely from Windows

You can build projects for iOS from a Windows system with Remote Build Options. However, some additional configuration is necessary because not all files are copied to the remote macOS system by default.

To ensure that this type of build functions correctly, you must create an RsyncProject.txt file that forces Unreal to copy the files under the /Build/Rsync/ path. The file must contain the following lines:

+ /Plugins/Wwise/ThirdParty/include/**
+ /Plugins/Wwise/ThirdParty/iOS/**

Using Unreal Audio

If you are using built-in Unreal audio in addition to Wwise on iOS, you might encounter an error that causes your game to crash or prevents it from loading. If that happens, you must either disable Unreal audio or use Using the AkAudioMixer Module.

To disable Unreal audio, you must update the IOSEngine.ini file.

In <UE_ROOT>/Engine/Config/iOS/IOSEngine.ini, locate the following line:

AudioDeviceModuleName=IOSAudio

Replace it with the following:

AudioDeviceModuleName=


Wwise Unreal Integration Documentation: Open Source Components in Wwise

Open Source Components in Wwise

The following open source components are included as part of the Unreal Wwise integration.

Other open source components included as part of Wwise can be found here: Open Source Components in Wwise

GTE Mathematics

Boost Software License - Version 1.0 - August 17th, 2003
Permission is hereby granted, free of charge, to any person or organization
obtaining a copy of the software and accompanying documentation covered by
this license (the "Software") to use, reproduce, display, distribute,
execute, and transmit the Software, and to prepare derivative works of the
Software, and to permit third-parties to whom the Software is furnished to
do so, all subject to the following:
The copyright notices in the Software and this entire statement, including
the above license grant, this restriction and the following disclaimer,
must be included in all copies of the Software, in whole or in part, and
all derivative works of the Software, unless such copies or derivative
works are solely in the form of machine-executable object code generated by
a source language processor.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
DEALINGS IN THE SOFTWARE.


Wwise Unreal Integration Documentation: Android Directory Reference

  • Input
  • Android
Android Directory Reference


Wwise Unreal Integration Documentation: iOS Directory Reference

  • Input
  • iOS
iOS Directory Reference


Wwise Unreal Integration Documentation: ReleaseNotes Directory Reference

  • Input
  • ReleaseNotes
ReleaseNotes Directory Reference


Wwise Unreal Integration Documentation: Input Directory Reference

  • Input
Input Directory Reference

Directories

directory | Android
directory | iOS
directory | ReleaseNotes


Wwise Unreal Integration Documentation: Related Pages

Related Pages
Here is a list of all related documentation pages: