Skip to content

v0.6.0 - External sidechain input for dynamic EQ

Choose a tag to compare

@stoatworks-labs stoatworks-labs released this 17 Jul 09:50

What's new

Every dynamic EQ band can now detect against an external stereo sidechain signal instead of the internal chain:

  • A new optional stereo Sidechain input bus (disabled by default; hosts enable/disable it per the normal JUCE/DAW bus workflow)
  • A per-band Sidechain toggle in the Dynamic EQ section — leave it off to keep detecting against the signal already in the chain (the original behaviour), or turn it on to duck/boost that band off a separate input entirely (e.g. duck a music bed off a voice track)
  • If a band asks for sidechain detection but the host hasn't actually connected the bus, it falls back to internal detection automatically rather than detecting against silence — and the toggle's label switches to "Sidechain (n/c)" so that's visible at a glance
  • Purely a read-only detection input: it never touches the main signal path, so the plugin's zero-added-latency guarantee is untouched

Verified

  • Real-audio test harness: fed a main signal that never changes alongside a sidechain signal that pulses loud/quiet. With the toggle on, the dynamic band's gain tracked the sidechain pulses even though the main signal was constant — confirming detection genuinely comes from the sidechain, not the main buffer. With the toggle off, or with sidechain requested but disconnected, the band produced a steady duck driven by the main signal instead, confirming both the default path and the fallback path are correct.
  • pluginval strictness level 5: VST3 clean, including its own bus-enumeration checks (mono/stereo sidechain layouts, enable-all, disable-non-main, restore-default all pass). AU passes with one known benign warning — see below.
  • Hosted successfully in REAPER.

Known benign AU warning

pluginval's "Disabling non-main buses" check fails on the AU build. This is a documented JUCE/AudioUnit interaction — AUv2's bus-disable semantics for auxiliary/sidechain input buses don't round-trip the way pluginval expects, independent of what the plugin itself does. It's a widely reported quirk affecting AU plugins with a sidechain bus generally, not specific to Zero EQ. Apple's own auval validator still exits 0, and every other AU check (including enabling all buses and restoring the default layout) passes clean.

Known limitations

  • Not yet tested against real (non-silent) audio hardware in a live signal chain
  • No linear-phase mode — intentionally out of scope (zero latency is the point)

Full Changelog: v0.5.0...v0.6.0