Proximate
One knob against the proximity effect

What it does
Every directional microphone picks up more bass the closer the source gets: a handheld dynamic at a few centimetres reads something like +10 dB at 100 Hz against the same voice at arm's length. On a presenter who wanders towards and away from the mic, or a singer who works it, that's a tone that never sits still, boomy when they're close and thin when they step back, and a static EQ can only be right at one distance. The usual fix is a dynamic EQ with a low shelf keyed off the low band, which has a threshold, a ratio, an attack and a release to set, and reacts to a talker who just gets louder.
Proximate reacts to balance instead: the energy under 250 Hz against the energy above it, measured over 200 ms. Speech at a steady distance keeps that within about 3 dB of itself from phrase to phrase, and a talker who leans in tips it 4 to 7 dB further towards the low end. The plugin holds the balance at or under a ceiling and takes whatever's over it off with a first-order low shelf whose zero is fixed at 120 Hz and whose corner climbs as the cut deepens, which is the inverse of a handheld dynamic's published proximity curve to within a dB. The one knob sets the ceiling. Everything else is tuning, fixed and written down in the guide, because a version with a threshold, a ratio, an attack and a release would be a dynamic EQ, and there are plenty of those already.
It never boosts. The shelf only cuts, and at 0 % the plugin is bit-for-bit transparent. It adds no latency, with no look-ahead and no buffering beyond the host's block. And when nobody's talking the cut freezes where it is, because a pause isn't a change of distance and the balance of the room's noise floor tells it nothing.
- One control: Amount, from off at 0 % to a deliberately thin balance at 100 %, and a balance meter with the ceiling drawn on it so the knob can be set by looking
- Cut only — the output is the input with less low end, or the input untouched; 0 % is bit-for-bit transparent
- Zero latency: no look-ahead, no internal buffering, reported latency 0 — safe to monitor through
- A balance detector, not a level detector: the same signal 20 dB quieter gets the same cut
- A first-order shelf shaped like the proximity rise it undoes, flattening at 120 Hz and reaching further up the spectrum the deeper it goes
- Holds through pauses: under −50 dBFS in the high band the cut stays where it is rather than chasing the noise floor
- Stereo-linked: one detector on the mean, one shelf on both channels
- VST3 and AU for macOS, VST3 for Windows and Linux, plus a standalone app for trying it on a real microphone
Where it stands
Released at v0.1.0, and its macOS builds are signed and notarised by Apple. Beta. The compensator is pinned by 85 unit checks covering what it promises: it never boosts at any frequency, 0 % is bit-for-bit transparent, an impulse comes out on its own sample, a step in the low band is followed in and out within a second, the same signal 20 dB quieter gets the same cut, both sides of a stereo pair get the identical filter, and a NaN from the host gets dropped rather than remembered. On synthesised speech through a model of a cardioid at 4 cm, it takes about 40 % of the modelled boost off at every band from 63 to 630 Hz at 65 %, and about two thirds at 80 %. The built VST3 and AU, loaded the way a host loads them, give output identical sample for sample to the bare DSP, pluginval passes at strictness 10 on both, and auval passes with a reported latency of 0. It hasn't been used on a real microphone in a real room yet, and it's met few hosts. The standalone opens no audio input on its first run, and it's been launched but not used on a mic.
Watch it running
Nothing loads from YouTube until you press play.Watch it there instead