This is going to be a short post, as I faced technical issues this week.
As mentioned last week, the first task was to study the current plan for the implementation of swing playback in MuseScore and commence with the coding of a basic framework.
I studied the document thoroughly and understood how the vital functions need to be coded. The initial design is simple:
We check for a score variable which indicates whether to apply swing and to what extent. This will be used while rendering the MIDI for the score and hence will be called each time we play the score/ change the variable.
Now, while rendering the MIDI, if we need to swing, then we scan each segment and for each chord, we modify the values of ontime and/or len depending upon what the value of the swing ratio is and whether the chord is on the beat or off the beat. For chords on the beat, only the len (possibly) needs to be modified. For chords off the beat, both ontime and len (possibly) need to be modified. For the detailed plan on how we intend to do it, please refer to the document mentioned in the last post. The design is such that eighth note swing can easily be extended to sixteenth note swing and so on. Also, we are ignoring the case of chords which lie on a subdivided beat for now, and the behavior in case of ties is also not yet clear.
I began with an implementation of the initial swing, playing around to see what would be the best place to insert the swing routine.
Unfortunately mid-week my system’s Hard Disk Drive crashed and I had to put a hold on my work. Inconvenience caused is regretted.
I will get access to my system back hopefully by tomorrow, and would resume with the implementation of the basic swing feature. I will update the progress regarding the same here.