Snapshots: Scoping in Sends at the event level?

Hey there friendly neighborhood FMOD devs,

We’re looking into using Sony’s 3D Audio for PS5, and per a conversation between FMOD and one of our audio engineers, this requires us to change some Spatializers to Object Spatializers.

But because the Object Spatializer bypasses mixer Group sends – and those Group sends feed into our reverbs – I think this means we need to move our reverb sends to the Event level. (Is that correct so far? I’ll proceed as if it is.) The problem is that I can’t seem to Scope In event-level sends to the snapshots that raise the send level to our reverbs.

Any ideas of how to get around this limitation?
We’re using Unreal 4.27 and FMOD 2.02.07.
Thank you!


If you want those reverb buses to receive a signal from your events, then yeah, you’ll have to rely on sends upstream of the object spatializer effect in each event.

You’re right that snapshots can only affect properties in the mixer, not properties in events. Fortunately, this is easy to workaround. Just select the reverb bus in your mixer, then scope the bus’ fader into your snapshots. This will allow you to use that property to control your reverb.

If you want to control the level of send to reverb separately for different groups of events, that’s not hard either; just replace your reverb return bus with a group bus, then create multiple return buses routed into that group bus.

I should mention that because you’re sending the signal from a point upstream of each event’s spatializing effect, the signals sent to reverb won’t be panned or attenuated, likely resulting in the with-reverb versions of sounds being noticeably louder and differently-panned than their non-reverb versions. If that’s what you want, that’s fine - but if you’d prefer your reverb’d events to match the panning and attenuation of your non-reverb’d events, the easiest workaround is as follows:

  1. To each event you want to include send to reverb, add a new return track.
  2. Add a pre-fader spatializer effect to the new return track, and an object spatializer to the master track (if you haven’t done so already).
  3. Select the master track, and add a send to the new return track to the left of the object spatializer effect.
    This will result in the event having two copies of the signal playing, one spatialized using the object spatializer effect, and one spatialized using the vanilla spatializer effect.
  4. Select the new return track, and set its fader volume to -oo dB.
    This prevents the signal spatialized using the standard spatializer from being included in the event’s output.
  5. Between the spatializer effect and the fader set to -oo dB, add a send to the return bus you’re using for reverb.
    This ensures the signal processed by the standard spatializer is sent to reverb. It won’t be panned and attenuated in exactly the same the same way as the signal processed by the object sptializer, of course, but it’ll be close enough for a convincing reverb.

Thank you for the detailed steps, Joseph! You’re right that it doesn’t quite match the same sound of reverb “immersion” (for lack of a better word) as with the standard spatializer, but it’s still very clean :slight_smile:

Something I noticed, though, is that the volume levels of the affected events seemed to drop slightly (by about 2dB) - is that expected behavior? If so, is there a way to create a separate mix for PS5 that doesn’t affect the mix of other platforms?

Different spatializing effects use different methods of spatialization, and so minor differences are to be expected.

Yes: You can exclude specific effects and entire tracks from the mix on a per-platform basis. Assuming you’ve set up your list of target platforms in the “build” tab of FMOD Studio’s preferences window, you should be able to right-click on any effect or track and select “Include on > (name of platform)” from the context menu to set which platforms the effect or track is to be used on. Then, when you build the project, the banks built for each platform will not include effects and tracks you chose to exclude on that platform.

Thank you for all your help, Joesph :trophy:

I’m now running into an issue where the new Event Sends aren’t functioning at a 1:1 ratio with the former Group Sends (meaning when I copy the values from the Group sends to the Event sends, the result is an outrageously wet reverb return). Is there perhaps a magic value for the Send on the event’s Master Track feeding into the event’s Return track that I’m missing? I assumed it should be at 0dB.

In general, I’m finding that this solution requires us to remix all reverb sends per event. For example, the original Group Send on “Group A” to our Tunnel Reverb was set at 0dB, but to get the same approximate result from the Event send, a damage event needs to be set to -20.5dB, and the send on a skidding tire event needs to be at -29dB. I’m just very confused about the “why” of it all.

(To be fair, I completely understand that this would likely all work as intended if we implemented this at the start of audio development, and not where we are now when maintaining our mix is paramount.)

Thank you in advance for your patience & continued support!

Sends in events and sends on buses use the exact same code and work the exact same way. Indeed, when I test here, they produce the exact same levels of output.

If a send in one location produces a signal that differs from the signal produced by a send in a different location, the signal playing at those two places must be different.

I don’t have access to your project, so I can’t see your project’s routing and signal chains, but I suspect that one or more effects or faders is adjusting the signal between each send’s new location and its old location, with the result that sends in the new location are effectively bypassing those adjustments. You will have to examine each track and bus in that routing path to find the culprit.

Hi joseph, I’m working with DrewKski0 on this; it sounds like you hit the nail on the head, but we don’t know how to address it.

The issue is that the events live in a few subgroups and a few VCAs, and aren’t necessarily at 0db. So what gets sent to the return track on the event is not the same volume as the final volume of the event post-mixer. Best case, this means the reverb is a different volume, but more egregiously, if a VCA is ducking an event altogether, it means the event’s reverb sounds without the event itself making any noise.

I think this is pretty clear, but I attached a screenshot of the issue in a dummy proj in case without spatialization, just to be clearer. I can attach/send the project if needed.

It sounds like you understand the cause of the behavior you’re hearing, and what would be necessary to solve it. Is there any specific part of the process that you need help with?

Have you considered scoping the return bus that is the destination of the send into the same VCA that’s being used to duck the event?

The specific issues we have are that we use groups to control volume, as well as VCAs. So while we can scope a return bus into multiple VCAs, we can’t do that for groups. Sounds like we’d need to stop using groups for volume?

Not necessarily. It depends on what you’re trying to do. Unfortunately, I don’t know how your project is structured or what behavior you’re trying to achieve, so I really can’t tell you what you need to change to achieve it.

You want to adjust the volume of group buses, to achieve some specific behavior that you consider desirable. You also want to adjust the volumes of a variety of events and buses using VCAs, again presumably to achieve behavior that you want. You need to decide exactly how you want these behaviors to interact, then adjust your routing structure and/or VCA assignments to achieve that result.

I don’t know if this will help, but personally I tend to find things more manageable if I don’t adjust the fader of a group bus and assign that bus to a VCA; rather, I’ll create a group bus routed into another group bus, assign one to the VCA and adjust the fader of the other. The signal might end up attenuated by multiple things, but the resulting effect on the signal is easier for me to read and undertstand.