Skip to content

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-9 relative. Uncritical, but the definition belongs in one place.
  • Qts, Qms and Qes can be set independently without a check against 1/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 = 2 baffle 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.