Tuesday, November 15, 2005

Audiophilia: Audiophile-grade sound from Winamp? Maybe.

This will only be of interest to audiophile tech geeks, but for those of us that care about such things...

In theory a PC should be able to act as an ideal CD transport, transmitting a perfect PCM bitstream to an external decoder. Unfortunately in default operation computer sound cards output filtered and modified PCM, degrading the quality of the original audio. Windows itself jumps in and adds a layer of muck to the proceedings.

So there are two tasks involved: 1.) capture a perfect bitstream off a CD and 2.) transmit that bitstream unmolested to your high-end decoder.

Collect the following ingredients:

- An audiophile-grade CD or a good hybrid SACD.
- Exact Audio Copy (aka EAC).
- FLAC - Free Lossless Audio Codec.
- Winamp 5.x.
- Japanese ASIO Winamp 5 plugin (out_asio.dll).
- ASIO-enabled sound card with SPDIF out and updated drivers.
- Digital audio or composite video cable for the SPDIF line.

You must have a sound card that supports ASIO (I think most do nowadays). I got this to work with my M-Audio Delta Audiophile 2496.

Why use FLAC? It does its job - lossless compression on the order of a 2:1 ratio - and does it quickly. It's open source and license-free so you don't have to worry about a proprietary format that might disappear at the whim or bankruptcy of a company. And the developers have adopted a common framework with Vorbis, the open source group that develops the OGG alternative to MP3 compression. Perhaps as a result FLAC files have full tagging support in Winamp.

Set up EAC to encode FLAC files as described here:

Rip your audiophile-grade CD to FLAC.

Copy the in_flac.dll from the FLAC distribution to your Winamp plugins directory.

Launch Winamp and you'll be able to play back the FLAC files (you might want to set a file association for *.flac files to Winamp so Windows knows what to do when you double-click on one).

Part 1 complete! Your soundcard is probably already sending PCM out over its SPDIF connection. But for now it's crappy PCM. You know there's processing on it if the Winamp or Windows volume controls affect the output.

Now we use the ASIO interface and the Japanese ASIO plugin for Winamp to bypass the normal processing that happens in Windows.

Follow these Stereophile directions to install and configure the Winamp ASIO plugin (your own soundcard will replace the "Echo" references in this guide):

Restart Winamp.

In theory this is all it takes. However, I had the additional difficulty of working through the M-Audio patchbay router configuration. On my Delta Audiophile 2496 the correct settings were:

note: ASIO-ed Winamp audio came through the "WaveOut 1/2" input.
  • Make sure the "Master Volume" and mixer level for "WaveOut 1/2" are at maximum gain on the Monitor Mixer tab.
  • Set the "WavOut S/PDIF" mixer level to nothing or mute it to prevent Windows sound effects from being relayed through to your decoder.
  • On the Patchbay/Router tab set "H/W Out SPDIF" to "Monitor Mixer".
  • On the S/PDIF tab check the Advanced Settings and make sure Data Type is set to "Audio".

Now you should have line-level PCM out to your decoder that is completely unmolested by Windows or any other software. In theory. Windows is certainly cut out of the loop - try adjusting your volume through the Windows control panel, it won't do a thing to your PCM signal - but your sound card may still be altering the PCM.

The fact that the M-Audio Monitor Mixer gives you gain control and will happily mix in standard Windows audio if you adjust the "WavOut S/PDIF" mixer level means the sound card will alter your PCM if you want it to. Hopefully with the gain at max (0.0dB) and the other channels muted the signal goes through unmolested. There's no easy way for me to tell.

The FLAC-Winamp-ASIO method sounds very, very good. Initial casual tests sound at least as good as our current CD transport (a Pioneer Laserdisc player via TOSLINK). I'll do more rigorous A/B tests once my new speakers arrive.

Bonus: If your portable digital audio player supports OGG (like my iRiver iFP-395T), grab the latest version of Oggdrop. You can drag and drop FLAC files into it and it'll output compressed OGG versions.

One last note - using the right cable (a digital audio cable or composite video cable) makes a big difference. We were previously sending PCM over an analog audio cable and it sounded terrible. Everything sounded like it was poorly or just-adequately compressed. Once we switched to a proper digital audio cable there was a marked increase in clarity. Analog audio cables are out of the specifications for running digital audio signals. Don't do it!


Anonymous will (keith's former roommate) said...

I used to use Monkeys Audio for all my lossless compression needs because it creates smaller files than FLAC. Now I'm converting to FLAC because compatibility outweighs efficiency in this age of $.25/GB storage.

Thu Nov 17, 12:36:00 PM CST  

Post a Comment

<< Home