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?"
Actualy I undertook a project along these lines a while back minus the democratic part. MP3Linux was basicly just a cheap name I came up with at 3am. Did bunches of neet things, you could finger [string]@mp3box and as long as their was only one match it would kick it up next in the playlist. Or if you were feeling adventuresome you could telnet to it on a specific port and browse though a menu listing and try to find the song of your choice. It did have the notable feature of only queueing songs for playing, so people wouldnt fight over which song was currently playing.
Once I get home from work I'll try to dig up the harddrive I had it installed on. I axed the project since I didnt have any drives larger than a gig to deticate to a jukebox machine.
Also, I think they have something like this over at ID Software. jukebox.idsoftware.com if my brain serves me correctly.
symetrix. We are building a religion, a limited edition.
I'm not sure how "high quality" you want, but I should mention that all SoundBlaster Live! cards, which are cheap these days, have a digital optical output. Now, if you had some hi-fi stereo equipment and a reciever with a digital optical input, thats the highest quality you can get. So, really, you can pay more than $50 for a sound card, but there would be absolutely no reason to.
Buy a good reciever, speakers and subwoofer.
Wish I knew even a little to help with the rest of your project, but I'm just a college student who failed intermediate java. I wouldn't be much of a help in anything there.
I'd love to hear how this project turns out. Feel free to e-mail me if this ever gets off the ground!
-NeoTomba
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)
Dr. Dobbs Journal had an article in its January 2000 issue titled "The Ultimate Home Jukebox".
The authors basically took their 300+ CDs, ripped them to MP3 (and created a filing/naming convention for them all), stored them on a server with a web based interface, and hooked the whole thing up to their home lan and stereo. It's exactly the info you are looking for.
The article is available online from the DDJ store for $5. http://www.ddj.com/store/ and follow the Dr. Dobbs Online Library link.
obviously no deficiencies vs. no obvious deficiencies
I have tried the program that lives at
http://www.globecom.se/jukebox/
It can do ripping, playing, queueing, and many other things all with a web interface. It stores MP3 information in a MySQL database. If voting is not currently implememted, the structure of this app allows easy addition of the feature.
The dumber people think you are, the more surprised they are when you kill them.
> a new person arrives
:)
all the songs a rated already so how does the new person's choice make much difference
> tastes change
that new limp biskit tune was popular last month but now everyone is sick of hearing it. in three months though ppl will say "yeah, that ch00n r0x0r5" when they hear it (or at least they would in my irc channel
personally I'd go for a web server interface and mpg123 as the engine and cobble together some scripts
tbh so long as there aren't loads of tunes ppl hate then your probably just as well off running it in shuffle mode and tweak the playlist as you go along.
if you use a webserver for your mp3's then users can use xmms and winamp to play a tune that's not on the playlist
There are places where the networks are not touching,and there are places where they are-Boeing's Lori Gunter
Take a look at http://obs.freeamp.org/ Network-based jukebox software, and it supports multicast too :)
http://tunez.sourceforge.net/
Gee, how hard can typing in "mp3 vote" in freshmeat really be.
You can pick up the cables for about $20usd at Best Buy. I have pretty much the same setup and it sounds GREAT!
Keep Austin Weird!
Mserv has worked for me in the past. It has telnet and web interfaces and the latest CVS version supports Ogg as well as MP3.
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)
Sorry about this beinbg a long post, but I've done something similar to what I think you're asking about. I've set up an old Pentium 200 w/Linux 2.2.19, 128MB RAM, Ensoniq sound card, and 120GB of dedicated music storage, with...
.ogg files) on a 10/100Mb house LAN. Edna will allow selection of individual songs, pick from existing playlists, or dynamically generate a 'play all songs' playlist that works from the selected level down. .ogg files seem to stream just fine. I use EasyTag to manage the ID3 tags on the MP3s. Of the TAG utilities I tried, I liked it the best for managing large numbers of MP3 files. I haven't yet found a comparable utility for managing OGG TAGs.
;-)
(enters command)
thorin:/music$ find . -name '*.mp3' -o -name '*.ogg' | wc -l
12648
thorin:/music$
...mmm, alot of songs (900+ albums, yes I own all the CDs), organized by alphabetically by Artist/Album/Song. I use Edna(v0.3?) as the music web server to serve the music (hacked slightly to support
Any user at a client computer on the LAN can use their preferred browser to stream whatever music (album/playlist/song) they want to their local desktop. Windows clients currently are using Winamp, Linux clients are using XMMS, but any client with support for streaming mp3 and ogg files should work.
For MP3s I use ID3V2 tags because they work with streaming. The tags on the
On the server itself, I use Konqueror pointed at the local Edna web server to pick playlists handled by XMMS via an Ensoniq sound card to the main stereo system. MP3s are encoded at a relatively high quality using LAME 3.89 in VBR mode with an average bit rate running about 190Kb/s. I'm currently re-encoding the music from the original sources into the ogg/Vorbis" format, using an average bit rate of 192Kb/s. I use GRIP to rip my CDs with (with full paranoia), and normalize to even out the volume variations of songs so that playlists with songs taken from different albums aren't at radically different volumes. There is a volume normalizing plugin for XMMS that adjusts the level in real time, but I didn't like the way it worked. The volume level of the next song was significantly different (louder) than the previous song, it could take a half second or so to adjust itself. Pre-normalizing (with conservative values) seems to work much better. The music currently occupies about 70GB of disk space.
BTW, my music server is what I use to rip/encode all of the new music, run setiathome, and function as a SAMBA file server/domain controller. It will do all that while streaming music to several clients as well as play through the local sound card without skipping. I discovered that if I used XMMS to read the MP3/OGG files directly from disk (on the server), I had problems with skipping when the server was heavily loaded, even with the XMMS buffers set to very high values, but clients on the LAN would never skip. Streaming to XMMS on the server solved that problem without resorting to the low latency patches for the kernel. On the Linux clients I setting my browser to launch xmms with the -e option which causes new songs or playlists selected with the browser to be appended to the current xmms playlist.
use a DBM file (perl makes this supa-easy with tied hashes) or a free database (mysql, postgresql, blahblah). it will perform waaaaay better than a plain text file.
It's called Mserv. Works great, has a web interface, if you want it, or you can use telnet. You can also filter which songs the weighted random play will consider by date, genere, or whatever else is in the ID3 tag.
-Nathan
Care about freedom?
Become a card carrying member of the GOA.
Run by fat wreck chords out of San Francisco (I think.) does exactly this. Sort of.
You tune into the stream, and pop up window tells you what song is playing. In this window, you have a chance to vote on whether or not you like the song. Songs that get voted on more often get played in the rotation more often. I suppose the major missing part is to generate the playlist dynamically.
Sadly, it looks like they are closing down, however. Should be around for another month at least. According to the site, they use Icecast, PHP and apache.
Is that a real poncho? I mean, is that a Mexican poncho or is that a Sears poncho?