VCO, LFO, DCO, DDS notes
VCO - Voltage-Controlled Oscillator
Ramp core
LFO - Low-Frequency Oscillator
DCO - Digitally Controlled Oscillator
DDS - Direct Digital Synthesis
DDS (Direct Digital Synthesis) (a.k.a. numerically controlled oscillator) indicates a particular way of digitally generating waveforms.
DDC ICs
DDC ICs are typically aimed at Mhz-rate function generation.
DDS is capable of a fairly wide frequency range, though DDS ICs - which are dedicated to the task may care more about MHz-rate function generation; spending frequency resolution over all that range is great for general purpose, while one geared to audio might be a little more precise in just that.
They also frequently focus on on one or a few waveforms, sometimes just sinusouds.
Both reasons why most DDS ICs aren't a very obvious choice for musical design.
DDS as a technique
...but the above is just because the most obvious reason to make DDSes are function generators in the lab equipment sense, which you often want to make high-frequency, and then often simpler signals, because that is mainly aimed at circuit testing.
The frequency range to focus on in just a design choice, though, so you can focus on audio range better.
And as a technique, DDS easily lends itself to arbitrary waveforms and even sample playback, and in fact has been used by various samplers, and by some synthesizers that can sample, because the technique is not at all opposed to feeding it more arbitrary waveform data from RAM or even a microcontroller, and at audio rates this is more doable.
DIY DDS
If you're DIYing this, there are some further implementation details.
DDS isn't an output method worked out to the lowest levels, it's more an angle on how to use a clock source to go about it.
The question of how you would play on such simple hardware can be a good introduction on how DDS works, even.
Say you wanted to play one sample at arbitrary rates, or better, three at once each at their own rate, how would you?
You would need some regular indexing, so it would be nice if you had three regular clock signals, each run at their own speed to go to the next sample on each clock, right? Even if your hardware gives you multiple clocks/timers, you cannot make one go at arbitrary rates (because those usually come from clock division).
What if you had one clock, considerably faster than your sample rate, and did a much larger, faster count, moving onto the next sample every many counts?
Okay sure, but why does that help? Well, in a fixed-point integer-like trick, you forget(/divide/shift away) some amount of lowest bits, and use what you then have as an index to position in the waveform you want to put out
The more of those lower bits you throw away, the finer the granularity you get to the sample rates you can play at. You now don't need to control that main clock precisely - or even at all - to change the playback rate. You just need a fast counter, and a bitshift. Those are cheap operations.
DDS would call that counter a phase accumulator (there are good reasons that you'll understand when reading up on the details).
This index is then used to index a waveform in memory external to the generation part (possibly ROM) - and you would only need one cycle of it, so the phase essentially is the index (with some extra possible tricks for symmetric waveforms).
(This is technically just the simplest form of DDS, phase truncation DDS. There is also dithered DDS, which does much the same but suppresses some harmonic-frequency issues up to 12dB(verify), at the cost of a slightly higher noise floor)