AudioQ

A C++/JUCE sampler that puts granular playback, filtering, glitch effects, automation, and peak safety in one window.

Role Solo Developer
Type VST3 Plugin + Standalone
Year 2024-2025
Framework JUCE 8 (C++17)
C++ JUCE 8 VST3 DSP APVTS Standalone
AudioQ plugin interface showing the waveform display, rotary controls, and glitch effects section

Demo - loading samples, granular mode, filters, glitch effects, DAW automation

One Sampler Instead of Three Plugins

I kept loading a granular plugin, then a filter, then a tremolo, routing audio between all three just to mangle one sample. AudioQ turns that repeated chain into one sound-design window. C++, JUCE 8, VST3 and standalone. Drag in WAV, AIFF, or MP3 files, twist them with granular, filters, compression, bitcrushing, stutter, reverse - and automate the 18 exposed parameters from your DAW.

The first version had granular, tremolo, and filters. I added the rest when the editing workflow exposed gaps: compression for granular peak control, bitcrushing and stutter for harder transitions, reverse for risers, dry/wet for parallel blends, region-based looping for tempo sections, and a real-time waveform display for edit feedback. 18 automatable parameters total.

Playback, Granular, Effects, Automation

Granular Synthesis

Chops audio into tiny grains (0.05-0.5s) and randomizes playback. You control grain size and density. A single piano note turns into a pad, a door slam turns into a metallic drone. This was the original reason I built the plugin.

Filters (LPF + HPF)

Low-pass and high-pass, 20Hz-20kHz, using JUCE's StateVariableTPT topology. With smoothed parameter changes, cutoff automation stays stable across the filter range.

Compressor

Threshold, ratio, attack, release - standard dynamics controls. I added this because granular playback has wild volume spikes and I needed something to tame peaks before they hit the output. Auto make-up gain keeps the level consistent.

Tremolo

Hand-coded sine LFO running per-sample, not a stock JUCE effect. Rate (0.1-10Hz) and depth controls. I squared the LFO shape so the modulation curve feels more musical than a raw sine.

Bitcrusher

Bit depth reduction (1-16 bits) and downsampling (up to 40x). At 16 bits and 1x downsample it does nothing - crank it down and you get lo-fi crunch and aliasing. Good for making clean samples sound broken on purpose.

Stutter + Reverse

Stutter captures a chunk from a 1-second history buffer and repeats it at 2-32Hz. Reverse grabs 180ms chunks and plays them backwards. Both pull from the same history buffer. Together they make glitchy, broken textures from the loaded sample.

Tempo + Looping

Resamples playback from 20 to 300 BPM. You can click and drag on the waveform to set loop regions, so a 2-bar drum break stays locked to your project tempo. Optional crossfade on loop points.

Dry/Wet + Volume Safety

Dry/wet blends between the original and processed signal. Volume safety monitors peaks and auto-stops playback above +12dB, which protects the output during aggressive granular settings and makes testing less risky.

Open Source

Full source on GitHub

All the C++ code, JUCE project files, and build configs. MIT license.

View on GitHub