1. A method comprising: transforming a sample of a recording to a time-frequency domain and storing each time-frequency pair in a matrix array; setting all elements of the matrix array that are below a predetermined noise floor to zero and setting all elements of the matrix array that are outside a predetermined frequency range to zero; detecting a plurality of local maxima for a predetermined number of time slices; selecting a predetermined number of largest-magnitude maxima from the plurality of local maxima detected by said detecting; generating one or more hash values corresponding to the predetermined number of largest-magnitude maxima; comparing the one or more hash values to corresponding hash values of known recordings in a first stage query to identify a set of possible matches; and comparing the set of possible matches to a full-recording fingerprint of the sample in a second stage query, the full-recording fingerprint being a recording fingerprint of a substantial length or the entire length of a known recording.