Skip to content

JamPilot 1.1.0 — a timeline you can trust

Choose a tag to compare

@jweigend jweigend released this 27 Aug 22:51
· 27 commits to main since this release

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.