Please create an account to participate in the Slashdot moderation system

 



Forgot your password?
typodupeerror
×
Music Media

Building A Multi-Room MP3 Server? 14

Jason Peacock asks: "Say you have a house set up with multi-room sound already (speakers in each room, central multi-zone tuner, control panels in each room) and it's also wired for a computer network. You'd like to add the ability to play different MP3's in each room. First thoughts are to install a server, put a sound card in for each zone, connect these to the zone tuners, then get some software that can play multiple MP3s, outputting them to different sound cards. Or just run multiple instances of an mp3 player, each instance configured for a different sound card. What's the best way to control this using remote terminals (Win2k boxes) in the house? Final challenge: can this be done with Win2k on the MP3 serving box? I'm interested in hearing both solutions (Linux & Windows)." If computers will be running in each zone, why not have an MP3 player on each which can take control of its speakers and play MP3s streamed from the central server (each zone would have its own port). This shouldn't be too difficult to implement and should work with any combination of operating systems that support streaming servers and clients. Anyone else have other solutions?
This discussion has been archived. No new comments can be posted.

Building a Multi-Room MP3 Server?

Comments Filter:
  • Here's some stuff (in PHP) I did to get a web interface to XMMS:

    $ cat /etc/sudoers

    www-data ALL = (rames) NOPASSWD: /usr/bin/X11/xmms
    $ cat ~/public_html/control_xmms.php | grep [important stuff]

    if( $operation == "play" ) {
    exec( "sudo -u rames /usr/bin/X11/xmms -p" );
    echo "Play >\n";
    } else if( $operation == "pause" ) {
    exec( "sudo -u rames /usr/bin/X11/xmms -u" );
    echo "Pause ||\n";
    } else if( $operation == "fwd" ) {
    exec( "sudo -u rames /usr/bin/X11/xmms -f" );
    echo "Fwd >>\n";
    } else if( $operation == "rev" ) {
    exec( "sudo -u rames /usr/bin/X11/xmms -r" );
    echo "Fwd <<\n";
    } else if( $operation == "stop" ) {
    exec( "sudo -u rames /usr/bin/X11/xmms -s" );
    } else {
    echo "INVALID XMMS OPERATION.";
    }

    Thought you might find it interesting or useful.

    --Robert

  • computer in each room:
    1) have a central repository (filesystem) and either use nfs or smb mounts (under linux) or smb mounts (aka fileshares) under nt. then just run the mp3 player on each system and pick the songs you want from the shared directory/filesystem and have it play through the local speakers/amp
    2) have a central mp3 server that not only stores the songs, it plays them too using the multiple sound cards in the server as you had planned. have a web interface running on web server that allows you to choose what playlist to play through which cards. this would (almost) certainly require running linux or a unix on the server side as i'm not aware of any scriptable mp3 players on nt. (although there might be one).

    one server total, multiple outputs:
    1) just run multiple copies of xmms, each playing to a different soundcard.

    if you don't have local sound cards in each room (as in the very first solution), you will almost certainly have difficulty playing more than one or two mp3's simultaneously unless your computer is very very fast.

    also, get sound cards with very good buffering/caching (ala soundblaster live); i've noticed it makes a huge difference on my system (ie my desktop with c-500 & sb live (linux) never "skips" but my dell laptop with p3-700 & ess maestro (win2k) repeatedly "skips".
  • why i'd just get my butler to run to the other room and cue up my mp3 for me...
  • If you use one server, and multiple soundcards, use a different user ID for each zone. XMMS instances for each zone would then have individual playlists, preferences (inc soundcard) etc etc taken from the .xmms file in each user's home directory. A xms -v %filename command from a terminal or whatever would add the file to the playlist of the XMMS instance that the user owns, so it would be added to the correct playlist and played with the correct soundcard.

    Works for me!
  • Why don't you just buy some cheap ass X terminals, wire them along with the speaker cables back to the main server, and use XMMS with multiple sound cards; you could even check out NAS, the network audio system (which just so happens to have a description of 'gets the sound to the right place' or something like that. Personally, I'd rather see someone make a home server with freebsd (rather, someone else; linux is too unstable. Too bad they don't have flat screen, hangable, touch-screen X terminals yet...wave of the future, definately. If they don't come out, I'll make one and give it to ya just for the great idea of a multi-room mp3 server...damn, I want a house.
  • I was just looking around Diamond's site and found this page describing some new Rio product they are working on. It sounds like it will do much of what you are looking for. However, it seems that it works over phone lines, which has always seemed a little odd to me... Either way, it might be worth looking into.

    RioReciever [riohome.com]
  • I've got a little pentium 166 that is serving as my mp3 jukebox, and it is doing well. It is running Linux as its OS, has a 200 meg hard drive to hold the basic stuff to get it running and uses Samba to mount my mp3s from my main linux box. Why samba instead of nfs? So I can easily mount other peoples mp3s too. It then has thttpd running on it with a few scripts serve up a listing of what mp3s I have available, as well as the tracks on any CD that may be in the cdrom (looked up with cddb). Xmms running in a VNC session does the actual playing of the music, meaning I can control it from anywhere I want, and the nice Xmms::Perl module allows complete control of it from a perl program. Sometime I plan to put some icecast abilities into it so it can stream to other people, which would make the multi-room thing possible. In the end, it all works rather well for random hardware I managed to pull up.

    Take a look at it at: arlo.dhs.org [dhs.org]
  • Consider a USB sound device. You won't have the IRQ conflicts involved with multiple sound cards. You'll have to figure out how many sound interfaces you can put on a single USB bus...but many desktop USB cards give you two USB buses, which should allow coverage of quite a few rooms..
  • You mentioned X10. I'll point out that the X10.COm "Free FireCracker" [x10.com] ($5.90 shipping) is transmit-only -- the computer can only transmit X-10 codes through the serial port. To have a computer listen to X-10 codes you need one of the other computer interfaces, one which lets the computer listen to and respond to X-10 signals.

    With a computer monitoring X-10, you can have radio-linked remotes or wired X-10 switches sending codes for the computer to interpret, such as "Next CD", "Next Track", or "Say Menu".

    A computer does not have to monitor if you're speaking directly to X-10 devides, such as using X-10 relays to do switching.

    X10.Com [x10.com] also has assorted other home audio/video products, particularly wireless links (it's not clear if there is more than one "channel" nor if receivers can be tuned between "channels"). There also are some ways to send "remote control" signals around the house -- apparently the Anywhere 2000 Remote sends both IR and RF signals, but there also are IR repeater devices available for other remotes. Incidentally, if you use this referall link [x10.com] you can get a coupon for a discount from most of their items.

  • This is an idea I've been throwing around for a long time now, and have planend it a bit, but not used it.

    First off, I planned on two interfaces. One would be a modified version of the myriad of CGI based software for building playlists. You can't get more cross-platform than a web page, although in my case that isn't needed (all machines in my house run Linux primarily).

    The other interface was going to be X10 based. Both their MouseRemotes or any of their wall-panel type devices would work well.

    I've tinkered a lot with IBM's free ViaVoice software RTK/SDK's under Linux, and it is far better than any other TTS I've tried, including Lucent's online setup. I was going to make a voice readout interface for the remote controls.

    As for hardware, I was going to do the same...a simple, central machine, with a crapload of sound cards in it.

    In my personal case, I'll probably do this with my current system when I 'retire' it. K62/450, 128MB ram. I intend to get a 60GB maxtor for it (only $269 each locally, and I get 21.4MB/s transfers on it on a Gigabyte slot-A MB at work), and also use it as my central NFS server for other purposes.
  • A good spot to check for the latest MP3 Players is: eBuyers [vstoreelectronics.com] or eBuyers MP3 [vstore.com]
  • by Jose ( 15075 ) on Friday September 22, 2000 @11:06PM (#759949) Homepage
    looks like you already answered your own question..one server, multiple sound cards, multiple mp3 players.

    The tougher question is how to intelligently select different playlists (or even songs) for different rooms on the fly. ie The person sitting in the kitchen wants to hear their new Tragically Hip album during dinner..how do you select that? (with ease)
    here's one answer (to start off)
    have a seperate playlist for all the different bands you have in your MP3 collection..press a button on your remote control to say you are choosing playlists, now use the numbers on the remote (like a phone pad) to get to the correct letter (in this case "T"), have the mp3 server say the name of the band, and you accept or reject the names until you get to the The Hip..(still kinda slow and painful)
    2)
    have some sort of PIN code that each person in the house has, so when they enter a room, punch in their PIN, their playlist pops up...they have a couple preselected playlists that they can then shuffle through to get to the one they want. ( alot of initial setup)
    3)
    if their are computers running in each zone...piss easy, they can select the music.

    as a side question, how are you guys handling the wiring for multi room music? I am really looking to go wireless, but haven't found a good system yet. Any good DIY stuff? And any recomendations for recievers to control the multi room speakers?

  • by SEWilco ( 27983 ) on Sunday September 24, 2000 @11:53AM (#759950) Journal
    You could put this Serial LCD+ [basicx.com] in several rooms. Then you can control the computer through serial ports. Add a case, power supply, and a 4x4 keypad.
  • by EMIce ( 30092 ) on Saturday September 23, 2000 @04:29PM (#759951) Homepage
    There are really two approaches to this problem. You can put a PC in every room or use one PC and run speaker cables to the extra rooms. Let me explain.

    For the first approach you would likely need ethernet wiring for the whole house and a PC in every room. This is not very practical and causes a lot of clutter. I do this with 4 PCs. I have samba or windows servers running on every machine so mp3s from any machine can be accessible from all over the place. Samba really ties things together, I recommend it if you will be mixing operating systems. I'd also recommend getting a mini-keyboard and trackball for every room. Or, if your a programmer, download IBM's ViaVoice SDK and whip up some voice control software, it's not that hard and you could hide the PC in a closet. Very nifty


    Even niftier - use one main server and run speaker cables to every room from your amplifier. You will need to devise some kind of central control mechanism of course. Here's where my kinda but not so far-fetched idea for a dream setup comes in. I'm not sure what the wireless networking options are for the palm and visor, but this idea could really use such a thing. You'd basically write some software for the Palm that talked over the network to your server, which would play the mp3s. Palm apps are written in GNU C, so it would be pretty simple to whip up this little app. The wireless ethernet card is the only missing linked. Anyone know if such a product exists? There's always the Palm Ethernet Cradle [palm.com]. Someone would have to write a daemon that would listen in for play requests. Some commands the daemon might listen for from palms:

    "ls"
    "cd /home/emice/mp3/Cake - Motorcade of Generosity"
    "!play |(Cake) - Ain't No Good.mp3| zone4"
    "!stop zone4"
    "master volume 233 zone1"
    "status zone3"
    etc.. You could even telnet to the servers port and issue these commands from anywhere :-).

    For multi-zone use you could easily rig up a really up your parallel port with a relay controller to switch zones among the multiple sound cards. A relay is simply electronically controlled magnetic switch. A darlington transistor followed by a relay on each pin of your parallel port would allow for 13 electronic switches. Switching a relay is too much load for your parallel port, so it would switch the darlington using a small current and then the darlington would switch the relay since it requires a larger current. You can get cheap $2 IC chips with 8 darlingtons in them. And programming the parallel port for this kind of application is pretty simple too, it's just a matter of setting the right bits to put a voltage difference on a particular pin. Check the Linux Howtos, there is one on Parallel Port Programming.

    This project could get pretty interesting. If I had a palm and the time, I'd already be working on this, but like many people here I've got a lot more ideas than time to work on all of them. I'd love to see something like this pursued though.

    emice

HELP!!!! I'm being held prisoner in /usr/games/lib!

Working...