feat: v0.2.0 deep-dive rework, M2 preset system, i18n frame, housekeeping#7
Merged
Merged
Conversation
Deep-dive voicing rework (docs/design-brief.md, sourced in docs/research-notes.md) against the F6-class reference set (Waves F6, FabFilter Pro-Q 3/4, TDR Nova, Sonnox Oxford Dynamic EQ): - Knee width now derives from Range (clamp(|rangeDb|*0.5, 2, 10) dB), replacing the v0.1.0 flat 6 dB constant. - New per-band bN_autoRelease: program-dependent release derived from a dedicated fast reference envelope inside Detector, independent of the user's own Release setting, always <= the manual value. - New per-band bN_gainQ: main-filter Q widens with dynamic gain (Sonnox- style analog softening), scoped away from the Detector's own sidechain selectivity to avoid a feedback loop. - Attack widened to 0.1-500 ms, Release widened to 5-1500 ms. - Both new toggles default off and are tolerant-import safe: a v0.1.0 session loads with every existing value preserved exactly and the new IDs at their off default. M2 preset system (src/presets/, copied from the basilica-audio/nave pilot per its replication recipe): PresetManager/PresetBar/Localisation, nine factory presets (docs/presets.md), German frame localisation (resources/i18n/de.txt). Housekeeping: app icon wired via ICON_BIG, release.yml gets the suite-wide idempotent create-release job fix this repo never received, version bumped to 0.2.0. Catch2 suite grown from 47 to 87 cases, including a new permanent audio-thread AllocationGuard/AllocationTests.cpp regression harness. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
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
Deep-dive voicing rework (
docs/design-brief.md, sourced indocs/research-notes.md) against the F6-class reference set (Waves F6, FabFilter Pro-Q 3/4, TDR Nova, Sonnox Oxford Dynamic EQ):clamp(|rangeDb| * 0.5, 2, 10)dB), replacing v0.1.0's flat 6 dB constant. Reproduces the old fixed-6-dB knee shape exactly at Range = ±12 dB (deliberate, tested bit-compatible-in-shape special case).bN_autoRelease(off by default): program-dependent release.Detectorgains a dedicated fast reference envelope (fixed fast release, independent of the user's own Release setting) whose recent dB fall rate derives an effective release that is always<=the manual Release value and shortens automatically when the signal is genuinely decaying on its own. Inspired by, not a reproduction of, Waves F6's proprietary ARC (documented in the brief's honesty section). An earlier implementation attempt derived the fall-rate measurement from the slow main envelope itself, which is self-referential and never actually sped anything up — seedocs/architecture.md's new "program-dependent auto-release" section for the full writeup of that mistake and the fix.bN_gainQ(off by default): the main filter's own Q widens as the band's dynamic gain approaches Range (Sonnox-style analog softening), scoped away from the Detector's own sidechain selectivity to avoid a feedback loop.M2 preset system (
src/presets/, copied verbatim from thebasilica-audio/navepilot per its replication recipe):PresetManager/PresetBar/Localisation, nine factory presets (docs/presets.md), German frame localisation (resources/i18n/de.txt— core DSP terminology never translated).Housekeeping: app icon wired via
ICON_BIG(this repo never got a patch release with it);.github/workflows/release.ymlgets the suite-wide idempotentcreate-releasejob fix (this repo never got the earlier ci-fix PR); version bumped to 0.2.0.No GUI changes for
bN_autoRelease/bN_gainQ— deliberately deferred to M3 alongside the rest of the custom LookAndFeel pass, per the design brief's own scope note. Both remain fully automation/preset-controllable.Test plan
ctest— 87/87 green locally (Debug, Ninja, arm64 native): all 47 pre-existing v0.1.0 tests still pass unmodified in behavior (only range-boundary/count assertions updated to match the widened parameter layout), plus new coverage for every design-brief guarantee (feat: M1 dynamic EQ core, tests and docs #1–feat: v0.2.0 deep-dive rework, M2 preset system, i18n frame, housekeeping #7), the full M2 preset-system suite (16 cases, adapted from nave), i18n frame coverage, and a new permanentAllocationGuard/AllocationTests.cppaudio-thread allocation regression harness (extended to the auto-release and gain/Q-coupling code paths specifically).Lancet_Standalonebuilds clean (Debug, Ninja, arm64 native).🤖 Generated with Claude Code