Audubon · Plugins
BNT-001  ·  Released v1.3
Bunting Spectral Chroma plugin UI
NEW · VST3 PLUGIN EST. 2026 · AUDUBON AUDIO
Spectral Chroma

Bunting.
Light up the notes.

Reshape the frequency spectrum of any sound toward the chord you choose — energy that lands on a lit pitch class blooms through across every octave, energy between the notes is dissolved. Works on pads, textures, synths, reverb tails, and noise.

Under development · v1.3.0
$29
Format
VST3 Win 64 · macOS Universal
Chroma
12-key per pitch class
Engine
Per-bin STFT mask
Presets
11 factory
License
Royalty-free commercial OK
01 — Overview

Light up the notes
you want to keep.

Bunting reshapes the frequency spectrum of any sound toward the chord you choose — energy that lands on a lit pitch class blooms through across every octave, energy between the notes is dissolved. It works on pads, textures, synths, reverb tails, and noise. This is a spectral mask that follows the chord, not a pitched resonator or a harmonic exciter.

VST3 12-Key Chroma Per-Bin STFT Spectral Freeze Mask Motion

A spectral mask that follows the chord — lit pitch classes bloom, everything between the notes dissolves.

Bunting runs a windowed overlap-add STFT and applies a Gaussian gain to each frequency bin based on how close that bin's pitch class is to the lit notes on the chroma keyboard. Phase is preserved exactly — only magnitudes change. Add spectral Freeze to latch a texture, and Mask Motion to sweep the whole chord through a progression on an LFO.

Bunting Spectral Chroma full plugin interface
Plugin · full interface
02 — The Engine

Spectral magnitude masking.

Bunting runs a windowed overlap-add STFT (Hann, 75% overlap) and applies a Gaussian gain to each frequency bin based on how close that bin's pitch class is to the lit notes on the chroma keyboard. The phase of every bin is preserved exactly — only the magnitudes change. The result is a spectrum that follows the chord.

Gaussian Chroma Kernel

For each FFT bin, Bunting computes the bin's pitch class (its position within the chromatic octave), finds the minimum circular-semitone distance to any lit note, and applies a Gaussian gain: w = (1−Amount) + Amount × exp(−(d×100/Width)²). At any lit note the gain is exactly 1.0. At maximum distance it falls to (1−Amount). The phase is untouched.

Transparent at Amount 0

When Amount is 0, or when no notes are lit, or when all 12 notes are lit, every bin's gain is exactly 1.0. The plugin is bit-transparent in bypass: WOLA at overlap-4 with a periodic Hann window reconstructs the input identically (within floating-point precision). No colouration unless you ask for it.

Temporal Smoothing

The per-bin gains are smoothed across STFT frames (Smooth parameter). Without smoothing, a bin near a note boundary would flicker as its instantaneous pitch class drifts — creating a metallic warble. Smoothing applies a one-pole low-pass per bin (up to ~100 ms time constant), gliding gains between frames so chord transitions are click-free.

Latency & Dry Path

Pipeline latency = one FFT window, PDC-reported to the host. At the default 2048-point FFT this is approximately 46 ms at 44.1 kHz. A latency-matched dry delay (a separate ring of the same size) keeps the Mix blend phase-coherent — the dry signal is delayed to match the wet exactly, so mixing at any level is clean.

03 — The Keyboard

Choose the notes that survive.

The 12-key chromatic keyboard toggles individual pitch classes. Lit keys pass through at full gain; unlit pitch classes are attenuated toward silence (controlled by Amount). The pattern is the same at every octave — a C you light up passes C0, C1, C2, C3 and so on simultaneously.

Pitch Class Keyboard

Twelve toggles for C through B. Any combination is valid: a single note, a major triad, a minor scale, a cluster. The chroma effect applies identically to every octave in the spectrum — you're selecting pitch classes, not absolute pitches. Default: C–E–G (major triad).

Root

Transposes the entire lit pattern 0–11 semitones without changing which keys are toggled. Set your chord on the keyboard, then use Root to move it chromatically. Automatable — step through a progression by automating Root in your DAW. Also the anchor for Mask Motion's LFO sweep.

Width

The half-width of the Gaussian kernel around each lit note, in cents (1/100 of a semitone). Narrow width (10–40 ct) targets only the very centre of each pitch class — surgical, almost notch-filter-like between notes. Wide width (150–300 ct) creates broad overlapping bells that blend the whole scale together. Default 90 ct.

04 — Mask Motion

Chord progressions on an LFO.

Mask Motion swings the Root through a musical arc — a Ramp, Triangle, or Random sample-and-hold that shifts the entire chord chromatically, ±12 semitones at full depth. While motion is active, Smooth is floored at a minimum glide time so chord jumps never click.

Ramp

A rising sawtooth that moves the chord from −depth to +depth over one cycle. Use synced to a bar division for a progression that resets on the grid. Use free-running for a gentle, continuous sweep.

Triangle

A triangle that rises to +depth then falls back. Symmetrical sweep — the chord climbs and descends, landing back at Root at the end of each cycle. Default shape. Tempo-synced gives a predictable V-shaped progression.

Random

Sample-and-hold: picks a new random offset each cycle. When tempo-synced the value is deterministic per bar (same sequence for the same timeline position). Free-running gives an organic, never-repeating chord drift.

Sync & Rate

When Sync is on, the motion cycle locks to the host bar grid at one of six divisions — 1/8, 1/4, 1/2, 1 bar, 2 bar, 4 bar. Chord changes land on the beat. When off, the free Rate knob (0.02–8 Hz) drives the sweep independently of the host tempo.

05 — Spectral Freeze

Hold the sound, play the chord.

Bunting spectral freeze and chroma controls
A — Hold
Phase-Vocoder Hold

When Freeze is engaged, Bunting captures two consecutive STFT frames, measures the true instantaneous frequency of each bin (the phase-vocoder identity), and then rebuilds the spectrum every frame from the frozen magnitudes with continuously advancing phases. The frozen sound sustains indefinitely without metallic gargling or beating — it breathes rather than dying.

B — Paint
Chroma Still Active

The chroma mask is applied on top of the frozen spectrum every frame. Trigger Freeze on a held chord, pad, reverb tail, or noise — then change the keyboard, Root, or let Mask Motion sweep through a progression. The frozen texture becomes a spectral canvas you paint chords over.

C — Engage
Clean Engage / Release

Freeze engages over two frames (the capture phase), then sustains. When released, the engine returns to live processing immediately. Mix at less than 100% keeps the dry signal running through — toggling Freeze transitions between frozen-plus-dry and live-plus-dry without a hard cut.

06 — Controls

Shape, colour, and output.

Amount
0 – 100%

Depth of the chroma effect. At 0% all bins pass at full gain — the plugin is transparent. At 100% bins at maximum distance from any lit note are fully silenced. Default 40%: a subtle, lush wash rather than a hard notch.

Smooth
0 – 100%

Temporal smoothing of the per-bin chroma gains (up to ~100 ms time constant). Higher values prevent warble on spectrally unstable sources. While Mask Motion is on, Smooth is automatically floored at ~25 ms so chord steps don't click. Default 35%.

Tilt
−100 to +100%

A gentle spectral tilt applied to the wet path, pivoting at 650 Hz. +100% adds up to +6 dB at the top of the spectrum and −6 dB at the bottom (brighter). −100% is the reverse (darker). Default 0% = flat. Only affects the wet side of the Mix blend.

Mix
0 – 100%

Equal-power dry/wet blend. The dry path is latency-matched so mixing is phase-coherent at any level. Default 100% (fully wet). Pull back to retain more of the original spectral character while the chroma wash blends in.

Output
−24 to +12 dB

Post-processing output trim applied after the Mix blend. Use to compensate for level changes when increasing Amount. Default 0 dB.

Quality
1024 – 16384

FFT size. Larger sizes resolve lower notes more accurately (2048 ≈ 200 Hz floor; 16384 ≈ 50 Hz floor) at the cost of proportionally more latency. Not automatable — switching re-prepares the engine and re-reports latency. Default 2048.

07 — Factory Presets

Eleven starting points.

From a barely-there key-lock to aggressive spectral snapping, frozen choirs, and bar-synced chord risers — every preset is a complete starting point you can push in any direction.

01
Init

C major triad. Amount 40%, Width 90 ct, Smooth 35%. Gentle default — all controls at centre, transparent feel with a light chroma wash.

02
Gentle Wash

C major. Low Amount 28%, wide Width 170 ct, Smooth 50%, slight bright Tilt. A barely-there key-lock that adds air without cutting anything noticeably.

03
Snap To Chord

C major. High Amount 88%, narrow Width 35 ct, low Smooth 25%. Aggressive spectral snapping — harmonics on the chord snap bright, everything else drops sharply.

04
Choir Bloom

Cmaj7 (C–E–G–B). Amount 55%, Width 120 ct, Smooth 45%, bright Tilt. The extra seventh note opens the chord into a lush choral texture.

05
Vocal Halo

C major. Amount 45%, Width 100 ct, Smooth 60%, slight bright, Mix 75%. High smoothing + partial dry blend tames warble on complex, pitch-rich vocals.

06
Dark Melt (Min)

C minor (C–Eb–G). Amount 60%, Smooth 40%, dark Tilt −24%. Minor chord with spectral tilt pulling energy down. Dense and brooding.

07
Noise To Key

C pentatonic (C–D–E–G–A). Amount 92%, Width 55 ct, Smooth 55%. Five-note pentatonic pulls broadband noise into a musical scale — tonal noise pads.

08
Wide Air

C major. Amount 34%, Width 210 ct, Smooth 50%, bright Tilt +30%. Very wide Gaussian — broad harmonic sheen with an airy top end. Minimal notching.

09
Frozen Choir · Sync

Cmaj7. Freeze ON. Motion depth 45%, Tri shape, synced 1-bar. Latch a pad, then let a bar-synced triangle sweep the chord through a four-step progression over the frozen texture.

10
Evolving Pad

Cmaj9 (C–E–G–A). Motion 30%, Rate 0.15 Hz, Random shape, free-running. Gentle random drift — a never-repeating organic chord motion over a live signal.

11
Bar Riser · Sync

C major. Motion 60%, Ramp shape, synced 2-bar. A rising sweep that takes the chord from the bottom to the top of its range over two bars — a simple, musical build.

08 — Workflow

How to use it.

Bunting full interface with chroma keyboard
01
Choose your chord on the keyboard. Start with a simple major triad — the default C–E–G. Play your source through the plugin and raise Amount slowly. You'll hear the spectrum shift toward the chord as energy between the notes dissolves. Change the Root to transpose the chord to the key of your track without re-toggling keys.
02
Dial in Amount and Width together. High Amount with narrow Width (20–50 ct) gives a hard chroma snap — very musical on sustained pads and noise but can sound unnatural on melodic content. Lower Amount with wide Width (120–200 ct) produces a soft lush wash that sounds more like an EQ than a filter. Start moderate and push to taste.
03
Set Smooth to taste for the source. Smooth 0–20% is only safe on very stable sources (synth pads, sustained noise). Most natural sources benefit from 30–60% to suppress warble — the bin gains oscillate otherwise as the pitch class bounces between frames. If motion is on, Smooth is automatically floored so chord jumps stay click-free.
04
Use Freeze for textural pads and risers. Hold a reverb tail or sustained synth, engage Freeze. The sound locks in place and sustains infinitely. Now change the chord or enable Mask Motion — the frozen texture becomes a programmable spectral pad that follows your progression. "Frozen Choir · Sync" shows this with Cmaj7 and a bar-synced triangle sweep.
05
Add Mask Motion for moving chords. Set Motion depth, choose a shape, and either lock it to a bar division or run it free. The Tri shape is the most musical — a smooth up-and-down sweep. Rand creates non-repeating chord jumps good for evolving pads. Keep depth modest (20–50%) for subtle colour; push to 80–100% for dramatic sweeps.
06
Quality and latency. The default 2048-point FFT gives a 200 Hz floor for semitone resolution — adequate for most bass synth and pad content. For accurate chroma on notes below that (sub-bass, low drones), increase Quality to 4096 (≈100 Hz floor) or 8192 (≈50 Hz floor). The host compensates latency automatically via PDC. Increase Quality in the mastering context where latency isn't a concern.
09 — Specifications

Everything, on one page.

Chroma Keyboard
12 toggles (C – B) · default C–E–G — per pitch-class enable; lit = passes at gain 1.0; unlit = attenuated by Amount
Root
0 – 11 semitones · default 0 (C) — transposes the entire lit chord chromatically; also the anchor for Mask Motion
Amount
0 – 100% · default 40% — depth of chroma notches; 0% = transparent, 100% = unlocked pitch classes fully silenced
Width
10 – 300 cents · default 90 ct — half-width of the Gaussian kernel around each lit note (narrow = surgical, wide = broad bells)
Smooth
0 – 100% · default 35% — temporal smoothing of per-bin gains (up to ~100 ms); floored at ~25 ms while Mask Motion is active
Tilt
−100 to +100% · default 0% — spectral tilt on the wet path; ±100% = ±6 dB, pivot 650 Hz; positive = brighter
Mix
0 – 100% · default 100% — equal-power dry/wet; the dry path is latency-matched by a separate ring buffer
Output
−24 to +12 dB · default 0 dB — post-blend output trim
Freeze
On / Off · default Off — phase-vocoder hold; locks spectrum, advances phases per true instantaneous frequency; chroma mask active over frozen sound
Motion
0 – 100% · default 0% — Mask Motion depth; 0% = static; scales the LFO ±12 semitone swing
Rate
0.02 – 8 Hz · default 0.4 Hz — free-running LFO rate for Mask Motion; ignored when Sync is on
Motion Shape
Ramp / Tri / Rand · default Tri — LFO shape; Rand = sample-and-hold, deterministic per bar when Sync is on
Motion Sync
On / Off · default Off — locks the LFO cycle to the host transport; chord changes land on the grid
Motion Div
1/8 / 1/4 / 1/2 / 1 bar / 2 bar / 4 bar · default 1 bar — tempo-sync division for Mask Motion
Quality
1024 / 2048 / 4096 / 8192 / 16384 · default 2048 — FFT size; sets chroma frequency floor and latency; not automatable
Format
VST3 · Windows 10 / 11 · macOS 10.13+ (Universal — Apple Silicon & Intel) · 64-bit
Latency
One FFT window — 2048 default ≈ 46 ms @ 44.1 kHz; PDC-reported
Chroma floor
2048 ≈ 200 Hz · 4096 ≈ 100 Hz · 16384 ≈ 50 Hz
Presets
11 factory
MIDI
None
Version
1.3.0
10 — Fine Print

Documentation.

DAW
Any VST3-compatible host — Ableton Live, FL Studio, Bitwig, Reaper, Studio One, Cubase. Insert on any mono or stereo track. VST3 only — Logic Pro and GarageBand load Audio Units, not VST3, so they are not supported.
Operating System
Windows 10 or 11 (64-bit) — the editor uses WebView2, which is built into Windows 11 and most current Windows 10 installs. macOS 10.13 High Sierra or later — one Universal build runs natively on both Apple Silicon and Intel Macs.
Latency
One FFT window, PDC-reported. Default 2048 = 2048 samples ≈ 46 ms at 44.1 kHz. The host compensates automatically in any DAW with PDC support.
CPU
Low. One STFT pass per channel per hop. Larger FFT sizes add negligible CPU overhead.
Personal & Commercial Use
Use Bunting in any project — music production, mixing, mastering, sound design, post-production, broadcast. No royalties, no project restrictions.
Terms & Refunds
See the Terms of Service and Refund Policy for full details.
No Redistribution
The plugin binary may not be shared, resold, or redistributed. Each user must obtain their own copy.
v1.3.0 — Update check, from the logo
The Audubon Audio wordmark in Bunting’s header is now a button. Click it and Bunting asks audubonaudio.com one question — which build is current — then shows that number beside the one you are running, with a link straight to the members area if there is something newer and a plain “you have the current version” if there is not. If it cannot reach us it says so rather than claiming you are up to date. This is the only moment Bunting touches the internet, it happens only on that click, and nothing about you goes with it — no serial, no licence, no machine id, not even your version or operating system. The comparison happens on your own machine.
v1.0.0 — Initial Release
WOLA STFT chroma masking, Gaussian kernel, 12-key keyboard, Mask Motion (Ramp/Tri/Rand, free + tempo-sync), phase-vocoder Freeze, Tilt, equal-power Mix, Quality 1024–16384, 11 factory presets.
Full User Guide
Covers installation, interface overview, per-parameter reference, and workflow examples for chroma masking, Freeze, and Mask Motion.
Open User Guide →
B
Bunting Spectral Chroma · VST3
$29