-
Notifications
You must be signed in to change notification settings - Fork 117
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
[question] chord encoding with inversions #237
Comments
tagging @ejhumphrey because of course |
@bmcfee this is the expected behaviour given the Harte notation - although I agree it could be clearer. I think an absolute pitch class would will work fine, except that you lose some enharmonic information. For example, I can imagine some scenarios in which I really want to know that I have |
haha, yep.
I've found it's best practice to discard data labeled as such rather than try to map it. If it's got an uncommon label, it's because something weird is going on, and probably requires closer inspection.
haha plenty to be frustrating.... @mattmcvicar you remember the |
Sure -- my question was more along the lines of "is this how annotators interpret the notation?"
Agreed. Nobody ever includes rev#9 anyway. OTOH, it's a small number of cases we're talking about, and probably less than an hour's worth of work to verify and/or correct the annotations. This problem came up for me because I want to implement a chord normalization function. Given an input chord and a target vocab complexity (min/maj, +dim/aug, +sevenths, etc), it would standardize the root (sharps only) and eliminate inversions and unnecessary extensions. I figured the natural way to do it would be to go through the r/p/b encoding, but this minor-inversion thing is throwing a wrench in the works. |
Is this resolved? |
Conceptually, yes. It would still be good to have a PR to improve the relevant documentation for this issue though. |
Ok, I will leave it to you all to decide how best to improve the docs (since I don't understand the issue and probably won't). |
I ran into this issue while playing around with
mir_eval.chord.encode
. The interpretation of inversions isn't totally obvious, or well-documented.Example:
I would expect
G:min/3
to put the (minor) third in the bass, but the encoder is interpreting/3
as natural (second example has both a 4 and 5 in the pitch class encoding). Inversion with a flat-3 does the right thing (last row).Does this seem counter-intuitive to anyone else? It's not exactly clear in Harte's paper, but since they don't provide notation for distinguishing natural from sharp/flat, I think the only reasonable interpretation is that inversions must be encoded as absolute pitch class. This should probably be indicated in the documentation somewhere.
As a side note, this might lead to some transcription errors in existing datasets. For example, rev#9 is annotated with a
min/3
in the isophonics corpus, and billboard has several such examples. It's not obvious to me that these are errors, but it seems likely.The text was updated successfully, but these errors were encountered: