BTrack
BTrack copied to clipboard
Some question about algorithm implementation
Hi, thank you for sharing this library!
I have some question about this implementation:
-
Why swapping of the windowed time-domain signal before taking FFT while calculating ODF, but no swapping of the ODF while calculating ACF?
-
Is it necessary to do resampling on ODF? even if onsetDFBufferSize is equal to output_len?
-
Why only 41 BPM values kept (80:2:160) but not 81 values (80:1:160)?
-
Why x[0] is abandoned in x_thresh calculation at first 't' sample in adaptiveThreshold?
-
In the mapping from "beat period observation vector" to "tempo observation vector", why the higher octave of beat period (the "t_index2" term) is considered but without the lower octave? And Is it necessary to calculate the whole 128 dimension combFilterBankOutput as Davies[2007]?
Thanks in advance!
Is it necessary to do resampling on ODF? even if onsetDFBufferSize is equal to output_len?
From reading the code it looks like the resampling is always done "just in case", but it would only be useful in the case where onsetDFBufferSize != 512. If you keep everything 512, it's OK to omit it.
I am also wondering why the time-domain signal halves are swapped before FFT. I can't find any property of the FFT related to this kind of swapping. Any idea?