As mentioned in the last post, this week I had to begin with the initial implementation of swing playback.
After some more delay due to the technical issue mentioned in the last post, I finally got access to a new system mid-way this week.
First task was to install all the requirements – Ubuntu, Qt Creator, etc. and compiling MuseScore (again!)
I started with the basic implementation for the swing and am done with most of it. I will submit a PR soon after a bit of testing.
The key trick was to understand the flow within the code when MIDI is rendered thoroughly so as to plug in the swing functionality at the right place with access to the necessary parameters. Now I have the swing working for eighth notes, which can be extended to other cases without much difficulty. Note that ties have not been taken care of right now, and the implementation is a simple one, yet to be extended for more complex cases.
One thing which was debatable was whether to swing for cases in which an ornament has been applied to a chord. Currently we are not considering them as anything different and swing is being applied normally.
We are now at par with MuseScore 1.3 (ha!) in regards with swing playback and have a simple implementation with a constant as a swing ratio.
The next task would be to extend the initial implementation and include the option for user specified ratio, to start with.
Apart from that, other tasks would be to implement swing for more complicated cases as discussed in the document.