% Completed!

About

Downloads

Related

2

19

About

What Shazam doesn't want you to know

Roy always wants to know how things work, to the smallest detail. This session will focus on music recognition like Shazam and SoudHound. Those "magic" programs that identify songs by listening to it. After this session you'll not only know how to implement this in Java. You'll also have learned how a microphone works, how the human ear works, how to capture and analyze sound in Java SE, what the Fourier Transformation does, and of course how those music recognition algorithms do their magic. Also, after publishing this information on my blog I've received a couple of patent infringement claims from Shazam's patent holders. Can you really be sued after a weekend of programming and releasing the source code?

Published on December 20th 2011

2.794

56

1

19

2

Roy van Rijn

Roy van Rijn, a software Craftsman at JPoint (jpoint.nl). Before starting JPoint, Roy was Java Software Architect at Ordina, working on miscellaneous projects and giving roadshow presentations around the Netherlands. He was also co-author of the book "Software Ontwikkeling in Java EE". He has regularly given trainings during his career, including Spring, Sofware Architecture, Testing and Agile/Lean courses. Currently he is involved with the HaMIS project by the Port of Rotterdam. A very succesful Scrum project, which hasn't just changed the development team, but the whole project management structure underneath resulting in a hyper-productive project.

Matching algorithm #1
1) 2) 3) 4)
Load all the reference hashes Listen to the microphone and generate hashes Find all matching hashes Return the reference-song with most hits
· This worked (a bit) but produced a lot of mis-hits · How can we improve this?
34

Matching algorithm #2
· Now we group the results: 2x: 1x: 1x: 1x: 1x: 1x: Song 6 with offset 8 Song 4 with offset 2 Song 4 with offset 3 Song 4 with offset 4 Song 8 with offset 2 Song 5 with offset -1
37

Recap
· Music matching (Shazam, SoundHound) isn't magic · Searching can be done very fast: ­ Searching for hashes: O(1) ­ Align and match · The Fourier Transformation is like a spirograph:
38

Other uses for this algorithm
· What are other uses for this algorithm: ­ Speech recognition? · Probably not.. ­ Detecting duplicate songs in your music collection? · Yes! Took 5 minutes for crude implementation ­ Subtitle synchronisation in India !
40

Landmark Digital Services
... Landmark Digital Services owns the patents that cover the algorithm used as the basis for your recently posted "Creating Shazam In Java". While it is not Landmark's intention to alienate those in the Open Source and Music Information Retrieval community, Landmark must request that you do not ship, deploy or post the code presented in your post. Landmark also requests that in the future you do not ship, deploy or post any portions or versions of this code in its current state or in any modified state. We hope you understand our position and that we would be legally remiss not to make this request. We appreciate your immediate attention and response. ...
41

Now the blogpost?
· From another email:
As I'm sure you are aware, your blogpost may be viewed internationally. As a result, you may contribute to someone infringing our patents in any part of the world. While we trust your good intentions, yes, we would like you to refrain from releasing the code at all and to remove the blogpost explaining the algorithm.
43

No way...
· My reply was short and concise: I'm sorry, I can't comply. The blogpost will absolutely not be removed. Good luck.
44

Qu e s t i o n s ?

Comments

Roy van Rijn

Roy van Rijn, a software Craftsman at JPoint (jpoint.nl). Before starting JPoint, Roy was Java Software Architect at Ordina, working on miscellaneous projects and giving roadshow presentations around the Netherlands. He was also co-author of the book "Software Ontwikkeling in Java EE". He has regularly given trainings during his career, including Spring, Sofware Architecture, Testing and Agile/Lean courses. Currently he is involved with the HaMIS project by the Port of Rotterdam. A very succesful Scrum project, which hasn't just changed the development team, but the whole project management structure underneath resulting in a hyper-productive project.