Australian audio analysis tools

Project Links

Related Information

The Australian audio analysis toolkit

Maaate (pronounce: ma:a:it) is a C++ toolkit to parse and analyse audio data in the compressed/frequency domain. It is designed to be able to support any kind of sound file such as MPEG-1/2 Layers 1-3 as well as raw files. It makes the frequency samples, and other useful pre-processed features as well as the file format specific fields (such as the encoded fields of an MPEG audio stream) accessible. A module interface allows content analysis functions (modules) such as silence detection to work on the extracted information.
Source code is available under the GNU General Public License.

MPEG Maaate is designed in tiers: at the bottom sits the file parsing tier, which currently contains an MPEG file parser ("mpeg" directory). The next tier implements a generic interface to the frequency domain samples and access to extracted and pre-processed information regardless of the audio file format in libMaaateP ("tier1" directory). The tier thereafter implements an interface to the content analysis on the extracted information libMaaateA ("tier2" directory). The analysis functions themselves are stored in dynamically loadable plugin modules. A standard set is included in the "plugins" (libMaaateM) and "plugins_brief" (libMaaateM_brief) directory. Applications sit on top of these tiers using any modules required.

For more indepth information on Maaate read the Maaate FAQ. It contains an overview of the design and an introduction on how to add code. If you would like to add new analysis functions (modules) to Maaate, read the module information.

Package content

The distribution of Maaate contains the following libraries:

  • a C++ library for the MPEG parser (libMaaateMPEG).
  • a C++ library for the generic field/frequency sample access (libMaaateP) including a C API.
  • a C++ library for the generic module access (libMaaateA) including a C API.
  • two C++ libraries implementing some fundamental modules and an easy API to access them (libMaaateM, libMaaateM_brief). libMaaateM_brief provides a backward compatible and shorter module API.
and the following command-line programs:
  • a C++ command-line application to access MPEG fields via tier 1 and demonstrate the usage of the tier1 API (inspectMPaudio).
  • a C++ command-line application to apply analysis functions and demonstrate the usage of the tier2 API (analyseSDaudio) and a C version of it (canalyseSDaudio).
  • a C++ command-line MPEG player using Maaate (MaaatePlay) and a C version of it (cMaaatePlay).
In a separate distribution you may find a sample GUI interface to Maaate called bewdy. It demonstrates a few of the abilities of Maaate visually.


The system was implemented by Silvia Pfeiffer, Thomas Vincent, Stefan Kudras and Conrad Parker (GUI) from the Analytic Audio Systems research group, CSIRO (Commonwealth Scientific and Industrial Research Organisation) Mathematical and Information Sciences Division (CMIS) in Australia. CMIS has worked on analysing MPEG audio since 1997. Other group members that have layed grounds for Maaate by performing MPEG audio analysis include: Stephen Barrass, Jordi Robert-Ribes, Brian Kim.

The code for the MPEG parser is based on the MPEG-1 audio reference C-implementation of the ISO MPEG working group. It contains some of their functions but has been redesigned from scratch with audio analysis in mind. A lot of code has been written to make the API as simple as possible.

Special thanks to Craig Lindley for drawing the Australian Mate.


To be updated on new releases, bugfixes and the development status, join To discuss topics, go to the Maaate forum.

If you require more information, have found a bug, would like to help in developing etc. you may also contact: Silvia Pfeiffer

last updated 23/08/2008