Chords with skipped notes are not found
greird opened this issue · 4 comments
Ex: x3243x (Cmaj9) doesn't match any formula.
Hi @torqueville,
Thanks a lot for your investigations !
You are absolutely right, I had noticed that the 9th were never found and the same goes for anything above a 7th actually.
This comes from an issue in the way I calculate the integer formula of a chord. Whenever I find a 9th I store it as a 2 in the integer formula instead of a 14 (indeed It's the same note, 1 octave above).
Therefore if I replace the 14 by a 2 in the original formula it should work, but I'm not really happy with this solution. I'm afraid this could lead to false positives and I'm pretty sure my code needs to be patched there anyway.
Regarding the "no 5" formulas I will consider adding them. My concern is: can it be major chord if it lacks a 5th ?
I'll try to find a solution next week.
Cheers.
Hi @torqueville ,
Sorry for the late reply and thanks a lot for your insightful feedback !
I have a lot of evolutions planned already but truth is it will take me ages to develop everything.. I just need to prioritize. 😉
For the moment I still need to fix the chord recognition feature.
I've fixed the integer formulas (replacing 14 by 2, 17 by 5 and 21 by 9) and some typos in the diminished and m9b5 formulas.
Here are the chords I've been able to recognized thanks to this update: Add9, m(add9), maj13, 6/9, m6/9, m9(maj7), m9b5 and diminished.
Minor 9th and Major 9th chords are still not recognized for some reasons. I'd like to fix this before adding a "no 5th" mode.
To be found, a chord must contains all the intervals that appear in the dictionary formula.
Major 9 and Minor 9 chords can only be found if they contain all 6 intervals (1-3-5-7-9 and 1-3b-5-7b-9). More complexe chord can't be found with a 6 strings tuning.
2 solutions:
- Add formulas for chords with skipped notes
- Make the matching mechanism fuzzy
This issue has been fixed by the release v0.1.0.beta-4.