Gamma is a cross-platform C++ library for real-time audio signal processing, synthesis, and analysis. It provides a modular collection of DSP building blocks including oscillators, envelopes, filters, effects, spectral analysis (FFT/STFT), spatial audio processing, voice management, and audio I/O via PortAudio. The architecture employs template-based design for type flexibility, strategy patterns for algorithm interchangeability, and a node-based system for constructing processing chains. Key entry points are specialized headers like Gamma/Oscillator.h, Gamma/Filter.h, and Gamma/Envelope.h, with Gamma/Gamma.h serving as a convenience aggregator. Data flows through interconnected processing nodes where audio signals move from sources (oscillators, audio input) through modifiers (filters, effects) to outputs (audio output, sound files), with modulation via envelopes and LFOs. External dependencies include PortAudio for audio I/O and optionally libsndfile for sound file handling.
cubeb is a cross-platform C library for low-latency audio playback and recording, originally developed by Mozilla for Firefox. It provides a simple callback-based API and supports a wide range of backends including ALSA, PulseAudio, WASAPI, CoreAudio, OpenSL ES, AAudio, JACK, and others. The library handles device enumeration, resampling (via vendored Speex), channel mixing, and real-time streaming. Its architecture uses a vtable pattern ('cubeb_ops') to abstract backend implementations, and includes several high-quality lock-free data structures. While primarily a production library, it includes extensive test suites and debugging tools like audio dumping. The codebase is actively maintained, with ongoing migrations of some backends to Rust, but retains legacy backends (WinMM, OSS) with limited functionality.