MonoCheck uses a .Net audio library called NAudio in order to monitor the output from the PC's soundcard. This gives MonoCheck a floating point value for the left and right channel, and it computes the difference between these two values.


In theory, if the sound is mono there should be no difference, so the value should be zero. If it is 1-channel mono, then it probably is zero, unless the sound card introduces changes in the audio streams. If it is 2-channel stereo, then we have two separate channels encoded on the disc, and the encoding may introduce some slight variations, especially if it is not a lossless encoding.


So, a standard Dolby 2-channel mono track will definitely have some very minor differences. A stereo track will have much larger differences, but it will still be a very small value. What MonoCheck attempts to do is to magnify that value to the point where the integer part is still zero for a mono recording, but well above zero for a stereo recording. That way, the user should be able to see the displayed value stay at zero when it is mono, and vary quite noticeably when it is stereo.


Internally MonoCheck also keeps track of the highest raw value of the difference, in order to determine with some degree of accuracy if the track is 1-channel mono, 2-channel mono or stereo.


So, there are two things that has had to be determined by trial-and-error; the multiplier for the displayed value, and the threshold for the raw value. This means that MonoCheck is probably not 100% perfect, and may never be. But it should still be good enough to give a reliable result. However, see also Interpreting the result.

Created with the Personal Edition of HelpNDoc: Easily create EPub books