# 11. Troubleshooting

This chapter lists a number of common issues that can be encountered while working with the FMOD Core API and FMOD Studio API, along with techniques for overcoming them.

If you encounter a problem, and none of the techniques listed in this chapter help, post a question on the FMOD Forums for advice and support.

### 11.0.1 Audio Becomes Crackly or Distorted Over Time

If you are finding the output of your application is starting to crackle or become distorted when playing for a long time, it is likely there are too many processes using up CPU usage. This can be due to too many large complex events playing at once, too many expensive DSPs in use such as convolution reverbs, or an excessive build up of events.

You can record a Live Update profiler session in your FMOD Studio project, or if using the Core API only, utilize the FMOD Profiler provided with the API installation, to visualize the audio CPU and memory usage of your application. This will assist in tracking down exactly where the resources are being used.

For FMOD Studio API users, some common issues that can cause a build up of events are:

- The event has the Persistent Event Macro property enabled. Persistent events need to be stopped with Studio::EventInstance::stop()
- The event has no natural end, with transitions and loops being used in the timeline logic track. Events that do not naturally end need to be stopped with Studio::EventInstance::stop()

### 11.0.2 Cannot Find Events or Buses with Strings

This usually happens because the `.strings.bank` file has not been loaded. The error FMOD_ERR_EVENT_NOTFOUND would be logged to the game engine's debug logger. The `.strings.bank` file includes all the metadata required to look up events, buses, snapshots, and VCAs during runtime.

Refer to What Building Creates in the FMOD Studio documentation, for more information on what a `strings.bank` file contains.

### 11.0.3 An error is being returned from an FMOD function and I need more detail

All FMOD Core API and FMOD Studio API functions return a FMOD_RESULT. This result is FMOD_OK if the function works as expected, or an error error code describing the problem. You can find a list of all possible errors in the documentation for FMOD_RESULT.

If further debugging is required, you can initialize FMOD Studio or FMOD Core using the logging or "L" version of the respective library. i.e, `fmodstudioL.dll` or `fmodL.dll`. To modify the amount of logging or the way it is displayed, see Debug_Initialize.

### 11.0.4 My audio device does not change automatically

FMOD has an automatic device switching feature which is enabled by default.

A reason for this not to work is that an FMOD_SYSTEM_CALLBACK_DEVICELISTCHANGED callback has been registered. This callback disables the automatic device switching feature on purpose, as it assumes you will be controlling which device gets selected in the callback.