AudioQ
A C++/JUCE sampler that puts granular playback, filtering, glitch effects, automation, and peak safety in one window.
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.
Full source on GitHub
All the C++ code, JUCE project files, and build configs. MIT license.