I started with a linux box running a standard web server. This serves up all of my MP3's. It also runs Samba as an alternative connecting mechanism. This is the basis of my music storage.
Second, I have a windows 2k machine that runs several things on it. First, it runs winamp 2.x. I wrote custom software on this that exports a soap based service, using apache tomcat, to export ALL of the functionalities of winamp control. I also wrote a series of servlets that export this soap service in a web interface. All of this was done in Java, with a small JNI library to interface to winamp.
Finally, I also wrote a java application that gives me a rich interface to the soap service, including browsing all of the music titles in a file/folder format, through the web server. I can fast forward/pause/add or remove songs from the play list. The best feature I added was a random function that queues up a song when the last song in the playlist is reached. It chooses from your entire music collection, but it only happens if you are 'out' of songs.
Finally, I exported the sound to ALL rooms in the house using the leapfrog system that sends audio over the phone lines. It is not ideal quality, but still is quite good. I have one transmitter, and three receivers in the house.
What this gives me:
Complete control of the music from ANY PC in the house using the rich java interface.
Control of the music from my iPaq using the web interface. I can sit in the hot tub outside, and change the music!
A great interface to winamp that is alot more pleasant to use than the playlist style.
So far, I love it. More importantly, it is almost 100 percent pure java. Only one small interface through JNI. I have been in heaven since I got this thing working.
It was a great project to teach me how web services and SOAP can really be used to solve a problem.