aubio


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

onset detection questions



Hi all,
After perusing both the C and python code, I've run into a couple of conceptual questions about the transient detection functionality of aubio. The first thing that puzzles me is that there seems to be an implicit 4 frame delay built into the peak picker algorithm. In the case of my specific test files, for instance, this translate into an onset with a "now" value of 39 being reported during the processing of the 43rd frame read. I assume this is because the peak picker can not read ahead, and thus can only identify a true peak AFTER the fact ie. the amplitude of subsequent frames must decline. So, for my first question: I am right in this assumption? :)
	
The other thing aspect of the peak picker which has me scratching my head is that my tests have a revealed what looks like a one-off error to me. The typical scenario seems to be that something like this:

Frame        Onset Value
77                       0
78                       17324
79                       19192034
80                       3486258
81 3955739 <---isonset returns true

At this point, the peak picker will return that it is has located an onset at frame 77 which is, I reckon, a pretty good call. It does, however, specify a "now" value of .4469(77 * the hopsize/sample rate) which strikes me as a bit odd because that time actually represents the END of the 77th frame(or the beginning of the 78th). I guess it's a minor point but it seems like a recipe for an infamous one-off error to me. Am I off base here? Please correct me if i'm missing something. :)

Finally, i have noticed that PP sometimes significantly jumps the gun by a frame or two. Please bear with me through another example of mine:

Frame              Onset Value
118                        0
119                        0
120                        11493177
121                        3928404
122 729485 <--isonset returns true

Here the reported time is .684 or the end of the 118th frame. Up until i saw this, i was under the impression that the PP selected the last frame prior to the onset with a weighting of 0.0 as the local peak, but this clearly proves me wrong. Visual analysis of the waveform indicates that the actual transient doesn't occur for one or even two more hops. Could someone please explain to me the basics of the logic utilized by the PP algorithm?

My queries aside, i think this is great a library. Thanks for all the hard work!

regards,
-paul


--
To unsubscribe, send mail to aubio-unsubscribe@piem.org.