Best way to build a wave classification system I want to make a classifier for waves such as following: 



Above image is from: http://www.invisiblesbook.com/equal-temperament-tuning/

I believe, I will have to extract features from raw input using FFT or some other method and subject that to a CNN. What is the best way to go about building classifier for such waves? I am not particularly asking about neural-networks; any other method which is accurate and fast will also be of help.
I don't work in this field, however, recently I have read a magazine article (in German) about this. The article explained how  one of the most well-known companies who does this, Shazam, works. 

Building a spectrogram, hashing, ???, indexing.


Video, 8:50: How Shazam Developed Their Signature, Awesome Algorithm | Shazam Founder Chris Barton
Whitepaper, from 2003, 7 pages, very technical
github repo from an open-source implementation: https://github.com/itspoma/audio-fingerprint-identifying-python See the READme file for more links