Chord identification does not distinguish between sharps and flats

• Sep 7, 2019 - 15:35
Reported version
3.2
Type
Functional
Frequency
Once
Severity
S5 - Suggestion
Reproducibility
Always
Status
by design
Regression
No
Workaround
No

Attached musescore-file shows that the plugin reads chord as A9 even though it is written with Db instead of C#.
This might be alright for some users, but it would be nice, if you could force the plugin to insist on correct accidentals - then you could use it as sort of proof-reading your score. chord_identifier.mscz


Comments

Sorry if I don't understand you. But the plugin already uses tpc. Problem is, it recognises intervals based on number of semitones, not tpc. Was hoping someone could fix this.

In reply to by runekamel

No.
This plugin only calculates intervals.

The chordIdentifierSp3_2.zip file also contains a text document.
This file clearly states that this extension cannot calculate chords: 6, m6 , 6/9, sus2, 1+5 and 1+8.

One thing that is not written there is:
Interval definitions within the plug-in code have a priority order (top to bottom). There is an obligation to place some chords higher and some lower. On average, it is necessary to estimate the best placement for each situation.

Maybe one day someone makes a plugin that includes all the accidentals in tpc. It is not possible to improve with its current shape.

In reply to by Ziya Mete Demircan

"Intervals" to me means "minor thirda not the same as an augmented seconds." Frequency ratios (in equal temperament) are not intervals. I think the OP's point is quite valid. That MS datastructure is not MIDI, but has all the correct info for accurate interval labelling, mandates that any such functionality use it.

In reply to by [DELETED] 1831606

Yes, OP's request makes sense.
However, as the fifth coder/maintainer/editor of this extension, I would like to say that this code structure does not fit the requested format.

The term "interval", as used herein, refers to the distance of notes (in half-steps) to the root-note*1 in the calculation (used in the code).

eg: definiton:
[4, 7]  //Major

means :

root note (=0)
4 half steps up from the root, 
7 half steps up from the root. 

 
The half-step-interval-4 used in this definition, can be one of the musical-note intervals b4, M3, ##2.
eg: C as root-note: Fb, E, D##

 
*1: There is also a separate function that calculates what the root note should be.

Is there anyone who can suggest what a, g, b, db, e chord should be according to tpc? (without using enharmonics)

Play it on the piano and ask me what this chord is, and I'll tell you "it's A7 (9)".
If you say "here is db, not c#", I would say "misspelled".

In reply to by Ziya Mete Demircan

I see countless clusters every day in student work which force me to say "this is not a chord", that is, not a functional *sonance I can identify. Nevertheless, there are some 6 pitch-class clusters in Bach, but the prize is still unawarded for finding a seventh; yet, calling them "chords" denies the nature of counterpoint. I believe I have seen times in Mahler when both spellings of a note occur simultaneously (one as a lower altered-neighbor-tone, the other as an upper) but I can't cited it.

To assume that "C D# G" is a misspelled C minor triad, or F# B Eb a misspelled B major, would be incorrect. Such "chords" are not infrequent in real music (I think of one in Bach's organ partita, O Gott du frommer Gott" BWV 761), and their effect is very striking to the ear in context. Yes, this is an obscure effect (and both more and less weird in historical non-equal temperaments), but to assume it is an error is itself an error. Of course (1) in 99% of beginner/student scores, especially from MIDI, it would be an error, and this would be helpful (2) Why would I or anyone ever apply a 'chord recognizer' to a complex polyphonic work such as BWV 761 (except for amusement to see how well it does). On the other hand, the gesture E-D#-E in a C major context is common in jazz and ragtime, although adepts in those idioms might argue about whether "D#" or "Eb" is the correct call.

In reply to by runekamel

In the final stage, this plugin can only calculate the half-step intervals between two notes.

Maybe someone might try to make another plugin to find note / chord spelling errors.

Because the plugins are usually (*1) used to perform a specific job and then stop (like a single-shot weapon).


*1:At this point, I'm sure an _objection_-warning-lamp flashes in your mind. But the keyword here is "usually"

In reply to by [DELETED] 1831606

@BSG:
I'm not sure if we should evaluate this horizontally (contrapuntal) or vertically (harmonic).
Assuming the harmonic rhythm as per measure, In terms of chords: Gm7, A7, Dm
As accidentals occurs on weak(ed)-beats, it can be considered as an harmonic effect (as you say) on a contrapuntal line.

Bach's Art speaks here in melodic lines and between the lines (instant changes).

The (counter)point is that chord-analyzing plugin has to know that. Appoggiature occur on strong beats, but by definition, do not change the harmonic calculus.