Spammy fmod warnings

In lots of the logs I get these:

[FMOD] EventInstance::update : Event {445dd6a2-f235-45d7-b184-307e33c04925} waited 831 milliseconds for sample data to load.  Preload sample data to avoid this delay. 
SampleWaveformResourceInstance::waveformSourceDestroyed : Force unload sample data {be036c01-96af-4ee6-93ec-8802564b4319} due to bank unload
OutputWASAPI::mixerThread : Starvation detected in WASAPI output buffer!

They don’t seem related since they don’t appear one right after the another but they are really spammy in my logs my logs, and the approach to loading/unloading banks hasn’t changed in our game. We also do have some heavy modifications in regards to the FMODs RuntimemManager since we have several games handled in one project, but these problems started arising couple of weeks ago.

Do you guys have any tips to where should l search for the problems for each of these?

Kind regards.

The first warning is due to playing an EventInstance without preloading the sample data, this causes the sample data to load from disk at the same time it has been requested to play. You can avoid this with Bank::loadSampleData, EventDescription::loadSampleData or creating the EventInstance before the time you call EventInstance::start, giving enough time to load from disk. In your case the Event played almost a second late because the samples weren’t ready, this may not have happened in the past due to different disk utilization.

The second warning is about unloading a bank without first stopping the EventInstances that use that Bank data. This causes FMOD to hard cut those EventInstances which may not sound great. It’s recommended to stop before unload.

Finally the WASAPI starvation indicates the stream of audio to the sound device was interrupted. This can happen very occasionally by things happening in the operating system. If it happens frequently then it’s likely the FMOD mixer is being overloaded potentially causing stuttering, you can use the FMOD Profiler to see what the CPU usage is like.

Thanks for the answers, will look more into it.

@mathew Is there a way to get to what bank does my event belong to, or the other way around, to destroy all the active events by that bank when the bank unloads, so i don’t get the warning from the second line at all?

You can fetch all the Events referenced by a Bank with FMOD::Studio::Bank::getEventList.