We are trying to build our title for xbox platform in Unity. We have used FMOD for 70% of our sound implementation, for the rest 30% we have used Unity’s Audio System.
We were having issues when we play our xbox build. After searching in forum, we came to know that, FMOD does not work well with Unity’s audio and it’s recommended to disable unity audio for xbox platform.
We are very late at our development stage. So is there any solution so that both FMOD and Unity’s audio can work together?
We are using FMOD version 2.02.04 with Xbox GDK June 2021 Update 4, (10.0.19041.7032)
Unfortunately disabling Unity audio is essential to get FMOD to run on Xbox One.
The only option is to disable Unity audio and redo the 30% of sounds from native Unity in FMOD.
EDIT: Our integrations developer has informed me there could be a workaround if you try the following:
- Disable audio using shapes in Unity (not sure if this is a thing in Unity)
- Don’t use XMA for the FMOD Studio bank encodings for Xbox
Sorry to resurrect this old thread but we’re having a similar problem on XBox and was wondering how this was resolved? DId you end up finding a workaround or did you redo 30% of the audio? Is that workaround still viable?
Yes this workaround should still be viable. Can you please calrify what issues are you having on Xbox?
I’ll have to get back to you on exact errors we’re getting but the gist is that we implemented the music in FMOD and the rest of the game audio in Unity and now when building for XBox platforms the FMOD stuff isn’t working. We’ve tried the 2nd part of the workaround, namely building the banks without using XMA, and it didn’t help. And we weren’t sure if there was anything we could do with respect to the first point (about shapes in Unity).
Here’s the most recent error we get:
[FMOD] ACPManager::init : AcpHalAllocateShapeContexts returned 0x8AC80001.
UnityEngine.DebugLogHandler:LogFormat(LogType, Object, String, Object)
FMODUnity.RuntimeManager:DEBUG_CALLBACK(DEBUG_FLAGS, IntPtr, Int32, IntPtr, IntPtr)
(Filename: C:\buildslave\unity\build\Runtime/Export/Debug/Debug.bindings.h Line: 39)
SystemNotInitializedException: [FMOD] Initialization failed : FMOD.Studio.System.create : ERR_INTERNAL : An error occurred that wasn't supposed to. Contact support.
at FMODUnity.RuntimeManager.CheckInitResult (FMOD.RESULT result, System.String cause) [0x00000] in <00000000000000000000000000000000>:0
at FMODUnity.RuntimeManager.Initialize () [0x00000] in <00000000000000000000000000000000>:0
at FMODUnity.RuntimeManager.get_Instance () [0x00000] in <00000000000000000000000000000000>:0
at FMODUnity.RuntimeManager.get_StudioSystem () [0x00000] in <00000000000000000000000000000000>:0
at FMODUnity.RuntimeManager.GetBus (System.String path) [0x00000] in <00000000000000000000000000000000>:0
at Music.Init () [0x00000] in <00000000000000000000000000000000>:0
at Music.Awake () [0x00000] in <00000000000000000000000000000000>:0
(Filename: currently not available on il2cpp Line: -1)
Thank you for sharing the log, it looks like we are still attempting to use SHAPE ourselves despite banks not being encoded with XMA. I discussed this with the Dev team and they confirmed that the original advice was incorrect as FMOD will always reserve XMA resources regardless of whether that format is used.
As for disabling SHAPE in Unity, it seems there is no way to do this outside of completely disabling Unity audio.
I have added a task to instead disable SHAPE on FMOD’s side when the bank encoding format is not XMA, which should allow Unity Audio and FMOD to coexist on Xbox if you need it to. Apologies for the misinformation on this issue.