4 ms·
The problem is not the testing. The problem statement is flawed. Chord naming is not particularly useful as simply a function mapping a set of undifferentiated
by epcoa 2y ago
The problem is not the testing. The problem statement is flawed.
Chord naming is not particularly useful as simply a function mapping a set of undifferentiated notes to a name.
The post interestingly gets that the root note is important, but then sort of misses the point in the end. You either have to specify the root, or if the procedure is generating all combinations then one needs to know the implied root in the output (and then this of course leaves the hard bit of identifying what is the correct root to elsewhere).
As an example, an input of {A, C, E, G} will spit out C6 and Am7. Which one it is, is the important part. And these are both relatively common chords.
Looking at prior art you will see that chord namers either take something like a key to infer the root, they take the root explicitly, or they treat the notes as an ordered set, some then improperly assume the first element is the root (conflating root and bass).
In a GUI that is super misleading.
https://muted.io/chord-identifier/ https://muted.io/chord-identifier/
eg: If you put in E-G-C it identifies as Em#5. Which is a completely false sense of "oneness" and would usually be incorrect. In practice E-G-C played on the keyboard in pop music is more likely a first inversion Cmaj chord, or C/E.
There are better tools out there (https://www.scales-chords.com/ https://www.scales-chords.com/), but the example above would be how not to do it. This is not to dunk on it (or the post), but to motivate thinking more about the problem.
In this case the posted algorithm won't identify Em#5, simply because the database doesn't have an those entries.
If you scale the algorithm by augmenting the database with more spellings then the output set is going to become larger without being more useful. It will be technically correct, yes that C-E-G might be a Csus4♭4, a C, a Em#5, but what do I do with that.
- ks2048 2y agoI think you're right, and other posts here point out that you need context for this problem. A good dataset of the type I was referring to, would take a score and simply remove the chord labels and try to infer them for the whole piece.
- rerdavies 2y ago... while inferring from the overall feel of the piece when and where the piece was composed, and what compositional frameworks the composer may be using, so that it can use the correct dialect. Good chord symbols indicate not only function, but also the composer's intention. Debussy probably needs different chord symbols from a 1930s Broadway tune, which needs different chord symbols from 1960s jazz leadsheet, which needs different chord symbols for a 21st century jazz composition inspired by Dave Leibman's See "A Chromatic Approach to Jazz Harmony", which is where chord symbols go do die. Seriously. Liebman's chord notation style for quartal chords is influential, if not authoritative.
- kazinator 2y agoNope. It's an "Em6 (no 5)".
- deleted 2y ago[deleted]
- epcoa 2y ago♭6 ;-) (E-C is minor 6th) But I think it should be noted from the context of that comment (and the original article) that the names are necessarily ambiguous. So the names E-G-C (or whatever set you choose, how about F#, A#, C#) are pitch positions and don't disambiguate between enharmonic equivalents, eg in isolation we have no reason to prefer F# over Gb. Which is the problem.
- kazinator 2y agoYou picked a good example because by key signature circle-of-fifths distance from C major, the choices are equidistant. Gb-Bb-Db can be obtained in the key of Db: Bb, Eb, Ab, Db, Gb. It is that key's subdominant. F#-A#-C# is in the key of B: F#, C#, G#, D#, A#, and is that key's dominant. Five sharps or five flats. Same distance from C major.