-
Notifications
You must be signed in to change notification settings - Fork 10
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
Confusions with inversions #28
Comments
Hello @gotthehot I'm working on the chord dictionary module, which could provide a way to eliminate any issue related to preferences in chord notation or detection. Here is what the basic version on it look like: For your issue, i may implement 2 solutions:
I also plan to add a feature to also choose your preferred notation in the "Aliases" section, by toggling a little star next to it, so that you would be able to choose a new "preferred" chord notation setting (instead of only long/short/symbol). LMKWYT about this, it could help me providing the best solution for the next release. |
With such detailed approach utility becomes true offline chords encyclopedia. Definitely it should be helpful. But as for me such large chords database needs for some macro management to simplify refining and keep extensive dictionary functional. For example: simple way to disable all maj13#11 and all minaddb9 chords without browsing all 12 keys. Or display some chord (Fm9 for your screenshot) but globally disable all too complex / uncommon chords interpretations (G#M7add13 or Eb6/11) thus display simple / common interpretations (for example Am7/C for C6 chord). |
@gotthehot of course you wouldn't have to disable for all keys, it will simple disable the whole chord type (it's just a disable toggle of the chord in tonal, which is something i was considering for a long time). Also, navigation will be improved before release, the screenshot is the first basic implementation, but i'm already working it making it way easier to use (grouping chords by quality, or maybe making it iterative like "perfect 5th > minor 3rd > major 7th" sections would give you all chords derived from minmaj chords). I'm currently working on the interactivity of the dictionary with 2 modes:
You will be able to go to the dictionary chord by through clicking on the chord display (chord, or a button, did not choose yet). But if you are expecting C6 (and other major sixth chords) to still be detected as alternative, i would better consider having an ordering preference. Once done, i may add an way to do it directly from the chord display, but that's not a prio, i fear this would be too much. Note that the example you give is interesting, because the current calculation for the quiz complexity gives the same difficulty for both min7 and maj6 chords... so this ordering will not fix this particular example, which makes me think that this issue is highly related to personal preference and intepretation. Key signature could be an insight on the context, but this is complicated as soon as you consider key changes. |
Right, 6th and m7 chords are similar not only for "complexity" but for functional purpose too. Usually 6th means "I want a touch of major here but with almost hidden majority" and m7 means "minor triad sounds too easy here, let me make it more mysterious with very gentle tend to next chord". Which of them to select is mostly a matter of diatonic scale you are in. And of chosen inversion - because all 7th chords except dominant-7th have inversion-sensitive sound in terms of ear perception. Both 6th and m7 are side-by-side widely used in jazz, m7 is a bit more common. Unlikely somebody should have a will to disable only one of them. In general considering inversion sensitive sound I see the only algorithmic way to prioritize them: for m7, 6 and m6 chords always prefer basic form over inversions. I.e. C6 over Am7/C and Am7 over C6/A. As midi-jar does now. |
@gotthehot ok so that's basically what's currently implemented, so i may have misunterstood what you are say:
You never expected Am7/C to be displayed over C6
Thus this could be helpful to be able to disable M7add13 in dictonary so that it would display Fm9/G# instead. I think in both cases i calculated the same complexity too. The thing is, it's kinda hard to differentiate a G#maj7add13 (if the tonic is G#) to a Fmin9 inversion, and the detection algorithme does not take notes orders/octaves into account. So disabling uncommon chords could be a way to help it |
Yes, Am7/C is really C6. There are complicated cases when inversions are used to simplify fingering and one inversion should be preferred over other concerning harmony context. For Am7 and C6 there is a basic "fingering shuffle" example. Progression Am7/E - Dm7 - G7/D - Cmaj7 (Fly Me To The Moon) uses inversion of tonic Am7/E, not C6/E as midi-jar shows now. But as for me showing Am7/E as alternative in case like this is not a harm. |
@gotthehot oh, you raised an interesting point here. And while I was working on updating the chord dictionary from tonal, i also tried to order chords so that it's easier to maintained in code (starting from the original ordering of tonal)... not to be perfectly logic (even if it has impact on detection).
So, min7 is simply after a majadd6... And this is clearly something that will need to be maintained/checked, and this is also the main reason i did not make a Pull Request to tonaljs yet: i am not confident enough in my skills and my work on the dictionary to make an update in one of the most used music theory library on the web. So once again, thank you for your help/suggestions. |
imho above classification contains risk of things messing up. For example there are no "major diminished" triads because diminished chord consists of two minor thirds (augmented in turn - of two major thirds). Let me present my own prioritized chords list. More common chords first. Triads
Four- & Five-notes ChordsBasic
NB: other seventh inversions as well as all sixth inversions should be used with care (or better not to be used) because of sound character significant changes after inversion. In general priority is always to basic form, if detected.
Relatively rare but usual for jazz
Much more exotic seventh chords personally I almost never seen in scores:
There are also "fifth chords" (aka "power chords") that are actually just intervals. Often with second tonic through octave. Used mostly for bass enhancing. Later note: current midi-jar 1.6.1 detects fifth chords excellent. Hope structuring chords priority according to this list will decrease number of issues like "strange chord displayed". |
I was also expecting to see some inversions as "main" chord, |
Hello @gotthehot and @piazic, Thanks for the detailed answer about how to order chords better. Now i just published the version 1.7.0 with the chord dictionary module. I invite you to make any feedback on missing aliases, or mistakes. Anyway, hope you enjoy this new update. |
@ArTiSTiX Thank you for your efforts! Seems midi-jar 1.7.0 became most comprehensive and flexible offline chords guide I saw ever. Database is well structured and personally I'm terrified with number of chords I never use and never seen in scores :) I've disabled m#5 too. Also I've made default display maj7, maj9, maj11 and maj13 instead of M7 etc. because of common pronouncing them as [meɪdʒ]. From other hand [æm] usually means "minor", so pronouncing i.e. CM7 as C [æm] Seven leads to confusion of Cmaj7 and Cm7 and misunderstanding in speech. May be it's the reason why known chords detectors (i.e. Pianoteq built-in) are using "maj" notation. BTW to continue on topic of confusions. Upper part of this screenshot is Pianoteq's chord detection: when playing mentioned above famous FMTTM standard using fingers shuffling from Am7/E to Am7 octave down: Am7/E Dm7 G7/D Cmaj7 Fmaj7/C Bm7b5 E7/B Am7 And yes, that is Fmaj7 (VI) and definitely not C6/11. Because, when it comes to practice, chords definitions are not about some algorithmic rules but more about rules of harmony. Also tight inversions of 7, m7 and maj7 chords are widely used when playing "block chords" - that's another reason to prioritize them over (may be) algorithmicaly right exotic chords like C6/11 in the example above. Also, as mentioned at topic start message, Am/C is minor triad sounding stable solid minor and should not be displayed as C6 - chord of dissonant and unstable nature also with V omission in case of Am/C. Just checked it with Pianoteq (upper part of screenshot) and it seems to be agree with me: That's for now most annoying midi-jar feature because still can't fix it even with current very flexible settings. I need 6th chords and chords with omissions that's why can't simply disable them to get Am/C displayed as Am/C. |
OK, i'll pause a bit development for MIDI Jar this month, and try to think about how to tackle this correctly. Thanks for the examples, i totally agree with this. NOTE: for the notation part, i also agree that maj instead of M feels more natural, but i don't see how to address this without this "preferred" feature of choosing aliases chord per chord. |
uhh, concerning the C6/11 (which gives me a Cmaj6add11 on my side) prioritised over Fmaj7/C, looks like a bug again to me... Might have a look soon because this is unexpected. |
@ArTiSTiX prioritizing of C6/11 over Fmaj7/C not seems a bug from the point of algorithm because C6/11 is at it's root (C) and Fmaj7 is inversion. From other hand Fmaj7/C is perfect example of ugly seventh inversion with ear-scratching obvious minor second dissonance when playing in block (tight) mode. But from musician's point of view Fmaj7 is much more common chord in progressions and thus IMHO should be prioritized in this (and similar) case. |
Expected Behavior
Simplest chords (triads, 7-th) inversions expected to be displayed as main chord (highest priority). Like midi-jar now displays Am/E chord:
Current Behavior
Here is display for A/E (first) inversion
Expected "A/E" display as main variant.
Here is display for C/E (second) inversion:
Expected "C/E" display as main variant.
At least because both chords definitely sounds as pure major and are used in diatonic scales as A and C respectively.
Second inversion of minor chords displayed as 6 chord with omitted V but retains pure minor sound.
Sometimes first inversion shows as expected but second (as far as I can see) never.
Role of inversions for 7-chord (except dominant-seventh) and more complex chords is not so clear topic (honestly it's a big mess) because of significant sound changes after inversions. But triads and dominant-7 inversions retain distinctive sound and thus their roles in diatonic scales they're used. So prioritizing of basic chords inversions have solid practical and functional background.
Steps to Reproduce
Suggested Solution (if any)
Globally prioritize basic triads inversions over their exotic relatives. Prioritizing of dominant-7 inversions also have a sense.
Your Environment
The text was updated successfully, but these errors were encountered: