Overview of work for this week

This week I’ve been doing my usual blend of fixing a few bugs which have been flagged against the previous versions of Guitar Pro and enhancing the support for the GPX format that I’ve been building. Last week I highlighted three issues that still remain with the older versions of Guitar Pro. One of these was a bug concerning the centering of empty bars, which looked somewhat awkward when some Guitar Pro files were loaded. This bug has now been fixed, it was a problem localized to one version of Guitar Pro, I’ll make a pull request for this.

A second bug involved slurs. This bug is triggered in older versions of Guitar Pro only, as Guitar Pro 6 does not make a distinction between a hammer-on and a pull-off and just represents this as a slur with no additional annotation. I’ve been looking at this bug and I think I’ve found the correct way to fix this, given the slight variation in how the format is composed – I still need to test more thoroughly the solution for this, as I’m not sure the current solution will work in all cases. I’ll be looking at this again this week and will see if I can finish that off.

The other bug that I mentioned last week described slides not being imported. I haven’t looked at this yet in all that much detail, but I expect that I’ll be looking at that this week and finding a solution for that.

Other than the above, I’ve been working on the Guitar Pro 6 format, where I’ve spent most of my time this week. I’ve added some support for certain articulations (marcato, fermata, and a few others), and been working on the drum set, which is now almost complete. Guitar Pro 6 will split certain percussive notes into their own parts and change the standard 5 line staff into a staff with an appropriate number of lines. I’m trying to replicate this behavior exactly, and there are a few more details still to work out. I’ll do that this week also. I’ve also added some support for some dynamic markings, which largely work but I still need to check that the implementation doesn’t ever repeat dynamic markings unnecessarily. Grace notes are something that I’ve also been implementing, in addition to ties. I’ll need to test these features further before submitting a pull request with these updates, which I’ll also do this week. There are some cases where grace notes are failing to be created, I’ll need to look at the score files to find this case and fix any issues up, that should be done this week. I’ve improved support too for the way that notes are created and moved them to a later point in the implementation when parsing score.gpif (the Guitar Pro 6 score file), the reason for this this is by doing it this way it makes it easier to add articulations and other information to notes (less flags need to be created so mark out certain properties on notes which need to be taken into account during note creation).

I’ve also split up the implementation for Guitar Pro support into a few different files, as having everything in one was becoming cumbersome.  Guitar Pro 4, 5 and 6 support is in importgtp-gp{4,5,6}.cpp and the rest remains in importgtp.cpp.

Key tasks that stalled

No development is stalling this week.

Overview of work for next week

I’ll look at finishing up support for the slur bug and see if I get the slide notation implemented. Once these are done I’ll spend some time looking at the older Guitar Pro 5 software and trying to find anything we don’t support yet but that isn’t listed in the bug tracker, as I imagine there will be some there but we certainly already handle the vast majority of features, so work on older formats should start focusing on testing rather than new development some time soon. I’ll also continue development of Guitar Pro 6 support. I expect the drum set support will be completed, and I’ll add support for more articulations, do some tweaks to the implementation for grace notes so that it’s correct for how Guitar Pro 6 represents them, do some further testing, then pick another unhandled feature and work on that.