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
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
The distribution of Maaate contains the following libraries:
and the following command-line programs:
- 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
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.
- 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).
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
Special thanks to Craig Lindley for drawing the Australian
To be updated on new releases, bugfixes and the development
status, join email@example.com. 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: