AcoustID server release

I guess it’s time for AcoustID to have release notes when something gets released, so here is my first AcoustID server release blog post.

Some time ago I added overall search statistics. This release adds similar statistics for individual applications. For example:

Of course, these statistics are only available to the owners of the applications.

Another change related to external application support is that the submission API call now accepts a new parameter clientversion. This is the first step to allowing a single application API key to be used by multiple versions of the application. In following releases I’ll be changing the API key structure to allow applications to have a number of API keys that can be disabled/enabled any time.

Posted in Acoustid, Announce | Tagged , | Leave a comment

Chromaprint 0.5 released

A new version of Chromaprint has been released. The code library hasn’t been changed, but there are some bug fixes in the fpcalc utility and the Python bindings.

Download:

Changes since version 0.4:

  • Unicode command line handling in fpcalc.
  • Fixed a crash in fpcalc when FFmpeg was not able to identify the codec.
  • Added encode_fingerprint to the Python bindings.
Posted in Acoustid, Announce | Tagged , , | 21 Comments

MusicBrainz/Acoustid integration

Update: As of Jan 12, 2012, Acoustid links are now displayed on MusicBrainz by default.

While the Acoustid database is reimporting, I wanted to do something fun, so tried to integrate Acoustid links into the MusicBrainz website. I wrote a simple user script that calls the Acoustid API, loads all IDs linked to a recording and displays the data right next to the list of PUIDs. If you install the script, the “PUIDs” page will now look like this:

It links back to the Acoustid track pages, which you can see for example here. The database is still very small, so you will probably not see the links too often, but that should get better soon.

The next step, which is probably not going to be this easy, will be adding the “Remove” links to the pages also for Acoustid tracks and actually making them work.

Posted in Acoustid, MusicBrainz | Tagged , , , | 5 Comments

Acoustid database rebuilding

I’ve released a new version of the Acoustid server today. This release changes the way fingerprints are matched, so it required the database to be rebuilt, which means all previous “track IDs” will be lost. I’m expecting it will take at least a week before the database is back at the full size. This is probably the last rebuild and the IDs will stay stable from now on, but in case I discover some serious problems it might be necessary to do it one more time.

Here is a complete list of changes in this release:

  • Faster and more robust way of comparing fingerprints.
  • Mapping of fingerprints to PUIDs.
  • Initial support for storing custom foreign IDs.
  • Better tracking of the source for each fingerprint and fingerprint<->ID mapping.
  • Tracks now have UUIDs attached to them, so the default result ID format will change in a future version of the web service.
Posted in Acoustid, Announce | Tagged | 1 Comment

My story (as a programmer)

I started writing this as a bit longer bio blurb for the About page, but somehow it got too long before I was even halfway finished, so I decided to edit it a little bit and put it here instead. Not the usual stuff I post here, but not many people know how I got into programming and didn’t have the heart to just delete it. :)

I was introduced to programming as a kid at the elementary school. Seeing that I can use mathematical functions and some funny English words, which I didn’t understand, to draw circles on the TV pretty much changed my life. I wanted to learn more and more about the BASIC language, but it was more theoretical than practical, because I didn’t have any computer at home back then. Even though I could only play with a computer at school, I loved reading programming books and learning more about it. A little later I got a computer and spent days and nights learning “real” programming in Pascal. While my classmates were having fun outside playing football, I was having fun learning about sorting algorithms and data structures. I didn’t believe I could actually work at a programmer when I get older, but I very interested in learning more and more anyway.

Several years later I discovered demoscene, which brought my programming experience to the next level. I was never able to make my own demo, but I found it fascinating to hack on multimedia software, especially in environment like MS DOS which was not multimedia-friendly at all. I spent a huge amount of time learning how you can make a computer produce sound, how module players worked, even experimented with making my own tracker. This was also the time when I had to leave Pascal and (painfully) start looking into C and even some x86 assembler. I made some 256b intros — they aren’t any interesting, but I was very proud of myself back then. :)

The next breakthrough happened when I found MS DOS too limiting and installed Debian on the 386 machine I had. This brought me to the world of open source software, where I could take a look the code of every application that I used. Programming on a real operating system that didn’t allow me to just write to any memory address and reset/freeze the computer by doing that was a great change too. :) Of course, I was still interested by music software, so I starter learning Linux programming by porting the MXMplay module player (and laterMiniFMOD) to Linux.

The next period was pretty boring. I learned a few things about making websites, enrolled at university and needed money, so I started working as a PHP programmer. I wasn’t very good at it, but I quickly learned what I needed to know. This went for a few years, I was working on various kinds of websites, writing content management systems, creating modules for eCommerce systems. I got pretty good at it at the end, so web technologies ended up being the main focus of my professional career. I learned Python and some other languages and programming for me generally started being more about work and less about fun.

This changed when I discovered MusicBrainz. At first I only wanted to tag my files to get better stats on Audioscrobbler, but I realized that it’s an open source project I can contribute to, and it’s about web stuff AND music. I submitted a few smaller patches for the MusicBrainz server, then I was unhappy with the tagger application and started helping with Picard. Eventually I ended up maintaining Picard, which brought me to many other music-related open source projects. Since then, I probably touched the code of every component that MusicBrainz ever used. I worked on the client libraries, learned Perl to work more on the server, introduced many database schema changes, did some coding on the Java version of the search server. Heck, I even designed the graphic layout MusicBrainz is currently using. :)

After I finished the university and switched jobs, I didn’t have that much time for open source projects. I disappeared from MusicBrainz for some time, focused more on my career where I was working on larger and larger projects. I needed something fun to work on though and that’s basically when I started looking into audio fingerprinting and how the Acoustid project was born. It was something new and challenging and yet something that was needed. After a few months of reading papers, I started writing some code, got “good enough” results, wrote more code and that’s basically where I’m today.

During the last two years I started realizing that the web programming I do at work is probably not what I want to continue doing, at least not full-time, so this is actually the last month at my current job. I’ll have to deal with some health issues, then take a longer vacation and we will see what happens next… :)

Posted in Misc | Tagged , | 1 Comment