🎧Multithreaded Real-Time Audio Processor in C++
This project provides a graphical user interface (GUI) for adjusting live audio effects in real time.
Once the program is running, you can:
- Enable/disable the Noise Gate, Limiter, 3-Band EQ, and De-Esser
- Adjust thresholds, gains, attack/release times, and de-essing parameters
Simply speak into your microphone to test the effects!
Note: The previous text-based controls are now defunct. Use the GUI exclusively.
git clone --recurse-submodules https://github.com/pedicino/multiaudio.git
cd multiaudio- A modern C++ compiler supporting C++11 or later:
- Linux: GCC 7+ or Clang
- macOS: Clang (Xcode Command Line Tools)
- Windows: MSYS2 with MinGW-w64
- RtAudio (Audio input/output)
- FFTW3 (Fast Fourier Transform)
- GLFW (Window and OpenGL context)
- OpenGL (Graphics rendering)
- Dear ImGui (GUI rendering)
- Platform-specific audio and graphics libraries:
- Linux:
libasound2,libjack - macOS: CoreAudio, CoreFoundation, Cocoa
- Windows: winmm, ole32
- Linux:
sudo apt-get update
sudo apt-get install -y \
build-essential \
libfftw3-dev \
librtaudio-dev \
libglfw3-dev \
libgl1-mesa-dev \
libasound2-dev \
libjack-dev# Install Homebrew (if not already installed)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# Install dependencies
brew install fftw rtaudio glfw- Install MSYS2 from https://www.msys2.org/
- Open the MSYS2 MinGW 64-bit terminal
# Update package database
pacman -Syu
# Install dependencies
pacman -S mingw-w64-x86_64-toolchain \
mingw-w64-x86_64-fftw \
mingw-w64-x86_64-rtaudio \
mingw-w64-x86_64-glfw \
mingw-w64-x86_64-opengl \
mingw-w64-x86_64-cmake \
mingw-w64-x86_64-winmm \
mingw-w64-x86_64-ole32g++ -o multiaudio \
main.cpp \
audio/*.cpp \
effects/*.cpp \
gui/*.cpp \
-lrtaudio -lfftw3 -lglfw -lGL -lpthread -lasound -ljackg++ -std=c++11 -o multiaudio \
main.cpp \
audio/*.cpp \
effects/*.cpp \
gui/*.cpp \
-lrtaudio -lfftw3 -lglfw \
-framework OpenGL -framework Cocoa -framework CoreAudio -framework CoreFoundation# Navigate to your project directory
cd /c/path/to/multiaudio
# Then build
bash build.batNote:
build.batuses g++ to compile all source files and link the required libraries.
./multiaudio./multiaudio.exeWhen you launch the program, the GUI will open, allowing you to control and monitor live audio effects in real time.
- Adjust
SAMPLE_RATE,FRAMES_PER_BUFFER, andNUM_CHANNELSincommon.hif necessary. - Tweak default effect parameters by editing the constructors in
main.cppbefore building.
