A LAN-based Democratic Jukebox?
"I'm trying to find the right combination of hardware and software to accomplish this. What I'm looking for is a system where we can bring up a page on the local LAN, and punch in a username, password and a rating for the song that is playing. Over time, the songs that have been rated higher by the people around the area will get played while the ones rated down won't get played that often. Also, if all of us say that a song -really- sucks, we can get it to skip the song.
While hardware is a matter of choice, I'd appreciate any experience people have had with different soundcards and high quality output. Also, all of us can code decent C, one of us has decent C++ skills and I can throw together semi-basic SQL queries. Is there any software out there that will fit the needs for this situation or at least provide an open source building block for us to go from?"
I don't think that this really would be all that hard. In the situation you are in of course. Heck, I think a small script/batch file and a few web pages would about do it.
Here is my thought.
You have this PC machine with the good speakers/etc playing the songs (I'm assuming that this is powering speakers that everyone can hear, if this is shoutcasting or streaming somehow, that's a different story, but not TOO much worse).
On that machine make sure you have a web server going.
Now, write a small script that will look through a directory of mp3s, randomly pick one and play it. As it does this, it 'marks' that one as being played (for example, writes it's name into a file 'nowplaying.txt').
Ok, now write a little CGI/PHP/etc page on your website. Make it prompt for a username/password, and then display the song that is playing (by reading nowplaying.txt), and ask for a rating.
Store these ratings in a big file, let's say 'ratings.txt'. This file can have 1 line per song, and have a list of ratings after it. So if you have 5 people, and you only have 2 ratings (0=hate it, 1=like it) it might look like this:
Stairway_to_Heaven.mp3 0 1 0 1 1
Ok, So actually what you would need to do is autogenerate this ratings.txt file in the first place with ALL of the filenames in it, but no ratings yet. Now, instead of making your random player script actually look at the directory of MP3s, have it each time load this ratings file, and 'randomly' pick from it. In this case, if you have 5 people, and a hate it/love it system. You could simply have any song that has 3 hate its, never be played. Beyond that, give any song as many 'chances' as it has 'love its'. So a song that is 4 loves, 1 hate, as twice as much chance to be played as a song with 2 loves, 2 hates, which has twice as much chance to be played as a song with 1 love, 0 hates. etc.
Of course, this is the simple version. You could easily have a more complicated rating system and therefore a more complicated picking system.
But the basic gist is:
1) A random picker script that loops forever, reading ratings.txt (or a DB), applying rules to pick the song to play, and playing.
2) A CGI that asks for input on the song being played via reading nowplaying.txt, and updates ratings.txt
I Hate to advertise and all, but there is something like what your looking for at http://www.Echo.Com. They Stream Music to you in a radio like way, except you get to vote to skip songs, and You also would rate the music. They have a good variety of songs, but it seems to take them a few weeks/months to get new releases. If you made a company station and just had everyone make and account and join that station. If you want it played from a central source, just hook the computer up to a sound system and have it play what ever the echo player is. The thing is that they would be able to listen to it themselves on whatever machine they were at as long as it had a soundcard.
On the note of hardware, I would use an SB Live. I Have one myself and love it. Greatest Sound Card I have ever owned.
(Score:0, Interesting)
But remember, if you're going to be playing mostly MP3's your sound quality "bottle neck" is probably going to be the MP3's themselves. Personally, I think just getting a Creative Ensoniq AudioPCI 1371/1373 card for about $20, which is well supported by the Linux kernel, would suit your needs just fine, unless you wanted digital out.
"Karma can only be portioned out by the cosmos." -Homer Simpson
http://tunez.sourceforge.net/
Gee, how hard can typing in "mp3 vote" in freshmeat really be.
The software you're looking for already exists for Linux. Search on freshmeat.net. I don't remeber the name because I haven't used it in at least six months.
The reason I haven't used it in at least six months is because my sound card sucks, so I'll have to disagree with the person who recommended the Creative Ensoniq. This sound card sucks. The sound is filled with static and crackling even with a very short patch cable.
I upgraded my motherboard and CPU and case. The new one has on-board sound that Mandrake 8.1 can't detect so I reused the Creative Ensoniq. I can veryify that this sound card sucks in two different machines under Mandrake. (It sounds fine under Windows)
This is the program I mentioned in another post. Mserv does exactly what the original poster requested. I used the command line client and Penguin Power, a Linux X10 program, so that I could control playback and rate songs using an X10 wireless remote control. Much better than a web interface, IMHO, because the music can be controlled from a chair in the living room, or from the kitchen, or anywhere else.
I still don't know why soundcards still exist in their current form. Computer cases are horrible environments, full of noise and static.
Motherboards manufacturers should just agree on a standard digital header for audio and then Creative/etc would just make external Digital-Analog converters.
Of course you CAN already do this with USB audio and with soundcards with digital output, but why even bother with having a full blown soundcard in your PC when a good DSP plus an external converter will do a much better job?
Pedro Côrte-Real.