atlantis_drums, five pieces

DrumSep MDX23C splits a drum stem into kick, snare, toms, hi-hat, and cymbals. It has no lane for a rim shot and none for a bell. A rim shot is a snare and a bell is a cymbal, but both are loud and bright, so both can be dropped into the wrong lane. This checks whether any of them were turned into a kick or a tom.

Rim shots or bells made into kicks
0
out of 372 kick onsets
Bells made into toms
0
every ringing bright hit stayed in cymbals
Rim crack leaking into toms
28
13.1% of toms onsets, cleaned into a sibling file

What each lane actually contains

Two numbers separate these instruments. Low share is the fraction of a hit's energy below 250 Hz, where a kick and a tom live. High share is the fraction above 4 kHz, where a rim shot's crack and a bell's ping live. A hit that is brighter than it is low does not belong in a kick or toms lane. Ring is the share of isolated hits still sounding at 30% of their peak 300 ms later, which is what separates a bell that rings from a rim shot that cracks and stops.

LaneRMS dBOnsetsLow shareHigh share RingBright hitsReads asVerdict
kick-15.03720.7680.0463.9%0a kick drum: nearly all its energy is low and it does not ringno rim or bell
snare-22.83070.1340.2932.8%288a snare, including rim shots: bright crack that stops fastbright as expected
toms-25.92130.4790.11850.8%28pitched toms: low fundamental with a long decay13% need cleaning
hh-35.33450.0090.49555.3%343a hi-hat: bright, tight, low sustainbright as expected
cymbals-28.41500.0070.60264.9%149cymbals including bells: bright and it rings onbright as expected
The rim shots and bells went where they belong. Snare reads bright (0.293 high share) but stops fast (ring 2.8%), which is the rim-shot signature. Cymbals read brighter still (0.602) and ring on 64.9% of isolated hits, which is the bell signature. Kick shows 0 bright hits out of 372.

Two bugs I found in my own detector first

The first pass reported 84 misassignments, including sustain values of 10.46. A hit cannot be ten times louder 300 ms after it was struck, so the measurement was wrong, not the audio. Two causes. Onset backtracking reports the quiet run-up before a transient, so a 20 ms peak window measured the approach instead of the strike. Dense fills put the next hit inside the decay window, so sustain was reading a different drum. The fix measures the peak across the first 100 ms and judges decay only on hits with 400 ms of clear air after them. The corrected count is 28, all rim character, no bells.

What was changed

A 12 dB shelf above 4 kHz was applied to the flagged toms windows only, ramped in across 4 to 6 kHz rather than cut as a cliff, so the stick attack survives and the tom still sounds like a drum. That touched 2.1% of the lane and moved its high-band level 0.8 dB. The result is toms_clean.wav. Every original DrumSep output is untouched, so the uncleaned lane is still there to compare against.