Quick Links


My contribution to Sev

My contribution to Freefall

Random Playlist Generator

Random Album Chooser



Bad Science

External link icon External links, these open in a new tab (Firefox), or window (IE)

Music Library Checker


19th October 2008

I've been ripping my CDs for a while now and I've used several different programs over the years. When I started out I didn't know much about how the bit-rate affected the quality and I didn't have that much disk space to store the files either. As I got different applications (MusicMatch, WinAmp etc.) and more disk space I gradually increased the bit-rate. Recently, however, I decided to rip them at the highest possible quality (for mp3!) and use quite high (350x350 pixel or higher) images for the cover art. That does mean that I've got a lot of music ripped at 192 bps or even 128 bps and with low resolution cover art. Media Monkey (my current software of choice) has options for showing tracking that are missing tags such as the AlbumArtist or Genre and I use that for most things, but it can't show me the bit-rates or the cover image size easily.

So I've written an application to do just that:

Album checker startup screen

To use just point it at your music library (by clicking ...) and then click on Check. The DataGridView is filled programmatically using reflection to get the names of the columns from the properties on the AlbumInfo class and also to get the actual data. You can choose which columns to display by right clicking over the DataGridView to get the context menu. Again this is populated by reflection and the invisible columns are persisted to the settings file.

Album checker context menu

Once the scan is underway it can be aborted at any time by clicking on Stop.

Album checker in action

Once the scan is complete I can examine the data. All the columns are sortable so I can sort by bit-rate or whether the album has a cover image etc. Thus I can scan, sort by bit-rate and then re-rip the top 10 albums for example. If I want to do more analysis I can Export the data to an XML file.

Album checker completed

Having written it I'm not sure how often I'll use it, but it was a useful exercise in reminding me on how to use reflection. It was a useful lesson in how to use the data grid itself. The code to display the row numbers was pulled off the net.

It's not brilliant, but it does the job. I'm making it available online. It was written in C# using Visual Studio 2008 on top of .NET 3.5 and is only available for Windows. It uses a C# mp3 tag library (TagLib#) to pull out the tags I'm interested in.

I may well be updating it at some point (but don't hold your breath) and I may even put the code online too (once I've tidied it up). The usual warnings and provisos apply to the program - use at your own risk, there's no support etc. However, if you have any comments or suggestions then I'd be happy to hear from you.

20th October 2008

My middle son asked if I could add a button to stop the checking part way through. I said "of course", but while demonstrating what to do I realised that to get it to work I'd needed to put the code that scans the library into it's own thread. That meant being able to update the DataGridView in a thread safe manner. At which point, I told him to go to bed!

So now I've reworked the application to be multi-threaded - a beneficial exercise in itself - and you can now stop the scan part way through, most useful if you haven't set the root folder of your library correctly, by clicking on Stop or pressing Esc. The various buttons are enabled and disabled appropriately which also acts as a visual clue to what the application is doing. All I've got to do now is update the other applications too.

8th November 2008

I've added an Export option to write the data out to an XML file. This meant I had to do what I should have done in the first place and created a DataTable to separate the storage of the data from its display. I've also added a context menu to the DataGridView to control which columns are visible. This means I don't have to edit and rebuild the application each time I want to change what data is displayed - which was always a temporary solution. I haven't added all the properties yet, just the ones I find most useful. I've also updated the description of the application in the main body of this entry.


(mailto: album-checker at forman dot free-online dot co dot uk)