How to perform a null test

The null test is one of my favorite tests. It proves that two audio streams are identical when the difference signal is exactly zero. Perfect nulling is only possible in the digital domain. If the difference signals isn't zero (absolute silence), all bets are off and all you can do is make an educated guess by listening to or looking at the difference signal.

There can be 3 scenarios:
a) perfect null, the audio streams are identical and should (will!) sound identical. No more listening is necessary.
b) non-perfect null, the audio streams are not identical, but perceptually indistinguishable (until you find a person who can hear a difference).
c) non-perfect null, the audio streams are not identical and perceptually different (ABX-able).

You need an audio editor (like Reaper), capable of mixing 4 tracks into 2.
1) Open file A in tracks 1+2 and file B in tracks 3+4.
2) Move one of them until they are perfectly sample-accurately aligned.
3) Invert the polarity (phase) of A or B.
4) Play all 4 tracks, mixed to stereo. Listen and watch the master peak meters.

With a bit a luck they won't move. You can move up the master fader to its max to verify there's only silence. SET IT BACK TO ZERO RIGHT AWAY TO PROTECT YOUR EARS AND EQUIPMENT !

If the output meters still move it could be that the files are:
1) not perfectly aligned. Move sample by sample until the output is as low as possible (hopefully -inf.)
2) not the same level. Adjust the level of A or B until the output is as low as possible. The mixing desk faders might not be accurate enough though. Even a mis-match of 0.01 dB can result in an audible difference signal.
3) simply not identical. In some cases the difference is white noise (dither?), or only low frequency music, when one of the files has been EQ'd.
4) not sync because the timing difference is less than one sample. This can e.g. happen after SRC (sample rate conversion). Mac users can try a handy Audio Unit plugin which allows for sub-sample delays (available here or from this mirror).

If the output isn't zero it can be handy to record the mix to a file for closer examination (like FFT). Make sure that the output format is suitable (24 or 32 bits is fine) and that no processing (like src or dither) is applied.

2014, Kees de Visser (Galaxy Classics)


example:

This is a difference signal of a 24 bit 96 kHz piano recording and its sample rate converted version to 48 kHz and back to 96 kHz. The difference signal in the audible range up to 20 kHz is extremely low and most likely inaudible. This means that properly converting a 96 kHz recording to 48 kHz does not cause audible degradation below 20 kHz.

This picture shows both the spectrum and the waveform of the difference signal. As can be seen there is virtually no difference below 20 kHz.


In this test a 32/44.1 SRC version was subtracted from the original DXD (24 bit 352.8 kHz) file. The difference signal (white) is about 10 dB  below the (yellow) spectrum of 24 bit flat dither, used as a reference.