Replies: 7 comments
-
That's indeed something that bothered me as well. I think your idea is definitely worth investigating. What you could try is to manually alter the downbeat activation produced by |
Beta Was this translation helpful? Give feedback.
-
Thanks for the tip, Sebastian! For some of the incorrect downbeats in my dataset, I just switched to the beat-synchronous RNNBarProcessor/DBNBarTrackingProcessor. There was one holdout (this song) for which I was able to do what you suggested. I had to give at least 5 hints for it to work, and I had to use .999 to avoid a division by zero, but it worked!
|
Beta Was this translation helpful? Give feedback.
-
This reminds me that I always wanted clip the input. Do you mean that this attempt worked only for single song (out of how many)? Could you please send me links to songs it is still failing? That would be of great help. |
Beta Was this translation helpful? Give feedback.
-
No, I only attempted this approach with 1 song |
Beta Was this translation helpful? Give feedback.
-
Actually, I did find a song that this approach isn't working for: Syeeda's Song Flute Despite adding nearly 30 hints, the downbeats come back one beat off what it should (the true downbeats come on the '4' count). Jazz is probably a difficult genre, given the off-beat percussion. Ideally the model could handle this, but in the mean time I did some post-processing where I shifted the results by one:
|
Beta Was this translation helpful? Give feedback.
-
Regarding "giving hints" to the Viterbi algorithm, you are looking for the "evidential Viterbi algorithm, which Florian Krebs et al used for beat tracking in "Unsupervised learning and refinement of rhythmic patterns for beat and downbeat tracking", EUSIPCO 2014. (https://ieeexplore.ieee.org/document/6952181) Basically, for some time steps t, you want to mask "wrong" states. In this case, if t is a downbeat position, mask all non-downbeat states (with some tolerance around t). |
Beta Was this translation helpful? Give feedback.
-
@fdlm Thanks, that's exactly what I want! |
Beta Was this translation helpful? Give feedback.
-
Expected behaviour
If downbeats come back incorrect, it would be nice if we could help the beat/downbeat trackers get things right, by providing a rough estimate of a particular time at which a downbeat occurs. This observation (or observations?) would be passed onto the Viterbi algorithm, which would use it as an anchor while coming up with probabilities for the remainder of the song.
This might be a nice feature any time Viterbi is used in madmom
Actual behaviour
I've noticed RNNDownBeatProcessor can get things wrong, and I don't have an easy way to correct and re-run it (at least, playing with the threshold param doesn't help)
Beta Was this translation helpful? Give feedback.
All reactions