I’d like to ask the community about outputting Dolby Atmos to a home theatre system from a game built in Unity.
So far I have set everything up in FMOD and Windows - FMOD is outputting 7.1.2 to my AVR. This is all working fine.
However when I run the game Unity only outputs L, R and LFE (channels 1, 2 and 4).
My AVR says it is receiving Dolby Atmos but it clearly isn’t.
I’m fairly confident I have FMOD and Windows set up correctly, but feel I am missing some settings in Unity 3D. Or some build settings in FMOD? A missing Unity plugin maybe?
I haven’t found anything in the Unity documentation about enabling Atmos.
A setting to check would be the Project Platform under Unity Toolbar > FMOD > Edit Settings > Platform Specific > Project Platform which will set the Speaker mode for the FMOD System:
Could I also grab the Output Device you have selected in Preferences > Audio, and the Surround Speaker Mode you have set for the target platform under Preferences > Build
First, will want to add the Windows platform by clicking the +:
Then set the Output Mode to Windows Sonic:
If that does not help, try this as well:
It might be worth trying Unity Integration | Connecting Using Live Update. You can check that the output is making it back to all the channels. Another test would be to call the following function in Start():
FMODUnity.RuntimeManager.CoreSystem.getSoftwareFormat(out int sample, out FMOD.SPEAKERMODE speaker, out int num);
Debug.Log(speaker);
This will just confirm that the CoreSystem is in the right configuration. Let me know how that goes!
I can confirm with live update on, we are receiving all 12 channels through the FMOD Master Bus.
However, we can only monitor in 7.1. We are sure the AVR is set up correctly, because when we play back in FMOD, we can monitor in 7.1.4.
We added Windows in the ‘platform specific’ section of the FMOD Settings in Unity as you suggested, and selected Windows Sonic as the output.
We weren’t entirely sure where to put the function call you suggested - is that a function definition which we should call with input arguments in the Start() function of the Studio Event Emitter script?
This can be called in any Start() function connected to a gameObject in your scene:
void Start()
{
FMOD.SPEAKERMODE speaker = FMOD.SPEAKERMODE.DEFAULT;
if (FMODUnity.RuntimeManager.IsInitialized)
FMODUnity.RuntimeManager.CoreSystem.getSoftwareFormat(out int sample, out speaker, out int num);
Debug.Log("Current Speaker setup: " + speaker);
}
Is this only happening in Editor? If you make a build of the project does it output correctly?
I’ve tried a build of the project and can confirm that is it working fine - all 12 channels working and in the correct 7.1.4 order.
So it seems like I can author the Atmos bed in Reaper, then import this into FMOD and add audio objects as necessary. I just can’t monitor Atmos properly in Unity until I build the project.