FMOD GetBankList doesn't return all banks

Hey,

we’re trying to get a list of all banks from FMOD, but now noticed quite a cruical bug in the tool we use to reliably debug which banks are loaded at runtime on devices.

The RuntimeManager.StudioSystem.getBankList doesn’t return banks which aren’t in the FMOD Settings → Specified Banks list, if we have the Load Banks set to Specified.

Why is it like so, can it be fixed and are there any workarounds?

Thanks

Update: In Editor it seems to sometimes work if the bank is loaded once then unloaded. The GetBankList will then remember the bank “exists” and continue returning it.

When app is built, it never works as expected.

Hi,

Studio.System.getBankList() will only return a list of loaded banks. If banks are only being loaded using the “Load Specified” option in FMOD Settings before calling getBankList(), banks not included in the FMOD Settings list will not be loaded during initialization at runtime, and as a result Studio.System.getBankList() will not list them. Does this line up with what you’re observing in builds?

If you need to retrieve a list of all existing banks, including banks that aren’t loaded, the simplest thing to do would be one of the following:

  • Create some kind of file walker function in Unity that checks all banks present in the bank directory in editor/build
  • In FMOD Studio, use the “Export GUIDs Header” script in Scripts → FMOD Examples to export a C# header to include in your Unity project, which lists all FMOD objects (including banks) and associated GUIDs

It’s possible to simplify the header generation step by hooking the script into the studio.project.buildStarted.connect (2.02) or studio.project.buildStartedConnect (2.03) callback so that it automatically runs when you build banks in Studio.

Hey,

thanks for the quick response.

If the getBankList doesn’t return unloaded banks, please strongly consider naming it differently, to hint at it only returning loaded banks, like getLoadedBankList.

On another note, Localized banks don’t work as you described. A non-localized bank is always shown as unloaded, this isn’t the one generated from localized table for different languages.

I’m wondering if this is some exception on top of exception FMOD doesn’t handle properly?

I’ve noted your suggestion on our improvement tracker!

Can I get you elaborate on this? If you could provide a short series of steps reproducing the issue for you, that’d be great.