GSoC 2020 Week 4 Recap: Time Warp (ft. Matt McClinch)

Posted 2 months ago
Previous post Next post

Hello, all! In the last week, I did some work a few weeks ago. Let me explain.

Update from last week

Group measures

On Wednesday I joined Marc Sabatella's weekly MuseScore livestream to demonstrate the current state of my project, and discovered a bug in my code live on the air—measure numbers were incorrect starting after a measure group.

This was a mystery to figure out because there didn't seem to be any models to follow where something similar was handled. Eventually, I fixed half of the problem, and then Matt McClinch stepped in and provided the other half of the fix.

I wasn't able to come up with anything better than the "not ideal" solution I mentioned last week for trying to make a group with too many measures, which I decided was okay because it's certainly no worse than what happens if you try to make one measure with too many notes. So, I'm done with "Group Measures."

Multimeasure rests

I also made some changes to my PR #6211, and did it so smoothly that it looks like nothing was changed at all.

Git, the version control system MuseScore developers use, keeps a log of changes made to the code files. Each revision, called a “commit”, has some metadata attached, like the Git account that made the commit, and the date it did so.

It turns out this history is mutable. (It is even possible to make a commit and then falsify it as having been made from someone else's account!)

For instance, take a look at https://github.com/musescore/MuseScore/pull/6211/commits. As you can see, all the commits are from some number of days ago, going back to the beginning of June. And those are the dates that those commits, or similar ones, were originally made. But more recently, after some review comments, I made an alternate "branch" with a new series of commits, incorporating some code cleanup from Matt McClinch; modified the timestamps of the new commits to match those of their original versions; and then substituted that alternate history for the original, as if it had been that way all along. In other words, I did a retcon. :-)

Looking forward to this week

This week, I plan to lay some of the groundwork for two-measure and four-measure repeats, as follows:

  • Expand MeasureRepeat class to support varying numbers under the hood
  • Draw the MeasureRepeat from the font instead of with a hard-coded path
  • Make all current uses of MeasureRepeat specify that it is the one-measure version being called (i.e., keeping same functionality, but changing implementation)
Previous post Next post