Repository navigation
benchmarks/idmt-first-run - #335
Open
bellescoincidences wants to merge 68 commits into
Open
bellescoincidences wants to merge 68 commits into
bellescoincidences wants to merge 68 commits into
Conversation
…enchmarks/README.md
…-first-run branch
…on benchmarks/idmt-first-run branch
…puts by drum part, with unsorted assuming the default mode
…metrics functionaly in idmt analysis outputs
…sing 70% KD to lower_bound freq 43.1. Updating constants.py for KICK_RANGE to reflect and test
… lower ranges returned zero improvement in post-evaluation idmt mir_eval re-run
…ript/DrumScript into benchmarks/mdb-first-run
…r rather than previous (named DRUMSCRIPT_TO_CODE)
Member
13 tasks
Member
|
I am leaving this open for now as I want to cut a new release for the |
…/DrumScript/DrumScript into benchmarks/idmt-first-run
…benchmarks/idmt-first-run
…benchmarks/enst-first-run
…yze_idmt_dataset (changed to DRUMSCRIPT_DICT)
…lyze_idmt_dataset (changed to DRUMSCRIPT_DICT)
…ch the unzipped native folder nameof the source dataset used for benchmarking (as stored in DrumScript/benchmarks/datasets)
…ript/DrumScript into benchmarks/idmt-first-run
…ript/DrumScript into benchmarks/idmt-first-run
victoria-mckinney
force-pushed
the
benchmarks/idmt-first-run
branch
from
October 8, 2026 19:48
d2073f6 to
819c652
Compare
victoria-mckinney
force-pushed
the
main
branch
from
October 8, 2026 19:48
5ff2d30 to
4666a5a
Compare
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Continues #321, which established the first reproducible IDMT baseline and
identified kick recall as the standout weakness (R = 0.285, "missing ~95%" on
acoustic RealDrum).
This PR diagnoses that failure and fixes it with a single constant change:
KICK_LFER_MINlowered from0.32to0.08. Also adds the diagnostic toolingused to arrive at that value.
Diagnosis
31 of 95 IDMT tracks scored a kick F-measure of exactly 0.000, while precision
was frequently exactly 1.000 wherever the rule fired. That signature indicates a
rule that is correct whenever it fires but almost never fires.
Stage attribution across a controlled three-track comparison:
no_onsetgatedmisclassifiedokOnset detection was not at fault. Every reference kick was detected. All 22
losses occurred at classification, all on the same condition:
lfer_low. Peakfrequency passed in every case (43–65 Hz). The lost kicks were labelled as open
hi-hat (12) or closed hi-hat (10).
Root cause
LFER is the proportion of spectral energy below 150 Hz - a ratio, so sensitive
to whatever else occupies the analysis window.
KICK_LFER_MINwas calibrated on isolated drum stems, where the denominatorholds little but the kick. In mixed audio a simultaneous hi-hat adds
high-frequency energy to the denominator while contributing nothing to the
numerator.
Across 5,387 annotated IDMT onsets:
The threshold of 0.32 sat above the median of the class it was meant to
detect.
Threshold selection
Grid sweep over 420 combinations of
KICK_FREQ_MIN,KICK_FREQ_MAXandKICK_LFER_MIN, scored against all 5,387 onsets. Holding the frequency band atits live 40–140 Hz:
KICK_LFER_MIN(Onset-level micro-averages, not directly comparable to the track-level
macro-averages reported below.)
The best combination overall (0–180 Hz, LFER 0.08) scored F = 0.855. Rejected.
A lower bound of 0 Hz only scores well because it admits onsets with a measured
peak frequency of 0 Hz, a measurement artefact rather than a drum. Raising the
upper bound to 180 Hz extends the kick band into the snare band (starts at
120 Hz) and the tom buckets, which append labels additively rather than
exclusively. A gain of 0.021 did not justify that coupling.
Frequency bounds unchanged. One constant moved.
Results: IDMT-SMT-Drums V2
Same setup as #321 - 95
#MIXfiles, 50 ms onset window, macro-average acrossitems.
Snare and hi-hat are unchanged to four decimal places.
By subset, against the table in #321:
#321 called out acoustic RealDrum as the worst case at KD F = 0.088. It is now
the best subset at 0.907.
Zero-scoring kick tracks: 31 / 95 → 0 / 95. Kick estimates 2,376 against
2,179 references - slight over-detection replaces severe under-detection.
Results: MDB-Drums (23 tracks)
Re-run specifically to test for collateral damage, since the tom rule suppresses
low_tomwheneverkickhas already been appended to the same event - aregression IDMT cannot detect, as it does not annotate toms.
No regression occurred, though not for the reason anticipated: the tom rules
produce zero estimates in both runs, so there was nothing to suppress.
MDB kick precision fell slightly, 0.690 → 0.663, while recall rose 0.341 →
0.852. Three previously near-perfect tracks now over-fire: Beatles
(0.990 → 0.847), Hendrix (1.000 → 0.810), Rockabilly (0.960 → 0.684). Five moved
from non-functional to working: Shadows (0.000 → 0.852), FreeJazz
(0.103 → 0.739), Disco (0.033 → 0.696), LatinJazz (0.000 → 0.659), BebopJazz
(0.000 → 0.657).
Tooling added
analyze_idmt_dataset.py:--diagnose-kick(per-reference stage attributionplus which rule condition failed), per-onset feature capture, and a threshold
grid sweep (
--sweep-csv,--top) that scores candidate rules withoutre-processing audio.
non-kick onsets, and a warning when the best candidate produces zero false
positives. Both fire on small samples where F = 1.000 is structural rather
than real.
Not in scope
#321 noted that IDMT lacks crash/ride/tom coverage, which is why MDB-Drums was
added. With MDB now running, the gap is measurable: ride has 835 reference
annotations and has never produced a single estimate; toms have 64 references
and likewise produce none. These are unreachable rules rather than mis-tuned
thresholds, and now represent a larger gap than the one closed here.
Testing
classes.
Housekeeping
in progress - Write up of work forthcoming and I will add results to this PR before merging
[DONE]: Updated
CHANGELOG.mdand added these changes to theUnreleasedsectioncc @nanaoto - this builds directly on the adapter you contributed.