Saving and Loading “Full” Audio State

Hello all! I’m working on a game where there is a lot of dynamic audio switching on/off, instance creation, and parameter setting in a single “level”. I’m trying to figure out the best way to save and load the “state” of the full audio system when a user makes a save of a map, and then load that state with the loaded savegame.

What we currently do is keep a running tally of all created instances, their last called state, and their last called parameters. On load we then run through this list to re-init the system. However, because this requires code-driven event creation/param passing/etc, we don’t get “state” that comes from FMOD itself (like an active audio instance stopping another instance).

My question is twofold: is there a way to listen to whatever FMOD is doing for instances? Is there an easier way to snapshot the whole system? Are there other best practices here I’m missing?

Thanks!

You can listen out for event instance creation, destruction etc by implementing event callbacks and listening out for your desired callback types. This would give you added control over things like knowing whether a voice is virtual which would give you closer state approximation. Unfortunately there is no system-level way to listen out for these events so this would mean a callback would need to be set on each individual event instance or event description.
We don’t have any high level interface for saving or loading the state of FMOD- technically we do with command capture/replay but it would take some work to adequately repurpose for state management.