Enhanced chroma — harmonic + non-local + median

An enhanced chroma demo on a fully known signal: a C4–E4–G4 arpeggio (1 s each, fundamental + octave partial) contaminated with noise-burst percussion (every 150 ms) and sparse chromatic passing tones (80 ms, at C#/D#/F#/G#/A#). Pipeline: effects.harmonic(margin=8) (kills the bursts) → feature.chroma_stft → element-min with decompose.nn_filter(aggregate='median', metric='cosine') (kills the sparse passing tones — they don't recur, so their cosine-nearest neighbors don't contain them) → horizontal median filter (size 9, reflect boundary like scipy). Badges assert the enhanced chromagram's top-3 pitch-class rows are exactly {C, E, G} and the energy-concentration ratio (C+E+G rows / total) improves by > 20% over raw chroma. Node-verified against dist before this page was written: raw 0.536 → enhanced 0.667, +24.4%, per-segment argmax [0, 4, 7].

computing…