wed, 17-may-2006, 19:53

I had the pleasure of living in Portland for a year in the early 90's, when the alternative music scene was focused on the Northwest and there was good live music playing all the time in local bars and music halls. Most weekend nights were spent at Satyricon or La Luna listening to local and up and coming acts like Everclear, Heatmiser, Hazel, Pond and many others. Since moving to Alaska, it's been a lot harder to keep track of new music and I was mostly stuck with newer releases of the artists I was already familiar with.

iTunes has been a good way to discover new artists and download songs, but I think eMusic and last.fm are even better. eMusic focuses on independent labels and is a subscription service, which means individual tracks are inexpensive enough that I've been downloading entire albums rather than just buying the "best of" tracks from iTunes. Downloads are unprotected MP3 files, encoded at 192 kbps so they're of higher quality than iTunes downloads, and you don't have to burn and rip purchased files to do what you want with them (like convert them to a truly free audio codec like OGG, for example).

last.fm is a free service that keeps track of what music you're listening to (there are plug-ins for most music players, including iTunes), and recommends other artists that other people with similar tastes listen to. What's different than the "people who bought X also bought Y" sort of connections (although it does this too) is that it has a media player (open source!) that plays full length tracks of the music it thinks you will like. This is much better than trying to decide if you like a new artist by listening to a 30-second sample on iTunes or eMusic. And the data is freely available through a well specified web API. You can see what music I'm listening to right now by looking at the 'music' section on the right sidebar of this page.

So now I've discovered a whole range of new artists that I never would have heard without these services. No thanks to the Recording Industry Association of America (RIAA), their old-style business model, and strongarm tactics, I'm finding and funding the artists I want to listen to.

tags: music 
sun, 30-apr-2006, 20:53

A couple months ago I got my first Apple since the Mac Classic I had in college. It's a MacBook Pro and so far I really like it. I've managed to get it to do almost everything my Linux laptop could do, but now I've got access to iTunes and Adobe's Creative Suite (although it's slow under Rosetta). If Apple would allow me to change the focus behavior, and implement the X11 cut and paste, it'd be the perfect system for a laptop.

On campus I have access to the iTunes playlists of all the people on the wireless network that are sharing their music library. And I have mine shared so other people can check out the artists I enjoy. Unfortunately, iTunes doesn't tell you what songs connected users are listening to or who is actually connected.

Since OS X is Unix, it's easy enough to examine the process tree and discover what network and filesystem connections iTunes is making. Running:

ps -axo 'pid command' | grep -v grep | grep 'iTunes ' | awk '{print $1}'

will show the process ID for iTunes. Once you have this number, you can use lsof -p [pid] to show all the files (and network connections, which are treated like files in Unix) that iTunes is using. Filtering the results by your iTunes library (grep /Users/$USER/Music/iTunes/iTunes Music/) yields the songs that are being played, both locally and over the network. And searching for ESTABLISHED shows the network connections. The last part of these lines show the IP addresses of the computers connected to you, and if there are two lines with the same destination IP address, that means they are actually playing from your music library.

To automate this, I wrote a Python script watch_itunes.py that automates this process. Note that this is a command-line tool, running from a terminal window. There are Dashboard widgets that are supposed to do this, but the one I tried didn't work, perhaps because I have an Intel mac.

To use the script: ./watch_itunes.py

By default, it will examine the process tree every 15 seconds, showing what's playing and who is connected or playing from your music library. Run it with -h to see a list of command line options.

Here's what it shows right now:

192.168.1.101 is connected but not listening to music
Portastatic                Bright Ideas               05 Little Fern.m4a

192.168.1.101 is listening to music
Arcade Fire                Funeral                    09 Rebellion (Lies).m4a
Portastatic                Bright Ideas               05 Little Fern.m4a

In the first two lines, I'm listening to Little Fern, and another computer is connected to my library, but isn't playing anything. In the second set of lines, they started listeing to Rebellion (Lies). The program will keep printing lines like these until you exit the program with Control-C.

tags: music  OS X  sysadmin 

<< 0 1 2 3 4
Meta Photolog Archives