The Gaborator

The Gaborator is a library that generates constant-Q spectrograms for visualization and analysis of audio signals. It also supports an accurate inverse transformation of the spectrogram coefficients back into audio for spectral effects and editing.

The Gaborator implements the invertible constant-Q transform of Velasco, Holighaus, Dörfler, and Grill, described in the papers Constructing an invertible constant-Q transform with nonstationary Gabor frames, 2011 and A Framework for invertible, real-time constant-Q transforms, 2012, using Gaussian bandpass filters and an efficient multi-rate architecture.

The Gaborator is written in C++11 and runs on POSIX systems such as macOS, Linux, and NetBSD. It has been tested on Intel x86_64 and ARM processors.

The Gaborator is open source under the GNU Affero General Public License, version 3, and is also available for commercial licensing. See the file LICENSE for details.

Release Notes

This is still an early release, and API changes are expected.

The distribution includes the core spectrum analysis, resynthesis, and spectrogram rendering code, along with some example code and documentation. Some features that have been implemented but are not yet ready for release have been omitted, for example the support for parallel analysis and synthesis using multiple CPU cores. Also, the current API still lacks functions for convenient row- or column-wise access to the coefficients at specific frequencies or times; the only way to access the coefficients is the apply() method, which iterates over the entire coefficient set or a time range in an indeterminate order.

Example Code

The following examples demonstrate the use of the library for various applications. They are presented in a "literate programming" style, with the code embedded in the commentary rather than the other way around. Concatenating the code fragments in each example yields a complete C++ program, which can also be found as a .cc file in the examples/ directory.

How it Works

The following document outlines the operation of the library.

API Reference

The following documents define the public library API. Any classes and functions not listed here should be considered private and are subject to change or deletion without notice.



Email questions and bug reports to the author at