Stereo & phase

Dual mono

A file can have two channels playing almost the same thing on the left and right. This is dual mono: a stereo container with an essentially mono signal.

Reading the result

This is normal for many older records or spoken recordings. The indication describes the channels; it does not label the file defective.

Understanding the measurementIllustrative equal-gain sine waves. Correlation runs from −1 (opposition) to +1 (matching polarity). Real mixes can differ by time or frequency.Dual monoLRSame signal in both channels
Illustrative equal-gain sine waves. Correlation runs from −1 (opposition) to +1 (matching polarity). Real mixes can differ by time or frequency.
Go deeperMethod, limits, verification and sources

The fake-stereo indication identifies a two-channel file whose left and right channels are effectively the same signal. It is a channel-relationship measurement, not an authenticity verdict: dual mono can be intentional for mono masters, spoken-word releases, archival transfers and some production choices.

Calculation#

The analyzer accumulates left energy, right energy and the energy of the L−R difference during the decoded pass. It returns a fake-stereo indication for a stream with at least two channels when either condition holds:

ConditionMeaning
All decoded L/R sample values are equalExact dual mono
L−R energy is more than 60 dB below L+R energyThe stereo difference is negligible over the whole file

A fully silent stream is not called fake stereo. For files with more than two channels, the decision still uses the first two decoded channels; it does not make a claim about a surround layout.

Equality uses the decoded sample values exactly, without an absolute tolerance. The relative-energy rule is independent of a common finite gain, including very quiet float PCM. Malformed or non-finite frames invalidate the result rather than publishing the valid prefix as a whole-file finding.

Interpretation and limits#

The indication means the channel relationship is effectively mono according to the thresholds above. It does not say that the source was fraudulently made stereo, that a mono release is defective, or that a small stereo difference is perceptually meaningful. Correlated stereo, centre-heavy mixes and low-level ambience can move the result around the 60 dB engineering threshold.

For an unequal but sign-reversed relationship, use Stereo polarity. For a finite gain difference, use Stereo balance.

Tests and manual fixture#

cargo test -p flaccompagnon-core analysis::stereo
cargo test -p flaccompagnon-core --test stereo_validity

Create an exact dual-mono file and an obviously different stereo file, then import both:

ffmpeg -n -f lavfi -i 'aevalsrc=0.1*sin(2*PI*1000*t)|0.1*sin(2*PI*1000*t):s=48000:d=5' -c:a pcm_s24le dual-mono.wav
ffmpeg -n -f lavfi -i 'aevalsrc=0.1*sin(2*PI*1000*t)|0.1*sin(2*PI*1700*t):s=48000:d=5' -c:a pcm_s24le stereo.wav

Integrating the engine in your software?

Browse the Rust API in Rustdoc ↗