Thanks for the logs and code!
RuntimeManager is similar to your own class SoundControllerFMOD, in that it’s a lazy-loaded singleton. Usually, the FMOD Studio listener component is responsible for the first call into RuntimeManager, which causes it to create and initialize its Studio System. By the time fmod.init() is called in SoundControllerFMOD, the system fmod that is retrieved is already initialized, leading to the ERR_INITIALIZED error.
This may or may not be the reason why you’re not getting any sound, but I’d recommend removing the call to fmod.init() in SoundControllerFMOD and any other similar functions that return an error as a test, and see whether that makes any difference.
Since you only want Core API features, you will likely want to do one of the following things:
- Don’t interact with
RuntimeManagerat all, and instead create and initialize your own Core System inSoundControllerFMODby interacting with the Core API’s C# wrapper directly. If you do this, you may wish to remove most/all of the FMOD for Unity integration code from your Unity project - Leave the FMOD for Unity code as is, and either modify the code in
RuntimeManagerto suit your needs, and/or modify your own code to interact withRuntimeManagerin a way that doesn’t interfere with howRuntimeManageris managing its FMOD system
If resolving the ERR_INITIALIZED error doesn’t resolve the issue, the fact that sounds are successfully being created and played but no output is occurring indicates that there’s either an issue with the output itself, or that the sounds aren’t connected to the mixer properly.
In this case, could I get you to modify RuntimeManager to pass the PROFILE_ENABLE and PROFILE_METER_ALL Core API flags to studioSystem.initialize() (~line 381), and use the Core API FMOD Profiler tool included with the FMOD Engine installer at ./bin/FMOD Profiler.exe to see whether your created channels are connected to the DSP graph as expected? If you could share a screenshot from the Profiler here, that’d be great.
Enabling the “show volume” option when using PROFILE_METER_ALL flag will visualize metering in the Core API Profiler, and should help in observing signal slow throughout the DSP graph:
