Musical Gestures Toolbox for Matlab

Yesterday I presented the Musical Gestures Toolbox for Matlab in the late-breaking demo session at the ISMIR conference in Paris.

The Musical Gestures Toolbox for Matlab (MGT) aims at assisting music researchers with importing, preprocessing, analyzing, and visualizing video, audio, and motion capture data in a coherent manner within Matlab.

Most of the concepts in the toolbox are based on the Musical Gestures Toolbox that I first developed for Max more than a decade ago. A lot of the Matlab coding for the new version was done in the master’s thesis by Bo Zhou.

The new MGT is available on Github, and there is a more or less complete introduction to the main features in the software carpentry workshop Quantitative Video analysis for Qualitative Research.

How to import TSV file in MS Excel

I often export data from Matlab into TSV files for students and collaborators to use in other programs. It is not entirely straightforward to open these files in MS Excel, so here is a series of screenshots of how to do it. There are two tricks to make it work:

  • Remember to use “tab” as the delimiter between columns
  • On Norwegian and other systems that use “comma” as decimal separator, it is necessary to specify that the TSV file contains values with “dot” as the decimal separator.












Avoid subscript in Matlab titles

I am working on some plots in Matlab, where I am using the filename as the title of the plot. In many of the files I am using underscores (_) as separator, and the result is that Matlab creates a subscript.

So for a file called b_staccato_004, I get a title bstaccato004.

After some googling I found that this is because Matlab per default treats such text strings as LaTeX code. The solution is to use the interpreter message locally:

title(filename, 'interpreter', 'none')

or it can be set globally using:

set(0, 'DefaulttextInterpreter', 'none')



Greyscale spectrograms from MIRToolbox

I am using the excellent MIRToolbox for Matlab for a lot of sound analysis applications these days. It meets a lot of my needs, but there are a few things that I miss. Perhaps the most important one is the ability to make clean greyscale spectrograms. The regular mirspectrum function returns a colour spectrogram with lots of garnish, like this:

Such a spectrogram may be useful in some contexts, but not always. Often I just want a plain, greyscale spectrogram, like this:

Here is my trick to do this, based on mirspectrum:

as=mirspectrum(a, 'Frame', 'Max', 3000);
axis xy;
for i=1:100
   lgrays(i,:) = 1-i/100;

Let me know if you have a better solution for doing this.