"I love having all my music on my harddrive, but I miss the physicality of records and CDs". It's been said a million times.
So, here's a plan to get back the physicality, and the artwork:
* print out artwork of album covers
* put a [[wp:DataMatrix]] tag on the back with the album's location on the computer
* have a pile of albums, and wave them at a camera to play.
[[wp:DataMatrix]] is a format for encoding data in patterns of black and white squares: a 2D barcode. There's a nice article about this and it's cousin [[wp:QRCode]] [http://www.linux.com/feature/126948 here]
The main barrier to entry here is finding a decoding libraries. I went with [[http://www.libdmtx.org/]], which works quite well so far. The main library built cleanly on OSX, but I had to do some fiddling to get the Java wrapper to compile (see [http://libdmtx.wiki.sourceforge.net/libdmtx+Java+wrapper instructions])
Once it was compiled, I made a java program using the Processing libraries, and within about 30 minutes I could recognise and decode tags from the laptop camera.
From here it's very easy to adapt the app to send commands to [http://mpd.wikia.com/wiki/Music_Player_Daemon_Wiki mpd]
So what now?
Well, in a way, that's the easy part. The harder bits are:
* making sure that the computer's not constantly chugging away trying to decode frames when there's nothing going on. (It's a server in a cupboard, but I'd rather not stress it unnecessarily so it can save power). Maybe I'll end up with an arduino box connected to it, with the camera and some sensors in...
* setting up a routine for printing out fake album covers
* getting the physical bit right. The tags have to be correctly oriented w.r.t. the camera. I'd like to have as few constraints on use as possible, although I guess there's always the possibility of a dedicated camera-box to put the currently playing album on. It would be more magic to just wave it in the air, though!
It might also be worth looking at [http://code.google.com/p/zxing/ zxing], as it seems to do a wide range of barcodes etc. The [http://www.hitl.washington.edu/artoolkit/ AR Toolkit] might be a possibility, but not sure that it can support enough tags/data.