Audio CD metadata and running MusicBrainz with SQLite
An important part of multimedia systems is metadata. Audio CDs themselves don’t have metadata
encoded on them and therefore other technologies are important to fill that gap.
There have been several community projects that have taken place over the past few years. CDDB was the first and was started in 1993. There is a very interesting history about CDDB and how it became Gracenote over the years changing from a community project into a commercial one. Even though Gracenote has one of the most restrictive licenses I’ve ever seen they are the defacto standard for commercial CD metadata. For some interesting reading:
FreeDB attempted to be a replacement but it has a fairly polluted database as well as a weak unique ID calculation. This results in being fairly likely to get the information for the wrong Audio CD when you do a lookup.
MusicBrainz is a newer community project that provides metadata for Audio CDs. What makes it better than FreeDB is that it has a better unique ID calculation as well as a moderation and editing system to ensure a higher level of data quality.
The product I’m most interested in is MusicBrainz data which is licensed as Public Domain. This can be downloaded as a PostgreSQL format which makes it very easy to import into other databases. At QNX we’re working on embedded media systems that offer this kind of functionality and it is very nice to have this option available.
I’ve converted the database into SQLite format which is our native database format currently so it fits into our architecture very nicely. The database with all indexes converted into 4.2GB. I dropped most of the data that we wouldn’t need and this resulted in 1.7GB which is still a bit large for an embedded system, but not that much bigger than other options that are available to embedded systems. I suspect that with SQLite’s read-only compression option that this could be significantly reduced in size making it ideal for embedded Audio CD metadata.
If you’re interested in how to convert the PostgreSQL dumps of MusicBrainz into SQLite format download this package. See the makesqliteminimal.sh script as a starting point.