# The Gaborator

The Gaborator is a library that generates constant-Q spectrograms for visualization and analysis of audio signals. It also supports a fast and 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 compatible with C++14 and C++17. It has been tested on macOS, Linux, NetBSD, FreeBSD, 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.

## Example Code

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 `examples/` directory.

- Example 1: Rendering a Spectrogram Image
- Example 2: Frequency-Domain Filtering
- Example 3: Streaming
- Example 4: Measuring the Signal-to-Noise Ratio
- Example 5: Synthesis from Scratch

## API Reference

The following documents define the library API.

- API Introduction
- Spectrum analysis and synthesis: `gaborator.h`
- Spectrogram rendering: `render.h`

## How it Works

The following document outlines the operation of the library.

- Overview of Operation

## FAQ

- Is it real-time?

## Contact

Email questions and bug reports to the author at info@gaborator.com.