https://github.com/GareBear99/FreeEQ8
FreeEQ8 is a professional-grade, free and open-source 8-band parametric EQ plugin for macOS, Linux, and Windows. Linear phase, dynamic EQ, match EQ, per-band drive, band linking, M/S processing, oversampling, and a real-time spectrum analyzer. FabFilter Pro-Q alternative for $0β$20
https://github.com/GareBear99/FreeEQ8
audio-plugin audio-processing cmake cpp daw eq eq-eight eq8 equalizer free-plugin juce macos mixing music-production open-source parametric-eq spectrum-analyzer vst-plugin vst3 windows
Last synced: 22 days ago
JSON representation
FreeEQ8 is a professional-grade, free and open-source 8-band parametric EQ plugin for macOS, Linux, and Windows. Linear phase, dynamic EQ, match EQ, per-band drive, band linking, M/S processing, oversampling, and a real-time spectrum analyzer. FabFilter Pro-Q alternative for $0β$20
- Host: GitHub
- URL: https://github.com/GareBear99/FreeEQ8
- Owner: GareBear99
- License: gpl-3.0
- Created: 2026-01-28T16:25:07.000Z (4 months ago)
- Default Branch: main
- Last Pushed: 2026-05-01T03:24:08.000Z (29 days ago)
- Last Synced: 2026-05-01T04:19:22.655Z (29 days ago)
- Topics: audio-plugin, audio-processing, cmake, cpp, daw, eq, eq-eight, eq8, equalizer, free-plugin, juce, macos, mixing, music-production, open-source, parametric-eq, spectrum-analyzer, vst-plugin, vst3, windows
- Language: C++
- Homepage: https://github.com/GareBear99/FreeEQ8/releases
- Size: 990 KB
- Stars: 15
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Contributing: CONTRIBUTING.md
- Funding: .github/FUNDING.yml
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
- Security: SECURITY.md
Awesome Lists containing this project
- awesome-audio-lists - FreeEQ8 - discovery proof point. (Hub network / Canonical product/project anchors)
- awesome-python-audio-science - FreeEQ8 - source JUCE/C++ EQ plugin for DSP education, plugin testing, analyzer research, M/S processing examples, and citable audio-software packaging. | (Academic / Research SEO Positioning / Citation-ready ecosystem anchors)
- awesome-music-platforms - FreeEQ8 - Free/open-source EQ plugin anchor for the GareBear99 audio plugin ecosystem. (TizWildin / GareBear99 Ecosystem Anchors)
- awesome-audio-plugins-dev - FreeEQ8
README
> ποΈ Part of the [TizWildin Plugin Ecosystem](https://garebear99.github.io/TizWildinEntertainmentHUB/) β 20+ free audio plugins, creator tools, lists, deconstructed-loop routers, and release surfaces.
>
> [FreeEQ8](https://github.com/GareBear99/FreeEQ8) Β· [FreeVox8](https://github.com/GareBear99/FreeVox8) Β· [XyloCore](https://github.com/GareBear99/XyloCore) Β· [Instrudio](https://github.com/GareBear99/Instrudio) Β· [Therum](https://github.com/GareBear99/Therum_JUCE-Plugin) Β· [BassMaid](https://github.com/GareBear99/BassMaid) Β· [SpaceMaid](https://github.com/GareBear99/SpaceMaid) Β· [GlueMaid](https://github.com/GareBear99/GlueMaid) Β· [MixMaid](https://github.com/GareBear99/MixMaid) Β· [MultiMaid](https://github.com/GareBear99/MultiMaid) Β· [MeterMaid](https://github.com/GareBear99/MeterMaid) Β· [ChainMaid](https://github.com/GareBear99/ChainMaid) Β· [PaintMask](https://github.com/GareBear99/PaintMask_Free-JUCE-Plugin) Β· [WURP](https://github.com/GareBear99/WURP_Toxic-Motion-Engine_JUCE) Β· [AETHER](https://github.com/GareBear99/AETHER_Choir-Atmosphere-Designer) Β· [WhisperGate](https://github.com/GareBear99/WhisperGate_Free-JUCE-Plugin) Β· [RiftWave](https://github.com/GareBear99/RiftWaveSuite_RiftSynth_WaveForm_Lite) Β· [FreeSampler](https://github.com/GareBear99/FreeSampler_v0.3) Β· [VF-PlexLab](https://github.com/GareBear99/VF-PlexLab) Β· [PAP-Forge-Audio](https://github.com/GareBear99/PAP-Forge-Audio)
>
> π§ **SoundCloud:** [TizWildin on SoundCloud](https://soundcloud.com/tizwildin) β original music, remixes, VIP mixes, experimental drops, and underground releases.
>
> π [Free Packs & Samples](#tizwildin-free-sample-packs) β jump to free packs & samples
>
> π΅ [Awesome Audio](https://github.com/GareBear99/awesome-audio-plugins-dev) β My (FREE) Awesome Audio Dev List
>
> βΆοΈ **[YouTube](https://www.youtube.com/@gfgfvmhj)** β music, visuals, demos, and releases
> π **[Voxel Audio](https://github.com/GareBear99/Voxel_Audio)** β free RGB waveform visualizer and audio export tool
> π **[Facebook Page](https://www.facebook.com/profile.php?id=61564485196765)** β TizWildin / GareBearProductionz updates and Media
π§ [Awesome Audio Lists](https://github.com/GareBear99/awesome-audio-lists) β even more audio lists, submission routes, and promotional directories
FreeEQ8 is a professional-grade EQ8 / EQ Eight inspired parametric equalizer, free and open-source 8-band parametric EQ plugin for macOS, Linux, and Windows. Linear phase, dynamic EQ, match EQ, per-band drive, band linking, M/S processing, oversampling, and a real-time spectrum analyzer β all in a single, zero-cost plugin. Built with JUCE for VST3 and AU.
ProEQ8 is one of the most advanced EQs available, competing directly with top tools like ZL EQ and TDR Nova.
Works with Reaper! Tested and built on Ableton 10+
> ποΈ **[Release Vault](https://garebear99.github.io/TizWildin-Release-Vault/)** β official monetized releases, distributed tracks, and catalog proof
> ποΈ **Release Vault Repo:** [https://github.com/GareBear99/TizWildin-Release-Vault](https://github.com/GareBear99/TizWildin-Release-Vault)
### β¬οΈ Download Now β Free
FabFilter Pro-Q alternative for $0β$20
2min Demo ProEQ8 is included!
**[All releases β](https://github.com/GareBear99/FreeEQ8/releases)**
## FreeEQ8 in Ableton Live



## π How FreeEQ8 Compares
| Feature | **FreeEQ8** | FabFilter Pro-Q 4 | ZL Equalizer 2 | TDR Nova |
|---------|:-----------:|:------------------:|:--------------:|:--------:|
| **Price** | **Free** | $199 | Free | Free |
| **Open Source** | **GPL-3.0** | β | AGPL-3.0 | β |
| Bands | 8 | 24 | 24 | 4 + HP/LP |
| Dynamic EQ | **β** (thresh / ratio / atk / rel) | β | β | β |
| Linear Phase | **β** | β | β | β |
| Match EQ | **β** | β | β (WIP) | β |
| Mid/Side | **β** (per-band) | β | β | β (free) |
| Per-Band Drive | **β** (tanh saturation) | β | β | β |
| Band Linking | **β** (groups A/B) | β | β | β |
| Oversampling | **β** (1Γβ8Γ) | internal | β | β |
| Adaptive Q | **β** | β | β | β |
| Spectrum Analyzer | **β** (4096-pt FFT) | β | β | β |
| Level Meter | **β** (peak + RMS) | β | β | β |
| Undo / Redo | **β** | β | β | β |
| Collision Detection | β (Pro) | β | β | β |
| Surround / Atmos | β | β | β | β |
| Formats | VST3, AU | VST3, AU, AAX, CLAP | VST3, AU, LV2 | VST3, AU, AAX |
> **FreeEQ8 is the only free EQ that combines linear phase + dynamic EQ + match EQ + per-band saturation + band linking in one plugin.**
## β‘ ProEQ8 β Available Now ($20)
> **Love FreeEQ8? ProEQ8 takes everything further.**
[](https://github.com/GareBear99/FreeEQ8/releases/latest)
ProEQ8 is the commercial big brother of FreeEQ8 β same rock-solid DSP engine, massively expanded. Included in the [latest release download](https://github.com/GareBear99/FreeEQ8/releases/latest).
| | **FreeEQ8** (Free) | **ProEQ8** ($20) |
|---|:---:|:---:|
| Bands | 8 | **24** |
| Saturation Modes | tanh | **Tube Β· Tape Β· Transistor Β· Tanh** |
| A/B Comparison | β | **β** (instant snapshot toggle) |
| Auto-Gain Bypass | β | **β** (RMS-matched) |
| Piano Roll Overlay | β | **β** (note frequency reference) |
| Collision Detection | β | **β** (overlapping band warnings) |
| Factory Presets | 30 | **30+** (genre-specific) |
| Dynamic EQ | β | β |
| Linear Phase | β | β |
| Match EQ | β | β |
| Mid/Side | β | β |
| Oversampling | β | β |
| Band Linking | β | β |
| Formats | VST3, AU | VST3, AU |
**ProEQ8 is included in the macOS DMG download.** A license key is required to unlock it β purchase through the link above to receive your key via email. Without a license, ProEQ8 runs in demo mode: 2 minutes of clean playback, then a 30-second mute window (repeats).
## π§ Smart EQ Layer (v2.3 foundation)
FreeEQ8 is adding a real-time decision layer on top of the existing 8-band engine β not to replace surgical control, but to make getting to a clean mix faster than most paid EQs.
**Shipped now (v2.3 DSP foundation, no UI wiring yet):**
- `Source/DSP/ResonanceDetector.h` β log-frequency peak finder that produces up to 4 ranked suggestion bands with recommended frequency, cut-gain, Q, confidence score, and a semantic label ("mud", "boxiness", "harshness", "sibilance" β¦).
- `Source/DSP/IntentMode.h` β behavioural biasing: `None` / `Vocal Clean` / `Drum Punch` / `Guitar Space` / `Master Polish`. Each mode shifts the detector's scoring curve toward the frequency zones that matter for that source, without forcing preset bands.
- `Source/DSP/FrequencyExplainer.h` β static frequency β semantic description map powering the Explain-on-hover UX ("Cutting mud (320 Hz)" / "Adding air (12 kHz)").
- Deterministic, allocation-free, UI-thread safe β piggybacks on the existing triple-buffered `SpectrumFIFO`.
**Coming next (UI surfacing, tracked in [`docs/SMART_EQ_LAYER.md`](docs/SMART_EQ_LAYER.md)):**
- glowing suggestion-node overlay on the response curve
- one-click βapply suggestionβ that drops a peak into the next unused band
- Explain-on-hover popup when mousing over any band
- `intent_mode` APVTS parameter + small editor dropdown
- Zero-Lag auto-switch between linear-phase (precision) and minimum-phase (real-time)
No other free open-source 8-band EQ currently combines intent-aware resonance detection + explain-on-hover + one-click apply. See [`docs/SMART_EQ_LAYER.md`](docs/SMART_EQ_LAYER.md) for the full algorithm, status matrix, and next-commit plan.
## π Benchmarks & RT-safety
FreeEQ8 / ProEQ8 v2.2.0 ships with a proven real-time-safe DSP engine:
- **Zero heap allocation on the audio thread** for any user action (pooled oversamplers).
- **Canonical swap-chain triple-buffer** for both the spectrum FIFO and the linear-phase FIR kernel β verified under concurrent stress (3 runs Γ 400 ms, ~600 M samples, 0 tears).
- **Linear-phase FIR rebuild on a dedicated `juce::Thread`** β no FFT work on the audio thread.
- **MatchEQ chunking** handles DAW blocks of any size (previously dropped on `n > fftSize`).
Full evidence and numbers:
- [**Milestone A report**](docs/MILESTONE_A_REPORT.md) β math, benchmarks, stress-test results, sonic-impact analysis.
- [**v2.2.0 release readiness**](docs/RELEASE_v2.2.0.md) β what's verified green/yellow/red.
- [**`Tests/AuditBench.cpp`**](Tests/AuditBench.cpp) β reproducible micro-benchmarks (`clang -O3 -DNDEBUG -pthread`).
- [**`Tests/AuditRegressionTest.cpp`**](Tests/AuditRegressionTest.cpp) β concurrent-stress invariants for the triple-buffer + chunking patterns.
## β¨ Features
### Core EQ
- **8 Independent Bands** β full parametric control (frequency, Q, gain)
- **6 Filter Types** per band: Bell, Low Shelf, High Shelf, High Pass, Low Pass, Bandpass
- **Multiple Slopes** β 12 / 24 / 48 dB/oct via cascaded biquad stages
- **Per-Band Enable/Disable & Solo** for A/B comparison and audition
- **Parameter Smoothing** (20ms linear interpolation, coefficients refreshed every 16 samples)
### Advanced Processing
- **Linear Phase Mode** β symmetric FIR from combined biquad magnitude, overlap-add FFT convolution (2048-sample latency when active)
- **Dynamic EQ** β per-band envelope follower with sidechain bandpass, threshold, ratio, attack & release
- **Per-Band Saturation / Drive** β gain-compensated tanh waveshaper (0β100%)
- **Mid/Side Processing** β M/S encode/decode with per-band channel routing (Both / L-Mid / R-Side)
- **Oversampling** β 1x / 2x / 4x / 8x using JUCE polyphase IIR half-band filters
- **Band Linking** β link groups A/B propagate frequency (ratio), gain & Q (delta) changes
- **Match EQ** β capture a reference spectrum, analyze current signal, compute & apply per-bin correction via FFT
- **Adaptive Q** β automatically widens Q with increasing gain
### Visualization & UI
- **Real-Time Spectrum Analyzer** β 4096-point FFT, Hann window, pre/post EQ toggle
- **Interactive Response Curve** β composite + per-band colored curves with dB/frequency grid
- **Draggable Band Nodes** β click-drag for freq/gain, shift+drag for Q, right-click context menu
- **Stereo Level Meter** β peak hold + RMS display
- **Selected-Band Paradigm** β 8 colored band buttons, single set of controls rebound per selection
- **Dark Theme** β resizable UI (750Γ550 to 1400Γ900)
### Global Controls
- **Output Gain** (-24 dB to +24 dB)
- **Scale** (0.1x to 2x) β scales all band gains simultaneously
- **Preset System** β save / load / delete, 30 factory presets
- **Undo / Redo** β integrated with JUCE UndoManager via APVTS
- **State Save/Restore** β all settings persist in your DAW project
### DSP Specifications
- Stereo processing (or Mid/Side)
- Sample rates: 44.1 kHz to 192 kHz+
- Transposed Direct Form II biquad with double-precision (64-bit) internal arithmetic
- RBJ Audio EQ Cookbook coefficients
- Zero latency in minimum-phase mode; linear phase adds 2048 samples
- Low CPU usage (disable unused bands, lower oversampling to reduce load)
### Compatibility
- **macOS**: 10.13 High Sierra and later (universal binary: Intel + Apple Silicon)
- **Linux**: Debian/Ubuntu 20.04+ (VST3 only; see build instructions for dependencies)
- **Windows**: 10 and later (64-bit)
- **DAWs tested**: Ableton Live 10+, Logic Pro, FL Studio, Bitwig, REAPER
- **Formats**: VST3, AU (macOS), Standalone (all platforms)
## π Quick Start
### macOS
```bash
git clone --recursive https://github.com/GareBear99/FreeEQ8.git
cd FreeEQ8
./build_macos.sh
```
### Linux (Debian/Ubuntu)
```bash
git clone --recursive https://github.com/GareBear99/FreeEQ8.git
cd FreeEQ8
./build_linux.sh # installs deps via apt, then builds
```
### Windows
```powershell
git clone --recursive https://github.com/GareBear99/FreeEQ8.git
cd FreeEQ8
.\build_windows.ps1
```
Plugins will be automatically installed to your system plugin directories.
## π Build Instructions
### Prerequisites
#### macOS
- Xcode Command Line Tools: `xcode-select --install`
- CMake 3.15+: `brew install cmake`
#### Linux (Debian/Ubuntu)
- GCC 9+ or Clang 10+
- CMake 3.15+
- JUCE system dependencies (installed automatically by `build_linux.sh`):
`libasound2-dev libjack-jackd2-dev libfreetype6-dev libx11-dev libxcomposite-dev libxcursor-dev libxext-dev libxfixes-dev libxinerama-dev libxrandr-dev libxrender-dev libwebkit2gtk-4.0-dev`
#### Windows
- Visual Studio 2019+ with C++ build tools
- CMake 3.15+
### Detailed Build Steps
#### 1. Clone with JUCE Submodule
```bash
git clone --recursive https://github.com/GareBear99/FreeEQ8.git
cd FreeEQ8
```
If you already cloned without `--recursive`:
```bash
git submodule update --init --recursive
cd JUCE && git checkout 7.0.12 && cd ..
```
#### 2. Build
**macOS:**
```bash
chmod +x build_macos.sh
./build_macos.sh
```
**Linux:**
```bash
chmod +x build_linux.sh
./build_linux.sh
```
**Windows:**
```powershell
.\build_windows.ps1
```
#### 3. Plugin Installation
**macOS (automatic):**
- VST3: `~/Library/Audio/Plug-Ins/VST3/FreeEQ8.vst3`
- AU: `~/Library/Audio/Plug-Ins/Components/FreeEQ8.component`
**Linux (manual):**
- Copy `build/FreeEQ8_artefacts/Release/VST3/FreeEQ8.vst3` to `~/.vst3/`
**Windows (manual):**
- Copy `build\FreeEQ8_artefacts\Release\VST3\FreeEQ8.vst3` to:
- `C:\Program Files\Common Files\VST3\`
#### 4. Rescan in Your DAW
- **Ableton Live**: Preferences β Plug-ins β Rescan
- **Logic Pro**: Automatic detection
- **FL Studio**: Options β Manage plugins β Find plugins
## ποΈ Usage Guide
### Parameter Ranges
| Parameter | Range | Scale | Description |
|-----------|-------|-------|-------------|
| Frequency | 20 Hz β 20 kHz | Logarithmic | Center/cutoff frequency |
| Q | 0.1 β 24 | Logarithmic | Bandwidth (0.1 = wide, 24 = narrow) |
| Gain | -24 dB to +24 dB | Linear | Boost/cut amount |
| Slope | 12 / 24 / 48 dB/oct | Discrete | Filter steepness (1/2/4 cascaded stages) |
| Drive | 0 β 100 % | Linear | Per-band tanh saturation amount |
| Channel | Both / L-Mid / R-Side | Discrete | Per-band channel routing |
| Link Group | -- / A / B | Discrete | Band linking group |
| Dyn Threshold | -60 dB to 0 dB | Linear | Dynamic EQ threshold |
| Dyn Ratio | 1:1 β 20:1 | Logarithmic | Dynamic EQ compression ratio |
| Dyn Attack | 0.1 β 100 ms | Logarithmic | Dynamic EQ attack time |
| Dyn Release | 1 β 1000 ms | Logarithmic | Dynamic EQ release time |
| Output | -24 dB to +24 dB | Linear | Master output level |
| Scale | 0.1x β 2x | Linear | Global gain multiplier |
### Common EQ Techniques
#### Surgical EQ (Problem Frequency Removal)
```
Band: Bell filter
Q: 6-12 (narrow)
Gain: -6 to -12 dB
```
#### Musical EQ (Broad Tonal Shaping)
```
Band: Bell/Shelf filter
Q: 0.5-2 (wide)
Gain: Β±3 to Β±6 dB
```
#### High-Pass Filtering
```
Band: HighPass filter
Freq: 20-120 Hz (depends on source)
Q: 0.7 (standard)
```
### Example Settings
**Kick Drum:**
- Band 1: Bell @ 60Hz, Q=1.5, +4dB (sub thump)
- Band 2: Bell @ 200Hz, Q=3, -3dB (cardboard removal)
- Band 3: Bell @ 3kHz, Q=2, +2dB (beater click)
**Acoustic Guitar:**
- Band 1: HighPass @ 80Hz (rumble removal)
- Band 2: Bell @ 200Hz, Q=1.5, -2dB (boominess)
- Band 3: Bell @ 3kHz, Q=1, +3dB (presence)
- Band 4: HighShelf @ 8kHz, +2dB (air)
**Vocals:**
- Band 1: HighPass @ 80Hz (rumble)
- Band 2: Bell @ 250Hz, Q=2, -3dB (muddiness)
- Band 3: Bell @ 1kHz, Q=1, +2dB (body)
- Band 4: Bell @ 5kHz, Q=2, +3dB (clarity)
## π§ Technical Details
### Architecture
```
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β FreeEQ8 Audio Processor β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
β Input Buffer (Stereo) β
β β β
β Spectrum FIFO (pre-EQ) βββ UI spectrum display β
β β β
β ββββ IF linear_phase ββββ βββ ELSE (min-phase) ββββ
β β Build composite mag β β Oversampling β (opt.) ββ
β β response from biquads β β β ββ
β β β β β M/S Encode (optional) ββ
β β FIR convolution β β β ββ
β β (overlap-add FFT, β β Per-band loop Γ8: ββ
β β 4096-tap, 8192 FFT, β β β Dyn EQ envelope ββ
β β 2048-sample latency) β β β Smooth + update ββ
β β β β β β coefficients ββ
β β Output Gain β β β Cascaded biquads ββ
β βββββββββββββββββββββββββ β β (1/2/4 stages) ββ
β β β Drive (tanh) ββ
β β β ββ
β β Output Gain & Scale ββ
β β β ββ
β β M/S Decode (optional) ββ
β β β ββ
β β Oversampling β (opt.) ββ
β ββββββββββββββββββββββββββ
β β β
β Match EQ correction (FFT overlap-add, optional) β
β β β
β Spectrum FIFO (post-EQ) βββ UI spectrum display β
β β β
β Output Metering (peak hold + RMS) β
β β β
β Output Buffer (Stereo) β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
```
### DSP Implementation
- **Filter Structure**: Transposed Direct Form II biquad (Biquad.h)
- **Coefficient Calculation**: RBJ Audio EQ Cookbook
- **Smoothing**: Linear interpolation over 20ms
- **Update Rate**: Coefficients refreshed every 16 samples during smoothing
- **Precision**: Double-precision (64-bit) coefficients and internal state; float I/O
- **Linear Phase**: 4096-tap symmetric FIR, 8192-point FFT, overlap-add convolution
- **Dynamic EQ**: One-pole envelope follower with sidechain bandpass at band frequency
- **Spectrum**: 4096-point FFT, Hann window, lock-free SPSC FIFO
### Project Structure
```
FreeEQ8/
βββ Source/
β βββ PluginProcessor.h/.cpp # Main audio processor
β βββ PluginEditor.h/.cpp # UI editor & layout
β βββ DSP/
β β βββ Biquad.h # Biquad filter implementation
β β βββ EQBand.h # EQ band with smoothing, drive & dynamic EQ
β β βββ SpectrumFIFO.h # Lock-free FFT FIFO
β β βββ LinearPhaseEngine.h # FIR-based linear-phase EQ engine
β β βββ MatchEQ.h # Reference capture & correction curve
β βββ UI/
β β βββ ResponseCurveComponent.h/.cpp # EQ curve + spectrum + nodes
β β βββ LevelMeter.h # Stereo peak/RMS level meter
β βββ Presets/
β β βββ PresetManager.h/.cpp # Preset save/load system
β βββ UpdateChecker.h # GitHub releases update checker
β βββ LicenseValidator.h # Offline license key validation
βββ server/
β βββ stripe-webhook.js # Cloudflare Worker for Stripe β license
β βββ wrangler.toml # Wrangler deployment config
β βββ package.json # Server dependencies (wrangler)
βββ STRIPE_SETUP.md # ProEQ8 Stripe deployment guide
βββ docs/ # Screenshots & assets
βββ JUCE/ # JUCE framework (submodule)
βββ build/ # Build output (ignored)
βββ CMakeLists.txt # CMake config (FreeEQ8 + ProEQ8 targets)
βββ build_macos.sh # macOS build script
βββ build_linux.sh # Linux build script
βββ build_windows.ps1 # Windows build script
βββ package_macos.sh # macOS DMG packaging script
βββ .gitignore # Git ignore rules
βββ README.md # This file
```
## π£οΈ Roadmap
### v0.4.0
- [x] Real-time spectrum analyzer
- [x] Interactive frequency response curve display
- [x] Draggable band nodes on curve
- [x] Adaptive Q implementation
- [x] Band solo/audition mode
- [x] Preset management system
### v0.5.0
- [x] Multiple filter slopes (12/24/48 dB/oct) via cascaded biquads
- [x] Mid/Side processing mode with M/S encode/decode
- [x] Per-band channel routing (Both / L-Mid / R-Side)
- [x] Oversampling options (1x, 2x, 4x, 8x)
- [x] Output metering with peak hold and RMS
- [x] Resizable UI (700Γ500 to 1400Γ900)
### v1.0.0
- [x] Linear phase mode (FIR convolution via overlap-add FFT)
- [x] Dynamic EQ capabilities (per-band envelope follower with threshold/ratio/attack/release)
- [x] Band linking (link groups A/B with delta-based freq/gain/Q propagation)
- [x] Per-band saturation/drive (gain-compensated tanh waveshaper)
- [x] Undo/Redo system (integrated with APVTS UndoManager)
- [x] Match EQ functionality (capture reference spectrum, compute & apply correction)
### v2.0.0
- [x] Online license activation (2 devices per key) with Stripe checkout
- [x] ProEQ8 commercial target (24 bands, 4 saturation modes, A/B, auto-gain)
- [x] Cloudflare Worker license server + Resend email delivery
- [x] Demo mode for unactivated ProEQ8 (mutes 30s every 5min)
### v2.1.0
- [x] Standalone app included in all platform packages
- [x] Hardened ProEQ8 license: device-bound activation, 7-day re-verify, 30-day offline grace
- [x] Server /verify endpoint for periodic re-validation
- [x] Obfuscated signing secret in binary
- [x] Fixed JUCE 7.0.12 API compatibility
### v2.2.0 (Current Release)
- [x] Real-time safety: zero heap allocation on the audio thread for any user action (Milestone A / A1)
- [x] `SpectrumFIFO` + `LinearPhaseEngine` kernel on canonical swap-chain triple-buffer (A4 / A5)
- [x] Linear-phase FIR rebuild moved to a dedicated `juce::Thread` worker (A5)
- [x] `MatchEQ::applyCorrection` handles arbitrarily large DAW blocks instead of silent early-return (A3)
- [x] Editor modal dialogs + license HTTP callbacks are lifetime-safe via `juce::WeakReference` (A2)
- [x] Demo cadence: 2 minutes of clean playback + 30-second mute window
- [x] `getTailLengthSeconds` reports the MatchEQ overlap-add tail for offline renders (A7)
### v2.3.0 (In Progress) β Smart EQ Layer
- [x] Resonance detector (log-frequency, intent-weighted peak finder)
- [x] Intent Mode weighting curves (None / Vocal Clean / Drum Punch / Guitar Space / Master Polish)
- [x] Frequency Explainer semantic map
- [ ] `intent_mode` APVTS parameter + editor dropdown
- [ ] Response-curve overlay with glowing suggestion nodes
- [ ] Explain-on-hover popup on band nodes
- [ ] One-click βapply suggestionβ into next unused band
- [ ] Zero-Lag auto-switch between linear-phase and minimum-phase modes
## π€ Contributing
Contributions are welcome! Here's how you can help:
1. **Fork the repository**
2. **Create a feature branch**: `git checkout -b feature/amazing-feature`
3. **Commit your changes**: `git commit -m 'Add amazing feature'`
4. **Push to the branch**: `git push origin feature/amazing-feature`
5. **Open a Pull Request**
### Development Guidelines
- Follow existing code style
- Add comments for complex DSP algorithms
- Test on both macOS and Windows if possible
- Update documentation for new features
### Areas for Contribution
- π¨ UI/UX improvements
- π Additional filter types
- π Bug fixes and optimizations
- π Documentation improvements
- π§ͺ Unit tests
## π Changelog
### v2.3.0-dev (2026-04-23)
- β
Smart EQ Layer DSP foundation: `ResonanceDetector`, `IntentMode`, `FrequencyExplainer` shipped as standalone headers with zero wiring into `processBlock` (no risk to existing users).
- β
Design + roadmap documented in `docs/SMART_EQ_LAYER.md`; status matrix tracks what's shipped vs. pending UI surfacing.
- Next cut will wire the `intent_mode` parameter, detector instance, and UI overlay.
### v2.2.0 (2026-04-23)
- β
Milestone A real-time safety + correctness pass: oversampler pool, triple-buffered SPSC for spectrum FIFO + linear-phase kernel, off-audio-thread FIR rebuild, MatchEQ chunking for oversized blocks, editor lifetime safety
- β
Demo cadence: 2 min clean + 30 s mute (was 4:30 / 30 s)
- β
`getTailLengthSeconds` covers MatchEQ tail (offline render correctness)
- β
See `docs/MILESTONE_A_REPORT.md` for proofs, benchmarks, and stress-test evidence
### v2.1.0 (2026-03-25)
- β
Standalone app now included in macOS DMG, Windows ZIP, Linux tar.gz
- β
Hardened ProEQ8 license system: device-bound activation (2 systems per key)
- β
Periodic server re-verification every 7 days (30-day offline grace period)
- β
XOR-obfuscated signing secret in binary
- β
Server `/verify` endpoint for client re-validation
- β
Background license re-verify on ProEQ8 editor open when overdue
- β
Fixed `inPostBody` β `inPostData` for JUCE 7.0.12 API
- β
Added `workflow_dispatch` trigger for manual CI runs
### v2.0.0 (2026-03-25)
- β
Online license activation for ProEQ8 (2-device limit per key)
- β
Stripe Checkout β Cloudflare Worker webhook β HMAC-signed license key β email via Resend
- β
Device fingerprinting (hardware UUID on macOS, MachineGuid on Windows, machine-id on Linux)
- β
Demo mode for unactivated ProEQ8 (mutes 30s every 5min)
- β
Deactivation support to free device slots
### v1.1.0 (ProEQ8 + Enhancements)
- β
ProEQ8 commercial target: 24-band parametric EQ (same source, PROEQ8=1 compile flag)
- β
4 saturation modes per band (Pro): Tanh, Tube, Tape, Transistor
- β
A/B comparison (Pro): instant snapshot toggle with Copy AβB / BβA
- β
Auto-gain bypass: RMS-matched loudness compensation for honest A/B listening
- β
Piano roll overlay (Pro): musical note reference lines C1βC8 on the response curve
- β
Collision detection (Pro): amber warning when bands overlap within 1/3 octave
- β
Update checker: background thread checks GitHub releases, shows banner when new version available
- β
License validator + activation dialog (Pro): offline license keys, demo mode (mute 30s every 5min)
- β
Stripe webhook serverless function: Cloudflare Worker generates license keys, emails via Resend
- β
30 genre-specific factory presets
- β
Fixed preset directory using product name (not hardcoded)
- β
Fixed factory preset OOB access for ProEQ8's 24-band layout
### v1.0.0 (2026-02-25)
- β
Linear phase mode: symmetric FIR from combined biquad magnitude, overlap-add FFT convolution (2048-sample latency)
- β
Dynamic EQ: per-band envelope follower with sidechain bandpass, threshold, ratio, attack & release
- β
Band linking: link groups A/B propagate freq (ratio-based), gain & Q (delta-based) changes
- β
Per-band saturation/drive: gain-compensated tanh waveshaper (0β100%)
- β
Undo/Redo system via juce::UndoManager integrated with APVTS
- β
Match EQ: capture reference spectrum, compute per-bin correction, FFT-based application
- β
New parameters: drive, dynamic EQ (threshold/ratio/attack/release), link group per band
- β
Updated UI: undo/redo buttons, dynamic EQ toggle + threshold, link group selector, drive knob
### v0.5.0 (2026-02-25)
- β
Multiple filter slopes: 12/24/48 dB/oct per band via cascaded biquad stages
- β
Mid/Side processing mode with stereo encode/decode
- β
Per-band channel routing: Both / Left(Mid) / Right(Side)
- β
Oversampling: 1x / 2x / 4x / 8x using JUCE polyphase IIR
- β
Output level metering with peak hold and RMS display
- β
Resizable UI with proportional layout (750Γ550 to 1400Γ900)
- β
New global controls: Oversampling selector, Processing Mode selector
- β
Per-band controls: Slope selector, Channel routing selector
### v0.4.0 (2026-02-25)
- β
Real-time spectrum analyzer (4096-point FFT, pre/post EQ toggle)
- β
Interactive frequency response curve display with grid
- β
Draggable band nodes (click-drag for freq/gain, shift+drag for Q)
- β
Per-band colored curves with composite response overlay
- β
Adaptive Q DSP implementation (auto-scales Q with gain)
- β
Band solo/audition mode ("S" button per band)
- β
Preset management (save/load/delete, 8 factory presets)
- β
Complete UI overhaul (900Γ620, dark theme, response curve on top)
- β
Right-click context menu on band nodes (type change, enable/disable)
- β
Attribution updated to Gary Doman (GareBear99)
### v0.3.0 (2026-01-28)
- β
Added output gain control (-24dB to +24dB)
- β
Added global scale parameter (0.1x to 2x)
- β
Added adaptive Q toggle (UI only, DSP pending)
- β
Enhanced UI layout with global controls
- β
Fixed JUCE 7.0.12 compatibility issues
- β
Fixed VST3 build on macOS with Xcode 12
- β
Improved parameter smoothing
- β
Updated build scripts for reliability
### v0.2.0
- 8-band parametric EQ
- RBJ biquad filters (Bell, Shelf, HP, LP)
- Parameter smoothing (20ms)
- State save/restore via APVTS
- CMake build system for VST3/AU
### v0.1.0
- Initial prototype
## π License
This project is licensed under the GNU General Public License v3.0 - see the [LICENSE](LICENSE) file for details.
**Note:** JUCE has its own licensing requirements. For commercial use, you may need a JUCE license. See [JUCE Licensing](https://juce.com/discover/licensing) for details.
## β οΈ Legal Notice
FreeEQ8 is an **original implementation** of a parametric EQ plugin. It is:
- **NOT** affiliated with, endorsed by, or derived from Ableton AG
- **NOT** a clone of Ableton's EQ Eight
- An independent, open-source project
- Built using public-domain DSP algorithms (RBJ Audio EQ Cookbook)
## π Known Issues
- Changing oversampling mid-playback may cause a brief click
- Linear phase mode adds 2048 samples of latency (reported to DAW via `setLatencySamples`)
- Match EQ capture is mono-summed; correction is per-channel
- Linear phase mode does not currently apply M/S, per-band drive, or dynamic EQ (minimum-phase path only)
Report issues at: https://github.com/GareBear99/FreeEQ8/issues
## π‘ Tips & Tricks
### Performance Optimization
- Disable unused bands to reduce CPU load
- Use wider Q values (lower numbers) for smoother processing
- Enable adaptive Q for automatic gain-dependent Q adjustment
### Mixing Workflow
1. Start with subtractive EQ (cut problem frequencies)
2. Use narrow Q to identify resonances
3. Use wide Q for musical boosts
4. Check your EQ in mono to avoid phase issues
### Sound Design
- Stack multiple bell filters at the same frequency with different Q values
- Automate the scale parameter for dramatic filter sweeps
- Use extreme Q values (>10) for creative resonances
## π Acknowledgments
- **JUCE Framework** - Cross-platform audio plugin framework
- **Robert Bristow-Johnson** - RBJ Audio EQ Cookbook
- **Audio Plugin Development Community** - For knowledge sharing
- **Ableton** - For inspiration (not affiliation)
## π Support the Project
FreeEQ8 is free and open source. If it's useful to you, consider supporting development:
Other ways to help:
- β **Star this repo** β helps others find FreeEQ8
- π **Report bugs** β [open an issue](https://github.com/GareBear99/FreeEQ8/issues)
- π **Contribute** β PRs are welcome
- π£ **Spread the word** β tell a producer friend
## π§ Contact
- **Issues**: [GitHub Issues](https://github.com/GareBear99/FreeEQ8/issues)
- **Discussions**: [GitHub Discussions](https://github.com/GareBear99/FreeEQ8/discussions)
- **Email**: neovectr.inc@gmail.com
---
**Other Projects by Me!**
https://github.com/GareBear99/TizWildinEntertainmentHUB
https://github.com/GareBear99/awesome-audio-plugins-dev
https://github.com/GareBear99/PaintMask_Free-JUCE-Plugin
https://github.com/GareBear99/WURP_Toxic-Motion-Engine_JUCE
https://github.com/GareBear99/RiftWaveSuite_RiftSynth_WaveForm_Lite
https://github.com/GareBear99/AETHER_Choir-Atmosphere-Designer
https://github.com/GareBear99/WhisperGate_Free-JUCE-Plugin
https://github.com/GareBear99/Therum_JUCE-Plugin
https://github.com/GareBear99/MixMaid
https://github.com/GareBear99/BassMaid
https://github.com/GareBear99/SpaceMaid
https://github.com/GareBear99/GlueMaid
https://github.com/GareBear99/XyloCore
**Built with β€οΈ by Gary Doman (GareBear99/TizWildin)**
*"Great sound shouldn't cost anything"*
## TizWildin FREE sample packs
| Pack | Description |
|------|-------------|
| [**TizWildin-Aurora**](https://github.com/GareBear99/TizWildin-Aurora) | 3-segment original synth melody pack with loops, stems, demo renders, and neon/cinematic phrasing |
| [**TizWildin-Obsidian**](https://github.com/GareBear99/TizWildin-Obsidian) | Dark cinematic sample pack with choir textures, menu loops, transitions, bass, atmosphere, drums, and electric-banjo extensions |
| [**TizWildin-Skyline**](https://github.com/GareBear99/TizWildin-Skyline) | 30 BPM-tagged synthwave and darkwave loops with generator snapshot and dark neon additions |
| [**TizWildin-Chroma**](https://github.com/GareBear99/TizWildin-Chroma) | Multi-segment game synthwave loop sample pack from TizWildin Entertainment |
| [**TizWildin-Chime**](https://github.com/GareBear99/TizWildin-Chime) | Multi-part 88 BPM chime collection spanning glass, void, halo, reed, and neon synthwave lanes |
| [**Free Violin Synth Sample Kit**](https://github.com/GareBear99/Free-Violin-Synth-Sample-Kit) | Physical-model violin sample kit rendered from the Instrudio violin instrument |
| [**Free Dark Piano Sound Kit**](https://github.com/GareBear99/Free-Dark-Piano-Sound-Kit) | 88 piano notes + dark/cinematic loops and MIDI |
| [**Free 808 Producer Kit**](https://github.com/GareBear99/Free-808-Producer-Kit) | 94 hand-crafted 808 bass samples tuned to every chromatic key |
| [**Free Riser Producer Kit**](https://github.com/GareBear99/Free-Riser-Producer-Kit) | 115+ risers and 63 downlifters - noise, synth, drum, FX, cinematic |
| [**Phonk Producer Toolkit**](https://github.com/GareBear99/Phonk_Producer_Toolkit) | Drift phonk starter kit - 808s, cowbells, drums, MIDI, templates |
| [**Free Future Bass Producer Kit**](https://github.com/GareBear99/Free-Future-Bass-Producer-Kit) | Loops, fills, drums, bass, synths, pads, and FX |
### Related audio projects
- [**VF-PlexLab**](https://github.com/GareBear99/VF-PlexLab) - VocalForge PersonaPlex Lab starter repo for a JUCE plugin + local backend + HTML tester around NVIDIA PersonaPlex.
- [**PAP-Forge-Audio**](https://github.com/GareBear99/PAP-Forge-Audio) - Procedural Autonomous Plugins runtime for generating, branching, validating, and restoring plugin projects from natural-language sound intent.