You may have found a "defective" area of JRiver, but I would never use MC this way, I wouldn't recommend it to anyone. I would never trust a reduction in JRiver to produce a shorter wordlength file unless they make an explicit claim that method is properly dithered. Where does JRiver make that claim?
To quote Matt:
“[…] our dither is bit-perfect. There are lots of ways to do a dither, and ours is chosen for strategic reasons.”
There are also
many posts on the forum where people are recommended to use Media Center for volume control in their setup because, to paraphrase, "Media Center does it right, you don't know what your AVR is doing."
Perhaps it
did work correctly and this is a recently introduced bug. I don't know.
But now that this problem has been found and is reproducible, should it not be corrected, rather than arguing over how bad a problem it is, or why it doesn't affect your particular setup?
I'm not asking for the dither to be changed to implement noise shaping, or license iZotope's MBIT+ dither algorithms for example, only that the current TPDF implementation be fixed.
There is only one section of JRiver PC that produces a properly dithered output to my knowledge, and that is the DSP/options section where you can check the 24-bit checkbox when using ASIO.
If it's dithering correctly there, that should be applied to the rest of the program.
I don't see why it would be any different from other output methods though.
I don't have a good ADC or a device to record a digital signal from the PC to see whether or not ASIO differs from the rest of the program.
There is probably some software which can capture the ASIO output directly, but it really should not be necessary at this point, as we have shown that there is a problem.
And as you already should know by now, I've tested, retested and listened.... and rest quite satisfied that this section of the program produces an adequate level of dither. I haven't tested for noise modulation, but I have never heard any, and the depth is excellent.
If you are only using 24-bit then it does not surprise me if you haven't heard noise modulation - especially if you are using speakers, because your DAC or amplifier's noise floor is likely above that of the signal and masking it.
I don't know if the problems introduced by these errors
only affect signals near the noise floor, or if there could be effects at higher levels as well.
And just because it may not be a problem in one setup, does not mean that it won't be in another.
I would think that checking the output in the digital domain would be far more accurate than passing it through your DAC, Amplifier, and Speakers when testing this sort of thing.
It sounds as good as sending a 64-bit float signal via Acourate ASIO to Acourate convolver doing Acourate dither, which I also tested and went over with Uli Brueggemann for months until I was satisfied! Please read my post Reply #74, Sept. 16, with the buzz measurements. With measurements that good, things can't be very broken! Please respond to that message. If you have a scientific measurement that refutes these, by all means show it. 24-bit dither checkbox in ASIO in the DSP options section.
Consider that it may pass one test and fail another.
If you only use the test that it passes, you might believe the implementation to be perfect.
Does that make it so?
Let's even ignore the fact that it is distorting - or that what I am calling distortion, you might not. As a layman, I'd say that it
sounds distorted to me in the samples that I have posted - whatever the cause is.
When dither is properly implemented, the signal should not modulate the noise. Surely you agree with that?
One of the more noticeable effects of this noise-floor modulation is that it sometimes goes completely silent in Media Center.
iZotope's TPDF implementation—which I trust to be correct since they are in the business of licensing their dither algorithms to other companies—is
never silent, even when the track is playing silence.
I make no claims to being an expert on this subject whatsoever, I'm only describing the problems that I hear.
Stuff like this goes right over my head.
However, could it be that Media Center is using <2LSB for its dither, which allows the signal to modulate the noise, while iZotope is using 2LSB?
For all I know, this could just be a variable which needs to be set in Media Center's code, rather than some major change.
As to whether JRiver's 24-bit dither is sufficiently random (true TPDF) it's highly likely given the buzz test and other tests I have made.
I don't believe that it's a "randomness" problem.
Who would need or desire to use River to produce a 16-bit output? Please tell me when you would need it.
With that in mind, is there a reason for JRiver to allow 16-bit output? If other methods or usage are invalid/erroneous, why not make JRiver error-proof?
Well for one thing, a lot of hardware is 16-bit.
I have devices here which accept a 24-bit input, but actually only send 16-bit over their digital outputs.
I have no idea whether they handle this conversion correctly, but I know that Media Center should, if this gets fixed, and it would be best to send them a properly dithered 16-bit signal instead.
Most networked hardware is only 16-bit, and when using Gizmo/JRemote for control, volume would normally be adjusted by Media Center.
Listening carefully with headphones on and using the bit-depth simulator, I would say that the noise floor modulation starts to become quite noticeable at about 12-bit.
So with 16-bit devices, anything below -24dBFS is distorting.
Considering that the Volume Leveling target is -23dBFS, that's a problem.
And I hardly think that the solution to "there's a problem with dither which is noticeable with 16-bit" is to drop support for 16-bit signals.