92 lines
4.8 KiB
Markdown
92 lines
4.8 KiB
Markdown
# Resonance Compressor 0.1
|
||
|
||
A mixing effect for controlling local spectral peaks while retaining the intended
|
||
sound. Independently designed in Rust; no claim of matching Soothe or Quance.
|
||
|
||

|
||
|
||
## Install on Windows
|
||
|
||
Download the Windows artifact from the GitLab pipeline's **windows** job and
|
||
extract the ZIP. Copy `Resonance Compressor.clap` into
|
||
`C:\Program Files\Common Files\CLAP\`. In FL Studio 2024.1 or newer, open
|
||
Options → Manage plugins, enable Verify plugins, and Find installed plugins.
|
||
Load Resonance Compressor in a mixer effect slot. Keep the font license with
|
||
redistributed packages.
|
||
|
||
## Work with it
|
||
|
||
Loop a troublesome passage in context. Restrict Low/High frequency, then adjust
|
||
Amount and Max cut. Sensitivity is a prominence threshold: lower catches more.
|
||
Neighborhood defines the spectral reference; Cut width smooths the attenuation.
|
||
Attack and Release smooth gain changes; Transient guard briefly relaxes cuts.
|
||
|
||
Double-click the plot to add one of four focus points. Positive sensitivity
|
||
makes the detector more eager; negative values protect the region by raising
|
||
the threshold. Drag a point, wheel to change width, or use its numeric fields.
|
||
Range boundary handles constrain where processing may act. Focus is detector
|
||
weighting, not a static EQ boost and not an absolute protection guarantee.
|
||
|
||
Cyan shows spectral input energy, coral the attenuation, violet detector focus.
|
||
The left scale is calibrated per-bin spectral power; the right scale is cut dB.
|
||
Delta plays delayed dry minus wet before output trim. Use it to inspect changes,
|
||
then return to normal monitoring to decide whether the music improved.
|
||
Mix is a linear blend of aligned signals. Bypass keeps the same latency.
|
||
Use Output for matched-level comparison. Spectral attenuation is not a limiter:
|
||
sample peaks can increase even when frequency gains never exceed unity.
|
||
|
||
Four starting presets and A/B comparison help explore alternatives. All controls
|
||
are visible. The instrument-style sidebar holds Amount, Mix, and Output; the
|
||
spectrum includes filled energy traces, cut overlays, meter rails, and range
|
||
handles, using the plugin’s cyan/coral/violet palette. Host parameters and window size persist; Delta does not. The editor
|
||
supports numeric entry, keyboard focus, and direct graph editing.
|
||
|
||
## Timing and limits
|
||
|
||
Mixing only: 4096-sample analysis windows at 44.1/48 kHz, 8192 at 88.2/96 kHz,
|
||
16384 at 176.4/192 kHz, with eight overlaps. Delay is one window, about 85–93 ms.
|
||
The plugin reports it for host compensation. Supported layouts are mono and
|
||
linked stereo; supported rates are those six standard rates.
|
||
|
||
The engine uses complex RustFFT with supplied scratch buffers, WOLA reconstruction,
|
||
a log-frequency prominence detector, bounded soft-knee cuts, and temporal/frequency
|
||
smoothing. Original bin phases are retained. This is not a minimum-phase filter
|
||
bank, a live monitoring effect, a limiter, or an automatic separation of tone and
|
||
unwanted resonance. No external sidechain, Learn, M/S, or pitch detector in v0.1.
|
||
|
||
## Build and offline evaluation
|
||
|
||
```sh
|
||
cargo test --workspace --locked
|
||
cargo run --release -p resonance-render -- input.wav processed.wav
|
||
cargo run --release -p resonance-render -- input.wav delta.wav --delta
|
||
cargo run --release -p resonance-render -- --demo /tmp/resonance-demo.wav
|
||
cargo run --release -p resonance-render -- --benchmark
|
||
python scripts/build-plugin.py --plugin resonance-compressor --target x86_64-pc-windows-gnu
|
||
```
|
||
|
||
The renderer accepts mono/stereo PCM16/24/32 and float32 RIFF/WAVE, capped at
|
||
256 MiB; WAV extensible/RF64 are not accepted. It writes float32 WAV, compensates
|
||
the processing delay, retains original duration, and refuses existing output.
|
||
An optional settings JSON uses the core's Settings structure.
|
||
|
||
## CI and acceptance
|
||
|
||
The root GitLab pipeline runs checks in a Linux Docker executor and cross-builds
|
||
**Windows binaries only** using MinGW. It needs an available untagged Docker
|
||
runner, outbound access to Debian/Rust/Cargo/Git dependencies, and no Windows
|
||
runner. The Windows job produces both CLAPs, setup guides, licenses, checksums,
|
||
and a ZIP. Runner execution must be verified on the actual GitLab instance;
|
||
local verification is not a remote pipeline run.
|
||
|
||
Before calling host support complete, test FL Studio discovery as an effect,
|
||
automation, plugin delay compensation, parallel dry/wet alignment, repeated loading,
|
||
project restoration, mono/stereo, all supported sample rates, and render tails.
|
||
Judge through real patches with matched listening levels: preserve vowel motion,
|
||
snare punch, bass body, and stereo placement. Synthetic tests do not establish
|
||
artistic usefulness.
|
||
|
||
Local benchmark: AMD Ryzen 7 PRO 3700U, optimized build, stereo 48 kHz, FFT
|
||
4096/hop 512: five seconds processed in 0.233 seconds (about 4.7% of one
|
||
core in that run). This is not a worst-case multi-instance guarantee.
|