VioTech: Frame-Level Violin Playing Technique Detection
with Multi-Scale Mixture-of-Experts

Ting-Kang Wang1,4Vincent K.M. Cheung2Nan-Tien Lai3Li Su1
1Institute of Information Science, Academia Sinica, Taiwan 2Sony Computer Science Laboratories, Inc., Japan 3National Taiwan University, Taiwan 4Original Content Center, Gamania Inc., Taiwan
ISMIR 2026
Project page
dataset · code
annotation tool
tklovln.github.io/VioTech
1

Why frame-level & multi-scale?

Playing techniques shape expressive violin performance, yet few detection models exist. VioTech labels three dimensions every 10 ms:

Tonalnormal · pizzicato · flageoletArticulationnormal · spiccatoLegatosustain · bow change
  • Note-level pipelines segment notes, then classify them; on violin, soft onsets and continuous bowing make segmentation unreliable, and errors cascade.
  • Frame-level prediction skips segmentation, but techniques are multi-scale: no single window fits all.
pizzicato · attack transientspiccato · bowing envelopebow change · cross-note contextAudioNote-levelsegment → classifyFrame-levelVioTech · every 10 msnormal / sustainspiccatopizzicatobow changeboundary error
2

VioTech120 dataset

The first manually annotated violin technique dataset of real solo performances, with the first explicit legato (bow-change) labels.

24PaganiniOp. 1 caprices60WohlfahrtOp. 35 studies36KayserOp. 20 studies
120 étudesaligned audio–MIDI [5]multi-label2 violinists, peer-reviewed

Annotation interface (released)

VioTech annotation interface: waveform, piano roll with legato regions, and per-note technique, string, position and finger selectors
Audio waveform with playback
MIDI piano roll aligned to audio, with legato spans
Per-note wheels: technique, articulation, string, position, finger

Fine-grained MIDI–audio alignment and temporal control; released to extend the dataset beyond techniques, e.g. fingering.

3

Multi-scale mixture-of-experts

Note-aware transcription cues and a frozen MERT encoder feed 8 temporal experts; a gating network per task routes them.

violin audio · 16 kHzFEATURE EXTRACTIONLog-mel spectrogram100 frames / sMERT-v1-330Mfrozen · 25 hidden layersTRANSCRIPTION CUESFrame-levelCRNNGRUonsetFrame-levelCRNNGRUframeFrame-levelCRNNoffsetcue c = [onset ; frame ; offset]each (B, T, 88) → 16-d embeddingnote-aware context for every frameMULTI-SCALE EXPERTSper-expert layer mixE020 msE140 msE280 msE3160 msE4320 msE5640 msE61.28 sE72.56 swindow = K·D·10 ms, K = 2 … 256PER-TASK GATING & HEADSchi , giMLP([hi; c]) → eigates on [g1…N; c]Σ αitaskei→ LayerNorm → ReLUTonalnormal / pizz. / flag.Articulationnormal / spiccatoLegatobow-change prob. (σ)

Temporal experts

Each expert learns its own weighting of the 25 MERT layers, then a dilated depthwise conv sets its window ki·di·10 ms, spaced exponentially from 20 ms to 2.56 s.

𝐡i′= ∑l=024 softmax(𝐰i)l ·𝐇l Layer-weightedsum of HlLinear+ LayerNormDW-Conv1d(Ki, Di)BiGRU256-dDropoutLN + GELU → Lineargate summary gihi

Per-task gating & heads

𝐦task= ReLU(LayerNorm( ∑i αitask𝐞i ))
  • Tonal (3-way) & articulation (2-way): cross-entropy with focal loss + load balancing.
  • Legato: frame-wise regression to Gaussian targets at bow changes.
10LBLSbow changeframes →
TrainVioTech120 + MOSA-VPT [1] (76 h synthetic, file-level labels) mixed 8 : 2 · 10 s segments · Adam, lr 5×10−4 Modeltranscription: HPT [4] as in VioPTT [1] · MERT-v1-330M [3], frozen · L = Ltrans + Ltech TestRWC [6] violin recordings (cross-dataset, unseen) · Bach10 & URMP for note transcription
4

Results: cross-dataset evaluation on RWC

90.49%
macro accuracy on RWC
+10.45 pp over VioPTT [1]
+36.5 pp
pizzicato F1 from MoE
57.46 → 94.00 (vs. no MoE)
+30.7 pp
spiccato F1 from MoE
59.78 → 90.50 (vs. no MoE)
+12.1 pp
note F1 on Bach10
50.7 → 62.8 (vs. VioPTT)

Table 1. Technique accuracy (%) on RWC; legato excluded to compare with prior work. Bold best, underline second.

ModelTNTPTFANASMacro
VioTech (ours)79.0789.6088.8497.7897.1690.49
w/o MERT layer weight86.1193.6865.4498.7483.6685.53
w/o transcription cue79.8395.2883.2899.5764.5184.49
w/o MoE85.9840.8569.6294.4361.4170.46
VioPTT [1]77.2288.8071.8977.2285.0880.04
MERTech [2]53.3643.2795.7753.3615.6152.27

VioTech has the best macro accuracy, led by spiccato (97.16%), while staying competitive on pizzicato and flageolet.

Table 2. Technique F1 (%) on RWC with legato.

ModelTNTPTFANASLSLBMacro
VioTech (ours)87.4094.0030.1098.6990.5097.6140.0276.90
w/o MERT l.w.91.2885.3535.2998.3486.4697.8943.4276.86
w/o trans. cue88.0995.5930.0397.5876.8697.9847.1776.19
w/o MoE88.3857.4630.8794.7259.7898.9264.0970.60

Trade-off: bow-change F1 drops vs. no MoE (64.09 → 40.02): sparse, phrase-level events need longer context.

Table 3. Note transcription (%), mir_eval; F1w/o: without offsets.

ModelBach10URMP
PRF1F1w/oPRF1F1w/o
VioPTT [1]48.753.050.762.544.444.944.654.9
VioTech w/o MoE54.858.056.165.239.157.546.359.7
VioTech (ours)60.965.062.879.145.660.451.969.3
5

How many experts?

Tonal normalTN024816320.2.4.6.81+0.3 pp+5.2 ppPizzicatoTP02481632+7.0 pp+32.8 ppFlageoletTF02481632+23.8 pp+11.0 ppArtic. normalAN02481632+0.9 pp+2.3 ppSpiccatoAS02481632+13.3 pp+15.5 ppSustainLS02481632+1.1 pp+0.0 ppBow changeLB02481632+2.2 pp+0.0 ppVioTech120 test (in-domain)RWC (cross-dataset)best mean± std over 3 seedsx-axis: number of experts (0 = no MoE) · pp = gain of best over no-MoE

MoE helps most on rare, expressive techniques, especially cross-dataset (3-seed means on RWC: pizzicato +32.8 pp, spiccato +15.5 pp), while near-ceiling classes barely move. The best expert count depends on technique and dataset.

6

What do the experts learn?

Gate routing by technique (VioTech120 test)

0%25%50%75%100%14161514141141%TN2314132143%TP1216151310141144%TF141221141357%AN131125171360%AS1725241870%LS1522311672%LBshare of gate weight on long windows (≥ 320 ms, above black line):TonalArticulationLegatoexpert window20 ms40 ms80 ms160 ms320 ms640 ms1.28 s2.56 s
Tonal techniques lean on short windows; articulation and legato shift to ≥ 320 ms, about 70% for legato.

Learned MERT layer weights

VioTech120 testTNTPTFANASLSLBTALRWC (cross-dataset)TNTPTFANASLSLBTAL04812162024MERT layer.02.03.04.05.06tonal ↑ (low)artic. & legato ↑ (mid)
Tonal classes rely on lower-to-middle layers (local timbre); articulation and legato weight middle layers (broader context).

Frame embeddings on RWC

PizzicatoSpiccatoFlageoletNormalBow changeUMAP · 1,000 frames / class
Pizzicato and spiccato separate cleanly; bow-change frames form their own clusters.
7

Take-home

  1. Frame-level, segmentation-free violin technique detection at 10 ms; new state of the art with strong cross-dataset generalisation.
  2. Experts specialise by time scale and MERT depth per technique, making the model interpretable; long-context experts for bow changes are next.
  3. VioTech120 + annotation interface released for violin technique and fingering research.