What is bit perfect sound?
Bit perfect sound is about sending the exact bits from a sound file to a digital to analog converter without re-sampling. Think of it as dumping the bits directly from a (decoded) file to the digital output of your sound card. In both Windows and Linux, this not the default behavior. In many cases, all digital audio is re-sampled to 48KHz before being sent out the digital output or to the onboard DAC. On Windows the culprit is KMixer and on Linux it’s ALSA’s dmix.
Why is this important?
To be honest, it isn’t unless you’re one of those people that is obsessive about getting the absolute best sound possible.
OK, I’m one of those people, what do I need?
I’ll describe the basics of what you need for a Linux based setup. If you want information on doing this on Windows, go here: http://www.mp3car.com/vbulletin/faq-emporium/88852-faq-what-bit-perfect.html
If you’re like me and you think in pictures, this is what we’re doing.
Ok, here are the words.
1. A sound card capable of bit perfect output.
This is the trickiest part. The good news is that most of the cards that are capable are cheap no-name brands. If you have an Audigy or something like that, throw it out. Also, I didn’t have any luck getting any of the Intel HDA or AC97 codec based cards to work. These are common with onboard audio. The most widely available bit perfect capable cards are VIA Envy24HT cards and Cmedia (CMI) 8738/8768 cards.
Check here for a list of CMI cards: http://code.google.com/p/cmediadrivers/wiki/SupportedDevices
I personally use this one: http://www.tigerdirect.ca/applications/SearchTools/item-details.asp?EdpNo=3180419&Sku=D15-9060 (Diablotek 7.1 Tremor Digital Optical Sound Card – $30.99 CAD). I’ve successfully used it for 96KHz/16bit audio.
If you want to check if your current card supports bit perfect sound, the best way I’ve found is to use the ‘speaker-test’ application that should come standard with alsa. For example:
speaker-test -c2 --device cards.pcm.iec958 --rate 44100 --format S16_LE
speaker-test -c2 --device cards.pcm.iec958 --rate 96000 --format S24_LE
If you get the following message, it means that your hardware doesn’t support the bit or sampling rate.
Setting of hwparams failed: Invalid argument
2. A good outboard Digital to Analog converter.
There are tonnes of good DACs. Some are cheap, some are not. If your preamp or receiver has digital inputs, you probably don’t even need one.
I personally use this DAC: http://www.obadimports.com/catalog/item/4377355/4684274.htm
(“DAC In the Box” Super Pro – CS-4398 24-192khz, $79.99 CAD)
3. A decent stereo system.
Specifically, you should buy an Arcam FMJ and ScanSpe… yah just kidding. Get whatever you want.
As shown in the picture above, I use mpd (Music Player Daemon). It has a clients for every platform and works quite well if your music isn’t tagged consistently.
Only a slight modification to /etc/mpd.conf is required.
Restart mpd and away you go! One small warning about the configuration above. Specifying the hardware device directly like this will shanghai the sound system and no other systems sounds will be heard while mpd is playing. Other applications may even hang if they try and play sound. Flash player is one example.