GSoC 2019: Chord Symbol Playback - Week 3
This week was a bit of a long week, but it's finally over :)
Last week I was able to to clean up chord realization a bit. Previously, the algorithm just stacked thirds to create the notes. Now it's a bit better behaved and defined. There is a bass note (which may be the root if the chord is not a slash chord) placed in the octave below middle C and then the rest of the chord is voiced so that it all fits in the octave above middle C. Essentially it is a close voicing in that octave. This ends up working decently since it minimizes jumps, although it can get messy when there are a lot of alterations and extensions. Here's a look at this in action:
Additionally, I have improved the way duration was handled. Previously it was based off of the segment that the chord symbol is in or the chord/rest under the symbol. This is fine, but it runs into a lot of issues because most of the time we want to have music that isn't homophonic (ruling out using segments) and often times we want to have chord symbols that last more than one measure. Now, the chord symbol inserts notes and ties them to last until the next chord symbol or the end of the score:
With regard to the duration handling, we will want to have different options for how a chord symbol should be played back. Stuff like a limiting the duration to one measure, having the chord not play, and of course different voicing algorithms. Before we do most of this, however, we will need to finish behind the scenes playback.
Summer has officially started, however, so I will be able to work on my project more often. This is really exciting for me and I wish to be able to deliver quality content!
This week I hope to get something at least partially working for behind the scenes playback. It's proving to be fairly difficult for me, however I am making progress in understanding the code and hope to be able to accomplish this. Aside from this, if the time allows I'd like to begin working on the options I mentioned above and integrating it into the UI.
I hope to come back next week with exciting news!