Geoffroy Peeters

Project leader - Audio and Music Indexing Research Projects - IRCAM R&D

Main Technologies Publications Supervision Commitees Projects Teaching Test-Sets


1. Generic description

ircambeat is a C++ software and a C++ library which performs

2. Science

In ircambeat, each digital music file is analyzed in terms of its time and frequency content in order to detect salient musical events. Periodicities of the musical events are then analyzed over time at various scales to get the tempo and meter. Beats and downbeats positions are estimated using templates based on machine learning and musical theory to get a precise time positioning. ircambeat is based on the algorithms described in

3. Implementation

ircambeat is implemented in C++. It is available available for Linux, Mac-OS, Windows or iOS. It is available either as a command-line executable (see documentation below) or as a library (in this case the API is adapted to the needs of the integrator).

4. Documentation of ircambeat command-line version

Current version: 1.11.1

4.1 ircambeat usage for downbeat and beat tracking

ircambeat takes as input the path to an audio file (the audio file must be in a non-compressed format, for example: .wav or .aiff) and output the results in an XML file.

ircambeat -i /Users/jeremy/audio.wav -o /net/data/results/audio_beat_downbeat.xml

will analyze the content of the audio file "/Users/jeremy/audio.wav" and write the results (the downbeat and the beat positions) in "/net/data/results/audio.xml".

Flags

ircambeat has a number of flags that allow configuring the softare.

By default (i.e. without any flags except -i -o or -r), it will performs time-varying tempo estimation and will estimate automatically the meter (among 22: which represents 4/4 and 2/4, 23: which represents 6/8 or 32: which represents 3/4).

If you know that your track is at constant tempo (as most pop and electro music), you can use "ircambeat -c i /Users/jeremy/audio.wav -o /net/data/results/audio_beat_downbeat.xml" for better results.

If you know that your track is at constant tempo and in 4/4 or 2/4 (as many Western music), you can use "ircambeat -c -m 22 -i /Users/jeremy/audio.wav -o /net/data/results/audio_beat_downbeat.xml" for better results.

XML format description:

Example:

The previous example indicates that there is a segment at time 0.3875s. of length 0 (hence it is a marker) which is a beat (beat="1") and not a downbeat (measure="0"), one at time 0.8413s., one at 1.3163s which is a beat (beat="1") and a downbeat (measure="1") ...

4.2 ircambeat usage for global rhythm description

ircambeat takes as input the path to an audio file (the audio file must be in a non-compressed format, for example: .wav or .aiff) and output the results in an XML file.

ircambeat -i /Users/jeremy/audio.wav -r /net/data/results/audio_rhythm.xml

will analyze the content of the audio file "/Users/jeremy/audio.wav" and write the results (the whole set of time-global rhythm descriptors) in "/net/data/results/audio.xml".

XML format description:

Example:

The previous example indicates that the mean bpm value over time is 127.94 (bpm_mean), its variation over time is 0.0 (bpm_std), its mean meter is 4/4 or 2/4 (meter), its mean percussivity os 163.31 (percussivity) ...