The answer to the original question harks back to the means of producing "analog" sound on the "digital" speaker of a PC, and it seems many don't remember how effective this was. It is however processor-intensive. It consists of using PWM to produce the analogue "levels", switching at a rate too high to be audible. You don't need a DAC and you can generally get away with no filtering (the PC after all, managed to...). You don't need to have 256-level (8-bit) accuracy for chime tones either, the embedded chips in the knick-knacks almost certainly don't. The residual harmonics of the square waves give a rich "reedy" tone. Consider using 16 levels, with say, a 100kHz clocking rate. That is, every 10µs, you increment your (4-bit) counter and compare it to the desired "analog" level, setting the output bit if it is greater. No, actually you use my favourite "phase accumulator" algorithm - you add the "analog" value (0 to 15) to a register, and set the output if bit 4 is set. Easy enough? Key words include "isosynchronous code". You do the above at the regular 10µs interval, interspersed in the code which actually synthesises the waveshape, which itself is probably a Phase Accumulator and wave-shape table (lookup or rule-based). -- Cheers, Paul B.