FMOD Studio Initialization Fail: ERR_INVALID_PARAM on executable build

So I have a project that I am trying to build in Unity 5.3.5f1 using FMOD v1.07.03

When working in the editor everything works perfectly not an error or warning. However when I create a Windows X86_64 build I get the following error when FMOD initializes.

SystemNotInitializedException: FMOD Studio initialization failed : Calling initialize : ERR_INVALID_PARAM : An invalid parameter was passed to this function.

Some info about the project:

  • I am using a proprietary internal plugin which is only compatible with this particular version of FMOD
  • I am also using an Oculus rift so VR support is enabled

Debug steps I have already taken:

  • I created a separate project in which I had a single source with White noise and made a successful build with FMOD initializing properly
  • From there I built up the features, I added our plugin and built, no problems.
  • Added the FMOD parameters and scripts referencing them to see if that was it, no problems.
  • I finally added VR support and still was able to build and hear audio successfully.

I can’t seem to find any differences between the projects in the FMOD settings or the Unity settings. All that is different is that there are a 9 sources playing simultaneously instead of one, and there are multiple banks being packaged in the build (but not being called in the scene). The project with the issues has multiple scenes although I am only trying to build a single scene loading one bank playing 9 sources simultaneously.

Any help would be appreciated! Let me know if any additional information is needed.

Modify runtimemanager.cs line 99 to read

result = FMOD.Debug.Initialize(FMOD.DEBUG_FLAGS.LOG | FMOD.DEBUG_FLAGS.TYPE_TRACE, FMOD.DEBUG_MODE.FILE, null, RuntimeUtils.LogFileName);

and you should get additional information about the cause of the INVALID_PARAM error in the file fmod.log that you can post.

Here is the output of my fmod log file

[LOG] SystemI::init : FMOD Studio Version: 00010703 (69998)
[LOG] SystemI::init : maxchannels = 2048, flags = 00030000, extradriverdata = 0000000000000000
[LOG] SystemI::close :
[LOG] SystemI::close : Stop all sounds
[LOG] SystemI::close : Remove miscllaneous DSP stuff.
[LOG] SystemI::close : done.

[LOG] OutputWASAPI::init : Mix Format (WAVEFORMATEX): wFormatTag=0xFFFE, nChannels=2, nSamplesPerSec=48000, nAvgBytesPerSec=384000, nBlockAlign=8, wBitsPerSample=32, cbSize=22.
[LOG] OutputWASAPI::init : Mix Format (WAVEFORMATEXTENSIBLE): wValidBitsPerSample=32, dwChannelMask=0x00000003, SubFormat=00000003-0000-0010-8000-00AA00389B71.
[LOG] DownMix::init : dspbuffersize: 1024 rate: 48000. output speaker mode: 3, input speaker mode 7
[LOG] DownMix::init : done.
[LOG] Thread::initThread : Initializing FMOD (WASAPI) feeder thread. priority 0
[LOG] Thread::initThread : - Stacksize 0. Stack pointer 0000000000000000 : usesemaphore = 0 : sleeptime = 0
[LOG] Thread::callback : * FMOD (WASAPI) feeder thread started
[LOG] Thread::initThread : Initializing FMOD mixer thread. priority 2
[LOG] OutputWASAPI::feederUpdate : WASAPI feeder thread set to ‘Audio’ characteristic
[LOG] Thread::initThread : - Stacksize 49152. Stack pointer 0000000000000000 : usesemaphore = 1 : sleeptime = 0
[LOG] Thread::callback : * FMOD mixer thread started
[LOG] SystemI::init : Set up emulated output
[LOG] SystemI::init : create the channel pool
[LOG] SystemI::init : Set up streamer
[LOG] Thread::initThread : Initializing FMOD stream thread. priority 2
[LOG] Thread::initThread : - Stacksize 65536. Stack pointer 0000000000000000 : usesemaphore = 0 : sleeptime = 10
[LOG] Thread::callback : * FMOD stream thread started
[ERR] DSPCodecPool::init : Maximum DSP codec pool size is 256.
e:\jk\workspace\Build__1.7__UnityLibs_Win\lowlevel_api\src\fmod_systemi_dsp.cpp(582) : [LOG] FMOD_RESULT = 31 – An invalid parameter was passed to this function.
e:\jk\workspace\Build__1.7__UnityLibs_Win\lowlevel_api\src\fmod_systemi.cpp(2917) : [LOG] FMOD_RESULT = 31 – An invalid parameter was passed to this function.
[LOG] Global::decRef : Shut down streamer and FMOD_NONBLOCKING and FileSystem thread.
[LOG] Global::decRef : Shut down file system.
[LOG] SystemI::close :
[LOG] SystemI::close : Stop all sounds
[LOG] Thread::callback : * FMOD stream thread finished
[LOG] Thread::close : FMOD stream thread thread destroyed
[LOG] SystemI::close : Stream thread destroyed
[LOG] SystemI::close : Shut down output.
[LOG] Thread::callback : * FMOD (WASAPI) feeder thread finished
[ERR] assert : assertion: ‘(int)lastbuffer.mChannels == mSystem->getNumOutputChannels()’ failed
[LOG] Thread::close : FMOD (WASAPI) feeder thread thread destroyed
[LOG] Thread::callback : * FMOD mixer thread finished
[LOG] Thread::close : FMOD mixer thread thread destroyed
[LOG] SystemI::close : Free master channel group.
[LOG] SystemI::close : Remove ‘master’ sound group.
[LOG] SystemI::close : Free software output.
[LOG] SystemI::close : Free emulated output.
[LOG] SystemI::close : Free channel pool.
[LOG] SystemI::close : Remove miscllaneous DSP stuff.
[ERR] assert : assertion: ‘connectionsRemaining == 0’ failed
[LOG] SystemI::close : done.

e:\jk\workspace\Build__1.7__UnityLibs_Win\lowlevel_api\src\fmod_system.cpp(524) : [LOG] FMOD_RESULT = 31 – An invalid parameter was passed to this function.
e:\jk\workspace\Build__1.7__UnityLibs_Win\studio_api\src\fmod_runtime_manager.cpp(637) : [LOG] FMOD_RESULT = 31 – An invalid parameter was passed to this function.
[LOG] LiveUpdate::release :
e:\jk\workspace\Build__1.7__UnityLibs_Win\lowlevel_api\src\fmod_systemi_thread.cpp(87) : [LOG] FMOD_RESULT = 31 – An invalid parameter was passed to this function.
e:\jk\workspace\Build__1.7__UnityLibs_Win\studio_api\src\fmod_studio_impl.cpp(1288) : [LOG] FMOD_RESULT = 31 – An invalid parameter was passed to this function.
e:\jk\workspace\Build__1.7__UnityLibs_Win\studio_api\src\fmod_studio_impl.cpp(3902) : [LOG] FMOD_RESULT = 31 – An invalid parameter was passed to this function.
e:\jk\workspace\Build__1.7__UnityLibs_Win\studio_api\src\fmod_weakhandle_system.cpp(252) : [LOG] FMOD_RESULT = 30 – An invalid object handle was used.
e:\jk\workspace\Build__1.7__UnityLibs_Win\studio_api\src\fmod_studio_impl.cpp(1235) : [LOG] FMOD_RESULT = 30 – An invalid object handle was used.
e:\jk\workspace\Build__1.7__UnityLibs_Win\studio_api\src\fmod_studio_impl.cpp(3909) : [LOG] FMOD_RESULT = 30 – An invalid object handle was used.

The Unity Integration is letting you set the Real Channel Count too high. You’ll have to manually limit yourself to a number lower than 256.

We’ll limit the slider for setting the count in future releases.

That did the trick! Thanks