Yes, depending on the accuracy with which you want to annotate genre, this might not be possible, and is one of the reasons that we started to focus on community driven genre annotations.
Unfortunately, according to current research, it’s still not really clear what properties are both easy for a machine to identify, and is unambiguous to humans as well. As we mentioned earlier, within MetaBrainz we don’t have the resources to perform this kind of research ourselves, and so at the moment this is not something that we’re able to focus on. Perhaps in the next few years there will be some newer techniques from academia that we might be able to take advantage of.
No, this isn’t the underlying problem. The main problem that we saw was tracks that do have a clear BPM, but it was incorrectly identified by the algorithm, with no indication that it might be incorrect. In the case where we know there are particular styles of music which don’t have a BPM, and we had metadata available for that, it would be a good way of “masking” the computed value, or adding a notice that we’re not sure about the BPM for a particular track.
I think that classical music does benefit from clear BPM annotations, and BPM is definitely important, and so any algorithm that we provided should also work on this.
this is not the problem that we had in the essentia extractor used for AcousticBrainz. It worked OK on classical music tuned to a specific tuning, but not well on other types of music. Even when we had a rock song in a clear, known key, the results from the algorithm were incorrect. As I understand, these types of algorithms need to be independently developed for different styles, and then you need to use another piece of information (e.g. genre/tag annotations) to decide which algorithm’s results you should present to an end user. In the case of atonal music you should do something similar - first determine if it’s atonal, and if so indicate that any potential annotations may not be accurate.