Skip to content

Releases: pgil256/tab_vision

v1.0.0 — acoustic, audio-only

Choose a tag to compare

@pgil256 pgil256 released this 09 Jul 19:49
16f09d8

TabVision turns a recording of solo guitar into tablature — the string-and-fret notation a guitarist actually reads. v1 is an audio-first Python CLI, scoped to acoustic guitar.

This release completes Phase 9 (Polish) and meets the SPEC §7 acceptance gate: fresh clone installs and runs, all eval targets met, signed off.

Accuracy

Measured on the GuitarSet held-out player-05 validation set (60 clips), acceptance run 2026-06-03. Acceptance is lower-95% CI ≥ target over clips (bootstrap CIs).

Metric Gate Measured (mean / lower-95)
Single-line Tab F1 ≥ 0.45 0.523 / 0.457
Strummed Tab F1 ≥ 0.60 0.676 / 0.606
Aggregate Tab F1 ≥ 0.55 0.600
Onset F1 (50 ms) ≥ 0.92 0.94 / 0.92
Pitch F1 (50 ms) ≥ 0.90 0.93 / 0.90
Latency (60 s clip, laptop CPU) ≤ 5 min ~45 s (0.74× realtime)

The idea

Pitch does not determine position. The same note can be played in five or six places on the neck. A correct transcription gets the pitch; a correct tab gets the specific string and fret. The whole project lives or dies on string assignment — and that is exactly where audio alone runs out of information.

Made concrete on one clip (docs/DEMO/per-tier-examples.md): single-line scores 0.933 pitch+onset F1 but only 0.333 Tab F1 — a +0.600 gap that is purely string assignment. Strummed closes that gap to +0.027, because chord shapes pin the positions down.

Honest limits (measured, not hedged)

  • Video string-resolution was built, measured, and refuted. The audio playability prior resolves contested strings at 0.778 vs. the best real video chain's 0.574. The video stack stays in the repo as evidence, not a shipping default.
  • Electric guitar is v2. The acoustic backbone drops to 0.73 pitch / 0.12 Tab F1 on electric. The --instrument electric tone toggle is wired for a checkpoint that doesn't exist yet.
  • Expressive markings are not detected. Technique-detection baseline is a measured 0.00 — there is no detector.

Every published number has a reproducible run under docs/EVAL_REPORTS/.

What ships

  • CLI: tabvision transcribe · check · diagnose
  • Renderers: confidence-graded ASCII (colour-graded on a TTY), MIDI, MusicXML, Guitar Pro 5
  • tabvision diagnose: self-contained HTML report — audio waveform, decoded tab, confidence map
  • Modal production deploy + a one-command local studio.ps1 record→tab loop
  • License-clean defaults: permissive, no copyleft, enforced in CI down to the loaded model artifacts (copyleft lives only in opt-in vision / render extras)

Install

cd tabvision
python3.11 -m venv .venv && source .venv/bin/activate
python -m pip install -e '.[dev,audio-highres]'
tabvision transcribe input.mov --format ascii -o out.tab

Start with README.md; the full project story is in docs/NARRATIVE.md.