Overview of work this week

The work this week has been focused on two areas. Firstly the GPX format, and secondly on tuplet support.

With respect to tuplet support a few bugs have been fixed. The first involves support for dotted notes were involved (bug #22888). The issue here was was that dotted notes were handed wrong location. This has been fixed and I will make the pull request for that next week.

Bug #22110 has also been fixed with a similar change. I’ll bundle this into the same PR as the above bug fix.

Bug #23074 I’m not sure is relevant any longer, Musescore is displaying something different than what is reported in the bug report and I think that might be good enough. I’ll have to discuss that with another dev and we can decide whether we want to just close this bug as fixed. It’s likely that one of the changes I have done in the last few weeks has fixed this bug inadvertently.

As I was already fixing the aforementioned bugs on tuplets anyway, I have also done some work on adding tuplet support to the GPX format, which was one of the two items which I’ve market out as the next things I want to target. On implementing this I discovered segmentation faults, which after debugging turned out to be highlighting the issue that percussive parts are not supported, as the implementation was attempting to make tuplets with notes on the percussive staff which are not displayed yet. Now that I know this, I have kept the implementation for tuplets on a local branch at the moment and I won’t be making a pull request for that until percussive staffs are implemented (which I intend to take a look at this week).

While developing solutions for the tests for tuplets in previous versions of Guitar Pro, I noticed that there is a bug where dynamics are repeatedly specified. So if, for example, a note is marked as forte, then all following notes will also be marked with the same dynamic. I have filed a bug report for that (bug #25915), and I’ve managed to get the time to fix that up as well, so there’s already a pull request in for that. There are a few tests which are affected by this, and these have all been updated.

Issue #23519 has also been corrected, where key signatures were imported incorrectly. This bug revealed a problem in the implementation where any key signature involving flats, for any Guitar Pro version, was imported wrongly as 7 sharps. It is not the case that -1 = 1 flat, -2 = 2 flats etc., which is what was implemented, but in fact it works like this:

0 = None,
1 = 1 sharp,
2 = 2 sharps,
3 = 3 sharps,

7 = 7 sharps,
255 = 1 flat,
254 = 2 flats,
253 = 3 flats,

249 = 7 flats.

The implementation for this has now been fixed and I’ve added tests for every format, including the GPX format, This also fixes the initial problem stated in the bug report, so that’s also out of the way. The initial support I have written for the GPX format is now sitting in the Musescore master branch so there’s a key signature test for that too. The test has every key signature (major and minor) present in the file, so that should be sufficient to test this accurately. This also has not been pushed yet, but that will be done after the changes to dynamic repetition mentioned above have been merged.

Key tasks that stalled

Percussion support is still not implemented in GPX files, that’s something that I’ll be looking at this week, and then I expect it’ll be time to write a number of tests for that format.

Overview of work for next week

There are quite a few fixes that I have which are unpushed as mentioned above, so I’ll spend a bit of time getting all that sorted out and merged. The first thing I’m going to look at this week though is support for percussive parts in the GPX format. I’ve already written a bit previously about how we have partial support for that, but that’s something that I would like to improve this week so that a) my big score that I’ve been testing this implementation with is complete and b) so that I can push the changes to the GPX tuplet support in there too. From there I’ll be able to write some more tests for the GPX format, at the moment we have one test for key signatures (which will be pushed with those changes mentioned above this week). I would again like to spend some time next week, like I have this week, looking at existing bugs for previous versions of Guitar Pro. There are approximately 17 of these remaining in the bug tracker, some of which I suspect may be not really Guitar Pro problems. I’ll need to investigate each of them. Certainly for the moment I want to be focusing on previous GP versions and then perhaps a week will be spent on GP6 the week after this.

Any issues that are flagged against the GPX format, as teething problems may well be located, is something that I’ll spend a bit of time on too. There have been a few suggested tweaks to that and there’s currently a pull request which fixes those issues, I’ll create pull requests for any new issues too if and when they are flagged.