An 8-bit Synthesiser is pretty easy, since the one in the Commodor 64 is pretty hard to beat already! So lets just improve that one a little!

Even the designers of the C64 were not entrely happy with it. The fundamentals were solid, but they were rushed to market before they could polish it to their own satisfaction.

Synthesizer chip!

Very briefly:

Think of a C64-SID with the following changes:

The 'conditional jump' is not like a CPU conditional jump. There is a 2 byte register that contains the memory address to jump to. If the registers are zero, the jump is ignored.

Using these commands (a few more might be useful too, possibly simple counted loops? But these are enough) one should be able to set up a set-and-forget synthesizer loop in memory. Using the conditional-jump register (and only that), a program (usually a game) can change the music playing with just two memory-writes, the change occurring at pre-defined transition points in the tracks.

Immediate sound-change would be achieved by directly setting the 'sequencer' execution address instead.

Basically, with a fairly-simple state-machine-driven DMAC, your entire game's soundtrack is self-running with the CPU only having to spend a few instruction cycles every few minutes when it wants to change its tune! You can just have the sequencer handling some 'voices' and manually handle others for game SFX.