He found that the tone generator built into Audacity was quite useful, at least for generating waveforms at less than 20 KHz or so. Upon plugging his scope into his sound card’s audio jack, he observed that the PC had good frequency fidelity, though it required an additional DC offset as most cards are built to remove that offset from the waveform.

Using a LM358 as a non-inverting summing amplifier, he was able to apply a steady DC offset and generate usable signals for his micro controller projects. A schematic for his offset circuit is available on his site, should you wish to build one of your own.

[Debraj] also notes that though Audacity is a cheap free way to generate simple signals, any number of complex signals can be generated using MATLAB if you happen to own a copy.