My brother implemented this algorithm in Matlab for his thesis project a few years ago. It's impressively accurate even short snippets of low quality recordings.<p>Too bad the people who own the patents are so stupid, even going after a guy who posted a blog post explaining how the algorithm worked...
NB: Shazam is run by raging assholes who like to threaten people posting code on their site to implement the algo described in the paper [1:4]. Roy's site is still up, but you may introduce quite a lot of stress into your life by messing around with this interesting paper / technique.<p>In more interesting news, see [5] for a similar implementation in matlab, and [6] for Roy's java implementation.<p>[1] <a href="http://news.ycombinator.com/item?id=1496683" rel="nofollow">http://news.ycombinator.com/item?id=1496683</a><p>[2] <a href="http://www.redcode.nl/blog/2010/07/patent-infringement/" rel="nofollow">http://www.redcode.nl/blog/2010/07/patent-infringement/</a><p>[3] <a href="http://www.redcode.nl/blog/2010/11/patent-infrigement-part-2/" rel="nofollow">http://www.redcode.nl/blog/2010/11/patent-infrigement-part-2...</a><p>[4] <a href="http://www.informationweek.com/news/infrastructure/management/225702757" rel="nofollow">http://www.informationweek.com/news/infrastructure/managemen...</a><p>[5] <a href="http://labrosa.ee.columbia.edu/~dpwe/resources/matlab/fingerprint/" rel="nofollow">http://labrosa.ee.columbia.edu/~dpwe/resources/matlab/finger...</a><p>[6] <a href="http://www.redcode.nl/blog/2010/06/creating-shazam-in-java/" rel="nofollow">http://www.redcode.nl/blog/2010/06/creating-shazam-in-java/</a>