GSoC 2019: Chord Symbol Playback - Week 6
Last week I spent a lot of time on Qt and unfortunately did not get to implement the voicing algorithms I had mentioned last week. I wrote a lot of code and tried to design UIs that I ended up just scrapping, but I've landed on just a more basic system for handling user interaction. I've also improved the testing and fixed a couple bugs. I've also made a few stops this week around Tokyo which stole a good amount of my time. I apologize for the spontaneous trips, but will be returning to regular work and doing extra to catch up.
In any case, here is a look at the realization UI:
I wrote a new voicing selection widget which is used in the 'Realize Chord Symbols' UI, as well as the inspector. Other than what was shown last week, the UI has the option to override the settings on existing chord symbols. That way, users can select chord symbols to realize and use a specific setting for the entire selection. I also linked everything behind the scenes so that adding new voicing algorithms is "as easy as" creating a function for the algorithm and then adding the name of the algorithm to the combo box in the UI.
As you can (hopefully) see above, there are two settings for voicing a chord.
The first setting is interpretation. Interpretation currently determines what notes we will pick from to create the chord. That is, how we will interpret the meaning of the chord. Right now the two interpretations are literal and jazz. Literal interpretation means that the chord includes notes as they are technically defined. Jazz interpretation means that nonessential notes may be omitted and some notes may be added or altered.
The second setting is voicing. This determines how the notes are placed on the staff. I will be working on the voicing algorithms I mentioned in last week's blog. There will be a certain ordering of the importance of certain notes depending on what kind of chord it is. For example, for most if not all chords, the root and third will be of maximum importance since they determine the quality of the chord. For a 13th chord, the 11th and 5th are not very important. The voicing algorithm will pick from this list and this is how algorithms like the 3/4/6 note voicings will work.
The majority of this week will probably be spent on designing these voicing algorithms on pen and paper or at the piano. Depending on how long it takes to find good voicing algorithms, this may take just a couple days to the week to finish. If I have extra time, I'd like to begin cleaning up the backend to create some more versatility for the future feature additions.
I'm hoping to come back next week with some nice new features!