JIT-MPE: Just-in-Time Multi-Pitch Estimation under Output Deadlines
Organizations: Frieve
Abstract
Live pitch displays, score followers and accompaniment systems must know which pitches are sounding within tens of milliseconds, but instrument-agnostic multi-pitch estimation (MPE) has mainly been designed and evaluated offline. We present JIT-MPE, a causal MPE model of 86k parameters for mixed ensembles. It gives an immediate estimate of each 20 ms frame and re-estimates the same frame as 20, 40, 80 and 160 ms of further audio arrive, so that a live display can show pitches at once and then refine them. We score each output only at a deadline by which it can be computed from the audio that has arrived, on five development sets and four held-out sets evaluated only after all design choices were frozen. At a 50 ms deadline, which reads the update made with 40 ms of lookahead, JIT-MPE is significantly more accurate than five of six published offline MPE systems in 38 of 45 comparisons (15 of 20 on the held-out sets) and less accurate in only two, although these systems read the whole recording and all but one have 6 to 170 times as many parameters; the sixth, supervised on URMP, is higher on four of the nine sets. The deadline costs little: on the held-out sets, JIT-MPE at 50 ms is within to points of recording-level macro F1 of its own final output with 160 ms of lookahead and within to points of a bidirectional model of similar size. Waiting pays off where the immediate estimate is weakest: the update at 50 ms adds 1.7-3.6 points over it on the development data and three of the four held-out sets, and raises the recall of reference frames in the first 20 ms after a note onset from 9.8% to 38.4% on the held-out AAM set. The slowest measured frame takes at most 4.15 ms on one CPU thread. Code and trained weights are available at https://github.com/Frieve-A/jit-mpe.
Figures & tables
| Radius | Parameters | F1, All-29 (%) | |||
|---|---|---|---|---|---|
| Model | (st) | causal | bidir. | causal | bidir. |
| Dilated CRNN | 47 | 95,767 | 93,936 | 75.93 | 79.84 |
| Harmonic CRNN | 128 | 85,813 | 83,729 | 76.47 | 80.46 |
| JIT-MPE | 128 | 86,425 | — | 80.55 | — |
| Development | Held-out | ||||
| System | All-29 | AAM | ChoraleBricks | BSED-real | BSED-syn. |
| JIT-MPE, ms | 80.83 | 82.58 | 77.96 | 64.52 | 77.01 |
| JIT-MPE, full length (160 ms lookahead) | 80.55 [ , 0.58] | 83.85 [ , ] | 77.36 [0.47, 0.71] | 65.49 [ , ] | 78.28 [ , ] |
| Harmonic BiCRNN, offline (whole recording) | 80.46 [ , 0.76] | 84.67 [ , ] | 77.17 [0.08, 1.49] | 65.04 [ , 0.27] | 77.50 [ , 0.06] |
| URMP F0s | Bach10-mf0-synth | ChoraleBricks f0 | ||
| System | Training domain | (dev, 9/7) | (dev, 10/10) | (held-out, 10/10) |
| Ours: causal, output deadline ms | ||||
| JIT-MPE, ms | public, recording-disjoint | 84.67 | 91.06 | 77.96 |
| Published systems: offline, each reads the whole recording | ||||
| SS-MPE v0.1.0 | NSynth | 60.81 [17.84, 31.52] | 72.28 [17.48, 20.24] | 69.76 [6.37, 9.92] |
| SS-MPE v0.2.0 | URMP (sup.) | 88.39 † [ , ] | 92.87 [ , ] | 80.88 [ , ] |
| Development | Held-out | |||||||
| System | Training domain | note-19 ‡ | TRIOS | PHENICX | AAM | ChoraleBricks ∗ | BSED-real ‡ | BSED-syn. ‡ |
| 19/17 | 5/5 | 4/4 | 100/100 | 10/10 | 80/9 | 20/9 | ||
| Ours: causal, output deadline ms | ||||||||
| JIT-MPE, ms | public, rec.-disjoint | 77.0 | 77.6 | 77.2 | 82.6 | 78.9 | 64.5 | 77.0 |
| Published systems: offline, each reads the whole recording | ||||||||
| SS-MPE v0.1.0 | NSynth | 54.8 [18.5, 26.2] | 58.0 [14.3, 25.7] | 54.0 [19.7, 27.2] | 60.9 [19.7, 23.8] | 71.4 [5.6, 9.3] | 45.5 [15.7, 22.7] | 51.9 [21.6, 28.7] |
| Development | Held-out | ||||
|---|---|---|---|---|---|
| Model | All-29 | AAM | ChoraleBricks | BSED-real | BSED-syn. |
| JIT-MPE | 80.83 | 82.58 | 77.96 | 64.52 | 77.01 |
| later read of the delay heads (= JIT-MPE d=0 ) | 77.24 [2.81, 4.51] | 80.41 [1.96, 2.40] | 77.95 [ , 0.12] | 62.81 [1.33, 2.05] | 74.32 [2.32, 2.97] |
| window and multi-head training (= Harmonic CRNN) | 75.69 [1.09, 2.08] | 80.32 [ , 0.44] | 77.66 [ , 0.80] | 62.99 [ , 0.14] | 73.31 [0.56, 1.53] |
| harmonic front end (= Dilated CRNN) | 75.13 [0.18, 0.91] | 80.34 [ , 0.44] | 77.92 [ , 0.24] | 60.78 [1.86, 2.62] | 72.17 [0.02, 2.11] |
| System | Parameters | GMAC/s | Output |
| Ours | |||
| JIT-MPE | 86k | 0.68 | causal, ms |
| Harmonic BiCRNN | 84k | 0.66 | offline |
| Published MPE systems | |||
| Basic Pitch | 17k | 0.30 | offline |
| SS-MPE v0.1.0 | 545k | 0.65 | offline |
Appendix figures & tables3 assets
Supplementary material from the paper’s appendix.
Appendix
| Dataset | Clips | Label source |
|---|---|---|
| GuitarSet | 138 | note annotations |
| Slakh2100-redux | 137 | MIDI notes with sustain pedal |
| MusicNet | 67 | aligned nominal note pitches |
| Winterreise | 10 | aligned nominal note pitches |
| Cantoria | 64 | union of per-voice pYIN tracks |
| Dagstuhl ChoirSet | 9 | aligned score notes |
| System | Source | Checkpoint | Training and selection |
|---|---|---|---|
| SS-MPE v0.1.0 | github.com/cwitkowitz/ss-mpe , release v0.1.0 | SS-MPE experiment | self-supervised on NSynth, chosen by NSynth validation loss |
| SS-MPE v0.2.0 | github.com/cwitkowitz/ss-mpe , release v0.2.0 | URMP supervised | supervised on URMP, chosen on the URMP F0 recordings |
| Basic Pitch | github.com/spotify/basic-pitch | ICASSP 2022 model | MAESTRO, Slakh, GuitarSet, iKala, MedleyDB |
| Timbre-Trap | authors’ release | original model | URMP, selected on a nine-recording URMP subset |
| WP-DRCNN | github.com/christofw/ multipitch_architectures | DRCNN size L, MuN-10full | MusicNet |
| WP-PUnet XL | github.com/christofw/ multipitch_architectures | PUnet XL, MuN-10full | MusicNet |
| Development | Held-out | ||||||||
| System | URMP f0 | Bach10 f0 | note-19 | TRIOS | PHENICX | AAM | ChoraleBricks f0 | BSED-real | BSED-syn. |
| Our models (causal models at ms unless noted; bidirectional models at full length) | |||||||||
| JIT-MPE, 50 ms | 84.7 | 91.1 | 77.0 | 77.6 | 77.2 | 82.6 | 78.0 | 64.5 | 77.0 |
| JIT-MPE, full length | 83.4 | 90.0 | 77.0 | 77.3 | 77.2 | 83.9 | 77.4 | 65.5 | 78.3 |
| JIT-MPE d=0 | 82.3 | 88.3 | 73.0 | 75.6 | 75.7 | 80.4 | 77.9 | 62.8 | 74.3 |
| Harmonic CRNN | 81.2 | 86.9 | 71.5 | 75.1 | 75.4 | 80.3 | 77.7 | 63.0 | 73.3 |
Music Information Retrieval
Music Information Retrieval develops computational methods for finding, classifying, describing, and analyzing music from audio, scores, and metadata.
See all 153 papers