Real-time pitch and formant shifting with spectral freeze and a pitched feedback
delay, built entirely from public pulp::signal primitives — no third-party DSP —
with a native GPU editor in Pulp's Ink & Signal design language.
Install
Download Bendr-0.1.0.pkg below. It is signed and notarized by Apple. The
installer's Customize pane lets you pick only the formats your host scans.
| Format | Installs to |
|---|---|
| Audio Unit (AU) | /Library/Audio/Plug-Ins/Components |
| VST3 | /Library/Audio/Plug-Ins/VST3 |
| CLAP | /Library/Audio/Plug-Ins/CLAP |
| Standalone | /Applications |
Requirements: macOS on Apple silicon (arm64). This build is not universal —
it does not run on Intel Macs.
What it does
- Pitch ±12 semitones in real time, with formant control that can track
the pitch (Link) or stand free, plus a preservation mode that keeps vocal
character intact as the pitch moves. - Freeze holds the current spectrum as a stationary resynthesis, so there is
no loop seam to hear — and pitch and formant keep bending the held sound. Play
it chromatically over MIDI. - Pitched feedback delay, tempo-syncable, with a second pitch shifter inside
the feedback loop so repeats climb or fall. - Dry/wet with latency compensation.
Built from Pulp primitives
| Primitive | Role |
|---|---|
RealtimePitchTimeProcessor |
pitch / formant shift, with FreezeHold and TransientPhasePolicy |
PitchedFeedbackDelay |
tempo-syncable delay with an in-loop pitch shifter |
DryWetMixer |
latency-compensated dry/wet |
The editor is assembled from stock pulp::view widgets over a single
theme_from_preset("ink-signal") call. Numeric type-in fields use the shared
pulp::view::CaretBlink + paint_caret caret, so the caret holds solid while you
type and resumes blinking when you stop, at a rate independent of display refresh.
Bendr previously lived in the Pulp repo under examples/bendr. It now has its own
repository and consumes Pulp as an installed SDK.
SHA-256: c6c7b6d8b021a986cd08a298164bf9636bf1658bb92ef6de1d3e2f3412744a74
MIT licensed, same as Pulp.