Sound Design: How to do a good final mix

I’m trying to tackle a big issue here with sound mixing, something I’ve dabbled with for a long time but never really developed a knack for.

The issue is that I’m finding it hard to balance the Background Music (bgm) with sound effects (sfx). It seems that one is always drowning out the other. I’ve separated the two onto their own channels in the mixer and I’ve taken also steps with the sfx to avoid clipping. Steps like: limiting the number of active sfx voices, ducking on the sfx channel, and even some normalization and compression. However, I’m having a lot of trouble keeping the bgm channel clear when a lot of sfx are playing at once and if I simply bump up the bgm volume then it almost certainly drowns out the sfx at some point, even when using normalization.

I’ve started playing with the idea of using parametric EQ to sort of ‘cut holes’ in the sfx and bgm channels so that they don’t blow out on any given frequency but I’m having limited success. With all these effects I’m tweaking the sound quality is starting to sound way too processed and hollow.

Are their any audio engineers out there that can gives some tips or point out mistakes I’m making? Or maybe just point me to a good beginner tutorial on mixing in a dynamic environment like video games?

P.S Is it just me or does Unity add a little bit of additional compression after the mixer has output?

So after a long day of experimenting I managed to come up with something workable and wanted to share for others. Obviously, this is project-specific so mileage may vary.

I’ve managed to come up with a setup that works well and I’ll likely use these steps (if not the actual numbers) in the future when trying to get final mixes.

  1. I split the sfx into two channels: one for high occurrence sounds (stuff like guns shots) and one for relatively low occurrence sounds (entity death voices, explosions, etc). This greatly helped tweak settings based on how much they masked the bgm channel.

  2. I removed all normalization. Something odd was happening where it seems the normalization was taking into account the final mix maybe? It could be I’m hearing things wrong, or I misunderstood how channels work, but I noticed that if I had normalization on an sfx channel it affected the volume of the bgm noticeably.

  3. I have very ‘gamey’ sound effects generated using BFXR and as such I noticed a trend to very high and very low frequencies. To leave headroom for these sounds I added a very slight EQ to the bgm channel that raised the middletones and then lowered the total output volume accordingly. Conversely I could have used two EQs to lower the high and low tones of the BGM but I felt like keeping it simple.

  4. To ensure the sfx fit within the space I provided for them in step 3, I accordingly added EQs to the high occurrence sfx channel to very very slightly raise the low and high ranges.

  5. The secret sauce! For both sfx channels I compressed the crap outta them with an attack of 15ms and and release of 100-200 (depending on the type of bgm playing). This really flattened and broadened the sfx and left lots of space for the music to sit in back.

As I said this is likely project specific and largely determined by the source sounds. I also should mention that this is a 2D game and I use almost no spacialized sounds. Regardless, I’ll likely be writing down these steps and using them as a cheat sheet for getting started in future projects.

3 Likes

Normally clarity would be achieved via ducking or side chain compression - I’m completely new to Unity so have no clue how you would implement this within Unity, but in the world of audio (my own background) the BGM level would be dropped - by at least 6dB - 12dB - every time there’s a SFX hit, it really is as simple as that, the level drop should be rapid, with a pretty fast recovery too, you don’t need to let the SFX finish before returning the BGM to its original level, psychoacoustically the attack of the SFX is much more important than the decay/sustain.

There really shouldn’t be a need to ‘pocket’ the SFX to the BGM, this is something you might do on a static mix, but doing it on a dynamically changing mix means both the BGM and SFX are compromised, as they are EQ’d to allow other sounds to cut through, sounds that won’t be playing 98% of the time.

Ducking/Sidechaning really is the secret here, you need to be more aggressive than you might think, I’ve suggested a 6dB - 12dB cut, but that’s just as a minimum, you can often get away with near silence (on the BGM) for fractions of a second - without the BGM music appearing to lose its flow.

2 Likes

Hey, that sounds like some great advice. Can’t wait to give it a try!