Present Perfect


Picture Gallery
Present Perfect


Filed under: Dave/Dina,Elisa,Hacking,Music — Thomas @ 19:29


Six years ago, before I moved to Barcelona, my digital music collection was well-organized and simple.

I had my CD's. And I had a copy of all of them, in Ogg, on my Dave/Dina box. I had very few downloaded tracks, and I didn't really listen to those much. All my music on Dave/Dina was tracked in DAD, a project I did with my former housemate Kristof.

Life was great. Every new CD was ripped directly in Dave/Dina, imported in DAD, and from there it could be rated. So each track was immediately available for the dynamic playlists DAD generated. Those playlists were then played directly on the Dave/Dina box attached to the living room stereo, my desktop, or the kitchen or bathroom computers (small Compaq IA1 machines from the Golden Bubble days).

Today, it's all a mess.

I have music (ripped, bought online, downloaded, or copied) on the following devices:

  • My elisa machine (which holds all the old Dave/Dina content)
  • My home desktop
  • My laptop
  • My work desktop
  • My Nokia N800
  • My Cowon A3 media player
  • Kristien's iPod

I haven't ripped a single CD in the last 4 years since I stopped working on Dave/Dina, so these days I also listen to CD's on either our small portable stereo or the PS3. I have 200+ CD's still waiting to be ripped.

So my music listening has become erratic, listening to either the old 'good' playlist from Dave/Dina that hasn't changed for the last 6 years, and, while good, is getting stale; or whatever I recently ended up downloading, for a specific album, but random play is terrible when going through those directories, and of course each album is on some different machine or device.

The last two years, I've grown more and more annoyed at this situation. So one of my goals for 2009 was to finally *do* something about it. I realize that music is one of the things I love most in life, and my life would be better with the music I buy and find in it as soon as I have it. So what little hacking time I have left before real life begins (you know, kids and stuff) is going to go in code that is going to make my music experience better.

Having goals is a good way to direct your hacking. I've come up with five major projects I need to work on to get my music where I want it to be. All of these are projects I've had thoughts on in the past, but never really gotten to. Over the last few years a lot of new ideas and technologies have arrived that would help a lot now however.

  1. Re-rip all my CD's in a lossless format, with perfect quality, according to a certain website's standard
  2. Find a replacement for DAD, or make one. It should be able to track rips, tracks, different encodings of the same recording, different versions of tracks, parts of tracks (hidden tracks for example), and different collections across devices that it should be able to synchronize. Think 'put 10 GB of the best songs on my N800', and each time I'd connect my N800 it would automatically add new ones and remove old ones.
  3. Improve on the rating system DAD used to have, reusing ideas from a project at the radio stations all those years ago. Have a bunch of fuzzy parameters on each track which would allow much richer controls for song selection. Possibly turn it into a collaborative website if it makes sense. This hinges on uniquely identifying each track, for which acoustic fingerprinting would be a good solution. Basically, I want to use the power of the web and the music lovers to improve song selection. last.fm and pandora are going in the right direction, but don't really satisfy me.
  4. Write a player that does the automatic mixing the way Dave/Dina used to, or better.
  5. Make a LEGO Mindstorms robot to automatically rip all my CD's again

I've been tackling each of these separately, which turned out to actually be a good thing. Each time I'm stuck on one of them, I can work on any of the others. For example, I've been stuck on (4) for a long time, waiting for Edward to fix some bugs in gnonlin, so I switched to (1), writing code to parse .CUE files, implement CDDB disc id calculation, and AccurateRip verification of ripped images.
I also waited on a friend who I worked with at said radio station to confirm that he doesn't have any backups either of the database for (3).

Since this is what I'll be hacking on in my spare time in the forseeable future, I'll probably blog about the different pieces as well. I'll start with some more technical information on (1), the ripping part, which I've been working on the last month, in a separate post.

But man, I look forward to ripping my CD's from the last four years and actually listening to those songs regularly, rather than once in a while.

Isn't it amazing how our parents actually had to get up from their desk, go over to the turntable, and actually flip an LP over if they wanted to hear something else for 20 minutes ?


  1. Your goal 2 reminds me a bit of a project of mine (http://dieter.plaetinck.be/DDM_a_distributed_data_manager), note that it is not as advanced as all the things you’re listing, and to be frank it’s way overengineered. I should re-do it. But some of the ideas behind it might appeal to you.

    You know musicbrainz right? One of their gsoc students wrote the “music collection” project which is quite nice conceptually (see http://wiki.musicbrainz.org/Music_Collection ), however I think it lacks some sort of interface that one could write scripts for.
    I also like their fingerprinting methods and quite good metadata database. Too bad that after you have identified and tagged your files, they become just “tagged files” again. The metadata database gets updated continuously, it would be great to have a little identifier file in each album directory or something that would state the musicbrainz id, so you could periodically go over all your files to check if there are any updates available.

    Anyway, I’m very interested in this stuff.
    Keep it up.

    Comment by Dieter@be — 2009-04-14 @ 20:22

  2. What is a DAD? I have no idea what the abbreviation is supposed to mean. The way you describe it it has got to be way more than a regular music player/organizer like Amarok, Banshee, or iTunes. So, what are examples of DADs and which one were you using so far?

    Comment by McEnroe — 2009-04-14 @ 20:23

  3. Can’t wait to see some of the results of each step. And AccurateRip looks very nice, are you aware of any native Linux support (not running EAC under wine)?


    Comment by Raf — 2009-04-14 @ 21:58

  4. Hey, some of us still collect, and listen to vinyl! You can’t beat it.

    Comment by Alex Launi — 2009-04-14 @ 23:16

  5. I started converting my music collection to FLAC a couple of years ago and I highly recommend it. I’m hopefully half-way through, with 1400+ albums done. EAC can be taught to rip to FLAC pretty easily.

    FLAC 1.1.2 (iirc) had better compression than previous releases, so I wrote an automated script and recompressed everything. Saved a couple hundred meg iirc. That’s the sort of swell thing you can do with lossless compression. You can also losslessly compress for portable devices, and if you change your mind just raise (or lower) the compression and recompress.

    It’s the only way to live in my opinion!

    Comment by Larry Hastings — 2009-04-15 @ 00:49

  6. Wait, wait… bathroom computer? :P

    Comment by Victor — 2009-04-15 @ 05:08

  7. i am in a similar situation. I want to re-rip a few hundred CDs into flac.

    Previously I used Grip, which uses freedb.org for track names. but this database seems to be a bit of a mess, with different spellings of band names (REM vs R.E.M, Belle and Sebastian vs Belle & Sebastian). the musicbrainz database seems much more consistent.

    Another bonus would be to be able to Rip with multiple CD drives at once. My main box has 2 built in drives, and i have an external USB drive. I have a quad core CPU, so I think it could be done.

    I am not too worried about the time it will take, as most rippers spit out the CD at the end. it is fairly effortless to just take the next disk off a pile, stick it in, and press ok.

    Still not found a good all round solution.

    Comment by ssam — 2009-04-15 @ 10:18

  8. @McEnroe: DAD was a project of Kristof, Digital Audio Database. It was just another PHP/web application for managing music files.
    @Raf: yeah, the code I’m writing implements AccurateRip under Linux. My goal is to have something that I can run natively on Linux and is as accurate for my purposes as EAC. I don’t aim to implement all of EAC’s features, not even sure I’ll do a GUI, I just want to be able to rip easily and accurately on Linux.
    @Victor: Yeah, we used to have a small Compaq IA1 on the bathroom. When you’re taking a long hot bath, on a summer morning, with the sun flooding in through the windows, and your favourite music on automatically the way you want it… heaven!
    @ssam: yes, freedb is terrible for this. I plan to take from MusicBrainz. I get hugely annoyed at all the various misspellings in FreeDB.

    Comment by Thomas — 2009-04-15 @ 10:27

  9. Curious what container format you’re thinking of use?

    I’ve been meaning to create reference CDs with single continous audio track in Matroska with chapter/tag references to each track (timestamps for TargetType 30 in the specs). Player support for Matroska chapter/tags is limited on Linux though so conversion to other formats for now.

    Comment by Alan Swanson — 2009-04-15 @ 12:15

  10. @Raf: For an(other) EAC equivalent running natively on Linux, try Rubyripper (Ubuntu packages are available at getdeb.net).

    Comment by Mats Taraldsvik — 2009-04-15 @ 14:06

  11. Hmm… the link above doesn’t work. It should be: http://code.google.com/p/rubyripper/

    Comment by Mats Taraldsvik — 2009-04-15 @ 14:10

  12. @Mats: Rubyripper is far from an EAC equivalent. It’s missing lots of features EAC has.

    Comment by Thomas — 2009-04-15 @ 14:37

  13. @Thomas: Oh, I’m sorry – such a long time since i used EAC. I just use rubyripper for ripping my cd collection to .flac, with error checking, which is what I used EAC for – excuse my ignorance :) What am I missing?

    Comment by Mats Taraldsvik — 2009-04-15 @ 15:22

  14. I also recently started re-ripping all my CDs. I just have about 300, so it didn’t take too long.

    I read about the AccurateRip too, but I gave up on that as there was no Linux software available and I rather listen to my music now. I certainly won’t be able to notice the difference between a perfect AccurateRip and a cdparanoia rip which doesn’t show skips.

    One thing I noticed is that my DVD drives are not very good for ripping CDs. I still had one CD drive left, which gave me much better results. This is especially true for CDR or CDRW (I have a lot of radio and club bootlegs).

    My next task will be digitizing my cassette collection of about 200 tapes. I found a decent Sony tape deck on Ebay (you can’t buy new ones anymore) and wrote a little python script to start and stop recording / splitting on quiet breaks without me having to sit there.

    Comment by Christof — 2009-04-15 @ 16:06

  15. I’m ripping everything to mp3.
    I used to rip everything to flac. But when putting music on my mobile or car-stereo I had to transcode everything to mp3.
    Being pragmatic, and not able to hear the diference between a flac and i high profile mp3 (think –preset standard or extreme) I rip to mp3. Makes life much easier.

    I store them on my NAS (Synology DS207+) and I can acces them with DAAP.

    Comment by wannes — 2009-04-16 @ 09:26

RSS feed for comments on this post. TrackBack URL

Leave a comment