sub specie aeternitatis

Starting a Programming Project

May 15, 2009

After surviving a semester of C212 and java, I decided to embark on my own software project this summer.  Mainly a learning project, I’m doing it in Java because it’s either that or Scheme (which I learned in my first semester, C212).  It’s aim is to solve a personal itch for something I want my computer to automate for me.  

I have a large classical music collection that used to sit mostly on my shelves.  It now sits in my closet and gets its use in digital format on my computer.  The only problem I have with my digital classical music collection is the irregularity in the metadata.  Since I have been ripping/collecting these files for quite a number of years, I have music that spans mp3s, ogg, and my newer rips are all now flac.  I realized recently that I have failed to have any consitent use of tags when naming files, and especially I have overlooked an extremely valuable tag for classical music: the composer tag.  Typical digital files have the artist, track, album tags, but these are too limited with you have something like a Mahler symphony, for example.  Who is the artist?  The composer?  The conductor? The orchestra?  Using more tags allows a better description of the file.  The artist could be Solti, a performer tag could be set to the Chicago Symphony and the composer tag to Mahler.  And it’s here that my little project springs to life.

I will write a program that will set the composer tag based on the information already contained within the filename itself, and the other tags within the file.  This way, I can traverse my entire music collection and (hopefully) set the correct composer tag without having to do it all by hand.  I will scan through the filename and metadata and look for a composer match in a composer database that I will build.  If I scan a file called ‘Mahler – Symphony No.2 – I.mp3’ for example, my program would be able to match the ‘Mahler’ to ‘Mahler, Gustav’ in my database and then set the composer tag accordingly.  This will allow me to set the composer tag for a large number of files and also prevent minor misspelling that might have occured if I set them by hand.  It will be consistent, in other words.  I won’t have ‘Bach, J.S’ in one file and ‘Bach, Johann Sebastian’, in another.  

As for the difficulty of this project, it seems doable with my so far limited skill and knowledge in programming.  I think what will be the most challenging is putting the whole package together.  In my java class last semester, putting the large scale project together was done by the professor and assistants.  We focused on purely coding, not putting together the pieces to create the whole.  Figuring it all out on my own will be a challenge, but I hope I’m up to it.  

And I really hope I follow through and finish it!  There’s nothing quite like an unfinished project, be it a composition or piece of software.