Intelligent downmix of stereo to mono



Is there a technique for intelligently downmixing stereo to mono with FFmpeg or similar?

As we know, a signal phased between the left and right channels can cancel each other out when mixed together. However, I'm wondering if by doing the mixing in the frequency domain rather the time domain, if this problem can largely be avoided.

Is there a way to do this today?


Posted 2016-06-13T23:33:51.753

Reputation: 2 568

If it's a professionally created recording, you should be able to just mix it right to mono. Professionals should still be making their recordings mono safe, because there are still many situations where it will get downmixed to mono in the real world (e.g., overhead Muzak style ambient music in stores and restaurants). If you are making the recordings, make them mono safe. If someone is making them for you, insist that they be mono safe. – Todd Wilcox – 2016-06-15T23:08:49.020

@ToddWilcox I'm trying to make a fairly fool proof mono mixdown fallback for anything-but-professionals, for use in a software product. Unfortunately, having the users do the right thing isn't possible in this case, because they're just consumers with bad XLR cables, sometimes causing one channel to be out of phase with the other. :-) – Brad – 2016-06-15T23:24:18.540

If there were an algorithm that could automatically check for mono incompatibility and fix it in real time, I'm pretty sure there would be at least three plugin "mastering" suites available that would have it. If someone on this stack actually thinks of a way to do this, it would be much wiser of them to write it up and apply for a patent on it than just tell you about it and let you make all the money from it. See also:

– Todd Wilcox – 2016-06-15T23:27:10.063

I was hoping for something that already existed. I'm pretty confident that mixing in the frequency domain rather than the time domain is going to help with this problem, but will also introduce some artifacts of the process. If nothing exists, I might just have to code it myself. – Brad – 2016-06-15T23:29:06.407

No answers