I’d like to be able to access more lowlevel API functions when using the studio api. An example use-case: my engine assumes all 3D sounds are going to be set of LINEAR rolloff. If not, I want to fire a warning. What I’d like to do is something like:
FMOD_Studio_GetSound(event_desc, &sound); // not possible
FMOD_Sound_GetMode(sound, &mode)
… mode & FMOD_3D_LINEARROLLOFF …
Are sounds not 1:1 with events or some other reason it is impossible to get the sound?
That is correct, one event can contain many sounds and the 3D spatialization is done differently in Studio to the Low Level. FMOD Studio uses the FMOD_DSP_TYPE_PAN DSP to perform the 3D panning and attenuation, and there is also the option of drawing a custom attenuation curve using a distance parameter volume automation.
What are you trying to achieve with this information? If you can tell us a bit more about what you’re using it for, we can look into exposing what you need through the Studio API.
My general issue is that right now the high level API does not expose nearly as much information or offer as much control vs. the lowlevel API. This is understandable but in this particular case my engine is dependent on sounds being set to linear rolloff and I simply wanted to warn the user if I detect a sound that is not setup that way. I thought one way to avoid polluting the API for all possible such use-cases would be to just make the links between high level and low level explorable. So in this case for example I would be able enumerate all the sounds/dsp settings/etc. inherent in an effect and then transfer over to the lowlevel API.
As an aside, it would also be nice to enumerate:
All events present in a given bank file (e.g. I don’t want the user to care about bank files, but just sound names, and want to be able load/unload bank files depending on all the events that are actually used in a given scene)
The bus(es) to which a given sound instance is assigned (e.g. to enforce a master/music/ and effects volume like we could using the lowlevel API)