RPG Music Tags Database

Technology

How is RPGMusicTags.org made? Here, I give a few insights in the technology.

Database

The data is stored in an SQLite database. SQLite is used because it is an easy and free DBMS which is absolutely sufficient for a small database like this one.

The schema of the database is shown here. For tags and categories, there are potentially many translations into different languages. If someone adds a translation, the tag is automatically assigned to all music titles in the new language, too.

The assignments between tag and music title are stored per user, which is why users must give a name when they upload data. If a user removes a tag, this is stored in the RemovedTags table. In this way, a simple 'voting' between the users regarding a tag is possible: when downloading tags, a tag is only returned for a music title if more users have it assigned than removed.

Music Identification

To identify a music title, AcoustId is used. Through their Chromaprint algorithm, a "fingerprint" of the music is calculated, and through the web service at AcoustId, the Id is retrieved. When uploading, artist, album and title are also stored to enable browsing. When downloading, the music can also be found with these attributes, but that is not very reliable.

Web Service

The web service and all web pages here are served through ServiceStack.net. This is a very simple way to create a web service with .NET. .NET must be used because the tags database shares much code with Ares. Much code can be shared between Ares and RPGMusicTags, since an upload into the database is only in a few details different from a download into the local database of Ares (and vice versa).
All code for the web service is open source and is contained in the sources of Ares.
The website is hosted by SmarterASP.NET.