If you need this kind of buzzer and are ok with the sound quality you're going to get out of it, I'd suggest using a piezo buzzer, which actually can approx. be seen as equivalent to a capacitive load. A lot of those small buzzers will have capacitances in the audio range that will give you a much higher impedance, usually in the kohm range, which will usually allow you to drive them directly with digital I/Os. The best arrangement I've used is to drive them with a complementary output (two digital outputs with opposite phase).
Regarding outputing arbitrary signals, the most common way of doing this is to use PWM. You can then feed samples to your PWM generator. Depending on the PWM frequency, the sound quality will be kind of poor but it may be adequate for such buzzers anyway. You would get much better results by implementing a delta-sigma modulator. You can easily find DSM implementations in VHDL and Verilog. But if your sound quality requirements are modest, PWM will do the job.