Skip to content

Releases: GarageDeveloper/qa40x-rs

v0.4.0

v0.4.0 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 31 Jul 16:42

Still an early stage release — and a big one: multi-device support lands. Several analyzers (and the built-in virtual QA403) can now share one bench, each with its own capture loop, signal routing, measurement programs and export identity. The A/B loopback bench against the official application stayed green through every step (24/24 metrics × flat-top and Hann, re-run per merged lot).

What's new

Multi-device (#25, lots A–F)

  • Several devices at once: add a second unit (real or the built-in virtual QA403) from the Traces panel — each device gets its own trace group with per-group Run/Stop/Connect, user-renamable labels, and a focus selector deciding what the toolbar and footer describe. Unplugging a unit leaves a dormant, named group with one-click revive on the same slot.
  • Signal routing matrix: each signal source can drive any device × channel combination (L/R/both per target), edited per source row — a source pinned to device B plays on B while A stays focused, no focus gesture. Persisted slot-keyed, so workspace docs stay bench-portable.
  • Per-device measurement programs: sweeps run on the device they're pinned to (destination picker on the program row), concurrently across devices, with per-device exclusivity gates backend-side. Scripts route to their pinned device too (one script at a time bench-wide).
  • Honest export identity: CSV/SVG headers and PNG footers name the device that OWNS the exported data — never whatever device happens to be focused — with capture-time provenance (capture_* block) whenever the bench moved since capture, and a export_devices roll call on mixed tiles.
  • Rhai device(): scripts can read the identity, live status and capability record of the device their run is bound to. The REST scheme stays deliberately mono-device (official-app parity); multi-device REST is tracked separately.

Oscilloscope (lots A–B of #26)

  • Real trigger: AUTO / NORMAL / SINGLE with Schmitt hysteresis, sub-sample edge alignment, per-endpoint settings and a held-picture provenance snapshot.
  • Measurement suite: Vpp, Vmean, AC RMS, frequency, rise/fall, duty — with sliding statistics and a reset.

Measurements

  • THD vs level sweep (#27) and wow & flutter (DIN/IEC 386, #28) wired to the UI as measurement programs — result curves land as traces you can freeze, compare and persist.
  • User weighting curves (#29): import a CSV response (e.g. ITU-R 468) and apply it as a transform step.

Data & storage

  • CSV / SVG / PNG export with provenance headers (#30): device identity, acquisition settings, converter calibration — plus capture-time provenance per trace (#40). ;-separated CSV with . decimals (locale-proof for spreadsheets).
  • Workspace storage moved to IndexedDB with binary frames (#44): saving a bench full of frozen 32k captures no longer hits the localStorage quota.

What's fixed

  • LINK LED parity (#54): an in-capture ~1 Hz keepalive keeps the front-panel LINK LED lit like the official app.
  • Trigger chip no longer leaks onto spectrum/sweep tiles; scope CSV exports clip to the displayed window; sweep exports carry per-curve units; many smaller fixes from the per-lot adversarial reviews.

Docs

  • doc/device-notes.md grew I2S protocol notes, page selector and trace buffer details.
  • Rhai scripting API (incl. device()) documented in src-tauri/src/script.rs's module doc; example scripts updated in-app.

"Negative Feedback" still welcome ;)

qa40x-rs Audio Analyzer v0.3.0

Pre-release

Choose a tag to compare

@github-actions github-actions released this 22 Jul 20:55

Still an early stage release — but this one comes with a milestone: the A/B loopback bench against the official QA40x application is fully green for the first time (all 24 compared metrics within tolerance, under flat-top AND Hann analysis windows, on the same QA402).

What's fixed

  • THD at low fundamentals now matches the official app (#14): /ThdDb honors its max-harmonic parameter (it used to stop at 10 harmonics — optimistic, not cleaner), and the REST acquisition no longer analyzes a latency-gated window (the tone is played as a periodic continuation, so the analyzed frame is pure steady state). THD @ 100 Hz went from a −5.2 dB divergence to +0.86 dB agreement.
  • Output level is factory-calibrated (#8): the per-unit DAC trims are now applied when generating dBV stimuli, not just when reading them — absolute level agrees with the official app to 0.014 dB.
  • REST AudioGen amplitudes are dBV with the official call signatures (#20) — breaking if you scripted the old dBFS behavior: add your output range's dBV (e.g. dBFS + 8 on the +8 dBV range).

What's new

  • /Settings/Windowing/{Rectangle|Bartlett|Hamming|Hann|FlatTop} — the official (wiki-undocumented) analysis-window endpoint. The REST measurement default is now flat-top, like the official app at startup; set /Settings/Windowing/Hann for the previous behavior.
  • "Round to bin" toggle in the Signal Sources panel — the official app's Round to eliminate leakage, on by default; the actually-played frequency is shown next to the ask (e.g. 1000 Hz → 1000.4883 Hz). Off plays the exact asked frequency.
  • The A/B bench grew a window matrix (same window forced on both apps per pass), a THD-method probe, per-acquisition spread reporting, and an offline --probe mode — that tooling is what found the two bugs above.

Docs

  • New verified A/B baseline (24/24 × 2) and a root-cause post-mortem in doc/bench-ab.md.

"Negative Feedback" still welcome ;)

qa40x-rs Audio Analyzer v0.2.2

Pre-release

Choose a tag to compare

@github-actions github-actions released this 21 Jul 23:40

Still an early stage release — please don't trust it for your measurements yet :)

What's fixed

  • Averaging (×N) is now a true rolling window — the trace no longer resets every N frames (#10, first user report from the QuantAsylum forum — thank you @BarryLambert!)
  • Restored extra tones are no longer invisible: the Tones button shows the enabled count and lights up, and the tone editor's open state survives a relaunch (#17)
  • Integrated band noise now matches the official app (coherent generator + ENBW) (#7)
  • REST: the generator drives both outputs, matching the official app
  • The app-settings button (⚙) moved to the top-right, on the same edge as the drawer it opens (#13)

Docs

  • Verified A/B parity baseline vs the official QA40x app, published and linked from the README

"Negative Feedback" still welcome ;)

qa40x-rs Audio Analyzer v0.2.1

Pre-release

Choose a tag to compare

@github-actions github-actions released this 21 Jul 20:28

Still an early stage release — please don't trust it for your measurements yet :)

What's fixed

  • Linux: the packaged udev rule now also grants access to the NXP bootloader, so firmware flashing works without a manual rule.

"Negative Feedback" still welcome ;)

qa40x-rs Audio Analyzer v0.2.0

Pre-release

Choose a tag to compare

@github-actions github-actions released this 21 Jul 12:05

Still an early stage release — please don't trust it for your measurements yet :)

What's new

  • Demo mode: one click spins up an embedded virtual QA403 (vqa40x-core v0.3.0) — no hardware needed to try the app. The simulated noise floor is now live: every acquisition is a fresh noise realization, so spectra dance like on a real analyzer.
  • Plug in a real QA40x mid-demo and the session hands over to the hardware.
  • Dependency updates.

"Negative Feedback" still welcome ;)

qa40x-rs Audio Analyzer v0.1.0

Pre-release

Choose a tag to compare

@github-actions github-actions released this 20 Jul 21:46
243bb49

This is an early stage release. Please don't trust it for your measurements, and indeed don't trust it at all :)
"Negative Feedback" welcome ;)