I made a music player that incorporates 4-bit PCM playback for percussion. It's probably not very useful for games since a lot of raster time is used to decode bytes into pairs of samples.
But if you have a kernel that can realistically only use half of all the scanlines, or maybe just don't pack samples together, I can see something like it being useful in a game. The trick, then, is to play a few samples at correct/nearly correct rates and intervals during your vblank code. For percussion in particularly it doesn't need to be very exact. It's more of a problem if you have pitched sounds.
Some examples: https://soundcloud.com/boomlinde/oil https://soundcloud.com/boomlinde/quantum-branch
Source code: https://bitbucket.org/boomlinde/vcs-music/src