Rolling Your Own Jukebox System?
Nurgled asks: "I've been tasked with implementing a client-server jukebox-like system using normal bits of PC equipment. The general idea is to have a central server with all of the music available and then one or more clients which have a kiosk-type interface for browsing the available music and enqueueing it on the central server, all connected to a normal ethernet network. It's important that none of the kiosks should be able to perform any operation other than enqueue new tracks, but it would also be handy if there was a separate administrative console where tracks can be skipped, which would then be available to the venue owners. The kiosks don't have very fancy hardware and most don't have touch-screens, so ideally it should support both mouse and keyboard-based operation. Is there any software already out there that can do this, or am I going to have to write my own? I'd prefer an integrated solution, but I also wouldn't mind separate client and server software as long as I can tweak both to make them work together. Any ideas?"
I've already done this. Grind is a web based jukebox that supports playback of a wide range of media formats (mp3, ogg, wav, and flac to name a few). It has a small install footprint (no database overkill, just Apache, Perl, and some mediaplayers). It supports playback of internet streams as well.
It is beta software because more metainformation in media files needs to be supported, along with perfecting its automatic installation proceedure. That said, I use it almost daily with no problems at all.
The main feature that sets Grind apart from other jukebox software is that it supports intellegent autoqueuing. Grind monitors what songs, artists, and albums you frequently listen to, and which songs you frequently skip. The user can then set Grind basically in autopilot (autodj?) mode and it will automatically play songs from your favorite and similar artists. There may be another open source project that does that, but I've yet to find one.
Just use SlimServer and be done with it. Read about it here, but to repeat the main features:
It's intended to be the interface software for the same company's Squeezebox network audio player, which explains why they're willing to give it away under the GPL -- they make their money of the hardware. That also explains some of the unusual design decisions that went into SlimServer, namely, that unlike some other network streaming setups (Apache::MP3, iTunes DAAP streaming, etc) which let each client listen to their own selections, the SlimServer architecture allows multiple clients to have a say over the one stream that's being used centrally. For a management interface to a central home audio system, or for the system described in this article, that design decision is a perfect fit.
Really, give it a try. I tried setting it up on a LAN for coworkers to listen to mp3s on their headphones, and while everyone liked the interface a lot, it was annoying that everyone listened to the same thing. But if you want to provide a way for everyone to set what is being played on a central system, this is exactly the way to do it.
DO NOT LEAVE IT IS NOT REAL