-
Notifications
You must be signed in to change notification settings - Fork 206
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support half-length bars when tracking downbeats / bars #413
Comments
The problem is that the DBN part of There's code around which can deal with varying meter, but it operates on the beat level instead of frame level, please have a look at DBNBarTrackingProcessor. Of course, this does not solve your issue, but it might be a way to deal with it. If not, you could alter the transition model of Probably adding only transitions from the middle of a bar works better than what I tried back when working on the downbeat tracking system. I experimented with a single state space modelling up to N beats per bar and added "escape" connections, i.e. allow the bar to end at any beat position. Unfortunately this led to degraded performance since most musical pieces have a fixed time signature. EDIT: fixed the confusion of |
Thanks! Those are some useful tips. I realised I actually meant |
As if I knew what you were referring to, I made the same mistake; I corrected my answer above. As mentioned above, the difference lies in the "level" of signal it is working on:
In case of In case of Hope this explains the difference. Having this said, it is not impossible to add "shortcut" connections from the middle of a bar back to its start, since this would only double the number of transitions required. If no tempo change is modelled, this can be basically reduced to only one additional transition, but I guess the whole system will perform worse than one with tempo changes between beats. P.S. the mixup is due to copy paste of docstrings I guess. |
Hehe - sychronised typos 😆 Thanks for the explanation, I think that makes a lot more sense now. Maybe I'll start by trying to get the This reminds me, I had a related but more general point about higher-level feature extraction, but I'll not muddy this issue with that. |
I planned to do add automatic beat tracking to But back to the topic: you can combine the beat and downbeat activations of |
Background
Some songs, whilst regular in tempo and metre have an "extra" bar that are half as long (or arguably have a 50% longer bar).
Understandably this confuses
DBNBarTrackingProcessor
DBNDownBeatTrackingProcessor
, which I've found if allowed will often choose 6-time (for a 4-4 piece) to account for these if they happen regularly enough. Obviously this means that half the time the bars are in the wrong place, and all the time they're in the wrong meter. In contrast, if it chooses the generally correct meter (e.g. 4-4) then it will be 50% out for many important bars (start of chorus etc).Feature request
I don't know how the processors / RNN work (still a very new area to me) but it seems if they can accommodate BPM changes (the
transition_lambda
I think) perhaps there is a way to accommodate arbitrary or at least half-length bars, so that the beat part of the tuples emitted read1, 2, 3, 4, 1, 2, 1, 2, 3, 4...
.I wouldn't expect much luck with truly complex time signature changes (e.g. Master of Puppets) but half-bars feels like a sweet spot perhaps?
Example songs
I found a list of some better known ones.
Also on a heavier note: One Step Closer.
The text was updated successfully, but these errors were encountered: