HDCD seems to be an abandoned format in hardware and software decoding support. I have grown frustrated with the late 90’s+ to today trend to see how “loud” they can master a CD, destroying the original recording the process, check out loudness war for some great examples and pictures. The HDCD encoding process is suppose to reduce some of the “loudness” and increase the dynamic range, it does not make a huge difference but it is better then nothing.
Since I archive all my music from CD’s in lossless compression I have been looking for a way to decode my HDCD collection to 24-bit 44.1K WAV –> FLAC files so I will not need any software or hardware decoders to playback the HDCD content, just a 24-bit DAC. I stumbled upon HDCD.exe and preform some tests to see if it matched Microsoft windows media players decoding of HDCD, end result, it does. Ready further if you want to see how I tested and how I got it wrong at first.
There is a lot of misinformation and conflicting reports on how HDCD data is stored, what data is stored, what the HDCD does, difference in decoders, etc. Also since Microsoft (the new owner of HDCD licensing) long since abounded there central point of information, HDCD.com, I can easily see why many people are confused about HDCD. It took a while for me to sort through the information.
After Microsoft acquired the company that designed the HDCD standard it slowly lost steam. This is why all versions of windows media player after and including version 9 include HDCD decoding support (24-bit output must be enabled and computer must have 24-bit sound card)
I decided to test HDCD.exe software decoder for myself after seeing a few posts saying that this software does not decode HDCD’s fully. I am a data and visual person so I had to run some tests and see if HDCD.exe can decoded HDCD information fully compared to windows media player.
HDCD.exe vs WMP 11 TEST 1
This test is Invalid, see second test 2 below, I removed the screenshots to avoid confusion.
Test 1: Using a WMP playback with windows direct sound capture to compare to HDCD.exe 24-bit decoded WAV
There seems to be an issue with the wav the direct sound function of windows works. The original CD EAC ripped WAV vs the direct sound capture of software playback of the original CD where almost identical but the same comparison done with WMP HDCD playback and HDCD.exe decoded wav were not, it may be that direct sound capture gets messed up in 24-bit. Either way the WMP wav out plug-in wav file matches the HDCD.exe decoded WAV, shown in test below.
HDCD.exe vs WMP 11 TEST 2
Test 2: Using a WMP wav-out plug-in to compare to HDCD.exe 24-bit decoded WAV
Here is how I tested this:
– I am testing this on the HDCD Sampler 2 album, track 2.
– I am running WMP 11, with 24-bit output checked in settings (there is a bug in WMP 11 where it will only show the HDCD logo when 24-bit output is disabled.. you have to turn on 24-bit output for the HDCD decoding to work). I am using the chronotron WMP wave output plug-in to output WMP playback stream to a WAV file.
– The second waveform is using HDCD.exe to decode an original HDCD ripped wav file to a 24-bit 44.1kHz HDCD decoded wav file.
Track information from hdcd.exe
Decoding Statistics: Packets Processed : 2730 Peak extend : Enabled permanently Minimum gain : -4.0dB Maximum gain : 0.0dB Transient filter (Unsupported) : Enabled intermittently
I have also tried tracks on HDCDs that do not use peak extend or transient filters and they match WMP decoded output
As you can see the output matches, if I invert the first waveform and add it to the second waveform in cool edit pro v2.1 I get the silence which confirms HDCD.exe is decoding the HDCD content the same as WMP is. Hope this helps others with questions about the two decoders.
It is important to note that WMP and HDCD.exe do not apply transient filters even if the disk has this feature enabled so software decoding will not be as good as hardware. I will try to grab the PCM stream to the DAC in my HDCD hardware player and post a compairison.
Other software decoders:
dBpoweramp has a DSP plug-in to decode HDCD but after looking in the plug-in folder you can see they are simply using the free HDCD.exe utility to decode HDCD information. If you have dBpoweramp and the dsp plug-ins installed take a look in the plug-in folder located in C:\Program Files (x86)\Illustrate\dBpoweramp\DSPs\HDCD -OR- C:\Program Files\Illustrate\dBpoweramp\DSPs\HDCD (depending if you have 64 or 32-bit OS) and you will find the HDCD.exe utility
Thanks Luke for this tests! I am confused aswell whether HDCD.exe is doing the right thing or not.
There is one more test you could do: compare HDCD.exe with WMP 9. At the end of this post http://www.head-fi.org/forums/5603865-post6.html there is some speculation that the newer versions of WMP will probably just do amplitude-related things without filter switching.
Luke Skaff says
I tired it out and WMP 9 preformed the same as WMP 11. I tired a HDCD with a track that used peak extent to test a more complicated decode. I may try modding my HDCD hardware player to output digital out, that would be interesting to compare a hardware decoder with a software decoder.
yeah screw all this mess. record whats coming over rca’s from hardware unit. and what you hear (with creative soundblaster) and compare the wav’s. also.. reference my other post down below.
The comparison with a modded hardware digital out would be the ultimate proof. But for now I’m convinced. Thanks again!
na hardware rca out vs software rca out is the real test.
Dave Kysar says
Well it would be impossible to do the test of comparing modded hardware digital out. This is because the hardware output is only accessible after filtering and oversampling.
I think the guy who developed hdcd.exe stumbled upon this and probably reverse engineered the hardware over-sampling/filtering algorithm.
Rumor is according to his roomate that a few China businessmen came to his room one day shortly after he had the hardware code reverse engineered and was ready to program an fpga. A week later he disappeared and hasn’t been seen since. Some say he was spotted on a beach in Costa-Rica. Others said that he lives M$ in a nice Seattle penthouse but has a large scare on his left temple.
I think your first test was the valid one. I’ve searching a long time to find out, why my copies of my hdcds differ quite a lot from the original ones… now i know ’cause i found a post from someone head-fi:
may i qote:
Data range from -30000 : 30000 is linear. Range above and below is non linear. Multiplier coefficients are recorded in sub-channel (part of audio CD format). Sub channel is not big enough to keep additional 4 bits, but it can keep multiplication coefficient.
In other words HDCD data format is a 2 pieswise interpolation to logarithmic scale. Full range is appropriate to 20 bit. Data precision at any point is 16 bit. (technology similar to voice A-law, M-law compression).
HDCD played on standard CD equipment will distort high levels.
HDCD played on separate transport and processor may be distorted because if sub channel is not transmitted, but processor is HDCD capable, processor will try to apply HDCD decoding because it will find HDCD patterns in upper levels, but without sub channel it does not know how to amplify it. The result is floating level (The same may be achieved if you copy HDCD using NERO but do not copy sub channel).
HDCD can not be saved in .wav because sub channel will be lost. HDCD processor will find patterns in peaks, led will flash.
And that’s obviously the case. Make a try: make an image with clonecd, turning on subchannel reading, but don’t correct the subchannels. Burn the image after hitting the option “do not correct subchannel data”, but you can fix the crcs. Burn it as slowly as possible because subchannel information has no crc corrections, so it should be burned savely (i burn with 1x speed).
Check your copy in your hdcd-player: Now it sounds like the original.
thats because you actually now have to uncheck 24 bit in WMP!! WMP only shows HDCD symbol (meaning it’s decoding) if 24 bit is unchecked even though it says otherwise in the 24 bit check box description. Trust me I have listened to my tool – lateralus cd and it sounds 10 times better with 24 bit unchecked and thats the only way i can get the hdcd symbol to light up. and as much as i love foobar. the hdcd decoder doesn’t appear to be doing crap. that’s letting my ears be the judge. you should try it.
night and day difference.