One service I really like on the home-server is running mpd. It is a music player that is divided into various (graphical) frontends and a daemon. And frontend and daemon don't have to be on the same machine.
And if that isn't cool enough, mpd can play its sound to various targets. The local soundcard is just one possibility, it can also send streams across the network.
So here it was I use:
- The daemon to play the music. Sits on the server, knows the directory where the music is and plays this.
- A web-frontend optimized for small screens like smartphones. And excellent to include it via iframe into the servers homepage.
- Another small client, but this one just sends the played songs to last.fm.
- Of course my normal computers run a bigger client to set playlists et cetera.
- On the PCs I also use mplayer to listen to the stream from mpd.
Currently the streaming is done with the http-streaming that mpd ships. I am not that happy with it: Its unicast, the network-load rises linear with the number of stream-listeners. Its http, based on tcp, that means both sender and receivers need to have a buffer. And while multiple clients can have the same buffer-size, due to network latencies their buffers will be filled differently. This results in up to a second shift between one playing pc and the other. But I want the same audio in all rooms in our flat without delays.
Shoutcast is no solution here. Realtime streaming with rtp-based protocols would be a solution, unfortunately it seems as if there are no playback-clients for that yet...