Trying to route sound to another position programmatically but the result is quiet and has constant stutter

Working on a feature for our project similar to Wwise’s multi position. I was experimenting with splitting the signal before the spatializer, and add a connection to another spatializer. Basically the pre-spatializer dsp signal goes into two spatializers in parallel, and then I’ll just tune the mix on the connections to both spatializes to mix between the real sound source and the virtual sound source.

When using this approach, it seems like whatever value I passed into FMOD_DSP_PAN_3D_POSITION doesn’t matter. The sound seems to always play at the listener’s location. (I could be wrong here, I think this was working when we were using FMOD 2.1, now we are on 2.2.08)

Then I tried creating a new channel group as the virtual sound source, split and route the pre-spatializer signal there, try to pass the location I want the sound to play at to set3DAttribute . It seems to be working but the output is really quiet compare to the original signal. When I turned up the volume, I can hear stuttering.

We will have different locations for different sound instances even if they are the same event. Any suggestions on what’s the best why to achieve this feature? Thanks in advance!


Something that might help you achieve the functionality you are looking for is our Transceivers (FMOD API | Effects Reference), they are an effect that you can add to an event.

Hope this helps!

@Connor_FMOD Thanks for the answer! I’ve looked into Transceivers for a little bit and have a couple follow-up questions.

  1. Is it possible to route the signal without creating new event instances? Basically I want the signal from the event instance to be played at multiple locations some time, and the “if to play at multiple locations”, “where are these locations” are all decided during runtime calculation.
  2. How to let Transceiver know where I want the signal to play? For the panning effect there’s the FMOD_DSP_PAN_3D_POSITION parameter, but I don’t see anything similar on FMOD_DSP_TRANSCEIVER parameters.
  3. Is it possible to have more than 32 channels?

In reference to the source event, you will only need one instance of this. However, for every different position you want to place the receivers they will have to be new instances.

This is exactly what transceivers will allow you to accomplish.

As they are their own events, they can have their positions set during runtime and moved around while they receive signals.

Unfortunately not, that is the maximum.

I will link you to our feature demo on GitHub here: GitHub - fmod/unity-feature-demo: Demonstration of FMOD Studio features within Unity using the FMOD For Unity integration., which has an example of transceivers in action.

Hope this helps!