UE4 Nintendo Switch: "Opening too many Audio Outs, can only open 2" Error

Hey,

On any UE4 Nintendo Switch Build, when calling FMOD::Studio::System’s “initialize”,
I get this assertion.

SDK Assertion Failure: 'm_totalUsed!=g_AudioOutCountMax' in AddPair() at pid=149, tid=1130(GameThread)
D:\home\teamcity\work\sdk\Programs\Eris\Sources\Libraries\audio\shim\audio_AudioOutShim.cpp(50)
Opening too many Audio Outs, can only open 2

If it is any help, these are the fmod function calls that occurred up until the crashing line. (all within 1 frame)

  1. FMOD::System_Create(foo)
  2. FMOD::System::init(1, FMOD_INIT_NORMAL, NULL)
  3. FMOD::Studio::System::create(foo2)
  4. FMOD::Studio::System::initialize(32, FMOD_INIT_NORMAL | FMOD_INIT_3D_RIGHTHANDED,FMOD_INIT_NORMAL, NULL) <-Crashes on this line

Any help would be greatly appreciated.

If it also helps, this all works on pc, xbone & ps4.

Regards,
Maxwell G

You can only have two output interfaces at a time on Switch, you are creating two but if you have not disabled the built in UE4 audio then that will already be active.

You can disable the UE4 audio in one of the config files:
https://fmod.com/resources/documentation-ue4?version=2.0&page=user-guide.html#disabling-unreal-audio-device

Hey Cameron,

Thanks for the response,

The UE4 Audio is presumably already disabled in the project’s SwitchEngine.ini as all it contains is:

[Audio]
AudioDeviceModuleName=

Is there any extra steps that were needed to make fmod work specifically on Switch, or if this output limit of 2 is switch only, what else could possibly be using an output?

Regards,
Maxwell G

No other steps required for Switch, if you are using the FMOD for UE4 Integration then that will be creating it’s own instance too. If it helps, any FMOD systems initialized using NO_SOUND mode will not count towards this limit.

Apologies for the late response,

I’ve attempted to pass in the NO_SOUND parameter in both FMOD::System::init & FMOD::Studio::System::initialize and yet they both still use an audio output and the same error occurs :frowning:

I’ve been passing in:

(void*)FMOD_OUTPUTTYPE_NOSOUND

into the FMOD::System::init’s & FMOD::Studio::System::initialize’s ‘extradriverdata’ parameter.

In the event that I’m doing something incorrectly, what is the correct method of passing in the NOSOUND parameter into these initialization functions.

Regards,
Maxwell G

You need to pass it in to System::setOutput before init is called.

Thanks again for the responses!

the setOutput seems to have fixed the crashing, yet I’m unsure if this genuinely means that no audio will be outputted for Switch (As PC was still outputting audio event with the NoSound output was set)

I’ll set this post as solved, and when I get a chance to see if audio actually plays on Switch, if any issues do occur still, I’ll make a new post.

Regards,
Maxwell G

Changing the output will only affect that system that you are applying it to and other FMOD systems will not be affected.

1 Like