The difficult parts are getting the demodulation to work correctly and then handling the dynamic expansion correctly.
As a proof of concept (but dreadful sound quality) we can demodulate the 30 kHz fm component with something like:
Code: Select all
(setf s
(mult
(highpass8
(lowpass8 s 30000)
30000)
(hzosc 30000)))
(defun normalize (sig)
(mult 0.8 sig (/ (peak sig ny:all))))
(multichan-expand #'normalize s)
I'm sure that the demodulation could be improved (though I'm not sure off the top of my head how we would emulate a phase locked loop digitally), but then the dynamic expansion will need to be exactly right in order to achieve correct sum and differencing. I've not read all of the pdf files that you posted, but to get that right there's a lot of parameters that we need to know (both the compression and expansion thresholds, the attack and release times, and the knee radii), and if that was not enough, we also need to maintain the correct phase relationships across the full audio frequency spectrum. If we don't get all of this right the result will (sadly) be garbage.
In short, it is easy to demonstrate the principle, but to produce a CD4 decoder that sounds anything other than complete rubbish is likely to be very difficult.