I am trying to abstract the building blocks for a Musical Chord for a Music Composition Code Library, I am trying to fit this in a way that complex chords can be created and properly named.
This is one of the main building blocks on the Composition Core, so it must be very well implemented to prevent changing many thing on the future.
So in my head this is how chords work, The chord is composed of the chord factors, the voicing setup and the inversion.
The chord factors are composed by the quality of the chord (Major, Minor, Augmented, Diminished, Sus2 and Sus4), plus the Added Tones (6th, 7th, 9th, 11th and 13th), you can choose multiple Added Tones.
Once the chord factors are defined, you get to choose which note is played on which octave, which note repeats, and even which notes to omit.
Lastly the inversion, this tell us first the lowest note and the note order of the chord. The maximum inversion of a chord is equal to the number of chord factors minus one. So if a chord has 6 notes, it has 5 different inversions.
Just to be clear, the numbers on the white boxes are the Intervals by semitone.
What do you think about this Musical Chord abstraction, what do you think is missing, or what do you think is wrong?