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 has been tested on macOS, Linux, NetBSD, and iOS, 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.
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.
The following examples demonstrate the use of the library in
various scenarios. 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 following document outlines the operation of the library.
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 email@example.com.