MP3-Boss forum

Questions, comments and concerns about MP3-Boss: MP3 Database and Manager

You are not logged in.

Announcement

MP3-Boss Facebook Group
v0.683 is the official release. * Beta info * Have you checked the MP3-Boss Facebook Page? My contact address is MP3-Boss primary email address.
Returning users: Send me an email containing your user name, and I'll reset your email address (old info was lost during a crash).

#1 2005-05-18 07:41:04

matludlam
Member
Registered: 2011-06-05
Posts: 21

Automatic Artist Fixup

I have given some thought to automatically fixing up the artist name.

The code below seems to work ok on my database, but probably needs some other peoples data to validate it.

What I think needs to happen is that the system generates a list of "Fixed Up" names.  These need to be edited by hand and then applied to the database (and ultimately the files).

The user needs to check them because things like Ac/Dc come out as "AC, DC".  This is becausee everyone else uses the "/" character to separate artists which for consistancy is converted to a comma.

Anyway, I look forward to your thoughts and commetns.

Function ArtistFixup(Artist As String)

    ' Take a copy of the original Artist just in case we need it later
    TempArtist = Artist

    ' Split what we have into words so that we can process a band starting The
    Words = Split(TempArtist, " ", -1)
    If UBound(Words) = -1 Then
        ArtistFixup = Null
        GoTo EndFunction:
    End If
   
    If Words(0) = "The" Then
        Words(0) = ""                       ' Remove the word
        TempArtist = Join(Words, " ")       ' Re build the Artist
        TempArtist = TempArtist + ", The"   ' And add it back again
    End If
   
    ' Put some spaces at the front and end to make matching more specific.  They are removed at the end
    TempArtist = " " + TempArtist + " "
   
    ' Rather than use the / character to separate artists use a comma
    TempArtist = Replace(TempArtist, "/", ", ")
   
    ' Loose dots because they are no good to anyone
    TempArtist = Replace(TempArtist, ".", " ")
   
    ' We don't like "Feat" as it is short for Featuring
    TempArtist = Replace(TempArtist, " feat ", " Featuring ")
   
    ' "Pres" is "Presents"
    TempArtist = Replace(TempArtist, " pres ", " Presents ")
   
    ' "And" to "&"
    TempArtist = Replace(TempArtist, " and ", " & ")
   
   
    ' *******************
    ' Now reformat and loose extra characters
    ' Sort out the extra spaces at the start and end
    TempArtist = Trim(TempArtist)
    ' Now in the middle of the string
    TempArtist = Replace(TempArtist, "  ", " ")
    ' And around the comma
    TempArtist = Replace(TempArtist, " ,", ",")
       
    ' Sort out the case
    TempArtist = StrConv(TempArtist, vbProperCase)
       
    ArtistFixup = TempArtist
   
EndFunction:
End Function

Offline

 

#2 2005-05-18 09:13:30

mccaffjt
Admin
Registered: 2011-06-05
Posts: 1295
Website

Re: Automatic Artist Fixup

Probably I should let people choose to substitute/remove words.

I actually thought I let people choose whether to keep/remove "The " --> "" I think it is in the code but no [x] selection implemented.

Ft, Feat, Fea., Feature --> Featuring (or with or w/)
"Featuring" is a problem for the ID3v1 tag (only 30chars)

Pres, Pres. --> Presents
(I don't see "Presents" much)

and, + --> &

/ --> ,

. --> " "

Aren't there other problem words & phrases?

If I combine this with a list of 'exceptions' like "AC/DC" then this should work in most cases.  If I create an external editable table, and get updated tables from the beta testers...this could be a good start.

The other option is a list of editable "Known Good" artists -- flagging outliers.  The problem with "Known Good" is that the list is huge, particularly if I try to include obscure artists.

Offline

 

#3 2005-05-18 09:33:18

matludlam
Member
Registered: 2011-06-05
Posts: 21

Re: Automatic Artist Fixup

Your comments on "Featuring" and 30 characters are interesting, I never thought about it.

My entire collection only had one "Presents" but I included it anyway.

You seem to have give more thought to the punctuation than I, and have some good changes.

There probably are many other exceptions (e.g. "Elvis vs JXL" & "Elvis verses JXL"), but my database was ok.  I think the logic needs testing on a lot more data.

You will also get some strange behaviour with my logic so: "The Young Ones & Cliff Richard" becomes "Young Ones & Cliff Richard, The" which is not really ideal, but in other situations that may be what you want.

My logic also fails to process "Dj Jazzy Jeff & The Fresh Prince".

I did try some logic along the lines that an artist was in fact made up of several artists separated by "special characters” or words.  This is actually harder than I could be bothered with, and thought I would fix the offending 5 or 6 by hand.

I like the idea of a list of known good artists but that is going to be really hard, also most of the issues occur (in my collection at least) with the duets or more.  All of the “Featuring”, “&”, “/” etc. are what screw things up.  Whilst the list will potentially solve these, it is hard work.

Another issue is that for classical music the artist us usually “{Surname}, {First name}”, but contemporary music is “{First name} {surname}”.  Again this is too hard, and my solution is just to delete the classics.  Not really a solution open to you though :-)

Offline

 

#4 2005-05-18 10:49:54

mccaffjt
Admin
Registered: 2011-06-05
Posts: 1295
Website

Re: Automatic Artist Fixup

"The" is definitely a problem with multiple artists, but even with single artists it is a pain.

The Beatles could be "Beatles" or "Beatles, The" or "The Beatles"

In many cases, simply eliminating "The" is the best solution -- but sometimes it doesn't make sense "The Band" --> "Band" or "Band, The"

A known-good list could probably handle this situation, although duets would still be a problem.

This complexity is one reason why I haven't tried to automate beyond ArtistFixup, but maybe I could add a few additional rules.

By the way...Utilities/Cleanup already handles exclamation points, underscores, double-spaces and semicolons.

Offline

 

#5 2006-12-16 10:36:01

mccaffjt
Admin
Registered: 2011-06-05
Posts: 1295
Website

Re: Automatic Artist Fixup

The latest version (starting with about v0.608) has an embedded database of 17K "known-good" artists that were web-checked to verify them.

Now, MP3-Boss refers to that table when it is trying to figure out the artist.  It does a modified soundex to try to locate the name even if it is mispelled...and then tries to verify that it is a good match.

If THAT doesn't work, there is a linked table which is used to provide common mispelling for the artist.  So...if the search doesn't find a match in the main table...it finds the mispelled name.

In v0.610, I've made it easy to update both the main and linked table (from Utilities/Review/Artists).  Once you make a bunch of changes, just send me your ARTISTLIST.MDB file and I'll incorporate the changes into the master list.

I've never figured out a good solution for "Featuring" and multiple artists.  I think we'll always need to keep those as a special case.  I guess it IS possible to include those in the master list of "known-good" artists...but there might be so many possibilities that it becomes ridiculous.  Still...if all the hard-core MP3-Boss users get together and work on their own list...it is possible that pretty quickly all the common duets would be in the master table.

Let me know what you think!

Offline

 

#6 2007-12-13 14:37:45

Anonymous User
New member
Registered: 2011-06-05
Posts: 4

Re: Automatic Artist Fixup

Hello, sorry to drag up old topics but this seamed the most approporate location, matludlam posted a vbscript that among other things "lost"dots because they are no good to anyone, [ TempArtist = Replace(TempArtist, ".", " ") ]

I am wondering if
A) that is implmented and dots are currently removed, without need for web lookup,

B) (* see note below:) it is possible that mp3 can do this, but will ask anyway,
would like to check that a particular tag (IE "ARTIST") is in the filename
I do belive this could be achived with a SQL "Like" statement (IE: select * where filename like '%artist%') perferably configurable to check Artist and/or Title

----------------------------------------
* i have a bunch of files that have been autotaged by using musicbrainz with the help of gracenote, how ever I perfer to trust the artist name as per filename not by tags, the problem that exists is  on a rare occasion (say 7% of 80000 files) the song has been identifed as somthing different,  right song/wrong artist OR right artist/different song but owing to variously sourced material the filenames are not all layed out the same, (<<Artist>> - <<title>>.mp3 etc.)

Offline

 

#7 2007-12-14 05:22:39

mccaffjt
Admin
Registered: 2011-06-05
Posts: 1295
Website

Re: Automatic Artist Fixup

Thanks for reminding me about this request!

Instead of implementing coding like this, I added a table of "Valid" artistnames ... so your list is checked against those.  You can add new entries with auto-fixup.

Think I should be adding this as a fixup in code too (as an option)?

MP3-Boss can already try to find the artist based on the filename (ignoring tags) as an option.  I'm finding that now the combination of tags, filenames, Artist Table, and MusicIP --> MP3-Boss does quite a good job of figuring out artistis.  The ArtistFixup function then makes it pretty easy to fix errors.

It is already possible to find a specific artist in the Filename -- just use "Filter For:" in List View, and select Filename as the field for search.

The next version of Mp3-Boss is finally going to take care of the need to process files in 5K - 10K chunks ... so that will speed things up.

Offline

 

#8 2007-12-17 00:17:10

Anonymous User
New member
Registered: 2011-06-05
Posts: 4

Re: Automatic Artist Fixup

well it appears the known Artists table was enough to remove most (read all) of the unneed "."s so problem#1 is nolonger a concern,
back to problem#2

am aware that texts searchs search filename field thus a search for
"aristA" with a file called "artistA - AlbumA - Song1.mp3" that has the tags Artist:"other Artist", Album: AlbumA, etc
will still located the File

but looking @ Filename field just to see why it matched  then manually changing tags "on-the-fly" (while playing busy Music) is rather counter productive 

having the ability to identify mis-matched tracks during "down time" (IE when the songs being played are non-crucial) would be advantagous

as mentioned the table produced by a sql NOT LIKE would produce such a list,

take (another old thread for example: http://web.newsguy.com/mccaffjt/punbb/v … php?id=255)

in this example "William Ackerman changed to William Hooker"

if the files were named "William Ackerman - Album1 - song2.mp3" etc
thus the above sql statement would perform the followin comparision
(using only last names for simplicity)
[ Is "William Ackerman - Album1 - song2.mp3" LIKE "%Hooker%" ]
ie: is hooker in "William Ackerman - Album1 - song2.mp3" and show list

Offline

 

#9 2007-12-17 04:49:13

mccaffjt
Admin
Registered: 2011-06-05
Posts: 1295
Website

Re: Automatic Artist Fixup

Would using AutoMove/AutoRename be a work-around for this problem, so that all of the files are moved/renamed based on the correct artist information?

Also, take a look at Utilities/Misc/Advanced search -- if you create the search:
Select * from [Main] Where [Artist] Like "Jesse*" AND [Filename] Not Like "*Jesse*"

http://web.newsguy.com/mccaffjt/AdvancedSearch.JPG

Offline

 

Board footer

Powered by PunBB
© Copyright 2002–2008 PunBB