> I'm sure there are lots of interesting details on how it deals with recording noise and such.
There's more to Shazam than that but Fourier transforms gets rid of the noise. I ported a FFT to Java back in the days and it was, IIRC, not even 100 lines of code. Amazing algorithm. I used it to record engine noise under acceleration and then derive power/torque curve of my car (it took into account the number of cylinders): drive the car several times, both ways, on a street, record the noise. Apply the FFT. Input the rims size / gear ratio etc. And I'd end up with about the exact same plot as the official one from the car manufacturer.
There's more to Shazam than that but Fourier transforms gets rid of the noise. I ported a FFT to Java back in the days and it was, IIRC, not even 100 lines of code. Amazing algorithm. I used it to record engine noise under acceleration and then derive power/torque curve of my car (it took into account the number of cylinders): drive the car several times, both ways, on a street, record the noise. Apply the FFT. Input the rims size / gear ratio etc. And I'd end up with about the exact same plot as the official one from the car manufacturer.
Noise simply disappears with a FFT.
A more concerning issue is harmonics.