Song fingerprinting tools, using FooID |
Song fingerprinting tools, using FooID |
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 -------------------- .
|
|
|
|
![]() |
Nov 2 2012, 10:27
Post
#2
|
|
![]() Group: FB2K Moderator (Donating) Posts: 4219 Joined: 24-February 03 Member No.: 5153 |
Check the definition of the t_fingerprint structure in common.h:
CODE /* fingerprint storage */ struct t_fingerprint { /* fingerprint version */ short version; /* length in centiseconds */ int length; /* average line fit, times 1000 */ short avg_fit; /* average dominant line, times 100 */ short avg_dom; /* spectral fits, 4 bits times 16 bands = 32 times 87 frames -> 348 bytes */ unsigned char r[348]; /* spectral doms, 6 bits times 87 frames = 65.25 */ unsigned char dom[66]; }; The content of this structure is packed into a byte array in fp_calculate function in fooid.c: CODE memcpy(buff, &(fi->fp.version), sizeof(short)); buff += sizeof(short); memcpy(buff, &(fi->fp.length), sizeof(int)); buff += sizeof(int); memcpy(buff, &(fi->fp.avg_fit), sizeof(short)); buff += sizeof(short); memcpy(buff, &(fi->fp.avg_dom), sizeof(short)); buff += sizeof(short); memcpy(buff, &(fi->fp.r), sizeof(unsigned char) * 348); buff += sizeof(unsigned char) * 348; memcpy(buff, &(fi->fp.dom), sizeof(unsigned char) * 66); buff += sizeof(unsigned char) * 66; As you can see different parts of the fingerprint contain different values. If you need more details about the algorithm, you could try to contact Garf. Since he developed FooID during his time at university, he might have written a paper about it. -------------------- http://foosion.foobar2000.org/ - my components for foobar2000
|
|
|
|
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
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![]() ![]() |
|
Lo-Fi Version | Time is now: 18th May 2013 - 09:05 |