Hi there, working on a project in channel format 7.1.4. Recently, we noticed that the down mix to stereo clips on the system, despite there being a limiter on the master bus. Looking at the down mix matrix and the fact that the down mix happens at the output, we are not surprised that it does, but we are looking for ways to prevent that. One option would obviously be a custom down mix matrix with lower levels from center and surrounds. And another one would be to leave more headroom. But our question is: Are there other ways? I.e. forcing the down mix at the input of the master bus instead of the output to squeeze the signal through the limiter? Two things we have tried:
Manually setting the input of the master bus to stereo. Works perfectly well. Signal gets limited by the limiter. But we cannot use it in-game, because the input format override is not exposed through the api (or we can’t find it) and we only need that on stereo devices based on the driver info.
getBus → getChannelGroup → get DSP → DSP::setChannelFormat() to force a down mix on the limiter (and for tests on a gain in front of the limiter). But that did exactly nothing (noticable).
We appreciate any input, peeps Thank you in advance.
PS: Bonus Question: What is the amount of headroom that is considered safe for the standard down mix and the LPII down mix when coming from 7.1.4?
Apologies for the delayed response, we’re a bit short on Q&A staff this week.
What about something like a FMOD Panner before your Limiter that downmixes to Stereo, but with platform exclusion set for everything except your Stereo platform? i.e
According to our downmix doc a 7.1.4 downmix to Stereo will, in the worst case scenario (all channels max peak = 0dB), result in a little over 10dB of gain per channel:
Hi @jeff_fmod , thank you for your answer. I hope your week’s not been too stressful due to the shortness of staff. Knowing the headroom needed is pretty helpful. I should definitely relearn to calculate with dB.
The Current State
Things have moved on throughout the week and the decision was made that we cannot remix the game to lower levels and pulling the sum down is not an option. So we need to force the downmix before we hit the limiter. We still don’t have a working solution for that.
Why The Panner Won’t Be The Solution
We did conduct tests with the panner last week. Our loudness measurements turned out to be much lower than the ones that were done with the bus input set to stereo. After some research in your documentation and some testing/comparing we came to the conclusion that the stereo panner does not force a downmix but instead just channels L and R through and discards the rest. The documentation does not directly say this, but it only mentions downmixes for the surround mode of the panner - basically everything with 3ch or more. And our measurements were pretty close to the levels of the L/R of the used source material.
The Channel Mix PlugIn…
… won’t help either, since you can only channel each input to one output and therefore cannot create a downmix matrix. Speaking of:
What We Will Try Next
We’ve started to set up a PreMaster subgroup and want to test what happens when you use ChannelGroup → SetMixMatrix to force a downmix on there and run that through the master with the limiter on it. We are not sure, if that’s going to work though.
Question For You
So if you have any other ideas on how to force the downmix before the signal reaches the limiter or what we could have done wrong in the tests we already did, we would absolutely appreciate those.
This is inconsistent with what I’m seeing when testing locally, so I must be misunderstanding some aspect of your setup. Would it be possible for you to to collect a profiler capture of your clipping audio in-game, and export the session with the “Banks” option checked, so I can take a look at the clipping audio in the context of your project?
Can you also please tell me what version of FMOD you are using?
Hi @NoDzofSound! You could try the atmoky trueSpatial Renderer. It transforms from any format to any format including downmixing from 7.1.4 to stereo with options for heights and rear simulation.
Check it out here: Renderer | atmoky trueSpatial FMOD and please let me know if it solves your issues.
that seems weird. We are on Fmod 2.03.08. I have uploaded the file in the support section of my profile. The max levels that we get from the stereo downmix in the captured section are +1.5dB on L and +1.4dB on R.
This goes without saying, but it is best to say it anyways: Please maintain confidentiality. You should have received a mail from the development team of this project before you answered to this forum post. If fixing this issue or discussing it further requires talking about confidential details of the project, please consider responding to said mail instead of this thread. Thank you.
Thanks for sending that over, I can reproduce this clipping with your banks, and I see what you mean with the level difference with the panner- though I don’t see it eliminating any of the channels, and everything appears to be surviving the downmix on my end.
In any case, here are some things I’ve tried on my end that eliminate the clipping:
Adding a platform-excluded -1.5dB fader
Since the panner option was negatively impacting your mix, you could see if a fader gives you a better result. I know this isn’t the nicest solution and you’d rather have the assurance of a limiter post-downmix, but it should prevent clipping in this specific scenario.
Custom downmix for center and surrounds
You mentioned this yourself, but here is some code that’s eliminating the clipping on my end. I suppose it’s the same as the fader option above, but limited to 3 channels.
Build a set of stereo banks for this platform
I haven’t actually tried this since I can’t build your banks, but if you make a new platform, “Desktop Stereo”, and set the Surround Speaker Mode to “Headphones”, that should give you all of the benefits of your first scenario:
Except now you can configure it at runtime by loading this separate set of banks in response to the user’s driver info.
Please let me know what you think of these options and if any of them provide a better result.