This makes me wonder about how the "bit structure" in MC works then. MC knows what bit depth and rate the files it plays are. Say 16 bit 44.1 kHz. MC knows what's going out to the DAC. Say 24 bit 44.1 kHz. MC works in a 64 bit domain internally. So... hmm.. I'm confused as to how this all plugs together. I have to go think about this for a while.
It's 64 bit floating point internally so that's apples and oranges. For 16 bit integer 44.1KHz sampling rate music imagine a datagram of a "moment" of music in the form of a two dimensional chart. The x axis is the frequencies between 0Hz and 22 KHz; the y-axis is the volume running from 0dBFS to the noisefloor at -96dBFS (technically slightly lower with dither, but let's ignore that). Any value on the x axis can have any value on the y axis. This signal goes into JRiver and is converted to 64-bit floating point, goes through the signal chain, and gets spit out as a 24 bit integer signal. While it's in the 64-bit portion there's space "above" and "below" the data to allow for manipulation and DSP (there's no chance for clipping while things are still floating point), but when it gets winnowed down to 24 bit integer again the information is put back "where it was" (subject to DSP), with zeros below it.
In the "pure" case (where there's no processing) the 24 bit output's datagram would look like this:
1) The original 16 bit input occupies the entire x -axis across the "space" between 0dBFS to -96dBFS (ish) reproduced exactly as it was in the source (it's bit perfect).
2) On the graph, in the space between -97dBFS and around 140dBFS the entire x-axis is occupied by silence (zeroes)
3) Depending on your settings, JRiver applies or doesn't apply dither just above the noisefloor (-144dBFS).
Obviously if you do any processing (or volume adjustments) everything moves and changes, but the pure case should give you an idea.
Not sure how helpful that is, but I find a visual to be handy.