KFilter6¶
Loudspeaker crossover and enclosure design on the desktop¶
KFilter6 is a standalone Qt6 application for practical loudspeaker design. It combines driver and enclosure modelling, passive crossover networks, complex active filters, measurement-based SPL correction, impedance analysis, and geometry-aware baffle diffraction in one project-oriented workflow.
KFilter6 is intended for technically interested loudspeaker builders who want to see how design decisions change SPL, phase-sensitive summation, energetic summation and impedance while developing a loudspeaker.
What KFilter6 can do¶
- Model up to four loudspeaker drivers in one project
- Edit Thiele/Small, enclosure and gain parameters
- Design passive crossover networks with eight sections per driver
- Plot individual SPL and impedance curves
- Calculate vector SPL sum, energetic SPL sum and total impedance
- Import measured SPL data and use it as a frequency-dependent correction curve
- Apply ordered complex active-filter chains per driver
- Simulate baffle step and rectangular edge diffraction
- Include finite-piston spatial averaging and optional left/right 45° chamfers
- Explore an experimental first floor-reflection model
- Export a project overview as PDF
- Save projects as versioned JSON while still reading legacy KFilter project files
- Validate Thiele/Small and enclosure parameters on every loading path
Design philosophy¶
KFilter6 is deliberately a practical loudspeaker design and orientation tool, not a full room-acoustics or general 3D radiation simulator.
The focus is on making the consequences of crossover components, enclosure tuning, driver behaviour and acoustic summation visible enough to support real design decisions and listening-based iteration.
Current development status¶
KFilter6 is under active development. The current development baseline is Patch 300 (30 August 2026).
Three things changed since the previous published baseline:
- Vented rolloff now carries phase. In the simplified calculation path the vented high-pass contributed magnitude only. All four enclosure types now use a complex transfer function, so vector summation across a crossover involving a vented driver is correct. Individual SPL curves are unchanged.
- Thiele/Small parameters are validated on load. Every deserialization path — JSON
.kfp, legacy text.kfpand.kfd— checks the parameters before applying them, so a file containing a zero or negativeRdc,Qts,Qes,QmsorVascan no longer produce non-finite results without a visible error. - Contracts and open points live in the repository.
CONTRACTS.mdstates what currently holds,OPEN_POINTS.mdwhat is known to be unresolved, andPORTING.mdrecords how each patch came about. They are versioned together with the code.
The Qt6 application is already substantially functional. Current development work is increasingly focused on internal model cleanup, numerical regression testing, documentation and future distribution rather than rebuilding the basic application from scratch.
The source repository is public: github.com/erdies/kfilter6. Every patch level is tagged as patch-<n>; the current tag is patch-300.
Platform
KFilter6 is a plain Qt6 Widgets application using CMake and C++17. It is developed and tested primarily on Linux. It does not intentionally depend on KDE Frameworks, although it integrates naturally into a KDE Plasma desktop.
Project pages¶
Start with Features for an overview, Getting Started for the workflow, or Download / Build if you want to compile the current source tree.
