Monday, January 21, 2013

MARSYAS_DATADIR

Here's some new useful info that's in the docs as 4.1.3 MARSYAS_DATADIR.
http://marsyasweb.appspot.com/assets/docs/manual/marsyas-user/Creating-collections-manually.html

The problem

We have some annotate .mf files in the collections directory in SVN.  Unfortunately, the old .mf files wrote a full path, so they were specific to George's computer:

/Users/George/data/sound/genres/classical/classical.00000.au    cl
/Users/George/data/sound/genres/classical/classical.00001.au    cl
/Users/George/data/sound/genres/classical/classical.00002.au    cl


or

/Users/gtzan/data/sound/ivl_beat_detect/01-Wobble-Horror_(145BPM).au    145
/Users/gtzan/data/sound/ivl_beat_detect/01_-_Help_I'm_Alive.au  118.5
/Users/gtzan/data/sound/ivl_beat_detect/01_Bloodstone_(62.5_BPM).au     62.5


If you wanted to use that same dataset, you would need to replace all the filenames to match your own home directory.

The solution

.mf files now support a MARSYAS_DATADIR environment variable.  Instead of writing a full path in the .mf file, you can write

MARSYAS_DATADIR/genres44k/blues/blues.00000.wav 125
MARSYAS_DATADIR/genres44k/blues/blues.00001.wav 68
MARSYAS_DATADIR/genres44k/blues/blues.00002.wav 157

and as long as you have the correct environment variable set, Marsyas will find the right files.  Typical environment variables would be one of these:

export MARSYAS_DATADIR=/home/gtzan/data/sound/
export MARSYAS_DATADIR=/Users/gtzan/data/sound/
export MARSYAS_DATADIR=/home/gperciva/media/marsyas-data/

We're still sorting out the existing annotated datasets in collections/, so stay tuned for more info about that!

In addition, when you're using mkcollection to create a .mf file, you can pass the -md option and the filenames will automatically use MARSYAS_DATADIR wherever appropriate!