Wondering if there are any generally good practices regarding setting up a situation such as this. Say you have a game that makes use of multiple different game mixes - narrow mix, wide (cinema) mix, headphone mix, and so on.
What is generally the best way to create or ‘author’ these separate mix states from (I assume) Fmod Studio’s mixer interface.
There’s no real “best way” of doing this, but it would be recommended for a proper separation of mixes to have separate banks.
In your Preferences > Build platform list, you can have multiples of the same platform with different surround speaker modes. So it may look something like:
You can then switch to these mix modes in the FMOD Studio application to audition by clicking on the “Platform” dropdown in the bottom right corner of the screen.
In order to avoid multiplying the amount of asset data with each built bank, you would also need to enable the “Build metadata and assets to separate banks” option in Preferences > Build. This way you can have all the assets used across all platforms but the metadata banks will determine the output type.
The only question I have remaining then is when working with separate banks in the case of different mixes - how does that now affect any of your project’s existing banks?
If I’m using the banking system to generally separate and segregate event’s locations in memory for the purpose of minimizing RAM useage and hard disk streaming and things of that nature, how would these separate banks for mix states then come into effect?
So if I were implementing in Unity or Unreal, would I tell either engine to also make use of these specific mix state banks in addition to the banks the game is already using?
The separate banks will be for storing the assets (sample data) and the metadata respectively. So the actual audio files to play are kept in one bank. The metadata bank will contain all other information pertaining to the events and signal chains, including the output format.
The metadata banks are very small in comparison to the asset banks. If you don’t separate them out like this, then both the assets and metadata are bundled into the same bank, meaning for each platform you will have the same assets present in each platform’s bank which will take up a lot of space. So you can have one asset bank that that is shared across multiple platform metadata banks.
Taking the Examples project as an example - having metadata and assets in the same bank will result in each platform being 27.3MB, a total of 81.9MB for 3 different mix banks. However, with separated assets and metadata banks, this would be 115KB for each group of platform metadata banks, plus 27.2MB for the shared asset banks - a total of 27.3MB. So for the same space of one platform’s group of bundled banks you can have three mixes.
In game (regardless of Unity or Unreal) you would only need to load the asset banks once needed but you can load and unload the different mixes when required. If an event instance is already in play, it will be destroyed once the bank is unloaded, so it would be advisable to only allow changing mixes from a settings menu before starting the game. You could have a system in place that memorizes all playing event instances and their timeline positions & parameter values and restart all of them if the mix bank is changed.
Hey sorry for reviving an old post, but the answer was very helpful, however I do not fully understand how I should configure it to load another bank (for example Binaural Mix), after doing what is described above the banks are generated for me respective, but trying to use LoadBank via blueprint, the only option that appears to me to select is the general bank (MasterBank) and no other option, also i noticed that the new banks are not showed in the content browser.
Yes the plugin has been recompiled and btw im currently using UE5.1 (Source code version, sorry i said it wrong before) as its for a game we are developing on my company, the programmer did the recompile work, so i will ask him as i understand from you it might be a compatibility issue ? It should work the way i did
Since I’m not able to replicate your issue, it could either be down to the plugin itself and how it was compiled, or there is a custom bank loading setup that we aren’t seeing. Are you able to zip the FMODStudio folder from your Plugins folder and send it over to me to verify?