Most of my music collection is on a Macintosh in my basement, that machine runs iTunes so everybody on the local network can play that music on their macs. So far so good.
I also have an ok set of speakers wired up the Mac in the basement. So if I play music on that machine it sounds ok in the living room. I happen to do that by running MPD (or Music Player Deamon) on the basement Mac. MPD has numerous remote control mechanisms. Sitting in the living room we use Theramin on our laptops to control it. You can teach MPD about internet audio steams, so that’s how we listen to the radio.
One scenario that’s eluded me until today arises when we watch videos. This blog posting explains how to get your mac laptop’s audio routed to another Mac, like the one in my basement that drives the good speakers. It is pretty complex. First you install SoundFlower so you have some new output devices in your Sound Preferences; you then send your audio to one of those. Second you run the program /Developer/Applications/Audio/AU Lab. You’ll only have that if you’ve installed the developer tools. You’ll run that on both the sending and receiving machine. You’ll create an AU Lab document on each, to route the sound appropriately. You can save those two documents (the sending and receiving one) for reuse. You can have AU Lab running all the time on the receiving machine, so it will pipe the sound as soon as you fire up the right configuration on the sending side. The details are in that posting. Sadly the time delay for all that is sufficent that the Movie’s audio looses synch; maybe QT Synch can help with that; just how complex can this get?
This can all get wonderfully perverse. When the sound get’s too loud or soft there are way too many links in the chain that might be at fault. But like running simulators inside of virtual machines the geeky fun is to make it even more confusing.
PlayDar is reinvention of the ideas around OpenURLs, i.e. you ask your local playdar daemon if it can find some music, given assorted metadata (title, artist, …) and it attempts to find it for you. It might find it on your machine, but it can also search other places. For example it might find it in some service you have subscribed to, or on in a friend who’s collection you have arranged to permission to share. Playdar’s pretty new, and pretty rough right now.
But at the moment there is a web page on showing on my laptop, and it’s an mp3 file which my local playdar daemon found for me. That file happened be found on the machine in my basement, which is also running a playdar daemon. So the file is being shipped from the basement playdar daemon to my local playdar daemon which is serving it over http to my web browser. The web browser is playing the file. My laptop’s audio is currently routed to an output device provided by SoundFlower. AU Lab, running on laptop and it’s listening to that SoundFlower audio channel. AU Lab is then “filtering” that audio, sending to an AUNetSend filter. Meanwhile back down in my basement another instance of AU Lab is running. It’s taking it’s input from a sound generator that happens pull the sound off the network via AUNetReceive. It then pipes the sound to the speakers on that machine. Those speakers are up here in the living room. Isn’t that just disgusting! I’m such a geek.
Sigh, I really ought to find a job.