Tarsos icon indicating copy to clipboard operation
Tarsos copied to clipboard

Culture independent processing of MIR data

h1. Tarsos

Tarsos is a software tool to analyze and experiment with pitch organization in all kinds of musics. Most of the analysis is done using pitch histograms and octave reduced pitch class histograms. Tarsos has an intuitive user interface and contains a couple of command line programs to analyze large sets of music.

To see Tarsos in action you can check the "Tarsos screencast":http://www.youtube.com/watch?v=nzDdYvqgcOo. More detailed information, news and updates can be found on the "Tarsos website":http://0110.be. The "Tarsos research article":https://0110.be/publications/Tarsos%2C_a_modular_platform_for_precise_pitch_analysis_of_western_and_non-western_music gives more details on the concepts behind it.

To give Tarsos a try, download the "executable Tarsos JAR-file":http://0110.be/releases/Tarsos/Tarsos-latest.jar. A Java 8 runtime is required, a more recent runtime is preferred. A "manual for Tarsos":http://0110.be/releases/Tarsos/Tarsos-latest/Tarsos-latest-Manual.pdf an a complete "API reference for Tarsos":http://0110.be/releases/Tarsos/Tarsos-latest/Tarsos-latest-Documentation/ are also available. Drop me a line if you use Tarsos. Always nice to hear how this software is used.

h2. Getting started with Tarsos

To analyse the pitch use of a single musical piece, see the main flow below.

!/etc/tarsos_getting_started.gif!

Open the file using the @File - open..@ menu or use drag and drop

Use the waveform to select a part of interest.

The command window allow you to choose peaks in the pitch histogram

Modify the peaks if needed

With @ctrl@ and mouse movements the peaks kan be moved.

@alt@ and mouse movements add a peak

To delete a peak first use @ctrl@ to select it and subsequently press either @delete@ or @d@ to remove it

Export the analysis using the export funtions

h2. Caveats

The most critical error-prone part of Tarsos is audio decoding. To support almost any format "ffmpeg":http://ffmpeg.org is used in the background. If ffmpeg is not installed, Tarsos automatically tries to download a version fit for your system. However, this can fail. Moreover, more recent and capable versions might be present if you install it manually. E.g. using "homebrew":https://brew.sh in macOS: @brew install ffmpeg@ or a packet manager like @apt-get@ on Debian like systems: @apt-get install ffmpeg@. The "static ffmpeg binaries provided by zeranoe":https://ffmpeg.zeranoe.com/builds/ might be practical as well on e.g. windows.

h2. Develop Tarsos

If you want to help develop Tarsos, you are more than welcome to. Please, start by consulting the "API documentation":http://0110.be/releases/Tarsos/Tarsos-latest/Tarsos-latest-Documentation/. If you want to build from source, you need a "JDK":https://openjdk.java.net/, "Apache Ant":http://ant.apache.org/ and "git":http://git-scm.com/ installed on your system. The following commands fetch the source and build Tarsos:

git clone https://[email protected]/JorenSix/Tarsos.git
cd Tarsos/build
ant #Build Tarsos
ant javadoc #Creates the documentation in Tarsos/doc

When everything runs correctly you should be able to run Tarsos, also the Javadoc documentation for the API should be available in Tarsos/doc.

h2. Credits

Tarsos is developed at the "University College Ghent, Faculty of Music":http://cons.hogent.be and "University Ghent":http://ugent.be. Further development was sponsered by Dr. Patrick Savage, Associate Professor of the Faculty of Environment and Information Studies of "Keio University SFC":https://www.sfc.keio.ac.jp/en/

Tarsos uses a number of open source libraries:

  • "Gervill":https://gervill.dev.java.net/: a software sound synthesizer, supports the MIDI Tuning Standard. "API":https://gervill.dev.java.net/nonav/javadoc/index.html.
  • "Apache Commons Math":http://commons.apache.org/math/: a library of lightweight, self-contained mathematics and statistics components "API":http://people.cs.ubc.ca/~kvdoel/jass/doc/index.html.
  • "Java-getopt":http://www.urbanophile.com/~arenn/hacking/download.html: a port of the GNU getopt family of functions. "API":http://www.urbanophile.com/~arenn/hacking/getopt/Package-gnu.getopt.html.
  • "TarsosDSP":https://github.com/JorenSix/TarsosDSP is a Java library for audio processing. Its aim is to provide an easy-to-use interface to practical audio (signal) processing algorithms implemented, as simply as possible, in pure Java and without any other external dependencies.