mirror of
https://github.com/got-feedBack/feedBack.git
synced 2026-08-10 18:59:56 +00:00
Working-tuning follow-ups: - Mic-verify used _state.currentSongOffsets for the 'verified' stamp, but for a MANUALLY-selected tuning (tuner opened off a song) that's a stale/different song's tuning — so verify could mark the WRONG tuning verified. It now derives the verified offsets from the tuning actually being checked (its target freqs; the player's reference pitch cancels in the ratio), so 'verified' always attaches to the tuning the player confirmed. Explicit offsets still win. - Adds docs/working-tuning-on-device-tests.md: the checklist for the parts that can't be covered headlessly — the auto-open/gate flow, both-directions prompts, mic-verify detection, and the tuner-mic-vs-note_detect ASIO/exclusive-mode contention flagged in the design charrette. Test: mic-verify with no explicit offsets / no song context derives the correct offsets (Drop-D). 55 tuner tests green. Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
54 lines
3.3 KiB
Markdown
54 lines
3.3 KiB
Markdown
# Working-tuning — on-device test checklist
|
||
|
||
The working-tuning series (PRs 1–9) ships with headless unit tests for every state
|
||
machine (`tests/js/working_tuning*.test.js`, `tests/js/tuner_auto_open.test.js`). The
|
||
items below are the parts that **cannot** be covered headlessly — they need a real mic,
|
||
a real instrument, and (for the ASIO item) a specific audio backend. Run these on a
|
||
build before shipping the feature to users.
|
||
|
||
Prereq: enable the opt-in in **Tuner → settings → "Auto-open on tuning change"** (it's
|
||
off by default). Have a guitar (and a bass, for the per-instrument checks) on hand.
|
||
|
||
## 1. Auto-open + gate ("tune before you play")
|
||
- [ ] Load a song whose tuning differs from your instrument's current tuning → the tuner
|
||
**auto-opens** and playback **waits** (does not start underneath it).
|
||
- [ ] Load a song already covered by your tuning → **no** auto-open, playback starts.
|
||
- [ ] **Skip** ("I've tuned") → playback starts, and the tuner badge stops flagging this
|
||
song's tuning (a working tuning was recorded).
|
||
- [ ] **Back to library** / **Esc** → leaves the song, records **nothing** (re-enter the
|
||
same song → it still prompts).
|
||
- [ ] Take **longer than 12 s** to tune with the panel open → playback does **not** start
|
||
underneath you (the fail-open backstop was settled once the panel opened).
|
||
- [ ] Hit **Play** manually while the panel is open → Play wins; no double-start.
|
||
|
||
## 2. Both-directions retune prompt
|
||
- [ ] From standard, load a Drop-C# song → prompted **down** (E→C#). Tune down, Skip.
|
||
- [ ] Now load a standard song → prompted **back up** (C#→E). (Pre-series, this direction
|
||
was silent.)
|
||
- [ ] Switch guitar↔bass in the instrument card → each instrument remembers its **own**
|
||
working tuning; the card label follows the selection (dim = home, amber = retuned).
|
||
|
||
## 3. Mic-verify (assumed → verified)
|
||
- [ ] With a selected (non-free) tuning, tap **Verify tuning** and play each string in tune.
|
||
Each string needs ~8 stable in-tune frames (±6 ¢); the per-string progress advances.
|
||
- [ ] Play a string **out of tune** → it never completes; drifting out mid-streak resets it.
|
||
- [ ] Complete all strings → the instrument card's provenance glyph flips to the **filled**
|
||
(verified) diamond, and the recorded working tuning carries the tuning you verified
|
||
(not a stale one).
|
||
- [ ] Load the **next** song → the verified state **decays to assumed** (per-session only).
|
||
- [ ] Verify against a **manually-selected** tuning (tuner opened off a song) → the stamped
|
||
offsets match that tuning, not the last song's.
|
||
|
||
## 4. Mic contention with note-detection (the ASIO / exclusive-mode risk)
|
||
This is the item flagged in the design charrette: the tuner's mic capture must not starve
|
||
note_detect's scoring input.
|
||
- [ ] Desktop, **ASIO / WASAPI-exclusive** device: auto-open the tuner mid-song, tune, Skip
|
||
→ scoring resumes cleanly; no dropped input, no device-in-use error, no crash.
|
||
- [ ] Shared/`auto` device: same flow → both the tuner and scoring read the mic without a
|
||
stall.
|
||
- [ ] Leave the tuner's background badge audio running + start a scored song → note_detect
|
||
still scores (the badge auto-start doesn't hold the device exclusively).
|
||
|
||
Log the build hash and OS/audio backend with results; file any failure against the
|
||
working-tuning series.
|