I would prefer something where I can control frequency, amplitude and maybe the waveform by an external microcontroller via a serial interface.
One possibility is to generate the required base (square wave) reference frequency from a DDS.
Then use that in a phase locked loop that locks one the analog function generator chips to generate very clean sine, triangle, ramps, and square waves of adjustable duty cycle.
You get the best of both worlds, excellent frequency resolution and stability, and the ability to make very clean arbitrary waveforms of continuously adjustable duty cycle.
Usually these function generator chips require potentiometers to adjust amplitude and duty cycle, but the pots could be replaced with d/a converters, digital potentiometers, or R/2R resistor networks.
You are not going to find a DDS that gives variable output amplitude, and highly unlikely to find one with variable output duty cycle square, and triangle waves.
So how about marrying up a DDS front end, to an analog function generator chip, and it could be given complete programmability from a microcontroller.?