tab-labeler — symbolic guitar-tab fingering scorer (ONNX)

A tiny CNN that scores candidate (string, fret) placements for a sequence of note-columns, so a guitar-tab arranger (Viterbi over hand positions) fingers more like a human than a hand-tuned heuristic. The symbolic arm of a two-model tab stack — the score/MIDI→tab counterpart to the audio→tab cstr/tabcnn-onnx. It shares TabCNN's exact per-string output contract, so the same decoder consumes both.

The model never emits tab — it only scores positions the arranger enumerated; the arranger's transition cost + hard span cap stay the arbiter, so nothing unplayable is produced. Missing → the heuristic is the fallback.

Versions

file training data agreement notes
tab-labeler.onnx (default, v2) GuitarSet 82.7% shipped baseline
tab-labeler-v1-lowmove.onnx (v1) GuitarSet 78.59% lower-movement fallback
tab-labeler-v3-egset.onnx (v3) GuitarSet + EGSet12 82.5% (val 0.829) more data; better position (6.23 vs human 6.20). GuitarSet-validated; OOD (IDMT) comparison pending
tab-labeler-v3c-egset-spanreg.onnx (v3c) GuitarSet + EGSet12, span-regularized val 0.829 tighter emission (span-proxy 1.66); full benchmark pending

Agreement = per-note (string,fret) match vs held-out human (GuitarSet player 05, 60-song arranged benchmark). All models carry top-2 checkpoints (.best.pt).

★ Integration: hitting span<1.5 at agreement>82% (no retraining)

Quality is more than agreement. Measured against the human on all axes (GuitarSet, 60 songs; human = agreement 100% / movement 5325 / span 1.43 / position 6.20):

                          agreement  movement  span   position
heuristic (no model)      57.0%      4095      1.34   4.93   (under-moves, under-reaches)
this model (mv=1.0)       82.7%      4372      1.68   6.43   (good move+pos; OVER-spans)

The model fingers at about the right position and moves about the right amount, but picks wider shapes than a human. The fix is an arranger-side knob, not a new model: because the arranger lets the model replace its local cost, the span penalty is dropped — re-apply a span penalty on top of the emission (modelSpanCost in CometBeat's arrangeTab). Sweep on v3 (GuitarSet):

modelSpanCost agreement span
0.00 82.5% 1.77
0.20 83.5% 1.59
0.50 84.0% 1.47

Span and agreement are NOT a tradeoff — they align: since the human fingers compact (1.43), preferring compact shapes makes the model match the human more. So modelSpanCost≈0.5 gives span 1.47 (<1.5) at agreement 84.0% (>82%) with movement still under the human — on any of these weights, no retraining.

IO contract

  • Input input : float32[N, 49, 9, 1] — per column, a 9-column window (centred, zero-padded) of multi-hot pitch-presence over MIDI 40..88 (49 bins).
  • Output output : float32[N, 6, 21] — per-string LogSoftmax log-probs. class 0 = string silent, class k = fret k-1. String index 0 = high e … 5 = low E. Emission for (string,fret) = output[string][fret+1].

~338 k params, ~1.3 MB, opset 13. Conv / ReLU / MaxPool / Gemm / LogSoftmax — runs on pure-Dart onnx_runtime_dart.

Training + evaluation

  • Data: GuitarSet (CC BY 4.0) — exact (pitch → string, fret) labels; held out by guitarist (player 05 = val), ±2-semitone transposition aug. v3/v3c additionally use EGSet12 (CC BY 4.0, original electric compositions — a 7th player). (A Guitar-TECHS-augmented variant, CC BY 4.0, was trained too — val 0.823, slightly OOD; not published here.)
  • Objective: sum of 6 per-string softmax cross-entropies (v3c adds a span regularizer on the predicted distribution).

Provenance / license

CC BY 4.0. Derived weights redistributable with attribution. Trained on GuitarSet (Xi et al., ISMIR 2018, CC BY 4.0); v3/v3c also on EGSet12 (CC BY 4.0). No DadaGP / no request-gated data.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. 🙋 Ask for provider support