I’m doing some profiling of a Unity project on a high end mobile device and am relying on FMOD Stats’ CPU_USAGE struct to get some idea of how much CPU is being used by FMOD.
public float dspusage; /* Returns the % CPU time taken by DSP processing on the low level mixer thread. */
public float streamusage; /* Returns the % CPU time taken by stream processing on the low level stream thread. */
public float geometryusage; /* Returns the % CPU time taken by geometry processing on the low level geometry thread. */
public float updateusage; /* Returns the % CPU time taken by low level update, called as part of the studio update. */
public float studiousage; /* Returns the % CPU time taken by studio update, called from the studio thread. Does not include low level update time. */
I’m seeing DSP usage go up to 30% and Studio Usage going up to 50%. Stream, geometry and update are all pretty low. Any idea if these numbers are excessive?
Also, what does FMOD suggest as best practices for authoring sound and playback in order to get best performance?
Unfortunately, without knowing more about your project’s requirements, there is no way for us to know whether those numbers are higher or lower than they should be.
There are few universally-applicable best practices for using FMOD Studio, as what is “best” depends entirely on what your project’s requirements are. That being said, here are a few tips that you might find useful:
- Every active steam requires constant disk I/O, and so even high-end platforms can only support a single-digit number of simultaneous streams. Test how many simultaneous streams your target platform’s hardware can handle.
- All effects are processed in real time as your game runs. This means that every effect in every playing event instance uses memory and CPU. One of the simplest ways to reduce the resource requirements of your FMOD Studio project is to keep the number of effects present in each event low, and to “bake” effects into your source audio files using a DAW instead of relying on effects inside your FMOD Studio events where possible.
- Voices consume resources. Keeping the number of voices in your project low (by limiting the number of simultaneously playing instruments in events and the number of simultaneously playing event instances) can help keep resource costs down.