I just completed some careful measurements of JRiver's dithering with Spectrafoo and this reply will cover everything I found. If you follow the instructions below, you will have 24-bit dither implemented in JRiver!
In my early listening I might have been fooled by the power of suggestion as I thought the dither checkbox in the parametric equalizer was working, but it was not! The bottom line is that even though 24-bit dither is very subtle, it cannot hurt (if done right) and if not implemented it could hurt the sound. So, always dither to 24-bits, do it right, and then forget about it. You should be rewarded with increased depth and purity of tone, but if you don't notice the improvement, just have the confidence that things are being done properly and signals are being cleaned up properly. Like chicken soup, proper dithering at 24-bits does absolutely no harm, it cannot hurt! But it can also do a world of good. Better to be safe than sorry.
Only in the case of bitstreaming to a Dolby or similar decoder could dithering hurt. The decoder won't work! But in that case JRiver could automatically turn off the dithering. It may very well do so, as it also would have to turn off a bunch of DSP plugins and disengage the volume control so I suppose that dithering is probably turned off when bitstreaming as well as all the plugins and the VC. Though I have not tested it.
I also had a short discussion with Matt about this offline (thanks Matt!) and this letter incorporates some of his reactions.
1) The wordlength simulator in the parametric equalizer should ONLY be used for testing and listening to truncation. The dither checkbox in there is misleading and my measurements show that it is not working. Just leave it unchecked, and for that matter do not use the wordlength simulator.
2) The output options wordlength popup menu is a bit deceiving. Although output options is the first apparent plugin in the DSP chain, the output wordlength choice always comes at the end. JRiver always internally calculates at 64-bit float until the end of the chain, where wordlength is (optionally) reduced. The popup help explains this and you have to take it as a matter of faith. I understand why this module comes first because it also adjusts the way that multichannel audio is configured on its way to other stages in the DSP chain. In a perfect world, output options would be split into two plugins, one at the beginning and one at the end of the chain.
3) Do NOT use ASIO. It doesn't dither, because at this time, JRiver always talks to ASIO at 32-bit, and so apparently there is no way to tell JRiver to dither to 24 bits. Tested with Lynx and RME drivers. This confuses me, because my Sequoia DAW and other DAWs have an output wordlength format setting which allows me to talk to ASIO in 24-bits. Perhaps Sequoia puts a 24-bit fixed point word into a 32-bit container but regardless, the 24-bit dithering in Sequoia is working, and to my ears it makes a meaningful audible difference. In JRiver, the WASAPI output options have a checkbox to put a 24-bit word into a 32-bit container, but this doesn't even work in JRiver, it causes an error. At that point JRiver offers to make the change for you (kindly) but then it selects the 24-bit truncated option, and this causes distortion, at least measurable, as you can see in the attached measurement screenshots. So, don't choose this option, and be sure to choose the 24-bit dithered option in the output settings. In ASIO, at some time in the future, perhaps JRiver can offer the same "24-bit in a 32-bit package" option. I haven't yet tried to use WASAPI, it seems that others are quite successful with it, so perhaps it's an academic issue and I'll be quite happy with it. It also properly dithers as you will see below.
4) Matt asked me, "why don't you just use 32-bit feed to the DAC if it can accept it?" My answers are:
a) Better to be safe than sorry. Even in a perfect situation where you can guarantee the 32-bit word is getting to the DAC, can you guarantee that the information is properly sent to the output ladder of the DAC? Well, anyway, most DACs these days are single bit or 2 or 3 bit and I don't fully understand the implications of that conversion, so I could be wrong about it, but my thoughts are that you should dither the input to all DACs regardless to 24 bits to ensure that clean information is brought to within the resolution capabilities of the DAC. Better to be safe than sorry. In my copious free time I would try to obtain a 32-bit DAC chip, measure all the possibilities and distortions at the analog portion, but regardless, it doesn't hurt to play it safe. 24-bit dither can't hurt and it probably will help.
b) The second reason not to use the 32-bit output is that AES/EBU and SPDIF are limited to 24-bits fixed, so that will truncate it right there. Unless you use USB or a PCI bus, you couldn't get 32-bits to the DAC. And even then the drivers truncate. In the Lynx literature they clearly state that 32-bit float words get truncated to 24-bits right at the input of the Lynx mixer. The RME mixer says nothing about it, but it's only 24-bit in and out as I have proved. So once again it pays to have the interface mixer set to 0 dB throughout (which is bit-transparent up to 24 bits) and dither to 24 bit on the way in.
5) Instructions: Use WASAPI! Do not select "Present 24 bit data in a 32-bit package". It doesn't work. You'll get a warning when trying to play. Set the output options to 24-bit dithered.
Attached are the following files:
1) -80 dBFS 1 kHz 3244 sine wave dithered in WASAPI to 24 bits
2) -140 dBFS 1 kHz 3244 sine wave dithered in WASAPI to 24 bits. Notice a couple of small, insignificant harmonically-related products. The quality of JRiver's DSP is superb. This is a tone that is LOWER than you can hear and the products are lower than you can hear or detect, nevertheless, JRiver is still working and cleaning it up, all the way down to infinity. A dithered system works just like analog, no audible distortion as signals are reduced until they disappear into the noise. An undithered system does not.
3) -140 dBFS 1 kHz 3244 sine way truncated to 24 bits (WASAPI chosen 24 bit output, no dither). I could show you far worse, but this is the way it works. Keep in mind that higher signals (say, -50, -60) are subject to the same issues if undithered, and the distortion products are quite audible as they are inharmonic and not masked. Plus, if you consider multiple tones and signals, their distortion products are additive and then the distortion products are further distorted. It becomes a mess, sounds colder and smaller. Yes, at 24-bits it's subtle, but my experience shows it's audible.
Let's see if any of you audiophile listeners out there notice the difference if you use WASAPI and follow these instructions. I'll be listening, too, I just got this function working right according to the measurements. I couldn't have done it without Matt's help or without my measurement equipment to guide the way through all the checkboxes and options.