keropi wrote:You will hear "machine noise" either way with LPT DACs, just like a radio that also has some hissing in it - the output by nature is not crystal clear like a real soundcard.
Not necessarily. I think there are two factors that introduce 'noise'... Two types of noise that is:
1) The signal is taken directly from the data pins of the printer port. This port is not designed for audio output, so the signal may not be 'clean'. Also, I'm not sure how long a signal is on the data pins, and what happens when you send a different value.
2) The timing of the data sent to the printer port. This is generally done from a timer interrupt. Depending on how tightly the code is written, there may be less or more temporal jitter.
For 1) you could probably decouple the signal from the data lines by using some flip flops (latches). You can then create a nicely conditioned power supply to these flip flops, so they act as a sort of 'buffer', making the outgoing signal a solid clean one, regardless of the incoming signal.
Then you can make sure the flipflops only change value based on the strobe pin.
That way you'd also eliminate any noise during the 'transition phase' from one value to the next.
For 2) you can minimize jitter by either crafting very tight code (eg making sure the CPU is executing a hlt whenever you expect the interrupt to fire, so there will be no latency when responding to the interrupt), or by not using the timer interrupt at all, but instead using a cycle-counted loop to ensure that the delay between any two samples is always the same.
This is mainly important for slow machines such as 8088s. On a fast machine, the jitter is negligible anyway, because every instruction executes so quickly.
So, I think you can solve both.