Lots of FMOD Errors and Warnings (as discussed at High Score)

Heya team! As discussed at High Score I’m having a number of issues with overloading in FMOD for BirdKnight.

We are using Unity Version: 2022.3.45f1
And FMOD Version: 2.02.22
Here are some of the errors we’re getting:
[FMOD] SoundSourceInstrumentInstance::startChannelIfReady : Loading delay exceeded, sound may play at incorrect time

UnityEngine.Debug:LogWarning (object)
FMODUnity.RuntimeUtils:DebugLogWarning (string) (at Assets/Plugins/FMOD/src/RuntimeUtils.cs:564)
FMODUnity.RuntimeManager:DEBUG_CALLBACK (FMOD.DEBUG_FLAGS,intptr,int,intptr,intptr) (at Assets/Plugins/FMOD/src/RuntimeManager.cs:108)

[FMOD] EventInstance::update : Event {5ab02c98-8ea8-48ee-a673-9f8254d41407} has waited 10.0 seconds for DSP graph to go idle - check for plugins that may be keeping it active

UnityEngine.Debug:LogWarning (object)
FMODUnity.RuntimeUtils:DebugLogWarning (string) (at Assets/Plugins/FMOD/src/RuntimeUtils.cs:564)
FMODUnity.RuntimeManager:DEBUG_CALLBACK (FMOD.DEBUG_FLAGS,intptr,int,intptr,intptr) (at Assets/Plugins/FMOD/src/RuntimeManager.cs:108)

[FMOD] OutputWASAPI::mixerThread : Starvation detected in WASAPI output buffer!

UnityEngine.Debug:LogWarning (object)
FMODUnity.RuntimeUtils:DebugLogWarning (string) (at Assets/Plugins/FMOD/src/RuntimeUtils.cs:564)
FMODUnity.RuntimeManager:DEBUG_CALLBACK (FMOD.DEBUG_FLAGS,intptr,int,intptr,intptr) (at Assets/Plugins/FMOD/src/RuntimeManager.cs:108)

[FMOD] DSPJobList::addJob : DSP JobList expanding job from 1024 entries to 2048 entries.

UnityEngine.Debug:LogWarning (object)
FMODUnity.RuntimeUtils:DebugLogWarning (string) (at Assets/Plugins/FMOD/src/RuntimeUtils.cs:564)
FMODUnity.RuntimeManager:DEBUG_CALLBACK (FMOD.DEBUG_FLAGS,intptr,int,intptr,intptr) (at Assets/Plugins/FMOD/src/RuntimeManager.cs:108)

[FMOD] AsyncCommandBuffer::growBuffer : Growing command buffer to 65536 bytes. Initial command buffer size can be tuned to avoid dynamic growth using Studio::System::setAdvancedSettings()

UnityEngine.Debug:LogWarning (object)
FMODUnity.RuntimeUtils:DebugLogWarning (string) (at Assets/Plugins/FMOD/src/RuntimeUtils.cs:564)
FMODUnity.RuntimeManager:DEBUG_CALLBACK (FMOD.DEBUG_FLAGS,intptr,int,intptr,intptr) (at Assets/Plugins/FMOD/src/RuntimeManager.cs:108)
FMOD.Studio.EventInstance:set3DAttributes (FMOD.ATTRIBUTES_3D) (at Assets/Plugins/FMOD/src/fmod_studio.cs:1337)
FMODUnity.RuntimeManager:CreateInstance (FMOD.GUID) (at Assets/Plugins/FMOD/src/RuntimeManager.cs:1198)
FMODUnity.RuntimeManager:PlayOneShot (FMOD.GUID,UnityEngine.Vector3) (at Assets/Plugins/FMOD/src/RuntimeManager.cs:1232)
FMODUnity.RuntimeManager:PlayOneShot (FMODUnity.EventReference,UnityEngine.Vector3) (at Assets/Plugins/FMOD/src/RuntimeManager.cs:1210)
AudioManager:PlayOneShot (FMODUnity.EventReference,UnityEngine.Vector3) (at Assets/Scripts/Audio/AudioManager.cs:97)
AudioEventsManager:PlayOneShotTrigger (FMODUnity.EventReference,UnityEngine.Vector3) (at Assets/Scripts/Events/EventManagers/AudioEventsManager.cs:11)
EnemyFootstepAudioController:CallFootstepAudioEvent () (at Assets/Scripts/Audio/EnemyFootstepAudioController.cs:44)
EnemyAnimationTriggerController:TriggerFootstepAudio () (at Assets/Scripts/Events/AnimationEventTrigger/EnemyAnimationTriggerController.cs:14)

[FMOD] PlaylistInstrumentInstance::startFullLengthHook : Attempting to schedule a sound in the past, this could cause inaccurate playback.

UnityEngine.Debug:LogWarning (object)
FMODUnity.RuntimeUtils:DebugLogWarning (string) (at Assets/Plugins/FMOD/src/RuntimeUtils.cs:564)
FMODUnity.RuntimeManager:DEBUG_CALLBACK (FMOD.DEBUG_FLAGS,intptr,int,intptr,intptr) (at Assets/Plugins/FMOD/src/RuntimeManager.cs:108)

[FMOD] PlaylistInstrumentInstance::startFullLengthHook : Attempting to schedule a sound in the past, this could cause inaccurate playback.

UnityEngine.Debug:LogWarning (object)
FMODUnity.RuntimeUtils:DebugLogWarning (string) (at Assets/Plugins/FMOD/src/RuntimeUtils.cs:564)
FMODUnity.RuntimeManager:DEBUG_CALLBACK (FMOD.DEBUG_FLAGS,intptr,int,intptr,intptr) (at Assets/Plugins/FMOD/src/RuntimeManager.cs:108)

Here are our FMOD and Unity FMOD settings:
FMOD and Unity Settings

Can you please give us some advice? Currently I can’t build a copy of the game without it trying to dump our banks (we use GitHub for source control), however my other programmer (who doesn’t have the FMOD Project) has no issues building the game (though he still gets the same errors).

Cheers!
Zak

Hi Zak,

Thanks for the images!

Could I please get a profiler session recorded while connected with Live update (FMOD Studio | Glossary - Live Update)


with the Unity project running. Once that is recorded while receiving the error logs. Then please upload you Studio project with the following settings:


uploaded to your profile. Thanks

This may indicate a large number of affects being applied to events. I will be able to confirm when I get my hands on the project.

I remember discussing this, but I have forgotten some of the details. Could you please walk me through your build process again?

Thanks

Hi Connor,

Thanks for coming back to me! I’ve arranged a Profiler session and then exported and uploaded my project to my profile as requested.

I’ve also gone through and checked and now these are the only errors (my other programmer went into Unity and tweaked a few of the bugs causing some of the errors):

Regarding the building of the game, I’m just doing a standard Windows Build in Unity, with basic settings and the 2 scenes we have in the demo currently.

When we then build the game it tries to remove the banks from GitHub and then they turn up in a folder called Streaming assets, which has the Master.Strings file, and then there’s folder called Desktop, which has all the banks, and then inside that is another folder called Desktop that has all the banks minus the Master.Strings bank file. When we play the game there is no audio:

https://drive.google.com/drive/folders/1uBhC-LUkLFYbyXJiaSEVVkrPgBcP-JjO?usp=sharing

Our gitignore file is here:

Hope this is enough detail!

Cheers,
Zak

Running the profiler with your banks, I ran into some glitching during playback and noticed that the CPU usage got up above 100% (meaning that it takes longer to make the sound than it does to play it).

It looks like the most of your issues are probably caused by the “Pitch Shifter” effect, this is a very expensive effect and should be used very sparingly in your project.

Pitch Shifter is a high overhead effect.

This filter is computationally expensive. Reducing the signal from stereo to mono halves the cpu usage. FFT Window size also improves performance at smaller sizes. Reducing window size lowers audio quality, but which settings to use are largely dependant on the sound being played. A noisy polyphonic signal needs a larger fft size compared to a speaking voice for example.

You would be better off using the Pitch parameter on the Event or Instrument as these are much better for performance.

The API Effects Reference has a breakdown of all the effects found in Studio (the Studio Docs for these are in the works at the moment).

Try replacing all the pitch shifter effects with some randomization on the Event pitch and see if any of the issues persist.

Hi Cameron/Connor!

Thanks for that! I’ve gone through and removed all the instances of the Pitch Shifter Plugin and just used them on the events instead. I’ve still got this error happening:
[FMOD] EventInstance::update : Event {5ab02c98-8ea8-48ee-a673-9f8254d41407} has waited 10.0 seconds for DSP graph to go idle - check for plugins that may be keeping it active

UnityEngine.Debug:LogWarning (object)
FMODUnity.RuntimeUtils:DebugLogWarning (string) (at Assets/Plugins/FMOD/src/RuntimeUtils.cs:564)
FMODUnity.RuntimeManager:DEBUG_CALLBACK (FMOD.DEBUG_FLAGS,intptr,int,intptr,intptr) (at Assets/Plugins/FMOD/src/RuntimeManager.cs:108)

And I still have the issue trying to build the game and the FMOD banks being removed. I’ve just completed a profiler session and uploaded another copy of the FMOD project package to my Profile.

Cheers!
Zak

So it looks like the warning “…waited 10.0 seconds for DSP graph to go idle…” is related to your Event “ScoutDroneAlarm”, and more specifically the delay and reverb effects on the master track.

Looking at the delay, while it’s only 320ms, the 40% feedback means it’s going to ring out for a while. That plus the addition of 6s of reverb delay means the signal will continue to ring out for a big chunk of time, more than the 10s warning.

Ok great! I’ll fix that up! Did you find anything regarding building and the banks not attaching?

I’m not certain why banks aren’t being “attached” but I can see something to do with the banks in your settings.

I see in your FMOD Unity settings you have a ‘sub folder’ set with ‘Desktop’. Since you are using Single Platform Build, you should be able to just set the bank path directly to the banks. Eg. “Assets/StreamingAssets/Desktop” (or where ever you would like it).

In the editor, the integration just uses the ‘Build Path’ to load and play banks. This means you must have banks located in “Assets/StreamingAssets”, otherwise you would get errors when trying to play in editor.

Then at build time, the integration will attempt to copy the banks from “Build Path” to “Build Path” + “Bank Sub Folder”. In your case, “Assets/StreamingAssets/Desktop”.

Basically if you were to:

  • Set “Build Path” : “Assets/StreamingAssets/Desktop”.
  • Delete “Bank Sub Folder” in settings.
  • Remove any other banks from the StreamingAssets directory so you only have a folder named Desktop with banks in it (not nested Desktop folders remaining)

I believe this should clear up the bank issues.