Overview of work for this week

An issue was detected with the TTF files that were regenerated to add in the fade symbol, turns out that the latest version of FontForge has some issues with generating TTF files. Regenerating with an older version fixed the problem. I believe there’s an issue related to this on the FontForge bugtracker so until it’s fixed we should avoid the latest version.

I’ve been focusing on features which are in Guitar Pro 6 which are not yet supported, and then supporting those in the previous versions where necessary. I’ve implemented the following features in Guitar Pro formats that handle them:

  • Double bars.
  • Trills.
  • Crescendos.
  • Dead notes. These are in previous versions of Guitar Pro too but support for those has already been completed.
  • Wah open & Wah close.
  • Mordent & Inverted mordent. Confusingly, an ‘inverted mordent’ in Guitar Pro is a ‘mordent’ in Musescore and vice versa. I’ve edited the previous implementations so that we show the same symbol that is present in the Guitar Pro software.
  • Pick up & Pick down. These are represented using the up bow and down bow markings in Guitar Pro so thankfully we don’t need any new articulations for this.
  • Legato notes. Legato notes is a concept in Guitar Pro 6 that just uses slurs, and I wouldn’t really call that a new “feature” as such.
  • Dynamic markings (ppp, pp, … fff). I’ve also rewritten the way that we handle dynamics to clean that part of the implementation up.
  • Left and right handed fingerings.
  • Arpeggios. Note that I’ve modified the existing implementation and a test for this that confused an arpeggio with a brush stroke (understandably, the two are highly similar).
  • Brush strokes.
  • Diminuendos.
  • Voltas. These are *much* better represented in Guitar Pro 6. What took me about a day for Guitar Pro 5 because of its gotchas took me 15 minutes with the Guitar Pro 6 representation. Hooray! \o/
  • Repeat bar markings.
  • Grace notes (on and before the beat). If I remember correctly a test was commented out on the latest master so I think the implementation has changed. I’ve yet to bring that up to date but I’ll be dealing with that soon.

I’ve also been looking at fermatas but those aren’t implemented yet. Fermata location is specified by how many divisions occur after the start of the bar it is, given some time division. For example, a bar in 4/4 time with two minimins in it with a fermata specification on the second minim is specified as 2/1, with the 2 indicating counting in minims and 1 indicates the second minim (counting from 0). This is going to be a bit clunky to parse given how it’s represented, but I’ll take a look at that this week.

There are a number of extra markings to support which are text-based in nature (let ring, pop, slap, tap, directions, ottava markings on specific notes, etc). I’ll try to get as many of those as possible sorted out this week.

I haven’t done any further work on the slides, I’m going to push the support I have in a branch for slurs and then after that I’ll merge that in to slides, edit the representation to be a variation on e.g. fall rather than existing in the glissando machinery, the I’ll make a PR for that. Once those PRs are in I’ll do a PR for this work on the GPX format that I’ve been working on in the last weeks so users can test it.

Key tasks that stalled

None this week.

Overview of work for next week

I’m going to take a look at the text-based annotations as that’s where the bulk of the work right now remains, at least one of the harmonic markings and fermatas. I’ll make the pull request for slurs, then merge that into the work for slides and edit that implementation so that we don’t require bigger edits to the implementation on glissandos and make a PR for that. When the PRs for existing bugs on the bugtracker are done I’ll push the current support I have for GP6.