1) Server decodes MP3/OGG/FLAC/etc to raw audio
2) transmit raw audio to multicast/broadcast


One other thing: if you're multicasting or broadcasting this, that means UDP. If it's UDP, then there's no flow control. So, either the server has to be able to throttle itself or else the clients have to have a mechanism for requesting that the server pause/continue the stream. It's not as easy as just dumping decoded audio into a packet and onto the network.

Can you make this code available in case I do get some free time in the next couple of weeks?

Hmm... I'll see if I still have it around. I don't know if I kept it or not because it was such a simple change and it didn't really work. I just had to do two things: create a multicast socket, then add a sendto() call right after the write() call which writes the audio to the sound device.