Roadmap¶
KFilter6 already contains most of the major functional areas that were only planned in the first website draft. Current work is therefore moving toward numerical safety nets, model cleanup, documentation and release preparation.
The authoritative list of unresolved items lives in OPEN_POINTS.md in the repository and is updated with every patch that resolves an item or raises a new one. This page summarises it.
Current development priority¶
The next three steps are deliberately ordered.
1. Numerical regression baseline¶
Checked-in reference values for the 150 grid points of defined parameter sets, verified by a test. Until that exists, the requirement "only with numerical regression" for the driver refactoring is an intention without a tool, so it has to come before any structural change to the calculation core. The Patch 300 test is the first building block: it compares against an independently implemented reference rather than against frozen numbers.
2. Separate UI state from the calculation core¶
The per-driver plot state is pure presentation state and currently lives inside the driver class. Moving it out is cheaper and lower-risk than taking apart the calculation chain, and it is a sensible first step of the refactoring.
3. Dependency audit of the derived model members¶
A dependency and lifecycle audit of the remaining private derived model parameters — including the sealed-enclosure loss terms — in small steps and only with numerical regression in place. The goal is to improve maintainability without changing established numerical behaviour.
Known numerical deviations¶
These are documented rather than fixed, and are listed here because they are visible in results:
- The frequency grid ends at approximately 19.1 kHz instead of 20 kHz. 149 steps from 20 Hz with factor
10^(1/50); 20 kHz would require 151 points. Whether this is an off-by-one inherited from the Pascal original or intentional is unresolved. - The grid definition exists twice. The driver code starts independently from the shared grid module, so the two grids differ by roughly
3.5e-9relative. Uncritical, but the definition belongs in one place. Qts,QmsandQescan be set independently without a check against1/Qts = 1/Qms + 1/Qes. A non-blocking consistency hint belongs in the Driver Parameters dialog rather than in the loader.
Architecture¶
- The driver class is a God object: Thiele/Small parameters, enclosure model, passive network, two result caches and UI visibility state in one class.
- Three files hold nearly a third of the code: the application, project I/O and the network/plot rendering.
- Dialog smoke tests compile the dialog sources a second time into their own test target instead of linking against a shared UI library. Tolerable at three dialog tests, but it scales badly.
Documentation and release preparation¶
- Complete the user documentation
- Add representative screenshots and example projects
- Document Linux dependencies by distribution
- Define an initial binary-distribution strategy
- Add release notes suitable for end users rather than internal patch handovers
The source repository and issue tracker are published; that item is done.
Acoustic-model validation¶
Potential future work includes:
- additional empirical validation of local baffle-diffraction peak magnitude
- separate investigation of diffraction phase accuracy
- baffle/diffraction performance, in particular the 45-degree phase calculation, investigated separately and not mixed with UI or persistence changes
- more baffle-edge geometries
- top/bottom chamfers
- variable chamfer angles
- roundovers / radii
- more general convex enclosure geometry
These are optional extensions rather than prerequisites for the current practical design workflow.
Active-filter extensions¶
Possible later additions include currently unsupported combinations such as:
- Bessel band-pass
- Linkwitz-Riley band-pass
- generalized higher-order Q-defined sections, if a clear parameter model is chosen
Floor reflection¶
Floor Reflection is intentionally not a current expansion priority and remains marked experimental. Its response depends strongly on loudspeaker and listener placement, so it is retained primarily as an experimental analysis tool rather than a target for fixed compensation.
Deliberately unchanged¶
The following remain binding until a patch explicitly changes them:
- Floor Reflection stays marked experimental.
- The width-anchored
n = 2baffle low-frequency hybrid stays productive. - Active filters, measurements and baffle/floor processing stay in the documented complex processing chain.
- No format change without explicit versioning and an I/O regression test.