I have a signal which consists of an onset and a release period.
The onset, sounding like a thud, excites frequencies across the entire frequency range (0-22 kHz). It lasts for about 0.1 s.
The release, sounding like a ring, excites 2-5 specific narrow frequency bands. Their amplitudes decay exponentially, albeit at slightly different rates.
I want to find the end of these narrow peak tracks. The method I am using now tracks the max amplitude in the narrow frequency bands and takes a windowed derivative. When this derivative passes through a threshold value, the end of the peak track is marked. This doesn't seem to be working consistently for particularly noisy signals.
My second idea was to track the amplitude of the peak tracks and compare them to the noise level. As soon as they reach the noise level, mark it as the end.
How do I estimate the noise level if there is no non-signal segment? The segment before the strike, is often very short or has some ramp in amplitude making it unsuitable as an average.
Edit: Here's the spectrogram: