   It's either too loud or too quiet! Ideas needed for dynamic mixing techniques
  Hi all,I have a problem to solve: the overall mix of our game is way too loud. What seem like carefully balanced gunshots, ricochets, explosions, ambience tracks and music send the RMS meters through the roof when piled together in big fight scenes and busy areas of the game, so I'm looking for solutions to creating a nicely balanced dynamic mix. Here are my ideas so far:1. A calculation to reduce the volume of all voicesThis could total up the attenuation of every playing voice and perform some sort of software compression calculation to do further attenuation. I could give samples different priorities (or even separate them into categories) so some important sounds' volumes would remain untouched.2. Limiting simultaneous playback of samplesThis is a no-brainer that needs to be implemented at some point anyway. A limit on how many times a sample can be played at once would reduce large piles of gunshots and ricochets. A player would be hard-pressed to make out 8+ gunshots all at once in a crowded area anyway, so it's a waste of resources too. Distances from the listener (and each other) would help decide which voices to drop.3. Soft-knee compressorThis is a tough one, since not all of our platforms support this on the hardware, and it looks like a complicated calculation to do on the CPU (especially with 8 channels to worry about). Even so, it would be a last resort to add a finishing touch towards the end of the project, since it won't magically fix a broken mix.4. Bleed into other channelsI'm wondering if we're not making the best use of the surround channels. Our positional calculations only create an output matrix of a possible 2 channels (both values together will equal 1), then it gets sent for distance attenuation. At the moment, this sounds great, and making a sound spin around the listener doesn't make it 'snap' to channels, but not allowing sounds to bleed further could be contributing to our muddy mix.I'd like to know if anyone has any further ideas, especially hints and tips to making the mix better in the first place before resorting to magic software solutions. I'm sure we allow for plenty of headroom, but whatever we try it's either barely audible in quiet parts of the game, or blows through the limits during a fight.Thanks in advance!
Quote:I have a problem to solve: the overall mix of our game is way too loud. What seem like carefully balanced gunshots, ricochets, explosions, ambience tracks and music send the RMS meters through the roof when piled together in big fight scenes and busy areas of the game, so I'm looking for solutions to creating a nicely balanced dynamic mix.Cool, let's see what you've thought of so far!Quote:1. A calculation to reduce the volume of all voicesThis could total up the attenuation of every playing voice and perform some sort of software compression calculation to do further attenuation. I could give samples different priorities (or even separate them into categories) so some important sounds' volumes would remain untouched.I would recommend this method, especially having a priority system set up. I attended a GDC lecture with the sound guys from Bad Company where they discussed their system that operated much like this. If a very low intensity moment was happen then it makes sense to hear small light sounds (like small nature sounds, small ambient objects, small movements). But if an intense moment happens then you'll focus the audio engine on those larger and more relevant sounds (large explosions, combat reactions, UI critical SFX like low health, etc).  Quote:2. Limiting simultaneous playback of samplesThis is a no-brainer that needs to be implemented at some point anyway. A limit on how many times a sample can be played at once would reduce large piles of gunshots and ricochets. A player would be hard-pressed to make out 8+ gunshots all at once in a crowded area anyway, so it's a waste of resources too. Distances from the listener (and each other) would help decide which voices to drop.This is also a good approach to take as well, mainly for RAM limitations of consoles. The ducking method mentioned in point one should take care of the mixing but voice limitations can also help keep the sound scape clear of clutter.Quote:3. Soft-knee compressorThis is a tough one, since not all of our platforms support this on the hardware, and it looks like a complicated calculation to do on the CPU (especially with 8 channels to worry about). Even so, it would be a last resort to add a finishing touch towards the end of the project, since it won't magically fix a broken mix.For all of the reasons you mentioned, I agree with not wanting to use this option. Quote:4. Bleed into other channelsI'm wondering if we're not making the best use of the surround channels. Our positional calculations only create an output matrix of a possible 2 channels (both values together will equal 1), then it gets sent for distance attenuation. At the moment, this sounds great, and making a sound spin around the listener doesn't make it 'snap' to channels, but not allowing sounds to bleed further could be contributing to our muddy mix.I know with Fmod you can sent it up to be a 2D sound at a given distance then changed over into 3D sound which can do some really cool effects. What audio engine are you using?Quote:I'd like to know if anyone has any further ideas, especially hints and tips to making the mix better in the first place before resorting to magic software solutions. I'm sure we allow for plenty of headroom, but whatever we try it's either barely audible in quiet parts of the game, or blows through the limits during a fight.Thanks in advance!I'm interested in how loud the music is, as well as the frequency signature of the music. Perhaps some slight tweaks to the music score would help make more space for the SFX elements. Likewise careful mixing of any SFX ambient beds could also make some space. Take care, Nate   ;Quote:Original post by nsmadsenWhat audio engine are you using?It's all in-house tech, plugging into the consoles' own audio APIs (XAudio2 for Windows, the rest are under NDA).Quote:Original post by nsmadsenI'm interested in how loud the music is, as well as the frequency signature of the music.The music isn't really a problem, I've reduced the volume for testing purposes and we're still getting the same issue. We also have the luxury of being able to mix and master the music properly beforehand, and we make use of 6 channels. As for ambience, it's just light airy wind or soft low rumbles of machinery, neither of which are very loud and again I've tested with them switched off.The main culprits are gunshots and explosions, there's a lot of them! They also show up mostly in front of the player too, so they drown out the front and centre channels completely.I'll try the first two steps above and see how much of an improvement it makes. Who knows, maybe we won't need anything else after that.Thanks for your thoughts!;  Also doing some on the fly pitch shifting for each sound call might help change things up if you're not already doing this. I'd imagine you are though because it helps add so much realism and make things much less repetitive.   ;  Yep, we already do this (and a touch of random volume shift too).I've experimented with some software compression calculations (sum all of the voices' current attenuations, if > 1.0 then reduce them all according to priority 'weights') and it seems to have made a really big difference. The next problem is 'smoothing' it all out, since if a high-volume, high-priority sound kicks in everything else drops (which is acceptable) but as soon as it finished everything else suddenly shoots back up to their original volumes.I'll carry on experimenting.;Quote:Original post by deadstarThe next problem is 'smoothing' it all out, since if a high-volume, high-priority sound kicks in everything else drops (which is acceptable) but as soon as it finished everything else suddenly shoots back up to their original volumes.That would be solved by addressing the "fade back in" time. Make it slightly longer (and perhaps even adjust the curve) and you should be good to go!;  A soft-clipping limiter might be a good idea if you can hack one in simply enough. Nobody is going to mind a little distortion when the sounds causing that distortion are "gunshots, ricochets, explosions". Soft-clipping is trivial to implement in software providing you have access to the floating point wave values (ie. before quantising down to the typical 16bit output representation). Algorithms available all over the place, eg. KVR forum threads.Maybe also a bit of simple 'automation' is in order - by this, I mean having the program push up the master volume level a couple of dB when things are quiet, and bring it back down when the RMS creeps up for whatever reason. It's a poor man's compression but it would help smooth things out.Also, consider cutting the release time of samples when levels are high by fading out the sounds sooner. That leaves a bit of extra head-room for the more recent sounds that are more relevant to the listener.   