Skip to content

Add reference curve overlays for FFT and octave spectrum#421

Open
Skeyelab wants to merge 31 commits into
tlecomte:masterfrom
ericdahl-dev:feature/reference-curves
Open

Add reference curve overlays for FFT and octave spectrum#421
Skeyelab wants to merge 31 commits into
tlecomte:masterfrom
ericdahl-dev:feature/reference-curves

Conversation

@Skeyelab

Copy link
Copy Markdown

Summary

  • Add optional reference overlays on FFT and Octave spectrum docks: Flat, Pink, A-weighting, and House presets
  • Manual overlay offset (dB), independent of global calibration
  • Settings persist per dock via QSettings

Closes #51

Test plan

  • PYTHONPATH=. python -B friture/test/runner.py (125/126 pass; dark palette test is env-specific)
  • FFT dock: pick Pink → sloped line (+3 dB/oct), Flat → horizontal
  • Octave dock: Pink and Flat both flat (by design)
  • House → flat to 2 kHz, rolls off above
  • Overlay offset shifts line without affecting measured trace
  • Live gig smoke test tomorrow

Made with Cursor

Skeyelab and others added 30 commits June 12, 2026 14:53
Introduce unit tests for ring buffer, IEC metering, pitch tracker widget behavior, and splash settings; run them in GitHub Actions with coverage. Also adds dark palette fallback, configurable splash screen, dock settings Close buttons, and agent skills configuration for fork development.

Co-authored-by: Cursor <cursoragent@cursor.com>
sounddevice fails to import without libportaudio2 on Ubuntu runners.

Co-authored-by: Cursor <cursoragent@cursor.com>
Non-editable pip install runs site-packages code while coverage
measures the checkout, reporting ~3% instead of ~15%.

Co-authored-by: Cursor <cursoragent@cursor.com>
Keep test-linux on push and pull_request; Windows, Linux AppImage,
macOS, and release jobs are skipped until re-enabled.

Co-authored-by: Cursor <cursoragent@cursor.com>
Add test suite, CI, and Linux UX improvements
Cover audioproc FFT sizing, level meter IEC mapping, ballistic peak
hold behavior, and silent pitch input; raise CI coverage floor to 16%.

Co-authored-by: Cursor <cursoragent@cursor.com>
Introduce AudioHarness for pushing frames through AudioBuffer like production,
cover levels/spectrum/octave widgets and settings bootstrap, exclude helpers
from discovery, and raise CI coverage floor to 22%.

Co-authored-by: Cursor <cursoragent@cursor.com>
Expand test suite with widget integration and core audio tests
Split PortAudio into portaudio_ingest adapter, add TestAudioIngest for
tests, wire Analyzer and Settings through get_audio_ingest(), and keep
AudioBackend() as a backward-compatible alias.

Closes #2

Co-authored-by: Cursor <cursoragent@cursor.com>
Introduce injectable audio ingest seam
Add DockAnalysisWidget protocol, RingBufferFrameReader for FFT docks,
migrate spectrum and levels helpers, wire dock typing without ignores,
and document test harness conventions.

Closes #3

Co-authored-by: Cursor <cursoragent@cursor.com>
Formalize dock analysis widget protocol
Move smoothing state and spectrum math out of Spectrum_Widget into a
pure numpy module with unit tests; widget becomes a thin QML adapter.

Closes #4

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Inject InputDeviceCatalog into Settings_Dialog, move fatal no-device policy
to Analyzer, and apply saved device selection on the ingest layer at startup.

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Run Windows, Linux, and macOS builds plus artifact upload when a v* tag
is pushed; keep PR and master pushes on test-linux only.

Co-authored-by: Cursor <cursoragent@cursor.com>
Split settings from input device catalog
Introduces a live peak/RMS dock widget, moves calibration onto Long-time levels, and darkens the default UI palette for low-light use.

Co-authored-by: Cursor <cursoragent@cursor.com>
dB levels dock, calibration, and 0.56 release
App-wide offset and unit flow through sidebar meters, dB levels dock, long-term levels, and frequency widgets; calibration anchors RMS to a reference while peak stays ~3 dB higher on sine tones.

Co-authored-by: Cursor <cursoragent@cursor.com>
Publish Windows and Linux artifacts when tag builds finish; macOS can attach later once a runner is available.

Co-authored-by: Cursor <cursoragent@cursor.com>
Use a three-column grid with per-channel sizing so dual readouts fit without clipping.

Co-authored-by: Cursor <cursoragent@cursor.com>
Release Windows/Linux artifacts without waiting for macOS
Global input calibration, mic cal files, per-dock overrides, and stereo dB levels layout fix.
Global calibration, mic cal files, and stereo dB levels layout fix.

Co-authored-by: Cursor <cursoragent@cursor.com>
Flat, pink, A-weighting, and house presets with a manual offset help compare live measurements against common targets during tuning.

Co-authored-by: Cursor <cursoragent@cursor.com>
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.

DOS line endings on PyPi version (0.19)

1 participant