All plugins

Granular, Spectral & Pitch · Audio effect

Sieve

An STFT mask that keeps only the partials near the notes of a chosen scale (or of the MIDI notes you hold), in every octave. The source keeps its own texture instead of being re-synthesised into new resonators.

Bundle
sieve.vst3
Role
Spectral scale sieve
Sieve plugin interface

Opinion

A filter that thinks in notes rather than in frequencies. Point it at a scale and hold a chord, and a noisy or inharmonic source (a cymbal, a breath, a guitar chord, a field recording) keeps only the partials that belong to those notes — the rest is attenuated by Floor. Because the phase and the shape of each surviving partial are the source’s own, the result sounds like the same material through a comb, not like a new instrument playing it.

That is what separates it from resonance-garden, which rings its own resonators: Sieve carves, it does not add. Width sets how much of the neighbourhood of each note survives (narrow is a tuned comb, wide keeps the original character), and Tilt leans the odd and even harmonics against each other so a note can be made hollow or reedy.

Source chooses what the mask is built from: Scale uses Root and Scale and applies the same set of pitch classes in every octave, while Held MIDI uses the notes currently held on MIDI In, so a chord on a controller moves the mask as you play. When no note is held, Held mode falls back to Root and Scale rather than going silent.

Functionality

A 1024-point short-time Fourier transform (square-root Hann analysis and synthesis windows, 256-sample hop) runs on each channel. Every bin is converted to a fractional MIDI note, the nearest allowed note is found (a scale degree, or one of the held notes), and the bin is given a Gaussian gain in cents centred on it — so a passband is a bump around each note rather than a rectangle — floored at Floor dB. Odd and even bins are scaled in opposite directions by up to 30 % each way for Tilt, and the masked spectrum is transformed back and overlap-added.

The latency (1024 samples: 21 ms at 48 kHz) is reported to the host and the dry path is delayed to match, so Mix blends in phase.

Parameters

Parameter Range Default Notes
Root C-B (12) C  
Scale 24 scales Major The canonical list in docs/scales.md
Source Scale, Held MIDI Scale  
MIDI In off, 1-16 off Channel filter for Held MIDI
Width 1-200 cents 50 Gaussian half-width around each note
Floor -80-0 dB -60 Minimum gain: how much of the rest survives
Tilt -1 to +1 0 Odd against even harmonics, up to 30 %
Mix 0-100 % 100 Dry is bit-exact at 0
Level -24 to +12 dB 0 Output trim

Origin

The technique is the classic sinusoidal “scale mask”: an STFT, a per-bin gain derived from a pitch-class set, and overlap-add. The implementation, the Gaussian passband in cents and the odd/even tilt are Downspout’s own.

Status

Working. The wet path resynthesises correctly: a mask of unity in every bin is a pure delay of 1024 samples (white noise within 0.01 dB, correlation 1.000000), an impulse produces a single output tap, and the result does not depend on the host block size. The core tests cover the round trip, Width, Floor, Tilt, Mix, Level, Root/Scale, and channel-filtered Held MIDI.