...
As every proper digital function generator has, I want mine to have the ability to set the amplitude as well as offset. To add a DC offset to a signal is a not a difficult task, but setting the amplitude digitally has proved to be a bit of a challenge for me. I have done some research on this topic and found that some solutions exist in forms of voltage controlled amplifiers (VCAs) and programmable gain amplifiers (PGAs).
OTA and Analog Multipliers can give you variable gain, but they have not-wonderful distortion specs, and you probably want to avoid niche parts in the signal path.
You may be better to look at DDS parts a slight step up from AD9833, eg like the AD9834, which has a current-set gain pin.
That is set by a DC current outside the high speed path, so you could vary 2:1 or maybe 10:1 there, and add simple resistor dividers + Analog Mux, on the output amplifier.
Another choice could be to vary the VCC of the AD9833, as it specs just over 2:1 Vcc range, so a low cost DAC could set Vcc for fine adjust, and dividers could set range.
Level translators might be needed on the data paths.