Repository navigation
Releases: GareBear99/FreeEQ8
Release list
v2.3.1
FreeEQ8 v2.3.1
First release with macOS, Windows and Linux artifacts from a single tag, each
validated by pluginval at strictness level 10.
On release history, for accuracy: v1.0.0 did ship a Windows ZIP, and it was
the more popular download of that release — 68 downloads versus 8 for the macOS
DMG. Windows then regressed, and every release from v1.1.0 through v2.3.0 was
macOS-only. Linux had never shipped at all. So this release restores Windows
and introduces Linux, rather than being the first Windows build.
⚠ ProEQ8 in this release is a demo that cannot be unlocked
ProEQ8 is bundled in the macOS DMG. Do not use it for real work in v2.3.1.
- No working purchase path. The configured checkout host does not resolve and
the Stripe products appear not to exist, so no license key can be issued. Demo
mode cannot be exited by any means. - Demo mode interrupts audio — 2 minutes clean, then a 30-second mute window,
repeating. Offline export is disabled entirely. - Known shelf defect. ProEQ8 shelves overshoot the set gain by up to 24 dB at
high Q; a +12 dB shelf at Q 24 peaks near +36 dB. FreeEQ8 shelves were corrected
in this release and are bounded at every Q; ProEQ8 shelves were not. - macOS only. ProEQ8 builds and validates on Windows and Linux but is not
packaged for them.
Use FreeEQ8 instead. It is unrestricted during real-time playback, has no nag
screens, and its shelf response is measured monotonic at every Q.
All four points are targeted for v2.3.2.
Audio fixes (FreeEQ8)
Shelf filter NaN. RBJ's shelving slope parameter S is defined only for
0 < S <= 1 but was clamped to [0.1, 4.0]. Above S = 1 the square-root
argument can go negative, producing NaN that poisoned the filter state and
reached the output permanently.
Present in every release from v0.3.0 through v2.3.0, reachable on 11.3% of the
exposed parameter space (3,914,000 of 34,774,500 combinations) from Q = 3.80
upward. It affected real-time playback, not only offline export.
There was no effective ceiling: at Q = 8 the response overshoots by 1.80 dB at
+6 dB gain, 7.01 dB at +12 dB, 14.25 dB at +13.5 dB, then goes NaN at +14 dB.
Shelves are now monotonic at every Q (measured 0.00 dB overshoot) with exact
asymptotes. Behaviour at Q <= 2 is bit-identical to prior releases, so presets
in that range are unchanged — and all 25 factory-preset shelves sit at Q = 1.00,
so no factory preset changes.
Band-link propagation race. Re-entrancy was guarded by a plain bool, which
is only sufficient if parameterChanged is single-threaded. Under concurrent
parameter changes the guard failed and setValueNotifyingHost re-entered the
APVTS write path, aborting with EDEADLK. Now an atomic claim via
compare_exchange_strong, so only the winning thread propagates and only that
thread releases.
Build and validation
- Linux: ProEQ8 sets
JUCE_USE_CURL=1but never linked libcurl, so the VST3
target failed with undefinedcurl_*references. Now linked via
find_package(CURL). - Windows: the job hung for six hours to the runner timeout, immediately
afterFreeEQ8_VST3linked, atremoving moduleinfo.json— the signature of
juce_vst3_helper.exefailing to return.VST3_AUTO_MANIFESTis now disabled;
the manifest is optional metadata. The job now completes in under 6 minutes. - Linux: pluginval segfaulted at its
Editortests because a JUCE editor
needs an X display and the runner is headless. Now runs underxvfb-run. - macOS: pluginval's
auvaltest shells out toauvaltoolwith
-strict STRESS -v, which hangs on hosted runners. Excluded via
--disabled-tests;auvalnow runs as a separate non-blocking step. - macOS: DMG creation failed with
hdiutil: create failed - Resource busy.
package_macos.shnow detaches stale volumes, syncs, and retries with backoff.
Tests
Adds two shelf regression tests that run in CI, covering 34,774,500 parameter
combinations across 6 filter types, 5 sample rates and the full frequency, Q and
gain ranges. They assert no non-finite coefficients or output, and that shelf
response stays bounded by the set gain with correct asymptotes.
Downloads
| Platform | File |
|---|---|
| macOS (universal) | FreeEQ8-v2.3.1-macOS.dmg — VST3, AU, Standalone, plus the ProEQ8 demo |
| Windows (x86_64) | FreeEQ8-v2.3.1-Windows.zip — VST3, Standalone |
| Linux (x86_64) | FreeEQ8-v2.3.1-Linux.tar.gz — VST3, Standalone |
Full detail, including measured per-release shelf behaviour, is in
docs/SHELF_RESPONSE.md.
Co-Authored-By: Oz oz-agent@warp.dev
Known limitation — linear phase and narrow low-frequency bands
Linear phase mode cannot accurately render narrow bands at low frequencies. The
FIR is 4096 taps, giving roughly 10.8 Hz of frequency resolution at 44.1 kHz, and
a bell at 100 Hz with Q 16 is only about 6 Hz wide — narrower than the kernel can
represent. The displayed curve will show a deeper cut than you actually get.
Measured, target vs achieved at the band centre (Bell, −12 dB, 44.1 kHz):
| Band | Target | Achieved | Error |
|---|---|---|---|
| 1 kHz, Q 1 | −12.00 dB | −12.00 dB | 0.00 |
| 1 kHz, Q 8 | −12.00 dB | −11.71 dB | +0.29 |
| 5 kHz, Q 16 | −12.00 dB | −11.94 dB | +0.06 |
| 100 Hz, Q 8 | −12.00 dB | −5.78 dB | +6.22 |
| 100 Hz, Q 16 | −12.00 dB | −3.27 dB | +8.73 |
Guidance: use linear phase for broad tonal shaping and mastering moves, where
its phase behaviour is the point. For surgical low-frequency work, leave it off —
the default minimum-phase path renders those bands accurately.
This is not a regression; the behaviour is unchanged from earlier releases and is
a general property of FIR linear-phase EQ. It is documented here with numbers for
the first time. The full-length Hann window was investigated as a cause and ruled out. Measured
error at 100 Hz / Q 16 by window: full Hann +8.73 dB, Tukey 25% +7.40 dB, Tukey
10% +6.85 dB, Tukey 5% +6.71 dB, no window at all +6.48 dB. Removing the window
entirely recovers only 2.25 dB, so kernel length is the real constraint. The
window is deliberately left unchanged, since altering it would change
linear-phase character for every user while still leaving a ~6.5 dB error.
A fix requires a longer FIR at proportionally higher latency (16384 taps would
give ~2.7 Hz resolution at ~186 ms instead of 46 ms) and is tracked for v2.4.0.
Two automatic compensation layers (both active)
Neither analyses spectral content or makes recommendations — that is the separate
Smart EQ layer, which is not wired into this release.
- Proportional Q (UI: Adaptive Q) —
Q_eff = Q * (1 + |gain_dB| * 0.12),
clamped to[0.1, 24]. A Q of 1.0 at +12 dB becomes 2.44, so larger moves
automatically narrow. Standard console behaviour, usually called proportional Q.
Responds to the gain setting, not to the audio. - Auto Gain Compensation (UI: Auto Gain) — per-block input/output RMS
matching,20*log10(inRms/outRms)clamped to ±24 dB, applied through a ~100 ms
one-pole smoother. Genuinely signal-driven, so bypass stays level-neutral and
A/B comparisons are not biased by loudness.
Smart EQ is not active in this release
ResonanceDetector, IntentMode and FrequencyExplainer are implemented and
independently evaluated (F1 0.947, PR-AUC 0.985, precision 1.000 with zero false
positives against committed ground truth), but nothing in PluginProcessor or
PluginEditor references them. There are no suggestion nodes, no hover
explanations and no one-click apply in v2.3.1.
The intent_mode parameter is registered and host-automatable, but it is never
read — automating it has no effect. Host integration is tracked for v2.4.0.
Co-Authored-By: Oz oz-agent@warp.dev
FreeEQ8 v2.3.0
FreeEQ8 v2.3.0 stable release.\n\nHighlights:\n- macOS DMG includes FreeEQ8 and ProEQ8 (VST3/AU plus FreeEQ8 Standalone).\n- CI/CD fixes for macOS, Windows, and Linux builds.\n- Expanded Smart EQ and real-time safety/security documentation.\n- Public README cleanup with BaisMaed trademark sound embedded.\n\nmacOS DMG SHA-256:\n6c11ffdc050d34932a7121e979e442fac869f23842588b1bb8c44b3e904361f6\n\nCo-Authored-By: Oz oz-agent@warp.dev
FreeEQ8 v2.1.0
FreeEQ8 v2.1.0
⬇️ Downloads
| Platform | Format | Status |
|---|---|---|
| macOS | DMG (VST3 + AU + Standalone + ProEQ8) | ✅ Available now |
| Windows | ZIP (VST3 + Standalone) | 🔜 Coming — CI pending |
| Linux | tar.gz (VST3 + Standalone) | 🔜 Coming — CI pending |
Windows/Linux users: you can build from source right now —
git clone --recursiveand runbuild_windows.ps1orbuild_linux.sh.
What's New
- Standalone app included in all platform packages
- Hardened ProEQ8 license system:
- Device-bound activation (2 systems per key)
- Periodic server re-verification (7-day check, 30-day offline grace)
- Obfuscated signing secret
- Server
/verifyendpoint
- FreeEQ8 is completely free — no activation, no limits, no demo mode
- Fixed JUCE 7.0.12 API compatibility
Installation (macOS)
- Open the DMG
- Drag
FreeEQ8.vst3→~/Library/Audio/Plug-Ins2. DragFreeEQ8.vst3→~/Library/Audio/Plug-Ins2. DragFres/Components/ - Drag 4. Drag 4. Drag 4. Drag (standalone)
- Rescan plugins in your DAW
ProEQ8 ($20)
Included in the DMG. Requires a license key — purchase via the repo. Without a key it runs in demo mode (mutes 30s every 5min).
FreeEQ8 v2.0.0 — Online Activation + Bug Fixes
What's New in v2.0.0
Online License Activation (ProEQ8)
- 2-device-per-purchase enforcement — each ProEQ8 license can be activated on up to 2 machines
- Device fingerprinting — stable hardware-based device ID (macOS, Windows, Linux)
- Activation server — Cloudflare Worker with KV-backed license state
- Deactivation support — free up a device slot when moving to a new machine
- Async activation dialog — network call on background thread with progress UI
Bug Fixes
- Spectrum analyzer blank in Reaper (#10) — FIFOs now reset on
prepareToPlay()so the analyzer recovers after offline/online cycles - Thread safety —
SpectrumFIFO::fifoWriteIndexis nowstd::atomic<int> - Linear phase disables features silently (#12) — drive, dynamic EQ, M/S, oversampling controls are now greyed out when linear phase is active
- **We- **We- **We- **We- **We- pl- **We- **We- **We- **We- **ne- **We- **We- **We- **We- **We- pl- **We- **We- **We- **We- *roughout
Full Feature List (FreeE### Full Fea
- 8-band parametric EQ (Be- 8-band parametric EQ (Be- 8-band parametric EQ (Be- 8-band parametric EQ (Be- 8-band parametric Ese- 8-band parametric EQ (Be- 8-band parametric EQ (Be- 8-band parametric EQ (Bereference → auto-correct)
- Per-band saturation/drive
- Mid/Side processing with pe- Mid/Side processing with pe (1x/2x/4x/8x)
- Band linking (groups A/B)
- Adaptive- Adaptive- Adaptive- Adaptive- Adaptive- Adaptive- Adaptive- Adaptive- Adaptive- Resizable UI
ProEQ8 ($20) — Included in Download
- 24 bands
- 4 saturation modes (Tanh, Tube, Tape, Transistor)
- A/B comparison
- Piano roll overlay
-
-
-
-
-
-
-
-
-
- (- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - yo- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - (- - - - - - - - - - - - - - - - - - - - - - copy to
~/.vst3/
-
-
-
-
-
-
-
-
Then rescan plugins in your DAW.
FreeEQ8 v1.1.0 + ProEQ8
What's New in v1.1.0
FreeEQ8 (Free)
- Bandpass filter type added
- 30 factory presets (genre-specific: Vocal, Kick, Guitar, Bass, Drums, Broadcast, EDM, Lo-Fi, and more)
- Tooltips on all controls
- Update checker (notifies when new version available)
- Auto-gain bypass (RMS-matched loudness compensation)
- Bug fixes: spectrum analyzer, state restoration, thread safety, linear phase optimization
ProEQ8 (Commercial - $20)
- 24 fully independent bands (vs 8 in FreeEQ8)
- 4 saturation modes per band: Tanh, Tube, Tape, Transistor
- A/B comparison: instant snapshot toggle with Copy A→B / B→A
- Piano roll overlay: C1–C8 note frequency reference on response curve
- Collision detection: amber warning when bands overlap within 1/3 octave
- License activation: offline HMAC-SHA256-signed keys, demo mode (mute 30s every 5min)
- Stripe checkout integration (Cloudflare Worker)
Downloads
- macOS DMG (x86_64): includes both FreeEQ8 + ProEQ8 (VST3 + AU)
- Windows and Linux builds will be added via CI when tagged on the release workflow
Full### Full### Full### Full### Full### Full### Full### Full### Full### Full### Full### Full### For complete details.
FreeEQ8 v1.0.0
FreeEQ8 v1.0.0 — Full-Featured Free Parametric EQ
The only free EQ plugin that combines linear phase + dynamic EQ + match EQ + per-band drive + band linking.
📥 Downloads
| Platform | File | Size |
|---|---|---|
| macOS (Intel + Apple Silicon) | FreeEQ8-v1.0.0-macOS.dmg |
13.5 MB |
| Windows (64-bit) | FreeEQ8-v1.0.0-Windows.zip |
1.2 MB |
Install
- macOS: Open DMG → drag VST3 to
~/Library/Audio/Plug-Ins/VST3/and AU to~/Library/Audio/Plug-Ins/Components/ - Windows: Extract ZIP → copy
FreeEQ8.vst3toC:\Program Files\Common Files\VST3\ - Rescan plugins in your DAW
✨ What's New in v1.0.0
- Linear Phase Mode — symmetric FIR, overlap-add FFT convolution (4096-tap, 2048-sample latency)
- Dynamic EQ — per-band envelope follower with sidechain bandpass, threshold, ratio, attack & release
- Band Linking — groups A/B propagate freq (ratio), gain & Q (delta) changes
- Per-Band Saturation — gain-compensated tanh waveshaper (0–100%)
- Undo / Redo — via juce::UndoManager integrated with APVTS
- Match EQ — capture reference spectrum, compute & apply per-bin FFT correction
🎛️ Full Feature Set
- 8 bands × 6 filter types × 3 slopes (12/24/48 dB/oct)
- Mid/Side processing with per-band channel routing
- Oversampling 1× / 2× / 4× / 8×
- Adaptive Q (auto-widens with gain)
- Real-time spectrum analyzer (4096-pt FFT, pre/post toggle)
- Stereo level meter (peak hold + RMS)
- Preset system with 8 factory presets
- Resizable dark UI (750×550 to 1400×900)
⚡ Coming Soon: ProEQ8 ($20)
Love FreeEQ8? ProEQ8 takes everything further — 24 bands, 4 saturation modes (Tube · Tape · Transistor · Tanh), A/B comparison, auto-gain bypass, piano roll overlay, collision detection, and 30+ factory presets.
⭐ Star the repo · 🐛 Report bugs · 💝 Sponsor
