TagLoko aims to automate the process of properly tagging your music library by pulling information from the following sources:
- MusicDNS (acoustic song identification)
- MusicBrainz
- AudioScrobbler
- Letras.Mus.Br (lyrics)

You can use TagLoko to fix files in your music library that have incorrect metadata information or no information at all.
TagLoko takes advantage of MusicIP's technology for acoustic identification, and uses this information to query several database looking for the song's metadata.
Unfortunately, TagLoko is not the answer to all your music related problems, human intervention is still required, and since it is far from being infallible, you're strongly recommended to backup your entire music library before using this program.

That being said, TagLoko works fine most of the time and should at least save you from most of the monkey work of fixing your music library.

TagLoko is written in ruby and it is released under the MIT licence (free software).

It currently only works with iTunes(Mac), but it should be easy to extend it to support other applications.


screenshot - before screenshot - after
screenshot - wrapper screenshot - menu


Download the latest version from here.

Ruby >= 1.8.6 (it migth work on lesser versions too)
iconv (unix command)
Hpricot >= 0.6.0
RBrainz >= 0.3.0
RubyOSA >= 0.4.0(iTunes - Mac)
CocoaDialog >= 2.1.1(iTunes - Mac)


## example installation (iTunes - Mac)
# download and install genpuid, put them in ~/bin
# or you'll have to edit tagloko source code.
tar -xvzf tagloko_$version.tgz
mkdir ~/Library/Scripts/iTunes
cp tagloko_$version/tagloko.scpt ~/Library/Scripts/iTunes
mkdir ~/bin
cp tagloko_$version/tagloko ~/bin/
echo "export PATH=~/bin:$PATH" >> ~/.profile


How does tagging work?
TagLoko calls an external utility* to acoustically identify each of your song files and fetch the song's metadata.
Unfortunately the returned information currently lacks the album and genre tags, therefore TagLoko attempts to fetch the missing bits from MusicBrainz's database(album) and AudioScrobbler(popular genre).
After collecting all the required information, TagLoko simply replaces the song's metadata.

* MusicIP's closed source genpuid executable.

How does it fetch lyrics?
It searches the Letras.Mus.Br database based on the current song title and artist tags, after parsing the returned information, TagLoko writes the lyrics into your song's metadata.

What's a MusicDNS key and why do I need one?
The key is required to access the MusicDNS service, which is used to fetch the inital song metadata based on the file's puid(acoustic fingerprint).
You only need to create a new key if the default TagLoko key exceeds the 5 million requests per month.

Does it support DRM?

What about Picasa/iEatBrainz/... ?
Picard is not available for Mac OS X yet (2007-09-16).
iEatBrainz was discontinued
I wrote TagLoko not to compete with those projects, but to save me from most of the monkey work of fixing songs metadata.


Everybody is welcomed to contribute, feel free to start working on whatever you want, extend tagloko to support your music application, add a new feature or just fix some bugs.
If you're interested in joining, send me an email with some code, and I'll add you as a developer(svn access).

If you take a look at the source code, you'll see that the Model(class that handles tagloko main operations) is separated from the Interface.
This means that the Model knows nothing about communicating with your program, its jobs is simply to work on a bunch of track instances that were given to him when it was initialized.
It's your job to feed him with those track instances, and determinate how you're going to display what the Model is doing.
It should not be hard to understand, feel free to send me an email if it is.


fetch album tags from somewhere else (too many response errors from MusicBrainz)

capitalize songs(new option)

fetch genres from wikipedia (use audioscrobbler as last resort)

find and convert all 'Feat/Ft/Featuring/...' into '[Ft. list of artists]'(new option)

find duplicate authors(e.g: T Pain, T-Pain)

find all songs that have different genres for a given author.

find weird genres

rubycocoa gui ?

id3lib-ruby support(tag files directly)

fetch artwork (itunes/amarok/cduniverse/allmusic)? (and function find artwork-less songs)

nuke comments(new option) ?

fetch/calculate song's BPM ?

find (acoustic) duplicates ?


Federico Zagarzazú email address