Page 1 of 1

Integer Mode

Posted: Sun Jun 05, 2011 9:21 pm
by misterrogers@mac.com
Any chance you can implement integer mode if a dac supports it? I've found it to make a subtle but noticeable improvement (to me). Thanks for a great player!

Re: Integer Mode

Posted: Sun Jun 05, 2011 9:50 pm
by sbooth
Just to clarify what you're asking for- would you like Decibel to sent integers to the DAC if the DAC supports such a format, or do you want Decibel to do all internal processing with integers?

Re: Integer Mode

Posted: Sun Jun 05, 2011 9:58 pm
by misterrogers@mac.com
Thanks for following up with me on a Sunday :-) Through CoreAudio, you can check capabilities of a device/dac and if it supports integer mode, you can pass music data as integers. I suppose that to realize the benefit, the entire path would need to be be integers (to avoid float precision loss). Audirvana does this, and has become my main player over Decibel for this reason alone. He's doing very little other signal processing - just using integer mode makes a difference (to my ears). This is also functionality that's recently been added to Pure Music and the new BetterMusic play.

Mike

Re: Integer Mode

Posted: Mon Jun 06, 2011 1:08 am
by sbooth
If the exclusive access preference is enabled, Decibel will send audio to the DAC in the DAC's native format (which is typically 24-bit integer of some sort). Not all DACs support integer output, though- it depends on the capabilities of the device itself and on the driver implementation.

The question of an all-integer signal path is a separate issue. It isn't correct to say that one has to avoid floating point numbers in order to avoid float precision loss. For example, all 24-bit integer sample values can be converted to a 32-bit float representation (IEEE 754 single precision) and back to integer with no loss in precision. The conversion is lossless. Obviously, if a gain is applied or any other signal processing is performed then the conversion won't be lossless, but this is true regardless of the numerical format chosen. This is the express reason why the digital volume can be disabled in Decibel-to ensure bit-perfect output.

The current versions of Decibel handle everything as 64-bit floating point numbers (IEEE 754 double precision). Internally, a file on disk is converted to 64-bit normalized PCM, which is then converted to the desired output format of the DAC. A Wavelength Proton, for example, accepts audio as 24-bit integers. Decibel simply converts the 64-bit doubles into 24-bit integers if exclusive access is enabled. If exclusive access is not enabled, then the 64-bit doubles are converted to 32-bit floats and send to the audio subsystem for possibly more processing.

Re: Integer Mode

Posted: Tue Jun 07, 2011 9:01 pm
by misterrogers@mac.com
Hey - Thanks for the detailed discussion on the subject. Good point on 24bit Int to 32bit float and back conversions not losing precision. I wasn't aware of the integer precision supported by most dacs. If it's 24, then we're more than safe with you using 64bit float internally. One last question - will DAC integer mode always be used if available? Is it possible that float would be used when integer mode is available? Just curious if you've seen DACs return caps that indicate float as native when integer is available.

So assuming integer is usually the native mode, then Decibel essentially supports integer mode when exclusive is is set, digital volume is off, and the device supports it - correct?

Thanks again for your time - great product!

Re: Integer Mode

Posted: Wed Jun 08, 2011 3:28 am
by sbooth
If hog mode is enabled, Decibel will use any integer format available in preference to a floating-point format.

Decibel still supports integer mode if the digital volume is on, because the gain is applied to the audio when it is represented as 64-bit floats. The output in that case would not be bit-perfect with respect to the original file, though.

How tell if Integer capability recognized?

Posted: Sat Aug 20, 2011 12:43 am
by Bob Stern
How can I tell whether Decibel recognizes my Firewire DAC as being capable of playing in integer mode?

Re: Integer Mode

Posted: Sat Aug 20, 2011 6:39 pm
by sbooth
Right now the only way to determine this is to enable logging, and then examine the log output. http://forums.sbooth.org/viewtopic.php?f=22&t=3756 tells how to enable logging, and if integer mode is enabled your log should indicate that the virtual format is 24-bit signed integer (most likely).

Thanks!

Posted: Sat Aug 20, 2011 11:01 pm
by Bob Stern
The log confirms virtual format = Integer.