Building for Android: could not load the master.bank

Hi! We are currently working on a android vr build for oculus quest and we are having trouble with the loading of master.bank.
The console in unity shows this:

<i>Autoconnected Player</i> [FMOD] AndroidAssetFile::reallyOpen :     Could not open 'Master.bank' from the asset manager.
 #0 0xc387150f (libunity.so) GetStacktrace(int) 0x26
 #1 0xc3691069 (libunity.so) DebugStringToFile(DebugStringToFileData const&) 0x124
 #2 0xc3240115 (libunity.so) DebugLogHandler::Internal_Log(LogType, LogOption, core::basic_string<char, core::StringStorageDefault<char> >, Object*) 0x68
 #3 0xc324007b (libunity.so) DebugLogHandler_CUSTOM_Internal_Log(LogType, LogOption, ScriptingBackendNativeStringPtrOpaque*, ScriptingBackendNativeObjectPtrOpaque*) 0xea
 #4 0xc0ff6fd0 (libil2cpp.so) ? 0x0
 #5 0xbeecd8d4 (libil2cpp.so) ? 0x0
 #6 0xbe388f68 (libil2cpp.so) ? 0x0
 #7 0x8df9b06f (libfmodL.so) ? 0x0
 #8 0x8dfa15d7 (libfmodL.so) ? 0x0
 #9 0x8df9b95f (libfmodL.so) ? 0x0
 #10 0x8df31379 (libfmodL.so) ? 0x0
 #11 0x8df088ed (libfmodL.so) ? 0x0
 #12 0x8df9fa5f (libfmodL.so) ? 0x0
 #13 0x8dfa2171 (libfmodL.so) ? 0x0
 #14 0xe8f5a6d5 (libc.so) __init_static_tls(void*) 0x48
 #15 0x91d50ffe (Unknown) ? 0x0

<i>Autoconnected Player</i> [FMOD] ResourceLoader::asyncLoadResourceThread : Failed to load waveform {6bdf6dd5-6e0d-487d-9325-5abe74b3aa60} (error 18)
 #0 0xc387150f (libunity.so) GetStacktrace(int) 0x26
 #1 0xc3691069 (libunity.so) DebugStringToFile(DebugStringToFileData const&) 0x124
 #2 0xc3240115 (libunity.so) DebugLogHandler::Internal_Log(LogType, LogOption, core::basic_string<char, core::StringStorageDefault<char> >, Object*) 0x68
 #3 0xc324007b (libunity.so) DebugLogHandler_CUSTOM_Internal_Log(LogType, LogOption, ScriptingBackendNativeStringPtrOpaque*, ScriptingBackendNativeObjectPtrOpaque*) 0xea
 #4 0xc0ff6fd0 (libil2cpp.so) ? 0x0
 #5 0xbeecd8d4 (libil2cpp.so) ? 0x0
 #6 0xbe388f68 (libil2cpp.so) ? 0x0
 #7 0x8de60ec3 (libfmodstudioL.so) ? 0x0
 #8 0x8de5c205 (libfmodstudioL.so) ? 0x0
 #9 0x8de5b55f (libfmodstudioL.so) ? 0x0
 #10 0x8de5bf1b (libfmodstudioL.so) ? 0x0
 #11 0x8de5acc3 (libfmodstudioL.so) ? 0x0
 #12 0x8de63291 (libfmodstudioL.so) ? 0x0
 #13 0x8de63bdd (libfmodstudioL.so) ? 0x0
 #14 0xe8f5a6d5 (libc.so) __init_static_tls(void*) 0x48
 #15 0x91d9effe (Unknown) ? 0x0

We can still hear some sounds, but the majority are off. Do we have to take into account something in particular to build for android vr?

If some sounds are playing and others aren’t it might be that things aren’t being fully loaded in time. Are you using Split Application Binaries / OBB exapansion files in this project or is there a single apk? If you are using OBBs then you need to load them asynchronously.
Otherwise, can you please tell me what version of FMOD you are using, and whether it is the same audio that is succesfully playing every time or if it seems to be random?

Sorry it took so long to reply!
I omitted to mention that the android VR project we are currently working on is a copy of a finished non-VR game for PC build. We were testing on 32-bit builds and in the end the problem was solved by building on 64-bit, but I have another question.
Do I need to make a copy of the original game’s FMOD project and add the Oculus Spatializer plugin to this new copy of the project? Is there any updated tutorial about it?

Thank you for sharing your solution- I think the best way to implement a platform-specific spatializer would be to work directly in the existing project, setting up Returns for each spatializer you want to support, and using Sends to toggle each spatializer’s return with a global parameter.
We do not have a tutorial on how to set this up, but if you look through the FMOD Studio Examples project we have an example of how to setup multiple spatializers in the Music>Radio Station event.
On this event there are two separate return tracks, “Spatializer” and “Object”, each with a different spatializer on it. Selecting the “FM” track, you can see it has two sends setup, directing its audio output to each of the spatializers:

Changing the “Spatializer” parameter to be >1, you can see this disables the default “Spatializer” route and enables the “Object” spatializer:

Then in your game, select which spatializer to use by calling Studio.System.setParameterByID, or use a Global Parameter Trigger.

This would be a little more setup than simply copying the project and swapping out all your spatializers, but will be more maintainable as you won’t need to repeat changes between two separate projects.

Hi again @jeff_fmod
Great! I will try when the time comes. Another few questions since im confused and new in VR ground, would this method work with the FMOD Oculus Spatializer plugin? and Is it mandatory to install this plugin to properly work with the Oculus Quest 2 or can I use the common fmod spatializer, the object spatializer or the google resonance audio plugin?

This approach will work with all Spatializer plugins. It is not mandatory to use the FMOD Oculus Spatializer for Oculus, and you can use any of the Spatializers on Oculus, though for events where a sound’s position is particularly important you are probably going to get a better result with the FMOD Oculus Spatializer than the more general-purpose FMOD Spatializer.
One thing to note is that the Object Spatializer would behave the same as the FMOD Spatializer on this platform since there is no platform-specific 3D audio technology implemented for Oculus.

1 Like