JRiver MC19 on PC Dithering Measurements. Bob Katz 9/27/14
I performed a series of exhaustive tests today. Here's a report. Warning: Long post with attachments!!!!!
Today is the first day I've ever tested JRiver at 16 bits and also the first time I've tested it with a definitive test signal for noise modulation.
All tests with JRiver on a PC, using ASIO, all DSP options turned off except as noted below. All tests at 44.1 kHz. FFT measurements made with Spectrafoo on a MacIntosh. Using AES/EBU output of JRiver PC or Sequoia PC. Each PC has a Lynx brand interface. Stereo audio tested. The source(s) feed the AES/EBU input of Motu interface. Foo is set to analyze the Motu interface.
Initial setup. Let's test the tester using signals from a Sequoia workstation. Sequoia DAW with various types and amounts of dither and plugins. In all cases, when properly dithered, Sequoia measured impeccably. When not dithered properly I was able to see any distortion or noise modulation using various test signals. So we're ready to test JRiver.
JRiver tests:
I. Distortion test. Multitone Buzz signal attenuated various amounts. At 0 dBeach sine wave tone in the multitone signal is at equal level, -32 dBFS. 3244 buzz attenuated 82 dB with JRiver's volume control. At these attenuations JRiver's steps are not exactly 1 dB per step, which explains the odd attenuation.
24 bit:
A) 24 checkbox on. Some barely perceptible distortion spikes occasionally drifting up to -180 dBFS. These are completely inaudible and way below the threshold of hearing. Measured performance is excellent. The buzz signal itself remains intact but attenuated 82 dB. All buzz tones measure -114 dBFS as they should be. (-32 - 82 = -114)
B) 24 checkbox off. Voxengo Elephant set to TPDF 24 bit. All buzz tones at -114 dBFS as they should be.
An FFT picture of IA and IB is attached. The main amplitudes are identical so you only see the color which is on top (blue). If you look VERY closely you can see a couple of barely visible (insignificant) distortion spikes in red, barely visible above the grass. I can see that JRiver's dither is a little lower in level than Elephant's. But both performances are excellent. For clarity, the FFT is limited to 2 kHz, but in reality the buzz signal extends to over 20 kHz, which intermodulate and reveal system nonlinearities.
C) 24 Checkbox off. Significant distortion spikes. All this is expected because AES/EBU truncates to 24 bits, so the dither switch (24 checkbox) is working. No doubt the truncation is audible, the cumulation of the different distortion spikes. In general I find this level and kind of distortion manifests as a loss of stereo depth and space. However, when truncation occurs at 16 bits, then the sound develops coldness and harshness.
FFT picture attached, just for fun
16 bit tests:
D) 24 checkbox on or off. Parametric equalizer with 16 bit simulation, dither off. Since its' truncated, we get serious distortion, it doesn't resemble the buzz signal at all. To be expected. Not shown.
E) 24 checkbox on or off. Parametric eq with 16 bit simulation, dither on. I see the buzz signal, but its signals are not at equal levels. For example, 250 Hz is at -120, 750 at -117, 1250 at -117, 2250 at -117, but they should all be at -114. There are some measurable distortion spikes, but my main concern is that the dithering or some coding errors are not reproducing the tones at proper and equal levels. Something must be wrong with the code.
F) Change to Voxengo Elephant, set to 16 bits TPDF dither instead of the Parametric EQ. All buzz tones are equal at -114 dBFS and there are no visible distortion spikes.
Attached is an FFT measurement comparing IE and IF above.
---------
II. Noise modulation test:
The Gonger signal was developed by the BBC's Chris Travis.
http://www.aes.org/e-lib/browse.cfm?elib=6283It was designed to audibly detect noise modulation issues with ADCs and DACs. But if you look at the Gonger on a live (real time) FFT analyzer you can watch the noise floor and see if it modulates or stays constant. It is a 16 bit dithered 399 Hz sine wave modulating from negative infinity up to -10 dBFS. When JRiver is at unity gain, Foo's bitscope shows 16 bits indicating JRiver's bit integrity and that there is no additional DSP engaged in the JRiver processing chain. At unity gain the noise floor is constant. Not shown.
Attenuating the 399 Hz gonger: I can see the noise floor go up and down when the gonger goes through its cycle and/or distortion IF DITHER IS IMPROPER OR NONEXISTENT. The Quicktime movies are between 2 and 4 MB each so I had to put them on my FTP. Here is the address. Open in a browser:
client.digido.com/?u=jriver_dither&p=jriver_dither
Gonger through Lynx, all DSP options turned off, ASIO, 24 bit box checked.
A) Initial test, bit-integrity
JRiver @ Unity gain
Checkbox 24 bit. Result: 16 bits showing in Foo. Bit-transparent copy of the 16-bit gonger source signal showing that at unity gain, JRiver is bit-perfect, or at least it passes only the wordlength of the fixed-point source. Not shown.
JRiver volume control attenuated 82 dB
24 bit
B) Checkbox 24 bit. Result: Foo's bitscope grows to 24 bits. I can see JRiver's dither. I can also see some very low level distortion as the gonger signal goes through its cycle, very low level. I do not see ANY noise modulation. The distortion is way below the threshold of hearing and probably masked by the DAC noise. This is excellent performance and I would say it's academic to ask JRiver to "improve" this nearly text-book quality dither.
Quicktime Movie. Play each movie a few times. The first time watch the signal. The next time watch the noise. The next time watch the bit meter. You could hear any noise modulation if you had sufficient analog gain. I cannot distribute the gonger signal because it is copyrighted. But it's no longer for sale to my knowledge so that's a bummer.
C) Turn off the 24 bit checkbox. Significant distortion. Many spikes, as would be expected, truncating the 32 float signal to 24 bits through AES/EBU. Watch the spikes explode when the signal attenuates all the way.
Quicktime Movie.
D) Voxengo Elephant. Elephant Set to unity gain. TPDF 24 bit dither. JRiver set to -82 dB attenuation. Results: Perfect performance. No noise modulation, no indication at all of distortion.
Quicktime movie.
16 bit
E) Plugin disabled in JRiver. Parametric with no filtering and unity gain, with the bitdepth simulator, set to 16 bits dither. I do see strong noise modulation and some distortion. The noise modulation is the main issue.
Quicktime Movie. Notice how the bit meter actually turns off at points, indicating the signal is completely cut off at times. That's serious noise modulation.
F) I turn off the dither in the parametric bit simulator and strong distortion is added along with the noise modulation. Not shown. To be expected.
G) Voxengo set to unity gain. TPDF 16 bit dither. JRiver set to -82 dB attenuation. Results: Perfect performance. No noise modulation, no indication of distortion.
Quicktime movie.
6) Just for fun. 16 bit parametric set to bit simulation with dither turned off. Results are as expected. Not shown.
Conclusions:
My opinion has not changed regarding MC's performance on PC at 24 bits (measured with ASIO). I am thrilled with its sound and measured performance. I have measured insignificant distortion, many dB below the threshold of hearing, in fact likely masked by the DAC noise. There is no noise modulation whatsoever. MC's measured performance is exceeded only by Voxengo by the tiniest measurable but inaudible margin. It's an academic argument to ask JRiver to improve the 24-bit performance. I own some professional-quality, high integrity DSP products which show slightly more distortion on the FFT that is still well below threshold of hearing and whose sound is also excellent.
16-bit:
However, whatever code MC is using appears to develop problems when extended to 16 bit. It exhibits significant noise modulation and some distortion when set to 16 bits. I recommend that any user who feels the need to feed 16-bit devices purchase Voxengo Elephant, which is very reasonably priced. There are no DACs currently available which are limited to 16-bit performance, and the only units which may limit performance to 16 bit are confined to things like Airplay, which should be improved. I would recommend the perfectionist user set up multiple zones, put Voxengo on the zones going to Airplay etc. And set the zone going to his high quality home theatre to 24 bit checkbox without any need for Voxengo. He could insert Voxengo if he thinks he can hear -172 dBFS distortion, but that would be truly anal-retentive behavior.
I would not draw inappropriate conclusions. One must not conclude or assume that just because the 16 bit performance is unnacceptable, that this error would extend to the 24 bit. Coding is a complex and tough job. A simple mathematical error or bug could arise that causes 16-bit problems but does not exhibit any issues at 24 bit. If there was a noise modulation issue at 24 bit, I would have seen it in Foo, whose resolution extends down to -180 dBFS. Even if there are slight errors in MC, they are barely measurable and certainly inaudible at 24 bit.
Listening: I am an audiophile and an engineer. Listening always comes first for me, but in this case I do not feel it necessary to listen to the music files provided by 62x because my measurements confirm what he hears AT 16 bit. And his methods of testing 24 bit with WDM as part of the chain do not pass muster. If he wishes to refute my conclusions at 24 bit he's going to have to emulate exactly what happens when the signal is sent to his DAC. Perhaps there is another way to reliably cross patch the signal from JRiver to a DAW on a single computer. If he finds one, one way to prove it is to send a 16-bit unprocessed signal from JRiver, and watch a bit meter on the receiving end. If it is 16 bit, and grows to 24-bit when any attenuation is made, that's a good indication he's got a good measurement and recording instrument.
I did not do any listening tests because the 24 bit tests above confirm my previous listening that 24 bit is for all intents and purposes very clean, undistorted, and does not exhibit any noise modulation. I also confirmed 62xxxx's 16 bit determinations with my own measurements so we're in agreement on that. I use JRiver as a high-fidelity player in my mastering room, which is one of the best-sounding rooms and playback systems in the country and I'm thrilled with the purity of tone and sound quality of JRiver when set to 24 bits.