Hi Matan,
An Echoprint fingerprint is a string of numbers, grouped into (hash, time) pairs and formatted as follows:
fp = 'hash_{1,1} time_{1,1} hash_{1,2} time_{1,2} ... hash_{1,N_1} time_{1,N_1}
hash{2,1} time_{2,1} hash_{2,2} time_{2,2} ... hash_{2,N_2} time_{2,N_2}
...
hash{8,1} time_{8,1} hash_{8,2} time_{8,2} ... hash_{8,N_8} time_{8,N_8}'
The audio is split into 8 subbands and the analysis is performed in each subband independently of the other subbands. The (hash, time) codes are listed in a time-ordered sequence for the first subband, then come the (hash, time) pairs for the second subband, etc, all the way up to the eighth subband. The first number inside the curly braces is the subband, the second number is the index of that (hash, time) pair within that subband, so that the jth subband contains N_j (hash, time) pairs. Multiply a time code by 23.2 to get the real time, in milliseconds, corresponding to that time code.
At the end of each subband you will indeed find several identical (hash, time) pairs (six per subband). Have a look at this thread in case you are interested in a detailed discussion:
http://github.com/echonest/echoprint-codegen/pull/38 This will be fixed in a future revision but it is a minor artefact of the way the codegen implementation
works and has negligible impact on performance, so it's not worth
worrying about too much.
Best,
Andrew