postfish-rs is a modern Rust port of the original Postfish, Christopher “Monty” Montgomery’s digital audio restoration and enhancement engine. It provides declipping, multiband dynamics, reverberation control, spectral filtering, and other mastering‑grade cleanup tools for offline processing, plugin workflows, and real‑time visualization.
The original C implementation is powerful but shows its age:
- Legacy UI & Threading: The GTK frontend and early‑2000s threading model limit portability and responsiveness on modern systems.
- Manual Memory Management: The DSP modules rely on global state, raw pointers, and manual buffer handling, making refactoring and debugging error‑prone.
- DSP Coupling: Many algorithms are intertwined with UI logic or global configuration, complicating modular reuse.
- Testing Limitations: Floating‑point behavior and implicit state make deterministic regression testing difficult.
The Rust port restructures Postfish into clean, modular crates with deterministic DSP behavior, modern tooling, and extensive test coverage.
- Safe, Deterministic DSP Engine: All modules (declipper, biquad EQ, multiband compressor, bessel filters, LPC, deverberator, freeverb, subband reconstruction) are rewritten in idiomatic Rust with predictable state handling.
- Modular Audio Pipeline: A unified
AudioPipelineabstraction ensures stable block processing, clean state propagation, and easy integration across CLI, UI, and plugin targets. - Golden‑Output Regression Tests: Full WAV end‑to‑end tests validate DSP correctness and prevent subtle regressions across declipping, dynamics, and spectral modules.
- Plugin Support: VST3 and CLAP builds via
nih-plugallow Postfish processing inside DAWs with real‑time parameter automation. - Cross‑Platform UI: A new
egui/eframeinterface replaces the legacy GTK frontend, providing responsive visualization and parameter control. - Workspace Structure: The project is split into multiple crates, making the DSP engine reusable and the UI/plugin layers cleanly separated.
Core DSP engine implementing:
- declipper
- biquad parametric EQ
- multiband compressor
- bessel filters
- LPC analysis
- deverberator
- freeverb
- subband reconstruction
- frequency‑domain utilities
VST3/CLAP plugin wrapper using nih-plug, enabling DAW integration.
Standalone desktop application built with egui/eframe, featuring:
- real‑time visualization
- adjustable DSP parameters
- live monitoring
- cross‑platform support
Command‑line WAV processor supporting:
- integer PCM
- floating‑point PCM
- block‑based processing
- deterministic output suitable for regression testing
Ensure Rust and Cargo are installed.
# Clone the repository
cd postfish-rs
# Build the workspace
cargo build --releasecargo run --bin postfish-rs -- <input.wav> <output.wav>cargo run -p postfish-uicargo build -p postfish-plugin --releaseRun the full test suite, including DSP modules, pipeline integration, randomized chain tests, and golden‑output regression:
cargo testGolden‑output tests require the included WAV and raw reference files.
- Advanced visualization (spectrogram, declipper diagnostics)
- Preset system for UI and plugin
- Batch processing mode with TOML configuration
- Optional SIMD acceleration for heavy DSP modules
- Real‑time parameter automation improvements