feat: v0.2.0 deep-dive voicing pass, M2 preset system, DE localisation#22
Merged
Conversation
Research-derived retuning of all four DSP stages (docs/design-brief.md, docs/research-notes.md): a new DeEssWidth detection-bandwidth control, a narrower/gentler Air shelf, a program-dependent auto-release for the Gentle Compressor, and re-centered Doubler base delays/detune taper - all sourced or explicitly flagged as reasoned, with no reference brand/product names outside the two research documents. Also ports the suite-wide M2 preset system (PresetManager/PresetBar, pilot: sibling plugin nave) with nine factory presets, a German frame-string localisation, and 32 new Catch2 tests (60 total, up from 28).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Two things land together for v0.2.0, per the milestone plan (M2 = presets/state):
Research-derived deep-dive voicing pass (
docs/design-brief.md, sourced/reasoned againstdocs/research-notes.md), retuning all four DSP stages without touching the topology or the zero-latency/bit-exact-bypass invariants:DeEssWidthparameter (0-100%, default 40%) exposes the detector's bandpass Q as a user-facing control for the first time (0% → Q 3.0 narrow, 100% → Q 0.7 wide), replacing v1's hidden fixed Q = 1.2.DoubleDetunedefault lowered 15 → 10 cents with a reshaped power-law knob taper (cents = 50 * p^2.2, range unchanged) giving the tight-double register more knob travel. Not a breaking change to saved state (stored value stays cents; verified against JUCE 8.0.14'sAudioProcessorValueTreeStatesource).Every default/range change is either sourced with a citation in
docs/research-notes.mdor explicitly flagged "reasoned, not sourced" indocs/design-brief.mdss5. No brand/product names appear anywhere outside those two research documents (verified via repo-wide grep).M2 preset system (
.scaffold/specs/preset-system-m2.md), ported from the suite's pilot implementation in sibling pluginnave:src/presets/-PresetManager(factory/user preset discovery, load/save/rename/delete, dirty tracking, default resolution, single-file and zip-bank import/export) andPresetBar(editor strip), copied verbatim per nave's replication recipe.presets/factory/*.json, documented indocs/presets.md): Default plus the brief's eight (Lead - Cut Through, Lead - Intimate/Close-Mic, Choir - Wide Spread, Choir - Tight Blend, Spoken/Growled Interlude, Glue Only, De-Ess Only (Surgical), Wide Double (No Dynamics)).resources/i18n/de.txt), auto-selected from system language. Parameter names/units/DSP terminology are never translated.ICON_BIGwas already wired by the preceding patch-release PR; verified still present.Test plan
cmake -B build -G Ninja -DCMAKE_BUILD_TYPE=Debugconfigures clean (JUCE 8.0.14 + Catch2 v3.15.2 via CPM cache).cmake --build build --target Tests Seraph_Standalone --parallel 4builds clean.ctest --test-dir build --output-on-failure- 60/60 tests green (28 pre-existing + 32 new: 17PresetManagerTests.cpp, 11DeepDiveTests.cppDSP-guarantee coverage, 1StateTests.cpptolerant-migration test, plusDeEssWidth/new-range coverage folded into existing Coverage/Robustness/Latency/Allocation tests).docs/design-brief.mdss4: DeEssWidth bandwidth-curve monotonicity + Q-extremes (±10%, verified against JUCE's own analyticgetMagnitudeForFrequency()to avoid digital pre-warping bias), DeEssWidth null-bypass sweep, Air magnitude-response shape (1/6/12/20 kHz) + null test, Comp auto-release ballistics (transient-vs-sustained recovery) + blend-boundary continuity + null test, Doubler delay-time bounds + null test + sample-rate sweep.DeEssWidth) loads without failing or perturbing other parameters,DeEssWidthlands on its documented default.Known org-level issue (unrelated to this PR)
macOS release signing has a broken secret (tracked separately) - not exercised by this PR's CI (build/test only, no release job).