As remarked elsethread, I have release a very preliminary version of laser2wav, a software-only, audio CD channel-data decoder here:
Don’t expect too much: it’s not quite polished. It does, however, demonstrate how to decode 588-bit channel frames, using EFM, how to decode & check P/Q/R/S/T/U/V/W subchannels (including an implementation of the Q-channel CRC that ought to make you smile), how to do C1/C2 checking for the audio data, and how to do audio de-interleaving.
This is not a finished piece of work by any standard. However, I hope it will prove useful to people trying to understand what goes on deep in the bowels of a CD player.
The code (written in Python) comes with a 5-sector fragment (490 frames, 0.15 seconds) of actual data as captured by my rigged CD player. This may be useful to some people.
Unfortunately, I still haven’t got a setup where I can stream raw data into my computer, but this will come. When all that works I shall write down a sort of bottom-up tutorial on CD decoding, and publish it on the web.
Much of the actual information is contained in the source code of laser2wav. However, at this point in time you will have to be a bit of an expert to understand what’s happening. All this will improve, I hope, with the next couple of releases.