Audiokinetic's Community Q&A is the forum where users can ask and answer questions within the Wwise and Strata communities. If you would like to get an answer from Audiokinetic's Technical support team, make sure you use the Support Tickets page.

Trouble with bank loading and unloading with Wwise 2022.1 in UE5 Blueprint

+2 votes
Wwise 2022.1 / UE5

I'm a bit averse to shift over entirely to an auto-defined soundbank workflow. At least for now we'd prefer to stick more in line with the classic Wwise soundbank workflow.
We have cases where, for example, we have Level Sequences (IGCs) with bespoke sound events. Ideally we load all the necessary bank data when the IGC starts, and unload it when the IGC finishes, since we only need those events during the IGC.

Using Blueprint there doesn't seem to be an easy way to do this. I've found that for an AkEvent variable I can use the Load Data and Unload Data nodes, but that seems to only affect the individually referenced event and not the entire bank. I confirmed this by turning off the Auto-Load property on all the AkEvents for this bank. The one I explicitly called load and unload on is the only one that actually plays in the IGC, despite Wwise profiler stating that it received a call to load the entire bank.

Alternatively I can make an array of all the events I want to load and unload to get the result I need by running a for each loop to load each one at the start of the IGC, and unload each one at the end, but then it seems like grouping them into a user-defined bank to begin with then was pointless...

The issue I find with the auto-loading is that in the case of these IGCs, their instances stick around before the user gets to the IGC, and after the user is done with the IGC (until reloading the level), which means there are events referenced, and therefore the events occupy memory we don't need. When moving into this new version, the behavior I was expecting was that since load and unload bank nodes no longer exist, that calling Load/Unload Data on events with user-defined soundbanks would load not just the media of the entire soundbank, but also the events and structures for all the events in the bank, and not just the data for that one event.

It would be great to have an example of how one should go about manually loading and unloading user-defined banks (i.e. not using auto-defined banks, and not using auto-loaded events) with BP. I haven't found anything that makes it clear yet. I could I suppose make a C++ node for BP and/or a DataAsset class that would allow me to do this (i.e. recreating AkBank assets), but it seems odd that such things would not just be included into the integration already.
asked Mar 30, 2023 in General Discussion by Owen Cooper (190 points)

1 Answer

–1 vote

This document might help, it lists several ways to load and unload soundbanks manually, but these sound engine APIs are not exposed to BP, so you might need to handle it in C++.
answered Apr 14, 2023 by Qianting R. (120 points)