IPB

Welcome Guest ( Log In | Register )

Song fingerprinting tools, using FooID
musicmusic
post Aug 8 2008, 15:21
Post #1


Columns UI developer


Group: Developer
Posts: 3034
Joined: 20-December 02
From: United Kingdom
Member No.: 4177



I found an old copy of libFooID and decided to try and put it to some use. How is another question..

Anyway I came up with a little component that allows you to calculate FooIDs and save them to the file, as well as compare the FooID of two files. Some downloads below:

FooID binary (put this in your foobar2000 folder)
foobar2000 component version 0.3 (experimental)
foobar2000 component version 0.2 (experimental)


libFooID source

Update: Garf has restored the Foosic homepage now

I am not sure how this is useful.. Maybe finding matches within a set of files would be more useful (?) If someone actually downloads this have fun : P

This post has been edited by musicmusic: Mar 15 2009, 15:31


--------------------
.
Go to the top of the page
+Quote Post
 
Start new topic
Replies
ncmaothvez
post Nov 13 2012, 02:53
Post #2





Group: Members
Posts: 1
Joined: 13-November 12
Member No.: 104469



romor, are you using Garf's (?) fooid library as is or are you trying to rewrite it in another language? If you're using it as is then you might have run into the same problem I had when I messed around with fooid. It's been nearly a year since I touched the project last time so the details are a bit fuzzy.

The short version smile.gif
As far as I can tell, fooid has a problem with detecting the start of some songs. This throws off the analysis and the resulting fingerprints are too different to indicate a good match, even when two songs sound the same. In some cases the fingerprints have 0% match even though the songs sound identical. So, it could be that your fingerprint comparison algorithm is actually OK but the fingerprints coming from fooid are bad.

fooid will allways produce fingerprints with 100% match if you compare two identical file-copies of the same song though.


The long version smile.gif
Line 101 in fooid.c, downloadable from the Google project page, says:
QUOTE
if (fabs(data[(pos * fid->channels) + c]) >= (1.0f/32768.0f - EPSILON))

and as far as I can remember this detects when the intro silence ends and the song starts. As written, that detection threshold is a just single LSB above absolute silence!

In my case this was waaay to sensitive. Most duplicates in my song collection were detected properly but alot of songs were detected as being 0% similiar, even though they were perfectly identical sound-wise. The reason being that the sampling of the song data had started at differnet points in time due to noise exceeding one LSB before the songs started. I worked with nearly noise-less MP3 and FLAC files but I suspect that if one tries to compare let's say recordings of vinyl records with static noise before the song starts, then it's probably quite likely that one would end up with alot more 0% matches.

When I replaced the '1.0f/32768.0f' part with a much higher value (can't remember how much, I tried several different values, the threshold is a value between 0.0 and 1.0) the results were significantly improved: Identical versions of songs (regardless of encoding method) were detected as 95% similiar or better, off-vocal versions of songs compared to their on-vocal versions were detected with around 75% similiarity and everything else fell below 50% similiarity. Don't quote me on the exact numbers but I remember seeing very well defined groups of similiarity values.

After changing the threshold I ran into another problem though: Identical versions of songs with gradually increasing sound level at the intro rather than a well defined start beat would still be detected as 0% identical if the rate of sound level change at the intro was different between the two songs being compared.

I suspect that the threshold detection is the culprit here too. If the volume level change rate during the intro is different, then the song start level is detected at different points in time and the sampling of the song thus starts at different points in time.
Go to the top of the page
+Quote Post

Posts in this topic
- musicmusic   Song fingerprinting tools   Aug 8 2008, 15:21
- - Nemphael   Eager to try this. I've tried to get this work...   Aug 8 2008, 23:22
- - musicmusic   Hello, Check that FooID.dll is in the same folder...   Aug 8 2008, 23:47
- - Nemphael   I doubt it, but would it be possible to compare fi...   Aug 9 2008, 01:40
|- - foosion   QUOTE (Nemphael @ Aug 9 2008, 02:40) I do...   Aug 9 2008, 11:40
|- - hesher   This is genius! Where can i find more informat...   Aug 10 2008, 06:59
- - Nemphael   I've tried running it to compare some files an...   Aug 10 2008, 13:12
|- - 2E7AH   so, this component is only for finding duplicates ...   Sep 1 2008, 02:27
- - musicmusic   QUOTE (hesher @ Aug 10 2008, 06:59) This ...   Aug 10 2008, 23:54
- - musicmusic   Version 0.2 released:'Save fingerprints to fil...   Aug 14 2008, 23:55
- - Nemphael   I tried your new version and like the new mass com...   Aug 15 2008, 11:07
- - Garf   Hey, great that someone found a nice use for libF...   Aug 15 2008, 11:23
|- - nilesr   I was wondering if anyone had a copy of the matchi...   Jan 15 2009, 19:03
|- - Milloflex   Maybe try hosting it on a google app engine and se...   Mar 15 2009, 13:42
|- - Garf   QUOTE (Milloflex @ Mar 15 2009, 13:42) Ma...   Mar 15 2009, 14:02
- - musicmusic   QUOTE (Nemphael @ Aug 15 2008, 11:07) I t...   Aug 15 2008, 12:38
|- - OCedHrt   QUOTE (Garf @ Aug 15 2008, 11:23) Hey, g...   Dec 12 2008, 16:28
|- - Garf   QUOTE (musicmusic @ Aug 15 2008, 12:38) W...   Mar 15 2009, 14:15
- - Nemphael   After trying to remove some duplicates, I have a s...   Aug 15 2008, 15:02
|- - odyssey   QUOTE (Nemphael @ Aug 15 2008, 16:02) Aft...   Oct 19 2008, 23:34
- - musicmusic   What about being able to play the tracks directly ...   Aug 15 2008, 15:16
- - MartDann   I think all of your suggestions could be very usef...   Aug 17 2008, 19:24
|- - sabelosimelane   QUOTE (MartDann @ Aug 17 2008, 19:24) I t...   Feb 24 2009, 11:16
- - mpioner   musicmusic Maybe you can make local version foosic...   Aug 26 2008, 13:36
- - Nemphael   With the ability to generate FooID fingerprint and...   Aug 26 2008, 14:26
- - musicmusic   QUOTE (2E7AH @ Sep 1 2008, 02:27) even if...   Oct 20 2008, 17:06
|- - odyssey   QUOTE (musicmusic @ Oct 20 2008, 18:06) Q...   Oct 20 2008, 20:50
- - musicmusic   I meant completely different.   Oct 20 2008, 22:25
- - 2E7AH   i've read the posts, but i was playing with th...   Oct 21 2008, 06:31
|- - Nemphael   QUOTE (2E7AH @ Oct 21 2008, 07:31) perhap...   Oct 21 2008, 12:10
- - odyssey   musicmusic: Would you consider an update that impr...   Dec 15 2008, 11:25
- - Nemphael   Will you consider checking one file against a data...   Dec 15 2008, 11:29
- - Garf   I restored the relevant part of http://foosic.org   Jan 16 2009, 00:15
|- - nilesr   QUOTE (Garf @ Jan 15 2009, 17:15) I resto...   Jan 19 2009, 04:21
|- - partneriflight   QUOTE (Garf @ Jan 16 2009, 00:15) I resto...   Nov 24 2009, 19:52
- - musicmusic   My bad, I just had a look and it seems the compile...   Mar 12 2009, 00:22
- - odyssey   musicmusic, did you see this thread? I think it ha...   Mar 12 2009, 12:25
- - musicmusic   0.3 released: -Comparing more than two pre-calcua...   Mar 14 2009, 20:45
- - Nemphael   I still can't believe just how fast it's b...   Mar 15 2009, 14:52
- - MartDann   Wow, incredible fast. Thank you very much for the ...   Mar 15 2009, 15:51
- - odyssey   musicmusic: Thanks for the ability to save a playl...   Mar 20 2009, 13:09
- - odyssey   I was comparing 32320 items in a playlist and afte...   Mar 20 2009, 13:45
- - musicmusic   Do you mean 0xC0000409? That's STATUS_STACK_BU...   Mar 20 2009, 14:19
|- - odyssey   QUOTE (musicmusic @ Mar 20 2009, 14:19) S...   Mar 23 2009, 12:37
- - Nemphael   Transcoding means a change in audio data, which wi...   May 24 2009, 13:41
|- - Patsoe   QUOTE (Nemphael @ May 24 2009, 13:41) Upo...   May 24 2009, 14:54
- - Nemphael   I've tried this on two different computers, so...   May 24 2009, 15:26
- - musicmusic   I confirm, looking into it...   May 24 2009, 16:37
- - 2E7AH   musicmusic, can fingerprint data be somehow interp...   Jul 28 2009, 00:32
- - odyssey   musicmusic: If you try to "Save fingerprints ...   Nov 6 2009, 10:20
- - musicmusic   Do you have a crash log? (Not sure if the crash su...   Nov 6 2009, 13:36
- - odyssey   It crashes hard, not with the crash-handler. I fig...   Nov 14 2009, 15:04
- - musicmusic   QUOTE (odyssey @ Nov 14 2009, 14:04) It c...   Nov 15 2009, 00:00
- - odyssey   I'm a little puzzled about the results (and/or...   Apr 21 2010, 03:04
- - romor   Can I revive this a bit? I realize that develope...   Nov 2 2012, 06:46
- - foosion   Check the definition of the t_fingerprint structur...   Nov 2 2012, 10:27
- - romor   Thanks foosion I did so naive... Can I ask furthe...   Nov 2 2012, 12:40
- - romor   OK, I get that I should group each 4 bytes in this...   Nov 2 2012, 13:41
- - romor   My previous post is not correct. It may make sense...   Nov 3 2012, 11:39
- - foosion   According to the code in spectrum.c the r field co...   Nov 6 2012, 18:04
- - romor   Thanks foosion. I discarded that idea, because of ...   Nov 6 2012, 19:27
- - foosion   I remember that Garf talked on IRC about the finge...   Nov 6 2012, 19:50
- - Garf   I uploaded some Python source that reads and match...   Nov 8 2012, 13:37
- - romor   Thanks Garf. I tried your suggestion, and here is...   Nov 9 2012, 01:45
|- - Garf   QUOTE (romor @ Nov 9 2012, 01:45) So I as...   Nov 12 2012, 22:43
- - ncmaothvez   romor, are you using Garf's (?) fooid library ...   Nov 13 2012, 02:53
- - romor   Thanks ncmaothvez for you input I'm not rewrit...   Nov 13 2012, 03:33


Reply to this topicStart new topic
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:

 



RSS Lo-Fi Version Time is now: 20th April 2014 - 20:15