feat: add resonance compressor and Windows CI
This commit is contained in:
1 parent
3281535a04
commit
3c5b05fdec
31 files changed
+6340
-57
No files matched your search
@@ -0,0 +1,91 @@
|
||||
# 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.
|
||||
Binary file not shown.
|
After Width: | Height: | Size: 702 KiB |
Reference in new issue
Block a user