AstoundSound RTI and 3D Panner toggling for 5.1/stereo

Hello,

I am doing a preliminary analysis on switching our company’s simulation to FMOD Studio possibly with AstoundSound RTI. However when the AstoundSound RTI Panner Effect is added replacing the default 3D Panner in an Event’s master track it seems to be processing only in 2 channel mode instead of 5.1 as the default 3D Panner does.

This occurs even if FMOD Studio is processing output to a 5.1 speaker system in windows.

If this is the case then we would need to allow customers to toggle the simulation between 5.1 setup (default panner) and stereo headphone setup with RTI. Is there any way we would be able to toggle between the two Panners from the API (what is the recommended method to achieve this)? Or am I missing something due to lack of information/understanding?

So far, the AstoundSound RTI panner only supports 2 channels’ output.
However, you could toggle two panners in realtime.

Because retrieving the pointer to the master group is asynchronously,
it is necessary to setup a callback for each event instance.

FMOD::DSP* dspAstoundSoundRTIPanner = NULL;
FMOD::DSP* dspDefaultPanner = NULL;

FMOD::Studio::ID eventID = {0};
ERRCHECK( system->lookupID(“event:/BLABLA”, &eventID) );

FMOD::Studio::EventDescription* eventDescription = NULL;
ERRCHECK( system->getEvent(&eventID, FMOD_STUDIO_LOAD_BEGIN_NOW, &eventDescription) );

FMOD::Studio::EventInstance* eventInstance = NULL;
ERRCHECK( eventDescription->createInstance(&eventInstance) );

ERRCHECK( eventInstance->setCallback(eventInstanceCallback) );
ERRCHECK( eventInstance->start() );

FMOD_RESULT F_CALLBACK eventInstanceCallback(FMOD_STUDIO_EVENT_CALLBACK_TYPE type, void *parameters)
{
if (type == FMOD_STUDIO_EVENT_CALLBACK_STARTED)
{
FMOD::Studio::EventInstance *instance = (FMOD::Studio::EventInstance *)parameters;

    //Retrieve the master group of this event instance asynchronously here
    FMOD::ChannelGroup* masterGroup = NULL;
    FMOD_RESULT result = instance->getChannelGroup(&masterGroup);
    ERRCHECK(result);
    
    //Retrieve the pointers to AstoundSoundRTI Panner DSP and the default panner DSP on the current event instance
    result  = masterGroup->getDSP(THE_INDEX_OF_AstoundSoundRTI_PANNER_DSP, &dspAstoundSoundRTIPanner);
    ERRCHECK(result);
    result = masterGroup->getDSP(THE_INDEX_OF_DEFAULT_PANNER_DSP, &dspDefaultPanner);
    ERRCHECK(result);
}

return FMOD_OK;

}

To enable the AstoundSoundRTI Panner:
dspAstoundSoundRTIPanner->setBypass(false);
dspDefaultPanner->setBypass(true);

To enable the default Panner:
dspAstoundSoundRTIPanner->setBypass(true);
dspDefaultPanner->setBypass(false);

1 Like

In the future, AstoundSoundRTI plugin for FMOD will also support mono-in-surround-out to enhance the elevation cue on 5.1 or 7.1 system.
Thanks for your interest in AstoundSound technology. :slight_smile:

2 Likes

Ah, nice! This would solve the issue outright I guess. :slight_smile:

Thanks, I got that method to work in after wrangling the code a little.

Now, this could be done to resolve the problem as you stated, but it seems like it might become a bit excessive if you start playing lots of events sequentially, like gunshots, hits etc.

It would be cool if there was some way to macro manage the problem. To add say a common parameter on a mixer bus which would be able to automate the panners on/off for their Events. If you know what I mean. Or if placing an AstoundSound RTI panner was possible on mixer buses, which if not bypassed, would automatically tell FMOD to disable the default 3D panners in the events. I do understand why things were done the way they were though and how my suggestion is over simplifying the problem since buses can have various routes and various sends coming in etc.

Regards