IPB

Welcome Guest ( Log In | Register )

3 Pages V   1 2 3 >  
Reply to this topicStart new topic
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
Nemphael
post Aug 8 2008, 23:22
Post #2





Group: Members
Posts: 244
Joined: 19-March 07
Member No.: 41623



Eager to try this. I've tried to get this working, but I can't. I've put the FooID folder in foobar2000 as specified and I slipped foo_biometric into components. Upon starting Foobar, I get an error:
CODE
Failed to load DLL: foo_biometric.dll
Reason: This component is missing a required dependency, or was made for different version of foobar2000.

I'm using fb2k 0.9.5.4. Do I need to do something with the source code?

As for a suggestion: Would it be possible to generate an ID (As I suppose FooID means fingerprint) from the fingerprints so we can use other search utilities to search for matches as well?

It would also be useful to compare one file against, or compare fingerprints within, a set of files.

EDIT: Nevermind the error. Merely a mistunderstanding.

This post has been edited by Nemphael: Aug 8 2008, 23:34
Go to the top of the page
+Quote Post
musicmusic
post Aug 8 2008, 23:47
Post #3


Columns UI developer


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



Hello,

Check that FooID.dll is in the same folder as foobar2000.exe. (OK, seems you have solved this now.)

If you run the save command it will save the fingerprint in the FINGERPRINT_FOOID field. But to compare two fingerprints you need to interpret the data, so plain text searching won't achieve anything. So maybe some APIs would be useful if anyone would actually use them tongue.gif

If you save the fingerprints first the compare command will use those instead of recalculating the fingerprint (that command doesn't save them).

Agree on the usefulness of comparing one file against a set or finding matches within a set.. The main obstacles are probably creating the UI for these things wink.gif


--------------------
.
Go to the top of the page
+Quote Post
Nemphael
post Aug 9 2008, 01:40
Post #4





Group: Members
Posts: 244
Joined: 19-March 07
Member No.: 41623



I doubt it, but would it be possible to compare fingerprints and find song with similar acoustic characters? Kind of like MusicIP's Mixer (earlier Music Magic Mixer), although I reckon they use another technique than fingerprint information for this.

This post has been edited by Nemphael: Aug 9 2008, 01:41
Go to the top of the page
+Quote Post
foosion
post Aug 9 2008, 11:40
Post #5





Group: FB2K Moderator (Donating)
Posts: 4336
Joined: 24-February 03
Member No.: 5153



QUOTE (Nemphael @ Aug 9 2008, 02:40) *
I doubt it, but would it be possible to compare fingerprints and find song with similar acoustic characters?
The libFooID documentation contains information on how to do this (see copy of FooID documentation on archive.org). Note that this is intended to identify different encodings or maybe even performances of the same song, it is not designed to be able to - say - correlate two songs containing violins.

This post has been edited by foosion: Aug 9 2008, 11:44


--------------------
http://foosion.foobar2000.org/ - my components for foobar2000
Go to the top of the page
+Quote Post
hesher
post Aug 10 2008, 06:59
Post #6





Group: Members
Posts: 34
Joined: 23-June 08
Member No.: 54758



This is genius! Where can i find more information about it?? I'd love to be able to "fingerprint" my mp3 library! (i know i have duplicates of alot of files)
Go to the top of the page
+Quote Post
Nemphael
post Aug 10 2008, 13:12
Post #7





Group: Members
Posts: 244
Joined: 19-March 07
Member No.: 41623



I've tried running it to compare some files and I'm surprised at how well some of my acoustic vs. non-acoustic performances get a rather high score, despite notable differences in drums, electric guitar and some audience (3 Doors Down's Kryptonite 3:55 vs. Kryptonite (acoustic) 3:59 = 35%).

But I keep wondering - would it be possible to have a slider of some sort to change thresholds to, say, include less similar live/acoustic/instrumental performances?
Go to the top of the page
+Quote Post
musicmusic
post Aug 10 2008, 23:54
Post #8


Columns UI developer


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



QUOTE (hesher @ Aug 10 2008, 06:59) *
This is genius! Where can i find more information about it?? I'd love to be able to "fingerprint" my mp3 library! (i know i have duplicates of alot of files)
Hi.. if you want to know more about FooID foosion's link can tell you more, or a little bit of general information is available on Wikipedia.

Currently you can only compare two files at a time with the component.. something for multiple files will be added later.

QUOTE (Nemphael @ Aug 10 2008, 13:12) *
I've tried running it to compare some files and I'm surprised at how well some of my acoustic vs. non-acoustic performances get a rather high score, despite notable differences in drums, electric guitar and some audience (3 Doors Down's Kryptonite 3:55 vs. Kryptonite (acoustic) 3:59 = 35%).
I can get about 33% on different songs by the same artist, although they are slightly similar. But anyway I am not sure how significant or useful these low scores are.. testing on many files may give some answers.

QUOTE (Nemphael @ Aug 10 2008, 13:12) *
But I keep wondering - would it be possible to have a slider of some sort to change thresholds to, say, include less similar live/acoustic/instrumental performances?
for the two file compare it is not particularly useful, but for multi-file commands yes I was probably going to do that, as it would only return tracks within the set thresholds. As for whether changing the thresholds would have any useful effect, that is another question.. for reference the levels are currently set at:

no: 0 <= i < 50
maybe: 50 <= i < 75
yes: 75 <= i <= 100

where i is the given percentage


--------------------
.
Go to the top of the page
+Quote Post
musicmusic
post Aug 14 2008, 23:55
Post #9


Columns UI developer


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



Version 0.2 released:
  • 'Save fingerprints to files' uses multiple threads where multiple CPU cores are available
  • Added multiple file 'Compare Files' command. Note: Generally the minimum threshold should not be set below 50% (and especially not 0% tongue.gif) If you are happy to tag your files with the fingerprints it is a good idea to run the save command first.
With the new multiple file mode I was able to do some more testing. My observations about match levels are below:

75-100%: Correct matches or slight variations of the same track (extra featured artist or other slight difference in vocals)
50-75%: Generally different versions of the same track (extra featured artist etc.), and a few correct positives.
0-50%: matches don't seem to be of any useful significance

This post has been edited by musicmusic: Aug 15 2008, 15:40


--------------------
.
Go to the top of the page
+Quote Post
Nemphael
post Aug 15 2008, 11:07
Post #10





Group: Members
Posts: 244
Joined: 19-March 07
Member No.: 41623



I tried your new version and like the new mass comparison. I've noticed, though, that every match will show up twice. For instance, "Track a" will match "Track b", but at the same time "Track b" will match "Track a". Is this behavior intended?
Go to the top of the page
+Quote Post
Garf
post Aug 15 2008, 11:23
Post #11


Server Admin


Group: Admin
Posts: 4853
Joined: 24-September 01
Member No.: 13



Hey,

great that someone found a nice use for libFooID.

I will try to bring back the libFooID site. The fingerprint server probably will not come back. The resource usage on the server is just too big.
Go to the top of the page
+Quote Post
musicmusic
post Aug 15 2008, 12:38
Post #12


Columns UI developer


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



QUOTE (Nemphael @ Aug 15 2008, 11:07) *
I tried your new version and like the new mass comparison. I've noticed, though, that every match will show up twice. For instance, "Track a" will match "Track b", but at the same time "Track b" will match "Track a". Is this behavior intended?
It's kind of intended.. Song b may match some other songs that song a does not. It could group them all together but it somewhat reduces the quality of information provided, so I have not.

QUOTE (Garf @ Aug 15 2008, 11:23) *
Hey,

great that someone found a nice use for libFooID.

I will try to bring back the libFooID site. The fingerprint server probably will not come back. The resource usage on the server is just too big.
Hi Garf smile.gif Yes I surprised myself and found a few duplicates in my library blink.gif Yes it would be nice to get the libFooID site back wink.gif

Whilst I was looking around on the net, I found some discussion of an oddity in regress.c. On line 66, it does this test:
CODE
if (ssyy <= 0.0f + EPSILON)
and sets *r, but it then divides by ssyy and sets *r again. Basically, the test does nothing. It seemed there was a missing else statement so I changed that (in the downloads above also), but it would be nice if you could confirm.. smile.gif

This post has been edited by musicmusic: Aug 15 2008, 12:39


--------------------
.
Go to the top of the page
+Quote Post
Nemphael
post Aug 15 2008, 15:02
Post #13





Group: Members
Posts: 244
Joined: 19-March 07
Member No.: 41623



After trying to remove some duplicates, I have a suggestion. The window notifying the user about duplicates isn't really useful, as you can only go to one file at the time. I see how this is useful, but it doesn't allow the user to compare the files himself on a grand scale. How about making a "duplicate-sorted" playlist with the results?
Go to the top of the page
+Quote Post
musicmusic
post Aug 15 2008, 15:16
Post #14


Columns UI developer


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



What about being able to play the tracks directly from the results window (double click) instead? That I will add anyway. Maybe a delete command on the shortcut menu as well.

Otherwise yes I could add a button to flatten the tree into a playlist, but the resultant playlist may be slightly confusing.


--------------------
.
Go to the top of the page
+Quote Post
MartDann
post Aug 17 2008, 19:24
Post #15





Group: Members
Posts: 33
Joined: 18-January 02
Member No.: 1075



I think all of your suggestions could be very usefull.
For example: I could make a run over my complete Music Lybrary, put all doubles in playlist und check this playlist later when i have time.
Go to the top of the page
+Quote Post
mpioner
post Aug 26 2008, 13:36
Post #16





Group: Members
Posts: 44
Joined: 22-February 06
Member No.: 27980



musicmusic
Maybe you can make local version foosic.com?
Go to the top of the page
+Quote Post
Nemphael
post Aug 26 2008, 14:26
Post #17





Group: Members
Posts: 244
Joined: 19-March 07
Member No.: 41623



With the ability to generate FooID fingerprint and possibly have a local Foosic database; what about making a database component to pick up where foo_custominfo left? It's a component I really wish further development in. FooIDs should allow the database to match up files and data which could allow, for instance, play count update of multiple song (released on multiple albums?), songs moved with Explorer or similar.

This post has been edited by Nemphael: Aug 26 2008, 14:29
Go to the top of the page
+Quote Post
2E7AH
post Sep 1 2008, 02:27
Post #18





Group: Validating
Posts: 2424
Joined: 21-May 08
Member No.: 53675



so, this component is only for finding duplicates among songs.

even if i set min threshold to 25, i'll only get songs which have a similar length, although not all tracks with similar length + some are without any audio similarities!?

i don't know the contents of fingerprint data (424 hex num: 3rd, 4th and 5th are length i guess) and i don't know those "algorithms" from foosion link + some kind of limitation to song length, but isn't there a way to code option about finding similar tracks in means of audio (music) content or something other than just looking for duplicates?

with no means to disrespect the work on this components, but for most duplicates search scripts are sufficient (and faster).

This post has been edited by 2E7AH: Sep 2 2008, 15:14
Go to the top of the page
+Quote Post
odyssey
post Oct 19 2008, 23:34
Post #19





Group: Members
Posts: 2296
Joined: 18-May 03
From: Denmark
Member No.: 6695



QUOTE (Nemphael @ Aug 15 2008, 16:02) *
After trying to remove some duplicates, I have a suggestion. The window notifying the user about duplicates isn't really useful, as you can only go to one file at the time. I see how this is useful, but it doesn't allow the user to compare the files himself on a grand scale. How about making a "duplicate-sorted" playlist with the results?

I second this request, simply because I don't wanna delete all duplicates, but maybe I'll mark a track or do other stuff with it.


--------------------
Can't wait for a HD-AAC encoder :P
Go to the top of the page
+Quote Post
musicmusic
post Oct 20 2008, 17:06
Post #20


Columns UI developer


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



QUOTE (2E7AH @ Sep 1 2008, 02:27) *
even if i set min threshold to 25
You are not supposed to set it to 25 (for anything other than testing). See my table in post #8.

QUOTE (2E7AH @ Sep 1 2008, 02:27) *
with no means to disrespect the work on this components, but for most duplicates search scripts are sufficient (and faster).
I had a few duplicates under different song titles - how are you going to find that with a text search ?! Fingerprinting has other potential uses also which aren't exploited here. Maybe you don't find it useful but at least I do wink.gif


--------------------
.
Go to the top of the page
+Quote Post
odyssey
post Oct 20 2008, 20:50
Post #21





Group: Members
Posts: 2296
Joined: 18-May 03
From: Denmark
Member No.: 6695



QUOTE (musicmusic @ Oct 20 2008, 18:06) *
QUOTE (2E7AH @ Sep 1 2008, 02:27) *
with no means to disrespect the work on this components, but for most duplicates search scripts are sufficient (and faster).
I had a few duplicates under different song titles - how are you going to find that with a text search ?!

I had planned to use php's similar_text() to find duplicates smile.gif But still a fingerprint is more reliable.

This post has been edited by odyssey: Oct 20 2008, 20:51


--------------------
Can't wait for a HD-AAC encoder :P
Go to the top of the page
+Quote Post
musicmusic
post Oct 20 2008, 22:25
Post #22


Columns UI developer


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



I meant completely different.


--------------------
.
Go to the top of the page
+Quote Post
2E7AH
post Oct 21 2008, 06:31
Post #23





Group: Validating
Posts: 2424
Joined: 21-May 08
Member No.: 53675



i've read the posts, but i was playing with the component so i post some of that

QUOTE (musicmusic @ Oct 20 2008, 18:06) *
I had a few duplicates under different song titles - how are you going to find that with a text search ?!
QUOTE (2E7AH @ Sep 1 2008, 03:27) *
but for most duplicates search scripts are sufficient (and faster).
my library and my incomes are quite neat, so it's subjective matter anyway.
fingerprinting is time consuming.

perhaps i should have asked only my main question: isn't there a way to code option about finding similar tracks in means of audio (music) content or something other (not depending on track's length)?
i've read the posts #4 & #5

QUOTE (musicmusic @ Oct 20 2008, 18:06) *
Fingerprinting has other potential uses also which aren't exploited here.
can you explain, if it isn't too much trouble?
Go to the top of the page
+Quote Post
Nemphael
post Oct 21 2008, 12:10
Post #24





Group: Members
Posts: 244
Joined: 19-March 07
Member No.: 41623



QUOTE (2E7AH @ Oct 21 2008, 07:31) *
perhaps i should have asked only my main question: isn't there a way to code option about finding similar tracks in means of audio (music) content or something other (not depending on track's length)?
i've read the posts #4 & #5


This is what foo_biometrics does - it creates fingerprints of audio data and compares them. It has a quick match of +-30 seconds, I believe (Could be extended, could it not? Any benefits from this, you think?), as it intends to identify duplicates tracks rather than to extract certain elements. If I'm not mistaken, foo_biometrics is built from FingerPrint.java, which to me looks more like a duplicate finder than an audio comparator.

This post has been edited by Nemphael: Oct 21 2008, 12:11
Go to the top of the page
+Quote Post
OCedHrt
post Dec 12 2008, 16:28
Post #25





Group: Members
Posts: 57
Joined: 7-January 04
Member No.: 11015



QUOTE (Garf @ Aug 15 2008, 11:23) *
Hey,

great that someone found a nice use for libFooID.

I will try to bring back the libFooID site. The fingerprint server probably will not come back. The resource usage on the server is just too big.


What kind of load are we looking at?
Go to the top of the page
+Quote Post

3 Pages V   1 2 3 >
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: 19th April 2014 - 10:47