No Sound from playing events in DLC Banks

I have a content creator trying to add new audio banks in a DLC pack that is not loaded at start up (only if a user selects it), and while the sounds play in FMOD Studio, they do not play in game. I have tried to replicate their workflow and have also found that no sound is played in game.

My process:

  1. Open our game’s FMOD project which is used to build all the base-game banks
  2. Add a new Bank
  3. Add a new Event to this bank
  4. Add an asset to this Event. A simple .wav file

at this point, I can press “Play” in FMOD Studio and hear my event just fine

  1. Build my new bank
  2. Engine loading flow:
  • loadBankFile using the DLC Bank’s PATH, this results in FMOD_OK
  • new bank calls loadSampleData, this results in FMOD_OK
  • later, when the event is triggered, call getEvent, this returns FMOD_OK
  • Use this retrieved event to call createInstance, this returns FMOD_OK
  • Use this instance to call start, this returns FMOD_OK
  • in a ticking method, call getPlaybackState, this returns FMOD_STUDIO_PLAYBACK_PLAYING at first, but eventually returns FMOD_STUDIO_PLAYBACK_STOPPING

Despite all this, no sound is heard in-game. My best guess is that there are some hooks or something that have to do with needing to side load a new version of the Master Bank?

I have tried (independently):

  • Assigning my new bank as the “master bank” and building that, including the [name].assets.bank, [name].bank, [name].streams.bank, and [name].strings.bank files, and load these. They all load with FMOD_OK.
  • Building the entire project and including my new bank files and the original master_bank files (though these run into problems where loadBankFile returns FMOD_ERR_EVENT_ALREADY_LOADED, despite the fact that getBank returns FMOD_ERR_EVENT_NOTFOUND. I take this to be an ramification of a different PATH (DLC directory) but an identical GUID.

Am I missing something crucial here? Why is start returning FMOD_OK if no audio actually starts? How is it tracking play state if nothing is playing?

I’ve tried to leverage the FMOD Studio Live Update feature, but this quickly crashes with

Exception thrown at 0x00007FF81B2A44CD (fmodstudio.dll) in MyGame.Windows.exe: 0xC0000005: Access violation reading location 0x0000000000000030.

I feel like this is a very simple process but that I’ve got something small out of alignment. Any suggestions extremely appreciated!

Hi,

Are you able to connect to Live Update (FMOD Studio | Edit During Live Update)? Focusing on if there is sound registering in the mixer and if the instances are being created in the profiler.

Thanks for the reply! Per the bottom of my original post, connecting FMOD Studio via Live Update quickly results in

Exception thrown at 0x00007FF81B2A44CD (fmodstudio.dll) in MyGame.Windows.exe: 0xC0000005: Access violation reading location 0x0000000000000030.

A read access violation in an internal fmodstudio library? I’ve had the feature work with other projects before, but I’m not experienced enough to know how I could have caused an internal lib error. I’m really just an engine programmer who is trying my best to help our stumped audio engineers. I’m almost certain the issue isn’t within our engine itself (as all base-game audio banks work fine). Our base game has a bunch of banks we load at startup, including a master.bank and master.strings.bank. Every event that’s accounted for at that time seems to work perfectly fine. My suspicion is that though the DLC packages I’m getting have the dlc.streams.bank, dlc.bank, and dlc.assets.bank files (I even included a re-built strings.bank, which was the source of some FMOD_EVENT_NOTFOUND errors when calling getEvent) but that there must be some issue with needing to include a second version of a rebuilt master bank? Or that the new banks/events weren’t hooked up the the correct buses? Or something…

Hi, apologies I completely missed that.

Would it be possible to get a copy of the main banks and the DLC banks either uploaded to your profile or DM’d to me?
Does the read access violation happen in your IDE and in the build or just one of them?

Just to confirm, you are hearing events that are not part of the DLC bank?

IDE, I’m using Visual Studio 2019.

Our base game banks and DLC banks share a common directory root, but do diverge. Functionally, it looks sorta like:
..\data\base\sounds\banks\ [platform, ie: desktop] \ [bank files]
each one of the built banks existing as:
name.assets.bank
name.streams.bank
name.bank
except for our master bank, which also includes a name.strings.bank

DLC is:
..\data\dlc\sounds\banks\ [platform, ie: desktop]\ [bank files

So they share a common root with regards to where we put our “data” but they do diverge into different subdirectories. When making a “DLC” sample myself, I’ve taken our original FMOD project, added a bank, added an event to that bank, and then added an audio file to that event. Within FMOD Studio itself, I can press Play on the event and hear my .wav asset played just fine. I’ve taken a few different approaches, but my most recent was:

  • set my new bank as a secondary master bank
  • this, when built, results in myDLC.assets.bank, myDLC.streams.bank, myDLC.bank and myDLC.strings.bank

I’m unsure if my new bank ought be defined as a second “master” bank, but I do seem to need a newly built name.strings.bank for the ID look ups, as my getEvent calls, predictably, will result in FMOD_EVENT_NOTFOUND if I don’t include them.

I include all 4 of the above files in my DLC directory. They’re all read and loaded with FMOD_OK. Indeed if our DLC content references an event that existed in the base banks, then it’s played fine. Base game content that makes FMOD event calls (to, obviously, base game events) are played just fine. The only problem I’m having is that new events, in new banks, that are added in DLC (and thus do not exist in that base-game master bank) aren’t resulting in any sound being played despite the API returning FMOD_OK for every call.

I’m wondering if the new banks might now be hooked up into a bus incorrectly? It feels very much like “our engine is interfacing with the FMOD api correctly, and FMOD event the events organized correctly, but that there is some step between the event and making calls to the speaker to actually create sound that might not be configured correctly.” But I’m not familiar enough to know for sure.

I appreciate the feedback!

Hi,

Is it possible to get a copy of the built main banks and the DLC banks and the code you are using to load the banks either uploaded to your Profile or DM’d to me to test on my side?