Stoatworks Labs

Occluder

One knob from open ears to earplugs

Betav0.1.2Plugin & ModuleC++ / JUCE
Occluder — One knob from open ears to earplugs
The editor at 60 %: the response the audio is getting, trim included, above the one knob. The hump at 300 Hz is the ear canal trapping bone-conducted sound; the slope above it is the plug.

What it does

When you speak you hear yourself two ways at once: through the air, which is what a microphone hears too, and through your skull, which radiates the low end of your voice into the ear canal from the inside. With the canal open, most of that low end escapes. Block it and it's trapped (20 to 25 dB more around 200 to 500 Hz), while the plug shuts out the air path, and the consonants with it. That's the occlusion effect: the boomy, muffled, talking-into-a-bucket sound of your own voice with earplugs in, in-ear monitors, or a finger in each ear.

Occluder applies that change to a recording, with one control. Zero passes the audio through untouched, bit for bit. A touch of it is roughly the difference between a recording of you and you. Halfway is one plug in, or hands cupped over the ears. Full scale is a pair of foam plugs: the low mids stay, the consonants are thirty decibels down, and nothing above four kilohertz makes it through. It's an ordinary parameter, ramped over fifty milliseconds, so you can automate it without clicks: fade it in as a character puts their ear defenders on, or snap it for a cut to a point-of-view shot.

The shape is worked out rather than tuned by ear: a published model of the occlusion effect and a foam plug's attenuation curve, summed for the plugged ear and divided by the open one, then fitted with four second-order sections that are each exactly unity at zero. Every setting carries a trim computed from the same coefficients the audio goes through, so the long-term speech level doesn't move and the knob only changes the sound. The display draws that response, trim included, at the session's sample rate.

  • One knob, Occlusion, from open ears to foam earplugs; double-click returns to zero
  • Zero is a true pass-through: the output is the input, bit for bit, and leaving zero is seamless
  • A curve fitted to the acoustics of a plugged ear — the occlusion hump around 300 Hz and the plug's tilt above it — rather than a low-pass
  • Speech-weighted level trim on every setting, computed from the live coefficients and shown on the display
  • Click-free automation: 50 ms ramp with the filters redesigned every 32 samples
  • Zero latency and no allocation on the audio thread; four double-precision biquads per channel
  • Any channel layout from mono to surround, every channel filtered identically
  • VST3 and Audio Unit for macOS, Windows and Linux, plus a standalone app for talking into

Where it stands

Released at v0.1.2, whose macOS builds are signed and notarised by Apple. Its DSP core no longer depends on JUCE, so the browser demo runs the shipped processor, and the sound hasn't changed since v0.1.0. It's a beta. A harness pushes real signal through the shipped processor: bit-exact pass-through at zero, the measured response within 0.01 dB of the design at three sample rates, the full-scale shape within 0.2 dB of the acoustic model, speech-shaped level within 0.01 dB across the dial, a click-free slam from 0 to 100, and no allocations with the knob moving. pluginval passes at strictness 10 on VST3 and AU, and so does Apple's auval. It's only been listened to as offline renders of a synthesised voice. It hasn't met a DAW in anger or been used on a show.

Watch it running

Occluder video thumbnail

Nothing loads from YouTube until you press play.Watch it there instead