Tips for making mono sound good in FMOD (other than verb)

I’ve designed an amazing, rich, wide car engine in serum. But obviously it needs to be bounced into mono for the game. Does anyone have any tips within FMOD to keep that richness and “oomf” after bouncing into mono for the game?

I’m not having any phasing issues, but the decrease quality/richness/interest when moving my amazing engine from stereo to mono just really bothers me LOL.

Why does it need to be mono in-game?

1 Like

Because it’s a positional object? It was my understanding that all positional objects in game were just automatically changed to mono anyway, so having stereo files on positional sounds is a waste of space

please correct me if im wrong :slight_smile:

Is it a 3D game or 2D? Are you using FMOD’s built-in spatializer or a plugin like Oculus Spatializer or Resonance Audio?

You can still use stereo for positional audio. Whatever you’re running through a spatializer, yes, you’ll want it in mono to save resources. But I commonly use a stereo layer with slight panning (that pans using the built-in direction parameter and some automation) on top of the spatialized layer to add width and texture. A use case would be positional gunfire with a stereo tail, or a tree falling over where the directional sound is overtaken by stereo all around you. You could also use the built-in distance parameter to fade down the spatialized sounds the closer you get while fading in the wide stereo version (using different source material to avoid phasing). I’d use that for something like a car engine or a waterfall. With the layered approach you might not want it on every sound, just where it counts. Sometimes you might not use a spatializer at all but still want some positional panning on a stereo source, again using the built-in direction parameter.

Wow… This is an amazing insight… Please help me try to understand the execution of this better.

Yes it is a 3D game, using fmod’s spatializer.

The gunfire with a stereo tail is a great example…

In terms of a car engine, so you’re saying I would need 2 seperate events in FMOD for this? One 3D emitter and one 2D emitter? The mono engine event emitter on the car itself, and then I would put the event emitter for those stereo moments… on the camera?

How do I use the direction parameter on the stereo event / stereo emitter on the player, to keep some sense of direction / distance? From what you said I gather there’s a difference between “spatialization” (mono) and direction (stereo) in fmod?

I really appreciate your time on this man! This is one of the most important things I’ve heard so far in terms of game audio.

1 Like

Someone was telling me I should be able to have the stereo and mono sounds in the same event.

He mainly uses Wwise, but he was saying that in Wwise, there is something called the “Speaker Panning / 3D Spatialization Mix” which effectively is a slider that controls how much of a sound gets sent to normal speaker panning, and how much is sent to the 3D spatialized mix.

He is pretty sure FMOD can be automated by parameters in much the same way.

Anyway, again I’m really keen to get your thoughts on this, and what you think the best way of setting up the mono and stereo sounds is.

Really looking forward to hearing back from you!

With FMOD’s Spatializer, just be aware that it’s not a binaural effect, which is fine for speakers instereo/surround but if you’re planning on using headphones and wanting that spatial perception of direction and distance I’d use one of Steam Audio, Oculus Spatializer, or Resonance Audio. Resonance is great for the Switch game you’re working that you’ve posted in other threads about, because it’s got a low CPU cost, but it bypasses the mixer which makes it a last resort for me in most games. I usually default to Oculus though I think Steam Audio sounds the best of the three.

For your car engine, no, you’ll use one event. Do you have multiple cars in the game or is it a player-only vehicle? If there are many, make sure your spatializer is on the master out of the event — this is the only way to correctly use Virtualize instance stealing which you’ll probably want to use on the Switch. (NOTE: if you want to have a spatialized layer and a stereo layer AND want to virtualize, you’d still put the spatializer on the event’s master, turn the volume down to -infinity on the stereo layer, and send it to a bus so that it doesn’t get spatialized.) If it’s a singular vehicle and there won’t be multiples of this same event playing, you can make two tracks in your engine event — one with a spatializer on it, and the other with your stereo content. How to pan the stereo layer: create a parameter, in parameter type choose “Built-in: Direction” and click OK, select the track, right-click on the pan knob in bottom right of screen and “Add Modulation”, draw a curve like this:

That should do it. A nice subtly-panning stereo layer to supplement your spatial layer. You’ll have fun figuring out which kind of source material works well for each layer, and how much you want the pan to move. Although, if you’re going to do a lot of these events, I’d make a Preset. Instead of using the track’s pan, open the Preset browser, and in the effects tab make an FMOD Panner, set it to stereo, right-click the knob and draw a curve. This way it will save project memory and save you time — just use a preset for every sound you want to do this to. In this image you see I’ve made a few presets:

Then you might want to do the same for distance. Just make a gain plugin preset instead of a panner.

Here’s a curve I made for a sound where I wanted the stereo layer to ramp up more, the closer you are to it, but then drop off faster the farther you are.

As for the difference between spatialization and direction, usually spatialization refers to the ability of the listener to perceive direction and distance, and to “feel” the room that the sound exists in. So this is why it’s important to use a binaural plugin like Oculus/Steam/Resonance with an HRTF if it is ever possible that the player might use headphones. And why it’s important to work out the room simulation, whether that involves using the plugin’s features, or sending to a convolution reverb return, sometimes using automation to control how much of it gets sent.

1 Like

As for your comment about how Wwise works, with the ability to send a mix rather than drawing the two separate curves as I’ve shown, that’s a feature I’d love to have in FMOD! Although, drawing one curve for each in FMOD gives you more control in a way. To achieve what I did in those curves, I’d still have to draw two curves in Wwise: a mix, AND a master volume curve.

There’s also another crucial difference in the approach in that I am not sending the same stereo signal to the spatializer. I’ve found that I’ve never been happy with that result — you get phasing. This is why I design a mono/spatialized layer and a separate, complimentary stereo layer.

1 Like

This someone is correct. To access this feature, click on the disclosure triangle in the middle of a spatializer effect. (In more recent versions of FMOD Studio there are two disclosure triangles, in which csae you want the one labeled “2D Pan Mix.”) Clicking on this disclosure triangle reveals a panner whose effect on the signal doesn’t depend on the event’s 3D attributes, and a “mix” knob that lets you choose the mix of normal spatialization and override panner that gets applied to he signal.

I suspect you’re hearing phasing because each send introduces a fixed amount of latency, so if you duplicate the signal with one send, the second track will be out of phase with the first. You should be able to avoid this issue by setting the original track’s fader volume to -oo and having two pre-fader sends on that track, each sending to a different return tracks. Doing so ensures that both return tracks are subject to the exact same amount of latency, and thus will not exhibit phasing.

1 Like

Amazing man. I’m still processing all of this. I really appreciate your help and the effort you’ve put in here. I’ve never used the built-in parameters before, that’s really stepping out from being a total noob into actually using the software.
I really like appreciate that.

There are multiple engines but they will all be designed differently, and will have their own events (I’m assuming) So i went with your singular engine approach.
I’ve got a spatializer on the mono sound and a panner on the stereo, and added both built-in parameters (direction and distance), and curves like yours to my stereo sound and it’s working nicely

My noobish question is. will the spatializer on the master track effect the stereo sound?

Oh wow

Yes, the Spatializer on the master will affect the stereo track. If you’re doing the version that can’t be virtualized (stealing) put the spatializer on the spatial/mono track, and nothing at all on the master.

1 Like

Amazing dude, got it. Spatializer on the master deleted.

Also, I’ve found the Resonance Audio spatializer. There is listener, soundfield, or source. Which one would I use for the car engine?

And lastly… Would i be pushing the friendship to ask you what virtualize and stealing are… lol…

Glad to help!!

You’d use source on the track. Then you need to put the listener on the master bus in the mixer (not the event’s master). Note: this listener receives and spits out all audio from all instances of the Res audio “source” spatializers, meaning that it completely skips FMOD’s mixer. This is why it’s less common to use Resonance. If you’ve got a complex project with mixing demands you’ll likely not want to use Resonance, and use Steam or Oculus instead. Given that you’re still learning FMOD I’d not use Resonance, so that you’re not excluding yourself from FMOD features you might really want to learn.

Stealing & Virtualize: stealing is a way to set limits on numbers of active instances of an event. Say, 5 max bird chirp events playing, even if there is a flock of 500, each attempting to chirp in code. There are a few stealing modes you can read about in the manual. Virtualize limits it so that only the closest events can be heard though it keeps the other 495 chirps active, just not emitting any sound or using memory/CPU. Once one of those 495 come closer than those previously-closest 5, it silenced the furthest of those 5 to allow the now-closest 5 to sound. Since it’s sounding like you’re doing a Switch game, stealing will be important.

Also, for the sake of clarity in a game’s mix, stealing will help keep the clutter down.

1 Like

Epic… wow. Thank you

So yeah I decided on Steam Audio but apparently it doesn’t work with version 2.0 of FMOD. Do you know if this is still the case?
If so, I guess oculus it is…

In terms of the virtualize and stealing. I have one last question…

Like in your example, I assume you would have one event of bird sounds?
But what if you had a zoo with 500 of every animal in existence around you, each with their own event…lol. Could you do something like that to save CPU, by stealing events? Or am I just exposing my noobishness by asking?

Steam Audio should work with v2.0
https://valvesoftware.github.io/steam-audio/doc/fmod/getting-started.html

Virtualize only works on events — you can do stealing on an entire group bus but Virtualize is not an option on a group bus. I recommend reading up on the differences of the stealing modes. If you really needed to virtualize multiple different sounds, say, a dozen different types of animals, you could make a “ZooAnimal” event, and make a Labeled Parameter “AnimalType” with a value for each type of animal.

1 Like

Great, thanks so much again mago

Joseph do you know if this option to mix in the spatialization exists with steam audio?