JamPilot 1.1.0 — a timeline you can trust
A timeline you can trust.
JamPilot 1.1.0 rebuilds the heart of the product — the chord timeline — around
one promise: what you see will not change. Every improvement below is
measured; methodology and raw numbers are in the repo
(docs/exploration/zeitleiste-redesign.md, tests/reference/README.md,
tests/realaudio/REPORT_key_labels.md).
Publish-once timeline
The display no longer shows a continuously revised hypothesis. The server
commits every chord exactly once at a commit boundary ahead of the audible
position — a committed chord can never move, get renamed, or vanish.
Structurally, not by damping.
- Shown events later contradicted by the analysis (live, full song):
19 % → 5 % — and none of it reaches the screen anymore - Chips deleted/recreated on screen: zero (event identity)
- Contract violations across all live runs: 0
- Measured cost of freezing: ~1 point root accuracy (83.3 % vs. 84.5 %) —
a price we pay knowingly, for a display that holds still - Fast chord changes now occlude cleanly instead of overlapping; the lane
animates on the compositor and absorbs network jitter as an imperceptible
tempo change — no more visible jumps
Better chord recognition
Retrained BTC weights (fine-tuned on offset-corrected Isophonics ground
truth), on the 5-track annotated reference set:
- Labels exactly right: 69.8 % → 73.1 %
- Root right: 75.6 % → 79.1 %
No off-the-shelf teacher beat this finetune.
A bass that never flickers
The measured slash bass follows a monotone rule: committed only after ~1 s
of stable measurement, allowed to appear once later — never retracted, never
swapped. The flicker's root cause was the moving segment end, not the
measurement: bass is now pooled over a fixed 2 s window that matches the
full-segment verdict exactly (1 % false slashes against the Isophonics bass
annotations). Live: 24 retracted basses per song → 0 visible.
Key detection that gets minor right
The tonic keeps coming from the chroma (measured best); the major/minor
decision is now voted by the recognised chords. Third-less voicings no
longer flip a minor song to major:
- Correct major/minor: 66.9 % → 98.4 % (10-track set)
- Two songs that were wrong for their entire duration are now correct
(G minor shown as G major: 0 % → 98 %; A dorian shown as A major:
0 % → 100 %) — and no major song flipped - Plus: two-scale key estimator (calm, but modulation-capable) and a
key pin in the settings for when you simply know the key
Nashville scale degrees (new)
Degrees above the timeline and the big chord — plain, inverted (degree large,
name small), or off. A progression looks the same in every key.
The delay is now a real control
--delay defaults to 5 s and splits half and half into visible lookahead
and model settle time: 5 s → 2 s lane / 2 s settle (the measured sweet spot),
6 s → 2.5 s / 2.5 s. More buffer means seeing further ahead and
better-settled chords.
Under the hood
/timeline-poc: internal debug view — committed events, the still-revisable
hypothesis as ghost chips, live counters for discarded revisions and
contract violations- Measurement scripts checked in (
tests/reference/messung_*.py) - 468 tests (0.1.0: 419), reproducible builds
Update 2026-08-29: binaries rebuilt — a missing include (data/timeline_poc.html) is fixed. Linux and macOS; Windows from 1.2.0.