Skip to content

feat(filter): add filter designer GUI tool#54

Merged
bresch merged 7 commits into
masterfrom
feat-filter-designer
Jul 13, 2026
Merged

feat(filter): add filter designer GUI tool#54
bresch merged 7 commits into
masterfrom
feat-filter-designer

Conversation

@bresch

@bresch bresch commented Jul 10, 2026

Copy link
Copy Markdown
Collaborator

This tool is to see the effect of combining different filters together (gain, phase and group delay)
Screenshot from 2026-07-10 08-36-49

The response of the combined and individual filters is then shown
image

Currently includes all the filters that are existing in the digital filter compare script
image

bresch added 7 commits July 9, 2026 17:04
Add a PyQt5 tool to build a chain of digital filters linked in series
and view the combined magnitude/phase/group-delay response.

- filter_library.py: pure numpy/scipy core with a data-driven registry
  of the 11 filter types, Filter and FilterChain (series convolution),
  and response helpers. No GUI dependency so it can be reused in the
  control loop of other tools (e.g. autotune).
- filter_response_canvas.py: reusable 3-plot Bode canvas with a
  shift+click/drag red cursor reading out values at a frequency.
- filter_edit_dialog.py: add/edit popup with live preview.
- filter_chain_widget.py: embeddable table (show/edit/remove) + plot.
- filter_designer.py: standalone app entry point.
- Move the table into a left panel (fs on top, table, Add button below),
  beside the plots.
- Two-line filter rows: type name then parameters; shorten labels to
  f_c and BW.
- Compact icon buttons (gear / cross) with columns and table sized to
  fit their contents exactly, no empty frame.
Drop the shift requirement so the frequency cursor is set and dragged
with a plain left-click; shift+click still works.
- test_filter_library.py: pure core (coefficients, series convolution,
  summaries, response helpers).
- test_filter_dialogs.py: add/edit dialog behaviour, headless.
- test_filter_chain_widget.py: table, add/edit/remove (stubbed dialog),
  overlay toggling and stable trace colours.
- filters_tests.yml: run the suite on PRs and master with Qt offscreen.
Default the per-row 'show' checkboxes to enabled so every filter's
response is overlaid on the combined trace from the start.
Toggling a row's EN box now temporarily removes that filter from the
chain: it no longer contributes to the combined response and its trace
is hidden, while staying in the table so it can be re-enabled. Add
enabled_chain() exposing just the active filters, and emit changed on
toggle. Broaden the group-delay singularity warning suppression.
@bresch bresch self-assigned this Jul 10, 2026
@bresch
bresch merged commit e51de22 into master Jul 13, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant