↓ Download Spectral Dissector (26.09.12.zip)
A work co-created with Yan Kai.
Spectral Dissector is a fundamental-frequency, harmonic, transient, and noise separation plugin based on Spectral Noise Gate, HPSS, and Cepstrum, inspired by analog filterbanks, SPEAR, Bitwig Loud Split, Bitwig Harmonic Split, Ircam iana~, and others. I have always loved using filterbanks to decompose sound in the frequency domain and recombine it, and I wanted a more precise tool for doing so: to separate a sound's fundamental, first, second, third harmonics and so on in real time and with precision. The work's original form was a set of six parallel Spectral Gates whose thresholds were chained end to end and interlinked. The image below shows a screenshot of the initial version of the Spectral Dissector (Spectral Bank) Max for Live device. The first version was completed around June 2025.

In April 2026 I refactored the plugin's architecture: I introduced HPSS and Cepstrum algorithms and, drawing on Bitwig Loud Split, added a Rise/Fall control parameter, attempting thereby to separate non-harmonic transients and noise so that harmonic separation becomes more stable, more precise, and freer of artifacts. At the same time I reworked the interface logic: each Spectral Gate Band is now governed overall by a single Main Threshold, with a Spacing knob adjusting the loudness difference between the bands' thresholds and Tilt compensating the thresholds at high and low frequencies. I also added a [
Focus (
focus) | band-crossing sharpness | large value = clear band boundaries but possible discontinuities; small value = smooth transitions] parameter to emphasize tonal signals. In the current version the envelope-compensation algorithm has been temporarily removed because it conflicts with Cepstrum and HPSS... a shame. The implementation and UI of the new Max for Live device were done by Yan Kai.
+rep
2026.07.02
I hate Cepstrum.
2026.07.04
All known functional bugs have been fixed; the plugin now behaves as expected.
2026.08.13
This version adds a
Dry switch: when it is on, channels 1-2 output the full-band dry signal, which can be sent into the same mix alongside the individual bands. The dry path now runs through the same
pfft~ as the ten bands, so its latency and phase align exactly with theirs (4032 samples); summing dry with any band no longer causes beating or comb filtering. The switch is off by default.
It also fixes an architecture-level bug: the Perc Band was not in fact separated out of Bands 1-9 as intended, and its signal was duplicated there — purely percussive content, with the harmonic gate closed, fell entirely into Band 9 / Residual while the Perc Band also output it separately. Bands 1-9 now multiply their reconstruction by the harmonic mask
1 - perc_mask, and the Perc Band outputs
perc_mask; the two are strictly complementary and energy-conserving: Bands 1-9 plus the Perc Band sum to the original input, sample for sample, with no added FFT context or latency.
2026.09.12